支持组播的接口:
ip a | grep MULTICAST
环回接口虽然显示不支持组播,实际也可以用于本地测试。
添加路由(非必须?):
ip route add 239.0.0.0/24 via 10.10.10.206 dev eth0
开放防火墙:
查询:
firewall-cmd --query-port=2223/udp
添加:
firewall-cmd --permanent --add-port=2223/udp
firewall-cmd --reload
删除:
firewall-cmd --permanent --remove-port=2223/udp
或者开放iptables:
iptables -I INPUT -s ${bond} -p udp -m multiport --dport 18888 -j ACCEPT
查询已有的组播分组:
netstat -gn
ping -b 224.0.0.1
ss -u -a -n -l | grep MULTICAST
socat手册:
组播绑定和接收、发送都不需要root权限。
socat接收组播:
socat -u udp-recv:2223,ip-add-membership=239.0.1.1:0.0.0.0 -
socat -u udp-recv:2223,ip-add-membership=239.0.1.1:127.0.0.1
socat发送组播:
echo "This is a multicast test" | socat STDIO udp-sendto:239.0.1.1:2223,ip-multicast-if=0.0.0.0
echo "This is a multicast test" | socat STDIO udp-sendto:239.0.1.1:2223,ip-multicast-if=127.0.0.1
echo "This is a multicast test" | socat STDIO udp-sendto:239.0.1.1:2223,broadcast,ip-multicast-if=0.0.0.0
echo "This is a multicast test" | socat STDIO udp-sendto:239.0.1.1:2223,broadcast,ip-multicast-if=127.0.0.1
组播压测:
iperf -u -c 224.0.0.1 -p 1234 -b 1M
局域网环境下的MTU:
UDP的数据长度控制在1472个字节以内?