在 VLAN 中的虚拟机之间注入延迟

在 VLAN 中的虚拟机之间注入延迟

我们想使用公共云(比如 AWS EC2)中的虚拟机来模拟本地性的影响。

为了实现这一点,我们希望在数据包中注入延迟,以便我们可以模拟特定的网络拓扑。

假设有三台虚拟机:A、B、C

  | 

A |  <- 5 μs delay -> B 

  | <---- 25 μs delay ----> C

我们如何才能最轻松地为 A 和 B 之间的连接注入 5 μs 延迟(或任意值),而为 A 和 C 之间的连接注入 25 μs 延迟?任何解决方案都值得赞赏(每个虚拟机上的 Linux 内核级别更改/创建覆盖网络/...)。

答案1

可以通过 Linux 内核支持的流量整形算法来模拟创建延迟。从netem手动的

# tc qdisc add dev eth0 root handle 1: prio
# tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit  3000
# tc qdisc add dev eth0 parent 30:1 handle 31: netem  delay 200ms 10ms distribution normal
# tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32  match ip dst <IP_of_server_B>/32 flowid 1:3

当在服务器 A 上发出该命令时,会导致到服务器 B 的流量出现 200ms 的延迟和 ± 10ms 的随机变化。

相关内容