使用 netem 在同一网络接口上进行多播目标 NAT

使用 netem 在同一网络接口上进行多播目标 NAT

为了测试目的,在一个大型网络中,如果多播数据没有在正确的 VLAN 中传输,IT 就会向我发出警告,我尝试使用运行 netem 配置的服务器来降级多播数据包。

在以下示例中,237.1.2.3:5000 代表多播目的地地址和端口。目前,我以这种方式将其用作网络桥(Current配置):

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

我的问题:为了适应地址规划,我不能使用内部为源流保留的地址在输出 VLAN(链接到 eth3)上进行流式传输。因此,我需要将电缆直接插入要为其提供降级多播输入的设备

我想知道如何以某种方式实现Expected1或配置,放弃通用桥接模式但保留 netem 内容:Expected2

                       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 分发列表中的这个字段引用。

如果可能的话,

  • 您能否给出一些有关不同空间内数据包路径的提示?
  • 您能否精确地说明源地址或目标地址?
  • 您能否告诉我是否能够直接使用 tcpdump 查看输出数据包,或者是否需要登录到网络上的另一台设备(关于堆栈级别或任何其他考虑,因为我不记得 PREROUTING/POSTROUTING/... 数据包路径,特别是在我无法自己完成的配置中)。

谢谢,

--

# 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

相关内容