Як я можу дізнатися, чи ввімкнено IP Multicast


19

У мене є сценарії, які виконують багатоадресні тести IP; однак мої сценарії виходять з ладу на певній машині Linux.

Я знаю, що я можу переглянути CONFIG_IP_MULTICASTу файлі конфігурації ядра, щоб визначити, чи було ядро ​​компільоване з цим. Однак було б простіше позначити відсутність вимог у моєму сценарії, якби я міг переглянути /procабо sysctlотримати відповідь.

Чи є спосіб дізнатися, чи IP Multicast був зібраний в ядро, не дивлячись CONFIG_IP_MULTICAST?

Відповіді:


18

Здається, більшість ядер (post v1) підтримують багатоадресову передачу за замовчуванням або увімкнено CONFIG_IP_MULTICAST під час компіляції. Щоб перевірити, чи підписано складене та запущене ядро ​​на якусь групу багатоадресних даних, я б скористався netstat -g.

Здається, більшість ядер (post v1) підтримують багатоадресову передачу за замовчуванням.

[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

Я бачу, що інтерфейс eth0 на моєму хості вважає, що його підписана 224.0.0.251 основна група mcast. Крім того, якщо я пінг групи або мережі, а потім всі відомі хост-мережі, що підтримуються багатоадресною передачею, мені повертаються, я б сказав, що багатоадресна програма працює над хостом. Чи можете ви спробувати netstat -gчи cat /proc/net/igmpпобачити, чи повертає вони якісь групи у вашому хості?


1
Але як ви визначите, якщо маршрутизатор, який знаходиться в коробці, підключений до підтримки багатоадресної передачі?
Нільс

1
Багатоадресна передача - відправник відправляє одну дейтаграму зі своєї одноадресної адреси на адресу групи багатоадресних повідомлень, а посередницькі маршрутизатори дбають про створення копій та надсилання їх усім приймачам, які приєдналися до відповідної групи багатоадресної передачі.
Нікхіл Маллі

3
Якщо так, маршрутизатору необхідно підтримувати багатоадресову передачу. Однак для відправників / приймачів він працює на IGMP, а на маршрутизаторах - протокол незалежної передачі даних (PIM). Маршрутизатор, що підтримує PIM, як правило, увімкнений, а група багатоадресних повідомлень - 224.0.0.0/4. Спробуйте покласти на інший комп'ютер прослуховування в групі на інших даних кінцевих і посилу до групи під LGPL і перевірки , якщо приймач на otherend отримує data.Ify, маршрутизатор мережі робить підтримку multicasting.Few інструменти онлайн: imj.ucsb.edu/mcast_detective (вікна)
Nikhil Mulley

20

У вашому вікні linux ip maddr show :

@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
Як додати групу комунікацій до інтерфейсу?
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

Вимкнути багатоадресову передачу:

ifconfig eth0 -multicast

результат:

# 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

У інтерфейсі немає багатоадресної передачі

Увімкнути трансляцію:

ifconfig eth0 multicast

8
Слід зазначити, що ifconfigтепер застаріле в Linux ... ми повинні використовувати iproute2утиліти.
Майк Пеннінгтон

7
Минуло 2 роки, і ми все ще використовуємоifconfig
Аскар

1
@oscar, але це не означає, що це добре робити так, як ipі інші утиліти від iproute2 відображають останні зміни в мережевому коді ядра Linux (на відміну від цього ifconfig).
pevik

6

Використовуючи ipкоманду, можна перевірити, чи інтерфейс може приймати багатоадресні повідомлення:

ip link show eth0 | grep MULTICAST

Щоб увімкнути або вимкнути багатоадресну передачу, ви можете використовувати:

sudo ip link set dev eth0 multicast [on|off] 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.