Как я могу узнать, включен ли 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 на моем хосте считает, что он подписан на базовую группу mcast 224.0.0.251. Также в качестве альтернативы, если я пингую группу или сеть, а затем мне возвращаются все известные хост-сети с поддержкой многоадресной рассылки, я бы сказал, что многоадресная рассылка работает на хосте. Можете ли вы попробовать netstat -gили cat /proc/net/igmpпосмотреть, возвращает ли он какие-либо группы на вашем хосте?

Никхил Мулли
источник
1
Но как определить, поддерживает ли многоадресная рассылка маршрутизатор, к которому подключен этот ящик?
Нильс
1
Многоадресная рассылка - отправитель отправляет одну дейтаграмму со своего одноадресного адреса на адрес группы многоадресной рассылки, а промежуточные маршрутизаторы заботятся о создании копий и отправке их всем получателям, которые присоединились к соответствующей группе многоадресной рассылки.
Nikhil Mulley
3
Если да, маршрутизатор должен поддерживать многоадресную рассылку. Однако для отправителей / получателей это работает на IGMP и для маршрутизаторов, его независимой от протокола многоадресной рассылки (PIM). Маршрутизатор, поддерживающий PIM, обычно включен, а группа многоадресной рассылки - 224.0.0.0/4. Попробуйте установить другой компьютер, прослушивающий группу, на другом конце и отправьте данные в группу многоадресной рассылки и проверьте, получает ли получатель на другой стороне данные. Если сеть маршрутизатора поддерживает многоадресную рассылку. Несколько инструментов онлайн: imj.ucsb.edu/mcast_detective (windows)
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
Следует упомянуть, что в Linuxifconfig это устарело ... мы должны использовать 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] 
Пирз
источник