UDP多播发送/接收:路由或社会问题?

我在Linux Centos 7上使用'socat'来诊断一些问题。 服务器和客户端都是linux centos7,它们都有多个接口。 服务器10.1.1.1在交换机1上,10.1.1.2在交换机2上。交换机1和交换机2是三层交换机,直接连接,运行Cisco NX-OS。 这是我无法解释的情况:

服务器10.1.1.1(连接到交换机1,UDP包发送者)通过STDIN发送数据:

socat STDIO UDP4-DATAGRAM:239.2.2.1:12345 

客户端10.1.1.2(连接到交换机2,UDP包接收器):

 socat UDP4-RECVFROM:12345,ip-add-membership=239.2.2.1:10.1.1.2,fork,reuseaddr - 

客户端接收服务器的UDP数据包,直到我在与服务器10.1.1.1相同的机器上启动另一个接收器:

 socat UDP4-RECVFROM:12345,ip-add-membership=239.2.2.1:10.1.1.1,fork,reuseaddr - 

当我启动第二个接收器时,10.1.1.2上的客户端停止从服务器接收任何数据。 我也使用了tcpdump,并且在10.1.1.2的端口上看到没有收到数据包。 另外,从那以后,即使我重新启动服务器和客户端,10.1.1.2也不再接收来自10.1.1.1的多播包,对于这个多播前缀(239.2.2.x)。

这是交换机路由问题吗? 或者我错过了“socat”命令行上的一些参数? 我在那个接口(10.1.1.x)上检查了rp_filter = 0。

编辑:更新问题,以包括更多的networking设置。 作为更多的怀疑这个路由问题。

更新:我们发现Layer3交换机上的10.1.1.x VLAN没有启用PIM。 这可能意味着组播路由未启用。 这就是说,我不确定为什么第一次10.1.1.2在不同的交换机上首先会收到数据。

原来这是交换机上的路由问题。 10.1.1.x中的VLAN的组播路由未打开。 一旦我们在我们的思科路由器上添加了“pim稀疏模式”。 一切都按预期工作。