Ubuntu 14.04 Ipv6多播

我在使用Ubuntu 14.04安装IPv6多播服务器时遇到麻烦,服务器在尝试绑定到IPv6多播地址时失败,并且使用mcfirst工具进行检查,并得到相同的错误。

mcfirst -6 ff01::1:1 10000 bind [multicast]: Invalid argument errno=22 

这与Ubuntu 12.04完美结合

 mcfirst -6 ff01::1:1 10000 mcfirst joined (*,G) = (*,ff01::1:1) 

编辑:1(Ifconfig输出)

 eth0 Link encap:Ethernet HWaddr 00:0c:29:53:a1:fb inet addr:192.168.50.5 Bcast:192.168.50.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe53:a1fb/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:22424 errors:0 dropped:0 overruns:0 frame:0 TX packets:11825 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:29238784 (29.2 MB) TX bytes:1061497 (1.0 MB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:1838133 errors:0 dropped:0 overruns:0 frame:0 TX packets:1838133 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1026295857 (1.0 GB) TX bytes:1026295857 (1.0 GB) 

编辑:2(IP地址)输出

 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:53:a1:fb brd ff:ff:ff:ff:ff:ff inet 192.168.50.5/24 brd 192.168.50.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe53:a1fb/64 scope link valid_lft forever preferred_lft forever 

当将IPv6链路本地地址,多播链路本地地址或多播节点本地地址绑定到IPv6套接字时,内核期望使用范围标识符。

这些语法是例如ff01::1:1%eth0 。 确保您的应用程序正确支持它们。 getaddressinfo()支持此语法,因此正确编写的应用程序应无所事事。


这种行为在3.10以下的内核版本中不存在,这显然没有正确处理节点本地多播。 请参阅实际的内核修补程序以及__ipv6_addr_needs_scope_id的函数定义 。