web-dev-qa-db-ja.com

VLANの仮想マシン間に遅延を注入する

パブリッククラウド(AWS EC2など)内のVMを使用して、ローカリティの影響をシミュレートしたいと思います。

これを行うには、特定のネットワークトポロジをシミュレートできるように、パケットに遅延を挿入します。

A、B、Cの3つのVMがあると仮定します

  | 

A |  <- 5 μs delay -> B 

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

AとCの間の25μsの遅延に対して、AとBの間の接続に5μsの遅延(または任意の値)を最も簡単に注入するにはどうすればよいでしょうか?任意のソリューションを歓迎します(LinuxカーネルレベルはそれぞれVM /オーバーレイネットワークの作成/ ...)で変更されます。

4
Jedi

遅延の作成は、Linuxカーネルでサポートされているトラフィックシェーピングアルゴリズムによってシミュレートできます。 netem manual から:

# 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へのトラフィックに±10msのランダムな変動を伴う200msの遅延を作成します。

4
HBruijn