説明する興味深い記事を見つけました。ネットワーク問題をシミュレートする方法(パケット損失など)Linuxサーバーの場合。
UbuntuテストVMがインターネット接続にどのインターフェイスが使用されているかを確認しましたens33
。
tc
次に、パケット損失を導入するためのルールを追加しました。
$ sudo tc qdisc add dev ens33 root netem loss 30% 50%
それからping
しばらく実行しましたが、結果は期待どおりになり、いくつかのパッケージが失われました。
$ ping www.google.com
...
97 packets transmitted, 84 received, 13% packet loss
実行中にping
を使用して進行中のパケット損失も監視できると思いましたが、ドロップされたパケットはip -s link show ens33
0個と0個の両方が表示されます。RX
TX
私がしたいのは、ping
実行中にパケット損失をリアルタイムで監視することです。
ベストアンサー1
tc
もう一つ受け入れる-s
パラメータ、同義語:統計。
アドレス 10.0.3.128 の LXC コンテナを指す veth リンクにルートとして適用される例:
# echo; tc qdisc del dev vethlzYQu1 root 2>/dev/null; \
ip neigh flush all; \
tc qdisc add dev vethlzYQu1 root netem loss 30% 50%; \
tc -s qdisc show dev vethlzYQu1 root; \
ping -q -c 10 10.0.3.128; \
tc -s qdisc show dev vethlzYQu1 root
qdisc netem 8010: root refcnt 5 limit 1000 loss 30% 50%
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
PING 10.0.3.128 (10.0.3.128) 56(84) bytes of data.
--- 10.0.3.128 ping statistics ---
10 packets transmitted, 8 received, 20% packet loss, time 9193ms
rtt min/avg/max/mdev = 0.030/125.218/1001.185/331.084 ms
qdisc netem 8010: root refcnt 5 limit 1000 loss 30% 50%
Sent 826 bytes 9 pkt (dropped 3, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
ここでは、9 + 3 = 12個のパケットを送信する必要があり、ドロップされた2つのパケットはpingからのもので、1つは再試行されたARP要求です。
tc
シェルから出力を解析する必要がある場合は、JSON出力で使用するのが最善ですjq
。たとえば、
# tc -s -json qdisc show dev vethlzYQu1 root | jq '.[].drops'
3