传统的CDN比如RTMP直播,是基于tcp的服务,并不存在端口过多的情况;而RTC服务大多数用的是udp端口,这种Udp模式有很多的优点,但是相比于RTMP直播服务器单端口走天下,RTC服务动则要开几百个端口略显尴尬。
RTC绝大多数都是udp通讯,在进行互通的时候需要开放很多端口, 一个音/视频通道就要开启多个通道, 如果是多人音视频通话需要开通的端口更多. 对端口资源照成了很大的浪费, 一些防火墙会限制多udp端口的开放。如果要部署在服务端, 多端口的开发会给运维照成极大的不方便。
有的人会说,开放多个端口也没什么,实际场景中用着也没有出现问题。确实多端口本身没有问题,可以放心使用,我们只是在此基础上提出一种优化方案。
那么多端口到底有什么不足呢?
1)很多的网络出口防火墙对能够通过的UDP端口是有限制的。
2)对于服务端来说开辟这么多端口,安全性本身也有一定的问题,很容易被黑客扫描到进行攻击,特别是运维同学,更是拒绝。
3)开辟这么多的端口在Server端上,端口的开销和性能均有一定的影响。
4)行业特性要求,特别是金融、公安等对安全性要求特别高的行业,多端口是不可接受的。
如何减少RTC服务中端口的使用,甚至能否只使用1个端口呢?
目前为止已经有很多成熟的减少端口使用的策略:
1)Rtp/Rtcp复用端口的方案Rtcp-mux。
2)音视频的Boundle, 可以让音视频复用连接通道。
3)多路流复用单连接的plan b和unified plan方案;PS:WebRTC的M89版本正式废弃plan b,所有WebRTC标准都已经转向了unified plan。
这些策略都在不断的在消减端口的使用, 但即使上面的这些策略全部开启, 单个用户还是要占用最少一个端口, 如果一个RTC服务器要服务500个用户, 就要开启500个端口。
如何实现单端口,为我们需要了解一些技术点,这样实现起来思路就会更清晰:

本文探讨了RTC服务中端口使用过多的问题及其解决方案。详细介绍了如何利用Rtcp-mux、Boundle等策略减少端口使用,并提出了一种仅使用单端口的RTC服务实现方法。
最低0.47元/天 解锁文章
3083

被折叠的 条评论
为什么被折叠?



