LINUX.ORG.RU

Проверка наличия multicast в сети

 ,


0

1

Имеется регистратор с функцией мультикаста. ЕЯПП, это значит, что включив этот самый мультикаст, я могу с любой софтины, которая поддерживает воспроизведение по мультикасту, смотреть то, что приходит от регистратора. Установил в регистраторе адрес мультикаста 224.8.7.6, пробую подключатся через vlc 3.0.8 с дебиана udp://@224.8.7.6. ПК и регистратор, разумеется, в одной сети и видят друг друга. В логе такое

main debug: processing request item: udp://224.8.7.6, node: Playlist, skip: 0
main debug: rebuilding array of current - root Playlist
main debug: rebuild done - 1 items, index 0
main debug: starting playback of new item
main debug: resyncing on udp://224.8.7.6
main debug: udp://224.8.7.6 is at 0
main debug: creating new input thread
main debug: Creating an input for 'udp://224.8.7.6'
main debug: selected audio language[0] en
main debug: selected sub language[0] en
main debug: requesting art for new input thread
main debug: using timeshift granularity of 50 MiB
main debug: using default timeshift path
main debug: `udp://@224.8.7.6' gives access `udp' demux `any' path `@224.8.7.6'
main debug: creating demux: access='udp' demux='any' location='@224.8.7.6' file='(null)'
main debug: looking for access_demux module matching "udp": 17 candidates
main debug: looking for meta fetcher module matching "any": 1 candidates
main debug: no access_demux modules matched
lua debug: Trying Lua scripts in /home/yorween/.local/share/vlc/lua/meta/fetcher
main debug: creating access: udp://@224.8.7.6
lua debug: Trying Lua scripts in /usr/lib/x86_64-linux-gnu/vlc/lua/meta/fetcher
main debug: looking for access module matching "udp": 28 candidates
lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/fetcher
main debug: no meta fetcher modules matched
main debug: looking for art finder module matching "any": 2 candidates
udp debug: opening server=:0 local=224.8.7.6:1234
main debug: net: opening 224.8.7.6 datagram port 1234
main debug: using access module "udp"
main debug: looking for stream_filter module matching "prefetch,cache_block": 26 candidates
prefetch debug: using 16777216 bytes buffer, 16777216 bytes read
main debug: using stream_filter module "prefetch"
main debug: looking for stream_filter module matching "any": 26 candidates
lua debug: Trying Lua scripts in /home/yorween/.local/share/vlc/lua/meta/art
lua debug: Trying Lua scripts in /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art
lua debug: Trying Lua playlist script /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/00_musicbrainz.luac
lua debug: skipping script (unmatched scope) /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/00_musicbrainz.luac
lua debug: Trying Lua playlist script /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/01_googleimage.luac
lua debug: skipping script (unmatched scope) /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/01_googleimage.luac
lua debug: Trying Lua playlist script /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/02_frenchtv.luac
lua debug: skipping script (unmatched scope) /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/02_frenchtv.luac
lua debug: Trying Lua playlist script /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/03_lastfm.luac
lua debug: skipping script (unmatched scope) /usr/lib/x86_64-linux-gnu/vlc/lua/meta/art/03_lastfm.luac
lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art
main debug: no art finder modules matched
qt debug: IM: Setting an input

Погуглив ошибки, ничего конкретного не нашел, кроме похожего в багтрекере со статусом пофикшено в версиях vlc 3+. Возможно, не мой случай и вообще, проблема не в vlc, а в неправильной настройке чего-то.

Я хочу попробовать отловить мультикаст пакеты в локалке через tcpdump, но не могу понять, осуществимо это или нет. Например, ip, на который идет мультикаст, не пингуется. Он должен? Или туда просто отдается поток? И каким образом отловить эти мультикаст пакеты чтобы понять, идет трансляция на этот адрес или нет?

ip, на который идет мультикаст, не пингуется. Он должен?

Обычным пингом - нет. МС адрес - это идентификация группы хостов

Существует mping.

Подключаться нужно на адрес регистратора в сети, тот отдает инфу откуда принимать поток видео и аудио.

Если он просто передает поток данных в сеть на МС адрес, то запустив tcpdump ты увидишь этот поток.

vel ★★★★★ ()

Попробовал wireshark’ом половить пакеты в режиме монитора с фильтром ip.addr>=224.0.0.0. За 10 минут кроме 2 пакетов adwinconfig ничего не поймалось. С фильтром ip.src==192.168.91.12 (адрес регистратора в сети) те же самые пакеты. Получается, мультикаст просто не работает?

Yorween ()
Ответ на: комментарий от vel

Я правильно понимаю, что чтобы поймать данные МС, которые направлены не мне, а по адресу 224.8.7.6, тем же tcpdump’ом или wireshark’ом, мне нужно из режима монитора проверять?

Yorween ()
Последнее исправление: Yorween (всего исправлений: 1)
Ответ на: комментарий от vel

Сеть простая - два клиента (ПК, регистратор) и сам роутер. На роутере включено iptv. Сейчас снял дамп, чтобы посмотреть, работает ли вообще igmp. Роутер шлет как положено membership query на 224.0.0.1, но, когда я запускаю vlc с прослушиванием группы 224.8.7.6, которая установлена в регистраторе как предназначенная для МС, по дампу с ip ПК igmp с membership group поступают совершенно на другую группу - 239.255.255.250 и, судя по всему, вообще не от vlc, т. к. прекратив слушать по vlc, igmp пакеты все равно идут. Получается, может МС трафик и есть, но т. к. клиентов, которые его слушают, нет, роутер его не обеспечивает. Теперь вопрос в том, почему через vlc я не могу слушать группу 224.8.7.6…

Yorween ()
Последнее исправление: Yorween (всего исправлений: 1)
Ответ на: комментарий от Yorween
  • Запускаю vlc udp://@224.8.7.6
  • Смотрю ip maddr show
...
3:	br0
...
	link  01:00:5e:08:07:06
...
  • Смотрю /proc/net/dev_mcast | grep -i 01005e080706
3    br0             1     0     01005e080706
  • Запускаю wireshark -i br0 -p -f 'ether dst 01:00:5e:08:07:06' -k
  • Пингую мультикаст адрес ping 224.8.7.6
  • В окне wireshark вижу пинги на мультикаст адрес:
Frame 1: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface 0
Ethernet II, Src: Dell_9e:7f:4d (f8:b1:56:9e:7f:4d), Dst: IPv4mcast_08:07:06 (01:00:5e:08:07:06)
Internet Protocol Version 4, Src: 10.16.41.187 (10.16.41.187), Dst: 224.8.7.6 (224.8.7.6)
Internet Control Message Protocol

Если регистратор и vlc у тебя действительно в одном ethernet-сегменте, должно просто работать. Если они в разных ethernet-сегментах, между которыми маршрутизатор, на маршрутизаторе надо включить multicast routing.

iliyap ★★★★★ ()
Ответ на: комментарий от iliyap

«vlc udp://@224.8.7.6» а порт ? У udp есть обязательная часть - номер порта.

Вообще все нормальные девайсы имеют некий url, заходя на который ты получаешь адреса и порты потоков, а так же форматы потоков.

vel ★★★★★ ()
Ответ на: комментарий от iliyap

ПК с vlc - 192.168.1.11, регистратор - 192.168.1.117.

grep CONFIG_IP_MULTICAST /boot/config-4.19.0-6-amd64 
CONFIG_IP_MULTICAST=y

Включаю vlc и слушаю udp://@224.8.7.6.

В ip maddr show никаких brX (бридж?) нет, только ethernet и wifi интерфейсы. В сети с регистратором - wifi:

8:	wlx8416f911b8b2
	link  01:00:5e:00:00:01 users 2
	link  33:33:00:00:00:01 users 2
	link  33:33:00:00:00:fb users 2
	link  33:33:ff:f8:d4:97 users 2
	link  01:00:5e:00:00:fb users 2

В dev_mcast те же адреса:

8    wlx8416f911b8b2 2     0     01005e000001
8    wlx8416f911b8b2 2     0     333300000001
8    wlx8416f911b8b2 2     0     3333000000fb
8    wlx8416f911b8b2 2     0     3333fff8d497
8    wlx8416f911b8b2 2     0     01005e0000fb

Не знаю, какой адрес назначения нужно из вышеперечисленных слушать, так что запустил акулу без фильтра tshark -i wlx8416f911b8b2br0 -p. Пинг на адрес группы МС не проходит. Среди пакетов, которые идут, я вижу только igmp, которые в посте выше описывал, NOTIFY с адреса роутера:

192.168.1.1 → 239.255.255.250 SSDP 326 NOTIFY * HTTP/1.1 

и какой-то adwin config:

192.168.1.117 → 255.255.255.255 ADwin Config 142

Больше ничего нет, хотя vlc все это время слушает, судя по анимации.

Yorween ()
Ответ на: комментарий от vel

Вообще все нормальные девайсы имеют некий url, заходя на который ты получаешь адреса и порты потоков, а так же форматы потоков.

Он есть, только вот проблема, работает через IE. У меня виндоус нет нигде, ровно как и желания накатывать ее, а в wine он не заводится.

а порт ?

В админке регистратора порт нигде не указан, задавать вручную тоже нельзя. Пробовал все, которые нашел nmap’ом.

Yorween ()
Ответ на: комментарий от Yorween

На хосте с vlc после его запуска мультикаст адрес (точнее, соответствующий ему ether адрес) должен быть в ip maddr и dev_mcast. Если его там нет, то сетевуха не будет ловить кадры, направляющие я в эту мультикаст группу. У тебя его нет, насколько я вижу. Пинги на мультикаст адрес в wireshark не видны. Это первая проблема.

Имя интерфейса (br0 у меня) не имеет значения. Бридж, про который говорит vel — это в твоём роутере. Там скорее всего линукс и бриджинг. Это может быть второй проблемой. Но сначала надо решить первую.

iliyap ★★★★★ ()
Ответ на: комментарий от iliyap
ip maddress > before_vlc

vlc udp://224.8.7.6

ip maddress > after_vlc
diff -u before_vlc after_vlc

--- before_vlc	2019-10-18 20:44:53.485874708 +0300
+++ after_vlc	2019-10-18 20:45:14.765678374 +0300
@@ -10,6 +10,8 @@
 	link  33:33:ff:aa:86:d9
 	link  01:00:5e:00:00:fb
 	link  33:33:00:00:00:fb
+	link  01:00:5e:08:07:06
+	inet  224.8.7.6
 	inet  224.0.0.251
 	inet  224.0.0.1
 	inet6 ff02::fb

В dev_mcast его нет.

Yorween ()
Последнее исправление: Yorween (всего исправлений: 2)
Ответ на: комментарий от iliyap

А почему 227? Или это ошибка?

Это я пробовал другой адрес. 224.8.7.6 правильный и действующий.

В dev_mcast должен быть. Приглядись, оно там без двоеточий.

grep 0706 /proc/net/dev_mcast 
2    enp30s0         1     0     01005e080706

Действительно, проглядел. Не совсем понял, правда, почему ethernet. Он у меня в другой сети вообще.

Yorween ()
Ответ на: комментарий от iliyap

Для чистоты эксперимента я офнул все интерфейсы, кроме вафли, и проделал все тоже самое. Теперь я вижу пинг

Capturing on 'wlx8416f911b8b2'
    1 0.000000000 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=213/54528, ttl=1
    2 1.001711696 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=214/54784, ttl=1
    3 2.002783687 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=215/55040, ttl=1
    4 3.003878411 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=216/55296, ttl=1
    5 4.005750916 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=217/55552, ttl=1
    6 5.006648011 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=218/55808, ttl=1
    7 6.008008480 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=219/56064, ttl=1
    8 7.009284051 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=220/56320, ttl=1
    9 8.010658668 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=221/56576, ttl=1
   10 9.011601067 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2795, seq=222/56832, ttl=1

Но по igmp все в том же состоянии. Нет запросов на группу 224.8.7.6 с ip ПК.

Yorween ()
Последнее исправление: Yorween (всего исправлений: 2)
Ответ на: комментарий от iliyap
Capturing on 'wlx8416f911b8b2'
...
  111 110.422818499 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2bf3, seq=111/28416, ttl=1
  112 111.423307448 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2bf3, seq=112/28672, ttl=1
  113 112.350956710  192.168.1.1 → 224.0.0.1    IGMPv2 46 Membership Query, general
  114 112.424404852 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2bf3, seq=113/28928, ttl=1
  115 113.425914334 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2bf3, seq=114/29184, ttl=1
  116 113.694479853 192.168.1.11 → 239.255.255.250 IGMPv2 46 Membership Report group 239.255.255.250
  117 114.426700777 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2bf3, seq=115/29440, ttl=1
  118 115.427952559 192.168.1.11 → 224.8.7.6    ICMP 98 Echo (ping) request  id=0x2bf3, seq=116/29696, ttl=1
...

Все те же запросы: от роутера прослушивание на 224.0.0.1, от моего пк на 239.255.255.250. Vlc в это время, конечно, слушал 224.8.7.6.

Yorween ()
Ответ на: комментарий от Yorween

Мне кажется igmp joinы есть, просто ты их не поймал. Но в одном сегменте мультикаст должен работать и без них. Если коммутатор работает без igmp snoopingа, просто флудя мультикаст на все порты. Попробуй отключить igmp snooping на «роутере».

iliyap ★★★★★ ()
Ответ на: комментарий от Yorween

т.е. у тебя регистратор по wifi подключается ?

Я бы с МС в таком случае вообще не связывался.

Тебе нужно одновременно смотреть поток с регистратора на нескольких машинах ?

И еще раз повторяю! Для подключения к потоку (аудио/видео) через МС нужно знать не только адрес, но и порт. Посмотри его в настройках регистратора.

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

т.е. у тебя регистратор по wifi подключается ?

Регистратор по кабелю, ПК по воздуху.

Тебе нужно одновременно смотреть поток с регистратора на нескольких машинах ?

Да, хотя бы на двух.

Посмотри его в настройках регистратора.

Ищу.

Yorween ()
Ответ на: комментарий от Yorween

Порт не проблема. Мультикаст работает по адресам. Получишь мультикаст поток, увидишь какой там порт. Порт vlc использовал скорее всего какой-то по умолчанию.

iliyap ★★★★★ ()
Ответ на: комментарий от Yorween

и вторая машина тоже подключена по wifi?

На роутерах часто бывает ограничение на скорость МС.

Да и поддержка МС для wifi на роутере и/или клиенте может оказаться кривоватой.

vlc умеет транслировать в сеть поток по МС. Если у тебя есть 2 компа в сети, то попробуй настроить один на передачу по МС, а другой на прием.

vlc есть под android, можно после этого посмотреть на андройде.

А потом уже смотреть настройки регистратора.

vel ★★★★★ ()
Ответ на: комментарий от Yorween

Если роутер не поддерживает ни igmp snooping, ни multicast flooding, то через роутер ты поток не получишь.

Может быть, в целях эксперимента исключить роутер? Соединить пк и регистратор кабелем, попытаться получить поток. Потом то же самое уже через роутер.

iliyap ★★★★★ ()
Последнее исправление: iliyap (всего исправлений: 1)