Этот вопрос касается отправки и получения многоадресных рассылок внутри одного и того же хоста, одновременно отправляя их другим хостам.Loopback в multicast
Даже после нескольких часов работы в Интернете я не смог разобраться, как многоадресные датаграммы маршрутизируются внутри одного и того же хоста ..!
Вот идет подробное описание проблемы:
Linux ящик «А» кабель-подключен к коммутатору/маршрутизатору (назовём переключатель/маршрутизатор в качестве «R»).
В Linux коробки А, У меня есть процесс (A0), который посылает UDP пакеты многоадресной адрес «224.0.0.0», порт 5000.
Кроме того, в том же самом окне А, у меня есть два процесса (A1 и A2), как подключение к 224.0.0.0, порт 5000, так и использование UDP-пакетов.
Теперь, как ядро в блоке A управляет маршрутизацией?
Итак, A0 отправляет дейтаграмму, которая потребляется A1 и A2. Имеет ли такая дейтаграмма круглый путь A -> R -> A?
.. или это маршрут ядра в «А» достаточно умный, чтобы избежать этого ненужного кругового путешествия? (то есть датаграмма отправляется посредством A0 и сразу же потребляется A1 и A2, не оставляя A).
Конечно, можно гарантировать, что дейтаграммы многоадресного никогда не покидают A, путем создания и применения петлевого устройства для многоадресной рассылки:
sudo ifconfig lo multicast
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev lo
Но теперь, если я хочу, чтобы потреблять UDP датаграммы одновременно в другом окне Linux , скажем, «Б», туда они не приходят.
Итак, в идеале, (1) датаграмма, потребляемая в A, никогда не должна оставлять A (то есть без туда и обратно A -> R -> A), тогда как (2) датаграмма, потребленная в B, должна идти как A - > R -> B. Я хотел бы достичь этих двух вещей одновременно.
Любой способ достичь этого, например, командой «route»?
гнезда процессы A1 и A2 имеют следующие флаги установлены:
SO_REUSEADDR
SO_REUSEPORT
В то время как я проверил, что процесс A0 (тот, который посылает многоадресную дейтаграмму) имеет следующий флаг:
IP_MULTICAST_LOOP
«Многоадресный поток» является противоречием в терминах, а единица передачи UDP является дейтаграммой. – EJP