当前位置:网站首页>VOIP使用单端口替换动态端口池进行UDP通信
VOIP使用单端口替换动态端口池进行UDP通信
2022-08-09 01:15:00 【fdsafwagdagadg6576】
做过VOIP的同学都知道,基于UDP实现RTP包收发时需要进行SDP协商或者ICE协商,通常服务器都是用一个端口池来和客户端进行RTP包的转发,而当前的网络环境下,开放端口池给运维带来了维护的风险,也给部分代理场景下带来了实现的复杂度,所以如果使用一个端口用来做媒体数据包的转发,那带来了极大的便利;
以WebRTC的服务器Janus为例,主要需要修改libnice返回的端口配置;以RtpProxy的实现为例,修改SIP协商时,始终返回固定端口给对方,注意需要关闭O_NONBLOCK属性:
1、rtpp_create_listener方法中,原来是通过在端口池中随机选择一个可用的端口,现在只需要返回固定端口就可以了:
1 2 3 4 5 6 |
|
2、设置端口复用属性:
1 2 3 4 |
|
3、收到第一个RTP包时,调用accept方法,在内核中生成对方IP/端口和fd句柄之间的映射关系,注意,调用accept方法后,不能再使用recvfrom 或者 sendto 方法发送数据包,替换为recv/send方法,如使用这两个接口,则目的地址只能为NULL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
|
经过验证,在高内核版本上,单端口复用会出现ICE连接失败的现象,只能依靠一个端口监听,然后通过ICE连接标识做多用户分发!
--
补充更新-2021-04-30
这种单端口的实现受限于操作系统内核句柄和客户端的分发实现,可能存在数据混乱的情况,只能作为一个思路而已,更好的单端口实现还是需要在协议报文中识别是不同的用户,然后分发给不同的组或者目标;
边栏推荐
猜你喜欢
经典卷积神经网络ZFNet--解卷积可视化
低代码接口开发平台——YesApi(API+数据表单)
ffplay播放控制
STM32H750VBT6 Keil5 error :flash download failed cortex-M7
[Cellular Automata] Simulation of emergency evacuation of disaster personnel under social force factors based on cellular automata with matlab code attached
『Another Redis DeskTop Manager』用了这款Redis可视化工具,分析效率提升12倍
轻量级网络ESPNet系列 空洞卷积简介
4-6 Matplotlib库 饼图
TCP/IP协议栈
OIDC 思维导图
随机推荐
猿辅导联合多方专家共议新课标:语文将更强调“实践性”
momerymap mmap 存储映射I/O
如何在EasyDSS中使用ffmpeg实现点播视频的拼接与合成?
睿智的目标检测61——Tensorflow2 Focal loss详解与在YoloV4当中的实现
Mysql高级篇(逻辑架构和存储引擎)
LVGL简介(基于v8.1-8.2)
Introduction to LVGL (based on v8.1-8.2)
【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
When the centralized platform is gone, everything derived from this platform will be in vain
jetson nano 开机闪一下然后黑屏
全文翻译:EDPB 基于设计和默认的数据保护指南
生成一系列随机字符串的文件
RS&FSW测试脚本
425 Can‘t open data connection for transfer of “/“
微信企业号开发之获取公共域名
gstreamer 记录
PostMan import certificate add certificate
“圆梦杯”大学生智能硬件设计大赛 初赛样题——理论题作答
[机缘参悟-65]:《兵者,诡道也》-6-孙子兵法解读-并战计
Bugs encountered in remote control projects