我们在 tomcat 上有一个 j2ee webapp,它使用带有多播发现的 ehcache。但它没有发现任何东西。网络上似乎没有可见的多播流量,但我们不太清楚如何真正排除故障。到目前为止,我们有一些积极的事情......
如果我在一个设备上对相关的多播 IP 地址进行 tcpdump 并从另一个设备上对其进行 ping 操作,那么我会看到传入的回显请求。
如果我们运行我们的 Web 开发人员提供的简单 Java 多播监听器工具,那么它就可以看到来自其所在机器的多播请求。
但也有负面作用...
tcpdumping 我们在该地址上看不到任何其他流量,即使看到这个 java 工具打印定期多播摘要“tcpdump -vn -i eth3 ether multicast”仍然没有显示任何内容,其中 eth3 是 224.0.0.0/4 路由所在的网卡。没有涉及路由/IGMP,所有流量都在单个 vlan 上,单播流量在该 vlan 上流动良好。
我们在 java 工具上看不到其他流量,只有本地机器。
这些是运行在一系列 ESX 4.1 系统上的 CentOS VM,这可能与此有关。我们打算在第二天早上在同一台 ESX 机器上安装系统,看看在单独使用 vSwitch 时是否能看到那里的通信,但由于多播特定知识的水平与普通单播知识相比确实非常低,我们有点不知所措。据我们所知,在思科交换机或 esx 级别网络上似乎没有什么相关的事情要做,然而多播发现并没有发生。
如果有人可以提供一些用于拍摄此照片的有用工具,即使不能提供直接的解决方案,也将不胜感激。
答案1
我已经使用过 tcpdunp 很多次了,但发现它不太容易使用,所以我使用ngrep
也支持正则表达式的。
ngrep -t -d eth3 '' broadcast
并且ngrep -t -d eth3 '' multicast
应该将接口置于混杂模式并实现相同的目的。
我并不是说这与您使用 tcpdump 尝试的操作有很大不同,但是如果由于某种原因它出现错误,那么 ngrep 是可以尝试的 Java 工具之上的另一个工具。
答案2
遗憾的是,这根本不是网络问题,原来我们的开发人员在 ehcache 的配置文件中将 TTL 设置为 0,并且只费心在单个系统上测试他们的代码。将其更改为 1 可让流量到达整个 IP 子网。大功告成。谢谢