前言
解答群友疑惑的日常记录灌水。组播节目播放卡顿,间歇黑屏大约0.3秒,发生频繁,换台后几秒内就可复现,反复闪烁,一分钟可能闪烁二三十词,经过简单的设置,轻松修复。类似的表现还有“花屏”,“绿屏”也可以通过类似的方式解决。
情况
首先分析网络情况,群友提供的为自建节目,组播方式传递视频内容,通过交换机复制流,减轻对原始服务器的压力,是一个不错的方案。一个组播服务器,往一个组播地址提供服务,通过交换机复制数据,对于服务器而言,1个终端与1万个终端压力是一样的。对于运营商而言,OTT盒子有多少点播,就需要多少源站或者CDN带宽,或者用缓存服务器分发插入更多的延迟(这是技术性延迟不可避免,为了流畅必须有提前量,移动是提前3个10秒的片段,天生就有30秒的延迟),而组播业务从上到下只需要一倍带宽需求,即可在逐级交换设备上各自复制,节约了带宽。
在这里有一个提示:组播不代表所有的终端节目进度一致。由于加入组播流的时间不同,接入时隙不同,所有的终端是难以保持同步的。而运营商的IPTV是点播+组播的方式,由点播启动,只负责几秒钟的播放,迅速转接给组播。如果将多个运营商的机顶盒放在一起,用同服务器托管网一个遥控器同时换台,表面上运营商的所有机顶盒都流畅的播放节目,没有瑕疵,进度完全一样,但是运营商是付出了大的代价的。而运营商的OTT盒子,例如移动,就无法保证所有的机顶盒节目同步。
回到正题,首先检查网友家中的网络拓扑。
爱快软路由的一个WAN区域挂载了视频服务器,下方为家用简单的二层网管交换机,然后接入了一些不同的业务终端,进行继续直播推流,录制到硬盘作为素材,以及监视终端播放之类的用途。
网友表示,并非所有节目均出现这个问题,200万像素的摄像头的组播节目流畅无卡顿,FHD分辨率的桌面组播节目也正常,出现问题的都是720P 480P的副码流,或者其他一些模拟设备转换的低码率视频。
分析
如果是固定卡死、绿屏。例如开始播放的1分钟或者2分钟后,刚好这个时间画面卡死。则考虑交换设备igmp snooping老化时间有问题。如果上下游出现多个不同的厂商设备对组播源进行中继,非常容易出现这种情况。特别是例如网络上从上到下都是中兴华为之类的设备,本来好端端的,但是用户嫌弃中兴的交换机,毕竟听说中兴的交换机”海外业务他们自己人都不用“,更换为某设备之后,结果节目炸了。修改igmp参数就行了。
对于他这,网络简单,自然没那么复杂。排除法就好了。
首先找了一个TV盒子,已经配置了直接使用组播方式播放节目。直接连接服务器的备用调试网口,测试没毛病。(这是我当年给这个群友的建议,最少吃灰一个网口,万一需要调试,不影响使用)
然后检查交换机配置,交换机正确的处理了组播流量,没有将组播流量广播。
这就是网管交换机和傻瓜交换机的区别。哪怕是最简单的家用网管交换机,可能没有DHCP Snooping,但是IGMP Snooping是肯定会有的。组播流进入交换机,傻瓜交换机会转发向全部UP的端口。哪怕是傻瓜交换机,也是存储转发的,虽然缓存跟专业的交换机比就是零头。但是如果组播节目已经超过百兆,而交换机上接入了百兆设备。被广播的组播流就能”淹死“百兆设备。而网关交换机能够学习到需要加入组播的端口,只会将流量转发到需要的相关端口。前面出现的不同设备间默认设置不同,导致兼容性问题,也就是因为上面的设备以为下面的端口无关,结束了转发,导致节目中断。至于播放终端处理方式不同,表现为节目播放完毕之后画面停住,或者黑屏,或者绿屏,花屏。
检查交换机的端口统计。”丢包“统计有,千把个。对于这种情况其实很正常。特别是端口插拔之类的情况。要关注丢包本身比例,什么时候产生的。
此时服务器的端口输出到交换机,而终端接入交换机播放,并没有出现异常。因为是组播,一般也没必要检查多服务器托管网个设备加入的情况了,对交换机来说一个和N个也是没多大区别的。视频都是大包,应该不至于说交换机背板带宽不足或者包转发性能不足。毕竟小厂也没法生产芯片,芯片的性能基本上是一致的。
现在看来,问题就在爱快上了。
查看爱快的更新日志
1. DNS设置: dns缓存模式重写 2. 远程访问: web访问限制支持设置ipv4或ipv6 3. 网络分享控制: 禁止二级路由改为自定义ttl 4. 外网访问限制: samba/ftp/http/udpxy服务可配置外网访问开关 5. 更新内核版本为: 5.10.194
新增功能
- IPv6设置: lan/wan支持配置中继模式
- ARP绑定: 非绑定mac不允许上网支持选择接口
- DHCP服务: 支持设置排除地址
- DHCP服务: 绑定物理接口可配置虚拟机网卡
- DHCP服务: 支持配置option121
- 虚拟机: 网卡可选择e1000e和vmxnet3
- SNMP服务端: 新增cpu温度和网络连接数oid
- MAC访问控制: 支持时间段配置
- WEB认证: LDAP支持多用户组认证(企业版支持)
修复功能- UDPXY设置: 接口重连时自动恢复
- IPv6设置: WAN口DHCP上网方式,接口重连时没有重新获取IPV6的Bug
优化功能- DNS设置: dns缓存模式重写
- 远程访问: web访问限制支持设置ipv4或ipv6
- 网络分享控制: 禁止二级路由改为自定义ttl
- 外网访问限制: samba/ftp/http/udpxy服务可配置外网访问开关
- 更新内核版本为: 5.10.194
询问网友,这下网友就确定了。就是将爱快升级到iKuai8_3.7.6_Build202309081651版本之后出现的问题。
爱快3.7.6之前有一个BUG。如果是PPPOE之类的会断开状态的WAN提供的组播节目,估计IGMP设置绑定的是当时存在的那个PPPOE连接。设置了IGMP代理或者UDPXY之后,如果PPPOE连接被断开后重连,IGMP代理和UDPXY并不能自动恢复服务。
解决
既然找到了问题在爱快上。那么问题就很简单。
1、回退版本,回退到以前的没有问题的版本。但是他希望使用3.7.6,之前都是IGMP代理,就是避免数据被公网访问,现在有了设置,可以开启UDPXY了。(其实要我说用ACL策略也可以啊,比如用爱快ACL,限制3389或者HTTP之类的服务,只对特定的网段开放,基本上就能避免被扫爆的问题了)
2、放弃爱快,用其他的软路由或者硬路由。不过考虑到他的网络,组网复杂程度,迁移比较困难。
爱快在配置不清的情况下、例如升级上去,有的时候也会有莫名其妙的分流不均之类的BUG。
所以让网友尝试重启、重装爱快。
重启的时候会重新加载一次配置,所以没准能解决莫名其妙的分流不均之类的问题。但是并没有解决。
说到分流不均,爱快倒是有个问题,如果有禁用的WAN或者不分流的WAN,爱快会将这部分缺失完全补给最近的一条线路。导致一核有难多核围观这种类似的场面。繁忙的线路跑满之后,反而空闲的线路速度、连接数也上不去了。
重装也是类似的尝试。重装之后逐个导入配置文件,而不是整个完整备份。经过测试也不行。
最终,IGMP代理IGMP协议版本,将IGMPv3修改为IGMPv2之后,问题解决。
这就是整个解决问题的思路。
IGMPv2 v3的差异也是在组播节目的注册机制上。所以问题在这里并不奇怪。
不仅仅是爱快。三层设备的IGMP代理与IGMP Snooping这种交换机干的活差别大了,后面有机会再作详细介绍。
图源:爱快官网。
现在爱快的版本已经支持多选下联端口了,不再是这种选一个的下拉框了。
上联端口:填信号源接口。
下联端口:填路由lan口(支持多选lan口)。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net