我有一对 Solaris 10 机器,它们应该向一组主机发送多播 UDP 数据包。其中一个工作正常,而另一个则不行。
第二台机器的问题是它不知道使用哪个 MAC 地址将这段 UDP/IP 封装到以太网帧中。当我运行时,arp -an
我发现它有U
几秒钟没有解析这个多播地址,然后它就放弃了。
没有人回答这个多播 IP 地址的 ARP 请求,这是完全可以预料到的。
理论上(实际上在另一台机器上也是如此)这个 MAC 地址应该是众所周知的。取 IP 地址的低 23 位,将其与 01:00:5e:00:00:00 进行“或”运算,即可得到多播组的 MAC 地址。根本不应该发送 ARP。
当我手动将此 MAC 地址注入到该机器的 ARP 表中(使用arp -s
)时,它可以正常工作。
PS. 该软件在非全局 Solaris 区域内运行。也许确实会有所不同。
答案1
您有多个接口吗?/etc/zones/myzone.xml 中列出的第一个接口将用于多播。您应该能够使用“netstat -rn”查看此信息。
以下是一篇涉及此问题的博客文章:http://www.lecentre.net/blog/archives/142
答案2
运行应用程序的区域使用哪种类型的网络?共享还是独占?可以使用 anet 属性为区域指定 vnic 的 mac 地址。查看相关文档部分。