TCP 接続パケットはネットワーク待ち時間を無視し、ping は待ち時間を示します。

TCP 接続パケットはネットワーク待ち時間を無視し、ping は待ち時間を示します。

openwrtを使用して、すべてのネットワークパケットに2000msの遅延を導入しました。ネテム基準寸法。

# This is run on the terminal of the OpenWRT router
tc qdisc add dev wlan1 root netem delay 2000ms

ネットワーク上のデバイスにpingを送信すると、これがどのように影響するかを明確に確認できます。

# ping 192.168.10.164
PING 192.168.10.164 (192.168.10.164): 56 data bytes
64 bytes from 192.168.10.164: seq=0 ttl=64 time=2001.956 ms
64 bytes from 192.168.10.164: seq=1 ttl=64 time=2010.677 ms
64 bytes from 192.168.10.164: seq=2 ttl=64 time=2004.216 ms
64 bytes from 192.168.10.164: seq=3 ttl=64 time=2001.451 ms
64 bytes from 192.168.10.164: seq=4 ttl=64 time=2005.981 ms

しかし、交換を介してメッセージを配信するときにこれらの遅延に気づきようとすると無視されるncようです。

|---------------------|--------------------------------|
|    Terminal 1       |   Terminal 2                   |     
|   (192.168.10.164)  |   192.168.10.186               |
|---------------------|--------------------------------|
|  # nc -l 2389       |                                |
|                     | # nc 192.168.10.164 2389       |
|                     |      Hello                     |
|  # NO 2s DELAY      |                                |
|  # ALMOST INSTANT   |                                |
|    Hello            |                                |
|---------------------|--------------------------------|

私の質問は次のとおりです

  • これがモジュールが正しく設定されていない場合、netemすべてのIPパケットに遅延を適用する正しいモジュールは何ですか?

修正する これはnetemモジュールのバグが原因であるようです。ルータが再起動し、コマンドに応答した後に予想される遅延が発生しました。

答え1

ICMPとTCPは異なるプロトコルであり、コマンドがICMPパケットに影響を与える場合、TCPパケットには影響しません。

答え2

netemのドキュメントはここで見ることができます(https://wiki.linuxfoundation.org/networking/netem)一方、インターフェースが正しいことを確認しましたか?通常、opewwrtはネットワークデバイスを作成し、WLANをnetemに参照し、ncプロセスは他のデバイスに関連付けられている別のネットワークに存在する可能性があります。

答え3

qdiscが追加されたように見え、192.168.10.164186でpingすると、要求時間の代わりに応答時間が2秒遅れます。

netcatの場合、Helloトラフィックは186 - > 164に流れ、netem qdisc(インターフェースへの入力であるため)を通過しません。ただし、詳しく見ると、接続を開くと2秒ほど遅れることがわかります。

逆に入力すると遅延を確認できます。

再起動した場合、再起動後に反対方向にテストできますか?つまり、186の代わりに164を入力しますか?

関連情報