Woher weiß ich, ob IP Multicast aktiviert ist?

19

Ich habe Skripte, die IP-Multicast-Tests ausführen. Meine Skripte schlagen jedoch auf einem bestimmten Linux-Computer fehl.

Ich weiß, dass ich CONFIG_IP_MULTICASTin der Kernel-Konfigurationsdatei nachsehen kann , ob der Kernel damit kompiliert wurde. Es wäre jedoch einfacher, fehlende Anforderungen in meinem Skript zu kennzeichnen, wenn ich mir /procoder ansehen sysctlund die Antwort erhalten könnte.

Gibt es eine Möglichkeit herauszufinden, ob IP Multicast ohne Prüfung in den Kernel kompiliert wurde CONFIG_IP_MULTICAST?

Mike Pennington
quelle

Antworten:

18

Es scheint, dass die meisten Kernel (nach v1) standardmäßig Multicast unterstützen oder CONFIG_IP_MULTICAST beim Kompilieren aktiviert haben. Um zu überprüfen, ob der kompilierte und ausgeführte Kernel eine Multicast-Gruppe abonniert, würde ich verwenden netstat -g.

Es scheint, dass die meisten Kernel (nach v1) standardmäßig Multicast unterstützen.

[root@centos module]# grep CONFIG_IP_MULTICAST /usr/src/kernels/2.6.18-274.7.1.el5-i686/.config 
CONFIG_IP_MULTICAST=y
[root@centos module]# netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net

Ich sehe, dass die eth0-Schnittstelle auf meinem Host der Meinung ist, dass sie die grundlegende mcast-Gruppe 224.0.0.251 abonniert hat. Wenn ich alternativ die Gruppe oder das Netzwerk anpinge und dann alle bekannten Multicast-fähigen Host-Netzwerke an mich zurücksende, würde ich auch sagen, dass Multicast auf dem Host funktioniert. Können Sie versuchen netstat -goder cat /proc/net/igmpsehen, ob Gruppen auf Ihrem Host zurückgegeben werden?

Nikhil Mulley
quelle
1
Aber wie stellen Sie fest, ob der Router, an den diese Box angeschlossen ist, Multicast unterstützt?
Nils
1
Multicasting - Der Absender sendet ein einzelnes Datagramm von seiner Unicast-Adresse an die Multicast-Gruppenadresse. Zwischenrouter sorgen dafür, dass Kopien erstellt und an alle Empfänger gesendet werden, die der entsprechenden Multicast-Gruppe beigetreten sind.
Nikhil Mulley
3
Wenn ja, muss der Router das Multicasting unterstützen. Für Sender / Empfänger arbeitet es jedoch mit IGMP und für Router mit seinem Protocol Independent Multicast (PIM). Router, der PIM, normalerweise aktiviert, und Multicast-Gruppe unterstützt - 224.0.0.0/4. Versuchen Sie das Aufstellen von einem anderen PC Zuhören in der Gruppe an den anderen Ende und Sendedaten zu Multicast - Gruppe und prüfen , ob Empfänger am anderen Ende befindlichen data.Ify empfängt, Router - Netzwerk funktioniert Unterstützung multicasting.Few Tools online: imj.ucsb.edu/mcast_detective (Fenster)
Nikhil Mulley
20

Auf Ihrer Linux-Box: ip maddr show gibt:

@4Gtest ~]$ ip maddr show
1:      lo
        inet  224.0.0.1
        inet6 ff02::1
2:      p3p1
        link  01:00:5e:00:00:01
        link  33:33:00:00:00:01
        link  33:33:ff:bd:7e:0f
        link  01:00:5e:00:00:fb
        link  01:00:5e:7f:ff:05
        inet  224.127.255.5
        inet  224.0.0.251
        inet  224.0.0.1
        inet6 ff02::1:ffbd:7e0f
        inet6 ff02::1
Alan Beard
quelle
1
Wie füge ich einer Schnittstelle eine Muticast-Gruppe hinzu?
AR
8
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F1:FF:EA  
inet addr:78.46.74.27  Bcast:78.46.74.31  Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fef1:ffea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
RX packets:5339836 errors:0 dropped:0 overruns:0 frame:0
TX packets:5486444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:820300389 (782.2 MiB)  TX bytes:1929979381 (1.7 GiB)
Base address:0x1400 Memory:e8820000-e8840000

Multicast deaktivieren:

ifconfig eth0 -multicast

Ergebnis:

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F1:FF:EA  
inet addr:78.46.74.27  Bcast:78.46.74.31  Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fef1:ffea/64 Scope:Link
UP BROADCAST MTU:1500  Metric:1
RX packets:5339836 errors:0 dropped:0 overruns:0 frame:0
TX packets:5486444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:820300389 (782.2 MiB)  TX bytes:1929979381 (1.7 GiB)
Base address:0x1400 Memory:e8820000-e8840000

Kein Multicast in der Schnittstelle vorhanden

Multicast aktivieren:

ifconfig eth0 multicast
Rechnung Kumpel
quelle
8
Es sollte erwähnt werden, dass ifconfiges jetzt unter Linux veraltet ist ... wir sollten die iproute2Dienstprogramme verwenden.
Mike Pennington
7
Es ist 2 Jahre her und wir benutzen immer nochifconfig
Askar
1
@oscar, aber das bedeutet nicht, dass es gut ist, dies zu tun, da ipandere Dienstprogramme von iproute2 die jüngsten Änderungen im Netzwerkcode des Linux-Kernels widerspiegeln (im Gegensatz zu ifconfig).
Pevik
6

Mit dem ipBefehl kann überprüft werden, ob eine Schnittstelle Multicast-fähig ist:

ip link show eth0 | grep MULTICAST

Zum Aktivieren oder Deaktivieren von Multicast können Sie Folgendes verwenden:

sudo ip link set dev eth0 multicast [on|off] 
Pierz
quelle