fragen stichworte

Ubuntu 14.04 IPv6-Multicast

Wenn ich Probleme habe, einen IPv6-Multicast-Server mit Ubuntu 14.04 einzurichten, schlägt der Server mit einem ungültigen Argument fehl, wenn versucht wird, an die IPv6-Multicast-Adresse zu binden, mit dem mcfirst-Tool geprüft und derselbe Fehler erhalten wurde.

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

Dies hat perfekt mit Ubuntu 12.04

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

Bearbeiten: 1 (Ifconfig-Ausgabe)

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)

Edit: 2 (ip addr) -Ausgabe

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

antworten

Der Kernel erwartet eine Bereichs-ID, wenn eine lokale IPv6-Link-Adresse, eine lokale Multicast-Link-Adresse oder eine lokale Adresse eines Multicast-Knotens an einen IPv6-Socket gebunden wird.

Die Syntax für diese ist z. ff01::1:1%eth0. Stellen Sie sicher, dass Ihre Anwendungen sie richtig unterstützen. Diese Syntax wird von getaddressinfo() unterstützt, sodass korrekt geschriebene Anwendungen nichts zu tun haben sollten.


Dieses Verhalten war in Kernel-Versionen unter 3.10 nicht vorhanden, die anscheinend Knoten-lokales Multicast nicht richtig handhabten. Siehe den aktuellen Kernel-Patch , der diese und die -Funktionsdefinition von __ipv6_addr_needs_scope_id erzwingt.