首先,我们先来简单的剖析一下视频流传输的基础原理:
视频流是由I帧和P帧组成,其中I帧为超大帧,在网络传输的过程,I帧的任何一个报文的丢失,就会导致视频无法成像,同时,由于视频的实时性要求,一般采用UDP的传输机制,即丢包不重传,所以,基本上网络只要出现丢包,就会卡顿。
其次,再来简单介绍一下交换机的交换原理:
当某个100M端口向另一个100M端口传输1M的数据流时,是以100M的速率传输了1/100秒。如果这1/100秒时有另外一个100M端口也向同一个100M端口传输1M的数据流,虽然两个端口加起来数据流只有2M,远没有达到100M的带宽瓶颈,但也会拥塞。
同理,1000M端口在同一时间点只能接受一个1000M端口传输数据,但可以同一时间点接受10个100M端口传输数据,但超过10个,也会拥塞。
所以,流量(带宽)与速率是二个概念,不能混为一谈。无论传输的数据流有多大,传输的速率都是100M或1000M,只是不同数据流大小传输所需的时间长短不同罢了。当速率相同的情况下,两个及以上的端口在同一时间点向同一端口传输时,就会拥塞。此时缓存如果能够存放下拥塞的数据流,就不会丢包,如果缓存存放不下,就会丢包。
通过以上两点的简单分析,我们可以明白,当交换机传输经过的视频流路数越多,瞬间并发的可能性就越大,那么拥塞的概率就越高,这也是为什么汇聚层或核心层更容易拥塞的原因,尤其是核心层,传输经过的视频流路数是最多的,整个网络几百路上千路都要经过核心交换机进行传输。
这里要再次重点强调,安防网络中,卡顿丢包多数是因为这种拥塞而导致的,而不是转发性能导致的,这是两个完全不同的概念。
很多客户会将延时和卡顿混淆,延时指的是图像数据从前端的网络摄像机采集后到用户端的监视设备观看到图像的时间差。摄像机采集后的图像通过压缩编码、网络传输、解码输出显示等处理,这些过程虽然很短暂,但我们仍然可以感觉显示的图像有滞后,这个滞后就是图像延时。但延时只要不超过1S,是很难直观感觉到,并且多数场景也不影响应用。除非是一些特定的工业领域,需要依据视频的分析做出毫秒级的处理的,那延时就比较关键了。延时并不会产生图像丢失,也不会丢包。而卡顿则会造成图像丢失,是因丢包引起的。
除了拥塞丢包外,还有一种原因就是因为布线工程的质量引起的,比如线路老化,水晶头氧化,水晶头没有做好等,这些情况都会导致类似于FCS错误帧而引起丢包。严格意义上,这跟交换机没有关系,在此就不细说。
1、根据摄像机的码流和数量做好交换机规格选型,并设计好组网方案。
随着网络在安防的普及,从业人员的技术能力逐步加强,因规格选型和组网方案导致的网络故障会越来越少。如果因为这个原因导致带宽瓶颈,确实太低级了。某网络共有XX台X码流的摄像机,接入层该选多少台什么样端口规格(端口数量和端口速率)的交换机,汇聚层该选多少台什么样端口规格的交换机,核心层该怎么选,这类简单的知识我就不在这里浪费笔墨去写了,网上很多。
同时,为了应对突发流量,在选型和设计方案时,交换机端口的带宽使用率建议不要超过70%,最好控制在60%以内。注意:并不是因为实际性能只有理论值的 60~70%,而是为了预防突发流量,不建议使用率过高。转发性能是第一步要保证的,然后再去考虑避免拥塞。
2、尽可能选用缓存大的网管型交换机。
缓存是可以减少拥塞导致的丢包,理论上,如果缓存足够大,丢包为零,视频也不会因网络原因卡顿。那该怎么计算XX路XX码流的摄像机该用多大缓存的交换机?理论上是可以计算的,但实际上你计算完了之后,发现地球上目前还没有能满足这个缓存需求的交换机。
拥塞是有概率性的,不可能每个端口都会同时拥塞,所以芯片公司不会这样去设计缓存,因为缓存的成本太高。正常情况下,越高端的交换机,业务特性越丰富的交换机缓存越大。这也就是为什么当我们选择网管型,或者三层交换机,丢包卡顿的概率会低一些。同样24口千兆交换机,非网管的缓存可能只有几百K,而三层交换机缓存可能有几十M。
所以,当预算足够,成本可以接受的时候,尽可能选择缓存大的网管型交换机,因为这是芯片公司设计芯片时的规律。普及一个小知识,同样24口千兆非网管芯片与24口千兆三层芯片,交换容量是一样的,不一样的是各种表项容量,缓存大小,业务特性(功能)等。对于设备厂商来说,研发交换机时,只能尽可能选择缓存大的芯片,并不能更改缓存的大小,这是芯片的硬件特性。