У меня есть пара Solaris 10, которые должны отправлять многоадресные UDP-пакеты группе хостов. Один из них работает нормально, а другой - нет.
Проблема со второй машиной заключается в том, что она не знает, какой MAC-адрес использовать для обертывания этого фрагмента UDP / IP в кадре Ethernet. Когда я бегу arp -an
Я вижу, что у него есть этот многоадресный адрес как U
на пару секунд нерешенными, затем он сдается.
Никто не отвечает на запросы ARP для этого многоадресного IP-адреса, что вполне ожидаемо.
Теоретически (и на практике на другой машине) этот MAC-адрес должен быть хорошо известен. Вы берете младшие 23 бита IP-адреса ИЛИ с 01: 00: 5e: 00: 00: 00, и вы получаете MAC-адрес группы многоадресной рассылки. Никакие ARP не должны отправляться вообще.
Когда я вручную вставляю этот MAC-адрес в таблицу ARP этого компьютера (используя arp -s
), работает нормально.
PS. Программное обеспечение работает в неглобальной зоне Solaris. Может, это имеет какое-то значение.
Какой тип сети использует зона, в которой запущено приложение? Совместное или эксклюзивное? Можно указать MAC-адрес виртуального компьютера для зоны с помощью свойства anet. Проверить соответствующий раздел документации.
У вас несколько интерфейсов? Первый из перечисленных в /etc/zones/myzone.xml будет использоваться для многоадресной рассылки. Вы должны увидеть это с помощью "netstat -rn".
Вот запись в блоге, посвященная этому: http://www.lecentre.net/blog/archives/142