Skąd mam wiedzieć, czy włączona jest multiemisja IP


19

Mam skrypty uruchamiające testy multiemisji IP; jednak moje skrypty zawodzą na konkretnej maszynie z linuksem.

Wiem, że mogę zajrzeć CONFIG_IP_MULTICASTdo pliku konfiguracyjnego jądra, aby ustalić, czy jądro zostało z tym skompilowane. Łatwiej byłoby jednak oznaczyć brakujące wymagania w moim skrypcie, gdybym mógł spojrzeć na /proclub sysctluzyskać odpowiedź.

Czy istnieje sposób, aby sprawdzić, czy IP Multicast został wkompilowany w jądro bez patrzenia CONFIG_IP_MULTICAST?

Odpowiedzi:


18

Wydaje się, że większość jąder (po wersji 1) domyślnie obsługuje multiemisję lub ma włączoną CONFIG_IP_MULTICAST podczas kompilacji. Aby sprawdzić, czy skompilowane i działające jądro subskrybuje dowolną grupę multiemisji, użyłbym netstat -g.

Wygląda na to, że większość jąder (post v1) domyślnie obsługuje multicast.

[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

Widzę, że interfejs eth0 na moim hoście myśli, że jego zasubskrybowana podstawowa grupa mcast 224.0.0.251. Alternatywnie, jeśli pinguję grupę lub sieć, a następnie wszystkie znane sieci hostów obsługujące multiemisję zostaną zwrócone, powiedziałbym, że multiemisja działa na hoście. Czy możesz spróbować netstat -glub cat /proc/net/igmpsprawdzić, czy zwraca jakieś grupy na twoim hoście?


1
Ale jak ustalić, czy router, do którego to urządzenie jest podłączone, obsługuje multiemisję?
Nils,

1
Multiemisja - nadawca wysyła pojedynczy datagram ze swojego adresu emisji pojedynczej na adres grupy multiemisji, a routery pośredniczące wykonują kopie i wysyłają je do wszystkich odbiorców, które dołączyły do ​​odpowiedniej grupy multiemisji.
Nikhil Mulley,

3
Jeśli tak, router musi obsługiwać multiemisję. Jednak w przypadku nadawców / odbiorników działa on na IGMP, a w przypadku routerów - jego protokół Independent Multicast (PIM). Router obsługujący PIM, zwykle włączony i grupę multiemisji - 224.0.0.0/4. Spróbuj ustawić inny komputer nasłuchujący w grupie na drugim końcu i wyślij dane do grupy multiemisji i sprawdź, czy odbiornik w innym miejscu odbiera dane. Wygodna sieć routerów obsługuje multiemisję. Kilka narzędzi online: imj.ucsb.edu/mcast_detective (Windows)
Nikhil Mulley,

20

Na twoim Linux-ie: ip maddr show daje:

@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

1
Jak dodać grupę muticast do interfejsu?
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

Wyłącz multiemisję:

ifconfig eth0 -multicast

wynik:

# 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

W interfejsie nie ma multiemisji

Włącz multiemisję:

ifconfig eth0 multicast

8
Należy wspomnieć, że ifconfigobecnie jest on przestarzały w Linuksie ... powinniśmy używać iproute2narzędzi.
Mike Pennington,

7
Minęły 2 lata i nadal używamyifconfig
Askar

1
@oscar, ale to nie znaczy, że dobrze jest to robić, ponieważ ipi inne narzędzia z iproute2 odzwierciedlają ostatnie zmiany w kodzie sieciowym jądra Linux (w przeciwieństwie do ifconfig).
pevik

6

Za pomocą ippolecenia można sprawdzić, czy interfejs obsługuje multiemisję poprzez:

ip link show eth0 | grep MULTICAST

Aby włączyć lub wyłączyć multiemisję, możesz użyć:

sudo ip link set dev eth0 multicast [on|off] 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.