Netem - 特定のホストと送受信するパケットを遅延させる方法

Netem - 特定のホストと送受信するパケットを遅延させる方法

ホストAとホストがあるとしますB。我々はこれを使用してnetem特定の遅延を置いてBパケットを送信するシナリオをシミュレートしようとしています。 2つのケースでこれを行うには:(1)ホスト上で実行中(2)ホスト上で実行中。 A
netem
netemA
netem'B

どんなアイデアがありますか?

答え1

着信および発信パケットに遅延が発生する方法のいくつかの便利なソースがあります。このNetEm Wikiページ情報量が多いから。発信パケット遅延の詳細については、「1.1 WAN遅延シミュレーション」および「2.3着信パケットにnetemを使用する方法」のセクションを参照してください。私はこれを私の設定で試しましたが、問題はありませんでした。

基本遅延:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
21.800

クライアントにのみ100msの遅延があります(B):

# tc qdisc add dev $my_interface root netem delay 100ms

結果:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
102184.355

クライアント側でのみ100msの遅延があります(A)。

まず、中間機能ブロック擬似デバイスIFBを作成します(イーサネットブリッジも機能します)。

# modprobe ifb
# ip link set dev ifb0 up

次に、すべての着信トラフィックを最初にIFBデバイスを通過するようにリダイレクトします。

# tc qdisc add dev $my_interface ingress
# tc filter add dev $my_interface parent ffff: protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0

これで、my_interface に入ってくるトラフィックである IFB デバイスに出るトラフィックの遅延を追加するだけです。

# tc qdisc add dev ifb0 root netem delay 100ms

結果:

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
154442.238

これら2つの結果を次に適用します。

# netperf -H $my_ip -t TCP_RR -P 0 -- -r 64 -o RT_LATENCY
333803.282

ご覧のとおり、遅延は追加された100ms(または前の例では200ms)+基本遅延を超えています。 NetEmはパイプラインの特定の点で遅延を引き起こすため、遅延が発生した場合に予想よりも遅延時間が長くなると副作用が発生する可能性があります。

関連情報