在同一个networking接口上的组播目的地NAT,使用netem

为了testing目的,在一个大型networking中,如果组播数据没有在正确的VLAN中进行stream式传输,那么我将会攻击我,我试图通过运行netemconfiguration的服务器来降级多播数据包。

在下面的例子中,237.1.2.3:5000代表组播目的地址和端口。 至于现在,我用它作为一个netem桥这样( Currentconfiguration):

  ___________ eth2 | netem | eth3 237.1.2.3:5000 ----->| (latency, |-----> 237.1.2.3:5000 | drop...) | ----------- 

我的问题是:为了适应地址规划,我不允许在源码stream的内部保留一个地址的stream输出VLAN(链接到eth3)。 因此,我需要直接将电缆插入到要为其提供降级的多播input的设备

我想知道如何Expected1Expected2configuration可以实现某种方式,离开通用桥梁模式,但保留的netem的东西:

  Expected1 ___________ eth2 | netem | eth3 237.1.2.3:5000 ----->| (latency, |-----> 238.1.2.3:5000 | drop...) | ----------- Expected2 ___________ eth2 | netem | 237.1.2.3:5000 ----->| (latency, | 237.1.2.4:5000 <-----| drop...) | ----------- 

我很确定我已经在旧的FreeBSD设备上做过这个了,但是避免使用iptables等很长一段时间,这让我不得不重新开始……如果我正确地提醒,这是基于iptables规则的目标地址。确定它是否是组播。 如果我需要过滤源地址,这不会是一个问题。 但是,如果我可以过滤目标地址,那么更好,因为我们的IP分发列表中的所有inputstream都由该字段引用。

如果可能,

  • 你能给出一些关于不同空间内的数据包path的说明吗?
  • 你能否提一提源地址或目的地址?
  • 你也可以告诉我,如果我能直接看到tcpdump的输出包,或者如果我需要login到networking的另一个设备(关于堆栈级别或任何其他考虑,因为我不记得正确的PREROUTING / POSTROUTING / …包path,特别是在configuration我不会自己做)。

谢谢,

 # lsb_release -a Description: Debian GNU/Linux 7.2 (wheezy) # grep -H CONFIG_IP_M /boot/config* /boot/config-3.2.0-4-amd64:CONFIG_IP_MULTICAST=y /boot/config-3.2.0-4-amd64:CONFIG_IP_MULTIPLE_TABLES=y /boot/config-3.2.0-4-amd64:CONFIG_IP_MROUTE=y /boot/config-3.2.0-4-amd64:CONFIG_IP_MROUTE_MULTIPLE_TABLES=y # cat /proc/sys/net/ipv4/conf/*/rp_filter 0 0 0 0 0 0 0 # cat /proc/sys/net/ipv4/conf/eth*/mc_forwarding 1 1 1 1