最近遇到一个组播的问题,底层查看IGMP report 报文已经送出去了,但是没有组播流下来,抓包发现我们wan口送出去的report包都是v2的版本,怀疑是olt不支持v2的report包,所以导致report包被drop掉了。
于是查code,发现我们code中igmpproxy的封装的report包就是v3的,但抓到wan送出的包是v2的。
于是就怀疑这个v3的report包被协议栈给强制转换成v2的包送出去。网上找到强制改版本的命令,就用下面这些去查看当前igmp的version。
# cat /proc/sys/net/ipv4/conf/all/force_igmp_version
0
# cat /proc/sys/net/ipv4/conf/default/force_igmp_version
2
# cat /proc/sys/net/ipv4/conf/ppp1/force_igmp_version
2
注意第3条命令中的ppp1需要根据自己环境中设备名进行修改。在网上还看到有第4条命令,我的环境中没有找到rausb0相应的接口。
cat /proc/sys/net/ipv4/conf/rausb0/force_igmp_version
于是将ppp1下的force_igmp_version改为3,就OK了。
# echo 3 > /proc/sys/net/ipv4/conf/ppp1/force_igmp_version
# sync