パブリッククラウド(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 /オーバーレイネットワークの作成/ ...)で変更されます。
遅延の作成は、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の遅延を作成します。