При устранении неполадок многоадресной IP-рассылки можно сделать несколько общих снимков, чтобы определить, является ли это проблемой хоста, программным обеспечением или проблемой сети:
- Шаг 1. Убедитесь, что приемник работает.отправка соединений IGMP на правильный интерфейс.Найдите трафик источника многоадресной рассылки на интерфейсе получателя.
- Шаг 2: Убедитесь, что сервер отправляет трафик в соответствующую группу многоадресной рассылки из правильного интерфейса
- Шаг 3: Выполните что-то вроде
ping
тест для IP многоадресной рассылки (с использованием инструмента socat
linux)
Подробности для каждого шага описаны ниже ...
Шаг 1
Сначала убедитесь, чточто многоадресные получатели linux правильно рекламируют свои отчеты о членстве в группах;имейте в виду, что много вещей в многоадресной рассылке работают в обратном направлении от одноадресной рассылки.Например, многоадресная рассылка требует, чтобы вы отправили пакет соединения IGMP, содержащий группу многоадресной рассылки, которую вы хотите получить.
Используйте tcpdump
или tshark
для проверки рассматриваемого интерфейса ... В приведенном ниже примереУ меня есть машина на 192.168.12.238
, которая объявляет (через igmp
), что она хочет получать многоадресный трафик от 239.255.0.1
[mpenning@Finger ~]$ sudo tshark -n -V -i eth0 igmp
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
Frame 1 (54 bytes on wire, 54 bytes captured)
Arrival Time: Dec 6, 2011 09:08:45.156782000
... >snip< ...
Internet Protocol, Src: 192.168.12.238 (192.168.12.238), Dst: 224.0.0.22 (224.0.0.22)
Version: 4
Header length: 24 bytes
Differentiated Services Field: 0xc0 (DSCP 0x30: Class Selector 6; ECN: 0x00)
1100 00.. = Differentiated Services Codepoint: Class Selector 6 (0x30)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 40
Identification: 0x0000 (0)
Flags: 0x02 (Don't Fragment)
0.. = Reserved bit: Not Set
.1. = Don't fragment: Set
..0 = More fragments: Not Set
Fragment offset: 0
Time to live: 1
Protocol: IGMP (0x02)
Header checksum: 0x3663 [correct]
[Good: True]
[Bad : False]
Source: 192.168.12.238 (192.168.12.238)
Destination: 224.0.0.22 (224.0.0.22)
Options: (4 bytes)
Router Alert: Every router examines packet
Internet Group Management Protocol
[IGMP Version: 3]
Type: Membership Report (0x22)
Header checksum: 0xe9fd [correct]
Num Group Records: 1
Group Record : 239.255.0.1 Change To Exclude Mode
Record Type: Change To Exclude Mode (4)
Aux Data Len: 0
Num Src: 0
Multicast Address: 239.255.0.1 (239.255.0.1)
^C1 packet captured
Теперь проверьте и посмотрите, попадает ли трафик источника многоадресной рассылки на этотинтерфейс (я предполагаю, что это был eth0, ниже):
sudo tshark -n -i eth0 ip and host 239.255.0.1
Если вы видите трафик, отправленный в соответствующую группу многоадресной рассылки, то перейдите непосредственно к шагу 3;в противном случае перейдите к шагу 2.
Шаг 2
Затем убедитесь, что сервер многоадресной рассылки отправляет трафик в правильную группу.В приведенном ниже примере я запускаю команду sniff eth0
для трафика, отправляемого на 239.255.0.1
.
[mpenning@hotcoffee Models]$ sudo tshark -n -i eth0 ip and host 239.255.0.1
1.466991 192.168.12.236 -> 239.255.0.1 UDP Source port: 11111 Destination port: 11111
Если источник многоадресной рассылки отправляет трафик в нужную группу здесь, на шаге 2, вы увидели IGMPгруппа присоединяется на шаге 1, а на шаге 1 не отображается трафик на интерфейсе получателя многоадресной рассылки, затем обратитесь к сетевым администраторам об этой проблеме.
Шаг 3
Предполагая, что все работает, и вы по-прежнемухотите провести кислотный тест на случай, если программное обеспечение получателя многоадресной рассылки каким-либо образом откажется от многоадресной рассылки, полученной из стека IP-адресов ... убедитесь, что на вашем компьютере установлено socat
и выполните следующие действия ...
на многоадресной рассылкеотправитель (сервер), используйте эту команду для отправки тестовых многоадресных пакетов на 239.255.0.1
:
perl -e '$ii=0; while (1) { print "hi number $ii\n"; $ii++; }' | socat - UDP-SENDTO:239.255.0.1:11111,sp=11111
На многоадресном получателе (клиенте) используйте эту команду для прослушивания тестовых многоадресных пакетов, отправленных на 239.255.0.1
вeth0
:
socat - UDP-DATAGRAM:239.255.0.1:11111,bind=:11111,ip-add-membership=239.255.0.1:eth0
Предполагая, что сетевые администраторы разрешают многоадресную рассылку на 239.255.0.1
, вы увидите много трафика, подобного этому, в многоадресной рассылке.Окно терминала получателя:
hi number 212289
hi number 212290
hi number 212291
hi number 212292
hi number 212293
hi number 212294
hi number 212295
hi number 212296
hi number 212297
hi number 212298
ПРИМЕЧАНИЕ: не попробуйте это с адресом группы многоадресной рассылки, который уже используется в вашей сети.
Шаг 4
Если шаги 1, 2 и 3 показывают, что многоадресный трафик отправляется и принимается через вашу сеть, позвоните разработчику программного обеспечения и скажите, что, по вашему мнению, существует проблема с приложением, и объясните шаги, которые у вас есть.сделано до сих пор.
Если шаги 1, 2 или 3 не работают, перенастройте ваше программное обеспечение / хосты / сеть, пока они не сработают.Предупреждение: многоадресная рассылка в IP-сетях в 3 раза сложнее для правильной реализации, чем одноадресная IP-рассылка.
Удачи вам ...