添加组播地址的autojoin标志就能测试祖播了

在上次测试组播命令时(组播源和组播接收者的IP地址配置不配行不行?),我们发现单独使用iperf命令并不能有效加入组播组,原因是手工配置的服务端命令并没有加入组播组。

经过高手的提醒,查阅了相关文档,发现ip address命令中有一个autojoin参数,是用于加入组播组的。为此,我还特意了解了一下ip address命令(ip address命令操作指南),相关介绍如下:

“如果连接到执行IGMP snooping的以太网交换机,则通过ip maddr命令在以太网级别上加入组播组将不起作用,因为交换机不会在没有组播地址IGMP报告的端口上复制组播数据包。”

“在添加组播地址时使用autojoin标志可以为Openvswitch VXLAN接口以及需要接收组播流量的其他隧道机制提供类似的功能。”

命令格式如下:

ip address add IFADDR dev IFNAME autojoin

我们之前使用的命令如下:

ip add add 224.2.2.4/24 dev eth2
图片

此时在接口下增加或删除组播地址20.1.1.2/24时,是不会触发加入或离开组播组的报文的。

现在,我们把命令做如下调整:

ip add add 224.2.2.4/24 dev eth2 autojoin
图片

此时,接口下就会触发加入组播组的请求报文了。

图片

同样的,参考ip address命令(ip address命令操作指南),删除IP地址离开组播组的命令如下:

ip add del 224.2.2.4/24 dev eth2 [ autojoin ]

其中,autojoin是IP地址的额外标志,不是必需的参数。

图片

当移除IP地址时,会触发离开组播组的报文。

图片

与ip address add相对应的,还有ip address change和ip address replace两个命令,从字面上看,都可以修改接口的IP地址,但是实际上却起不到加入组播组的作用。

图片

可以看到,重复使用ip address add命令配置相同IP地址并不能覆盖之前的配置。而实际上,ip address change和ip address replace也都是添加接口IP地址的命令,与字面含义并不相同。

图片

所以,我们理论上可以通过这几个命令加入到不同的组播组。

ip add add 225.2.2.5/24 dev eth2 autojoinip add change 226.2.2.6/24 dev eth2 autojoinip add replace 227.2.2.7/24 dev eth2 autojoin
图片

好的,现在我们可以看到所有地址后面都有autojoin的标志了,并且链路上也捕获到了终端加入3个组播组的报文。

图片

好的,如此一来,我们就可以使用iperf测试组播是否可用了。

我们直接在组播接收者一端开启3个iperf服务器进程。

iperf -s -u -B 225.2.2.5 -i 1 -o /tmp/iperf5 &iperf -s -u -B 226.2.2.6 -i 1 -o /tmp/iperf6 &iperf -s -u -B 227.2.2.7 -i 1 -o /tmp/iperf7 &
图片

然后,我们从另外一台组播源分别向3个组播组推流,查看结果。

iperf -c 225.2.2.5 -u -i 1 -t 5 -B 30.1.1.3iperf -c 226.2.2.6 -u -i 1 -t 5 -B 30.1.1.3iperf -c 227.2.2.7 -u -i 1 -t 5 -B 30.1.1.3
图片

从组播接收者一侧通过记录文件进行验证。

图片

当然,我们也可以尝试使用一个记录文件。

iperf -s -u -B 225.2.2.5 -i 1 -o /tmp/iperf &iperf -s -u -B 226.2.2.6 -i 1 -o /tmp/iperf &iperf -s -u -B 227.2.2.7 -i 1 -o /tmp/iperf &
图片

然后再次从组播源进行推流操作,最后检查记录文件。

图片

竟然发现记录有覆盖的情况,而且比较随机,所以还是不建议使用一个文件了。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/276780.html

(0)
联系我们
联系我们
分享本页
返回顶部