linux – 具有两个本地以太网接口的吞吐量测试设置

我目前正在使用以下设置测试硬件设备(DUT – 被测设备)的路由性能(所有地址都以192.168开头.):

eth0 (29.2) <---> eth1 (29.1)  eth2 (30.1) <---> eth0 (30.2)
HOST1             |~~~~~~~~~DUT~~~~~~~~~~|       HOST2

Iperf在这个设置中运行得很好.

但是,我想摆脱HOST2,因为HOST1上有另一个以太网卡.这就是我想要实现的目标:

eth0 (29.2) <---> eth1 (29.1)  eth2 (30.1) <---> eth1 (30.2)
HOST1             |~~~~~~~~~DUT~~~~~~~~~~|       HOST1

如何在HOST1上配置Linux路由,以便从eth0到eth1的数据包通过DUT而不是内部通过内核?

我用3.0内核运行Debian. iproute2版本是ss110629.

解决方法:

路由与snat / dnat相结合应该可以解决问题.这里的基本思想是在HOST1上为每个设备分配第二个子网中的第二个“虚拟”IP地址.虚拟地址在离开/进入host1之前/之后被转换为实际地址.
使用以下设置并在192.168.9.2或192.168.10.2处引导iperf流量(取决于所需的流向)

IP地址分配

HOST1

> eth0 192.168.29.2/24(此设备的“虚拟”地址为192.168.9.2)
> eth1 192.168.30.2/24(此设备的“虚拟”地址为192.168.10.2)

DUT

> eth1 192.168.29.2/24
> eth2 192.168.30.2/24

静态路线

HOST1

> 192.168.10.2/24 via 192.168.29.1
> 192.168.9.2/24 via 192.168.30.1

DUT

> 192.168.9.2/24 via 192.168.29.2
> 192.168.10.3/24 via 192.168.30.2

关于HOST1的iptables规则

POSTROUTING

> SNAT数据包的目的地为192.168.9.2到192.168.10.2
> SNAT数据包的目的地是192.168.10.2到192.168.9.2

PREROUTING

> DNAT数据包的目的地为192.168.9.2到192.168.29.2
> DNAT数据包的目的地为192.168.10.2到192.168.30.2

上一篇:《OpenGL编程指南(原书第9版)》——2.1 着色器与OpenGL


下一篇:OpenStack网络基础