ax6000梅林388.1,配iptv,IGMP组播基础知识讲解

先介绍下什么是组播。组播用于大家”相同的数据”,就像收音机广播,打开收音机就能听到,不管你听不听,电磁波就在那。
iptv业务就是基于组播。大家相同的数据在网络内传播,打开就能看。这类数据包采用IGMP协议,下文称IGMP数据包。
收音机的电磁波一直在没关系,但这东西一直播占流量,尤其wifi网络,还占信道啊。
所以有个东西叫IGMP Snoopin,直译是组播嗅探,说白了就是往想要接听的人发送广播,省点带宽。所以正常讲,这个开不开是不影响组播的。
这就是大坑1。

以前的路由器无非启用,禁用。启用费点cpu,省点带宽。所以开始根本没想到这个参数。而且梅林386起就没有这个参数,得用命令行去调整。
我在无法观看直播流时也打开过,仍然无效,这符合我预期,毕竟是个优化,开不开的应该不影响。
但其实,大部分路由器比如ax86u,默认值就是开启嗅探。我在用ax86u测试时,一下就通了。才开始对比两者不同。发现ax3000是这个值是阻止组播,没错不是开不开嗅探的事儿,他默认值是阻止组播。界面上还不可调!!!而调成嗅探模式也不行是别的问题。

跟到这里,觉得困扰似乎豁然开朗,讲组播模式变成,禁用嗅探,也就是无脑发送。马上就能看了。
这固件嗅探怕是有什么bug吧,所以默认选项是屏蔽组播?

凑合用吧,无非浪费点带宽,忍忍得了。
把路由器归位,等各种设备接回去。发觉看几分钟就会锁死。心中一万头草泥马呼啸而过。想起来,旧路由器我虽然也禁用了嗅探,但用robocfg只绑定了wan和目标口lan4,而梅林高版本设定vlan的分vconfig和vlanctl两种,前者容易些,后者强大些。vconfig只能将wan一次绑定到所有lan口br0,所以其他端口也会收到。下面接的傻瓜交换机,数据洪灾了导致崩了??
vconfig无法像vlanctl那样把eth0直接绑定到eth4不绑定到br0(试过失败了),事后想来,可以每个绑定一个vlan再绑起来,参看《关于Openwrt中的igmp snooping无效的问题(使用IPTV等组播必看) 》。
但当时没想到,想买个集线器抓包分析,发现已经没得卖了。于是下单了抓包神器。

期间研究了下,vlanctl。参考《上海电信 TL-EP110 + RT-AC86U 实现观看 4K IPTV 无卡顿》。
将eth0和eth4直接绑定,禁用嗅探,因为只有一条路,不会泛滥。
期间尝试打开嗅探,发现居然可以放!!
聊胜于无,万一lan4以后下接交换机呢,开着。
接着,接线接回去归位。电信我是双线的第二条,所以是最终是将eth3和eth4绑定。发现又不行了,四百万头神兽呼啸而过。最终发现,第二wan是无法开启嗅探的。只能禁用了事。毕竟就一条通路。

总结
要点
1 与ax86u之类不同,ax6000需要用脚本手动打开组播;
2 与ax86u之类不同,ax6000用vconfig开IGMP Snooping会几秒后断流,不开会在一分多钟数据风暴卡死。
3 vconfig只能配WAN到所有LAN的网桥,而vlanctl可以配置WAN到单独LAN的网桥。
3 用vlanctl仅在首WAN可以正常开启IGMP Snooping,在第二WAN开启会断流。

想配置ax6000的,先去看前置知识,比如《上海电信 TL-EP110 + RT-AC86U 实现观看 4K IPTV 无卡顿》很全了。

配置一条接口到接口的通路,不要直接往br0怼,可以直接抄上文的作业用vlanctl配,或参考《关于Openwrt中的igmp snooping无效的问题(使用IPTV等组播必看)》,给端口单独配网桥,然后用更方便的vconfig配。
wan口单独配置后嗅探可以打开(方便接下级交换机),倒是双线路的第二wan,不能开启嗅探,如果要接下级路由,得用网管型交换机,然后打开交换机上的嗅探功能。
双线拨号的脚本:

#lan3 拨号 lan4 接iptv的脚本,加入/jffs/scripts/services-start


ifconfig eth3 allmulti up

#####################################################################
vlanctl --mcast --if-create eth3 0                                  #
vlanctl --if eth3 --rx --tags 0 --set-rxif eth3.v0 --rule-append    #
ifconfig eth3.v0 up                                                 #
                                                                    #
brctl addbr br2                                                     #
brctl addif br2 eth3.v0                                             #
ifconfig br2 up                                                     #
                                                                    #
nvram set wan_ifnames="eth0 br2"                                     #
nvram set wan1_ifname=br2                                           #
#####################################################################

#####################################################################
brctl delif br0 eth4                                                #
                                                                    #
vlanctl --mcast --if-create eth4 0                                  #
vlanctl --if eth4 --rx --tags 0 --set-rxif eth4.v0 --rule-append    #
ifconfig eth4.v0 up                                                 #
                                                                    #
brctl addif br0 eth4.v0                                             #
#####################################################################

vlanctl --mcast --if-create eth3 1
#all_trans  vlanctl --if eth3 --rx --tags 1 --set-rxif eth3.v1 --rule-append

#81_trans_pop vlanctl --if eth3 --rx --tags 1 --filter-vid 85 0 --pop-tag --set-rxif eth3.v1 --rule-append
#51_trans_pop vlanctl --if eth3 --rx --tags 1 --filter-vid 51 0 --pop-tag --set-rxif eth3.v1 --rule-append

vlanctl --if eth3 --rx --tags 1 --filter-vid 85 0 --set-rxif eth3.v1 --rule-append
vlanctl --if eth3 --rx --tags 1 --filter-vid 51 0 --pop-tag --set-rxif eth3.v1 --rule-append
vlanctl --if eth3 --tx --tags 0 --filter-txif eth3.v1 --push-tag --set-vid 85 0 --rule-append

ifconfig eth3.v1 up

vlanctl --mcast --if-create eth4 1
vlanctl --if eth4 --rx --tags 1 --set-rxif eth4.v1 --rule-append

#81_trans_pop vlanctl --if eth4 --rx --tags 1 --filter-vid 85 0 --pop-tag --set-rxif eth4.v1 --rule-append
#vlanctl --if eth4 --rx --tags 1 --filter-vid 85 0 --set-rxif eth4.v1 --rule-append
#vlanctl --if eth4 --tx --tags 0 --filter-txif eth4.v1 --push-tag --set-vid 85 0 --rule-append


ifconfig eth4.v1 up

brctl addbr iptv
brctl addif iptv eth3.v1
brctl addif iptv eth4.v1
ifconfig iptv up
bcmmcastctl mode -i iptv -p 1 -m 0

高版本linux没有robofcg,上图就是开启嗅探就会智能分发,也是所有教程的标准方案。关闭的话,就是下图,也能用,但低端路由器负载很大会死机。这两个模式在ax6000行不通,选择上图方案,会什么都不发送几秒卡死,下图方案会在1~2分钟卡住。修正方案示意图。


【AD】DMIT美国洛杉矶Pro VPS套餐,$14.9/月起,1G-10Gbps带宽/CN2 GIA线路/有高防GIA可选
【AD】美国洛杉矶CN2 VPS/香港CN2 VPS/日本CN2 VPS推荐,延迟低、稳定性高、免费备份_搬瓦工vps