在RTSP协议的拉流传输中,我们知道最常见的传输协议肯定是UDP和TCP了,TSINGSEE青犀视频云边端架构视频平台比如国标GB28181平台EasyGBS及EasyCVR中都具备两种视频流的传输,用户可根据自身使用情况来进行选择。关于UDP和TCP的介绍,之前也为大家介绍过:UDP、TCP被动、TCP主动模式介绍,大家可以了解一下。
在EasyNVR视频平台的通道配置页面中存在选中拉流协议的选项,默认是TCP,然而在去年的更新当中,除了UDP和TCP,我们新增了一种传输协议,即多播(Multicasting)协议,本文就重点介绍一下这个协议。
这里可以简化下TCP/IP/UDP的相关讨论,默认我们知道IP(UDP和TCP一样)可以把数据包在一个网络中发到另一个设备。更准确点就是IP把数据包从一个IP地址发到另一个IP地址。多播的决窍就是在同一时间把一个数据包发送到多个设备,可以把一个特定的IP地址指定为多播地址,并同时发送到多个设备。
IP多播首先要知道的是只有UDP有多播,TCP没有多播,多播的重点是高效的把同一个包尽可能多的发送到不同的,甚至可能是未知的设备。但是TCP连接可能要求丢包重发、延时或重组顺序,这些操作可能非常消耗资源,不适于许多使用多播的应用场景。
多播经常没法通过路由发到另一个网络,主要有以下两个原因:
1、多数多播包的TTL比较低
所有的IP包都有一个“生存时间”,即TTL。和DNS记录不一样,TTL指一个包到达目的地之前跳过网络的最大次数。单播包通常被允许穿越30个网络(比如,被路由或”跳“过29个路由),穿过网络通常小于15次“跳越”,所以30的限制经常用于当网络配置的很烂时把数据包杀掉。
但是许多程序发多播时把TTL设为一个很低的值,通常为0(这样消息不会离开自身的设备)。设置为1表示只能发到本地网络的计算机,设置为2表示只能穿过一个路由。很少有应用想把多播发给整个网络的未知设备,更不会发给整个网络。
2、诸多路由都设置了很高的TTL阈值
很多网络路由器,特别是WAN路由和internet网关路由都有很高的TTL阈值,这样它们就不会发送这些低TTL(如15)的多播包。这样可以防止多播从本地网络泄漏。路由器一般配置成完全不发送多播,或只发一些特定的地址,或配置成阻塞多播包。
如果大家对EasyNVR视频流传输有疑问,欢迎咨询我们。此外有很多用户问到EasyNVR是否能够作为下级平台通过GB28181协议级联,将视频流同步传输至上级平台,对于该需求,TSINGSEE青犀视频的方案是使用EasyGBS作为上级平台,与EasyNVR进行级联,该方案的实现可以参考:EasyNVR到EasyGBS上是如何注册及注销的?
GB28181国标平台EasyGBS级联EasyNVR平台的方案可测试,欢迎大家联系我们获取测试方案,更多视频智能分析、视频传输、视频上云解决方案,欢迎访问TSINGSEE青犀视频官方网站了解。