pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

直結とスイッチ経由のRTT動作確認メモ(作成中)

10mbの時の結果が納得できず。
ネットワークネゴシエーションまわりの設定を見直す。それでもNGなら情報収集する

直結とスイッチ経由でRTTにどれだけ差がでるか?を確認。

以下の接続でホストA→ホストBにPING(サイズ703バイトと1472バイト)を送信して、それぞれ10Mb/s、100Mb/s、1000Mb/sの速度の場合のRTTを確認。
・ホストA→スイッチ→ホストB(スイッチ経由)
・ホストA→ホストB(直結)
※ホストAのIPは192.168.0.250、ホストAのIPは192.168.0.252
※1472バイトは最大MTUサイズを想定。703バイトにした理由は後述。

想定

RTTは、1リンクあたりにかかる時間が加算され決定される。

スイッチ経由の場合はリンク数2個、直結の場合はリンク数1個

データ転送速度は、各リンクの速度・PINGサイズ毎に異なる。

速度 703バイト 1472バイト
10Mb/s 0.615233ms 1.230466ms
100Mb/s 0.0615233ms 0.1230466ms
1000Mb/s 0.00615233ms 0.01230466ms

※上記の根拠は以下URLを参照。
NWスループットについて - pikesaku’s blog

・703バイトにした理由は、1フレーム転送にかかる時間が1472バイトの場合の半分にする為。
・上りと下りにかかる時間も考慮する必要あり。

想定イメージ

例) 10Mb/s、1472バイトの場合

検証結果

pingを300個で平均RTTを記載。ログは後述。

接続 PINGサイズ スイッチ経由 直結 差異(結果) 差異(想定)
10Mbs/s 703バイト 5.484 4.276 1.208 1.230466(0.615233*2)
10Mbs/s 1472バイト 10.496 7.986 2.51 2.460932(1.230466*2)
100Mbs/s 703バイト 0.977 0.853 0.124 0.1230466(0.0615233*2)
100Mbs/s 1472バイト 1.331 1.095 0.236 0.2460932(0.1230466*2)
1000Mbs/s 703バイト 0.314 0.265 0.049 0.01230466(0.00615233*2)
1000Mbs/s 1472バイト 0.358 0.303 0.055 0.02460932(0.01230466*2)

考察

・10,100Mb/sでは、想定通り。
・1000Mb/sだと、数字が合わないが、0.0Xmsレベルの違いになる為、考え方としては誤りはないと想定される。

https://www.slideshare.net/junkato1272/ss-70431661

https://www.n-study.com/qos-fundamentals/endtoend-delay/

上記URLに遅延の考え方の記載あり。
・処理遅延
 受信、ルーティングやスイッチング処理、出力IFにパケットをキューイングするまでの時間
・キューイング遅延
 パケットが出力インタフェースのキューに入っている時間
 Qosは、この時間を制御して実現
・シリアル化遅延
 パケットをインタフェースから送信するために電気信号や光信号、電波など物理的な信号に変換するための時間
 シリアル化遅延=パケットサイズ/帯域幅
 ※正確には、パケットサイズにプリアンブル・最小フレーム間隔も含めた方が良いのかな?
 検証してるたの、まさしくこれ!
・伝搬遅延
 物理的な信号が伝送媒体を通って次のデバイスまで到達するために必要な時間
 伝送媒体によって異なる
 目安として100マイルあたり1ms
 1kmあたり約6μs
 ノーマルユースでは、無視してOKな小ささ。 
 ただし、国際間や衛星通信など非常に長距離な通信を行うときには伝搬遅延は大きくなる

検証結果ログ

スイッチ経由

・10Mb/s・703バイト

# ping -s 703 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 703 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 299472ms
rtt min/avg/max/mdev = 5.379/5.484/5.574/0.040 ms

・10Mb/s・1472バイト

# ping -s 1472 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 1472 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 299463ms
rtt min/avg/max/mdev = 10.336/10.496/10.557/0.026 ms

・100Mb/s・703バイト

# ping -s 703 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 703 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 299350ms
rtt min/avg/max/mdev = 0.863/0.977/1.037/0.022 ms

・100Mb/s・1472バイト

# ping -s 1472 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 1472 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 299429ms
rtt min/avg/max/mdev = 1.263/1.331/1.398/0.023 ms

・1000Mb/s・703バイト

# ping -s 703 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 703 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 306188ms
rtt min/avg/max/mdev = 0.241/0.314/0.386/0.026 ms
root@black:~# 

・1000Mb/s・1472バイト

# ping -s 1472 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 1472 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 306169ms
rtt min/avg/max/mdev = 0.274/0.358/0.424/0.027 ms

直結

・10Mb/s・703バイト

# ping -s 703 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 703 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 299407ms
rtt min/avg/max/mdev = 4.059/4.276/4.374/0.059 ms

・10Mb/s・1472バイト

# ping -s 1472 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 1472 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 299405ms
rtt min/avg/max/mdev = 7.794/7.986/8.116/0.086 ms

・100Mb/s・703バイト

# ping -s 703 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 703 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 306185ms
rtt min/avg/max/mdev = 0.786/0.853/0.903/0.021 ms

・100Mb/s・1472バイト

# ping -s 1472 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 1472 192.168.0.252 -c 300  tail -2
300 packets transmitted, 300 received, 0% packet loss, time 299361ms
rtt min/avg/max/mdev = 1.038/1.095/1.172/0.022 ms

・1000Mb/s・703バイト

# ping -s 703 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 703 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 306152ms
rtt min/avg/max/mdev = 0.140/0.265/0.335/0.028 ms

・1000Mb/s・1472バイト

# ping -s 1472 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 1472 192.168.0.252 -c 300 | tail -2
300 packets transmitted, 300 received, 0% packet loss, time 306167ms
rtt min/avg/max/mdev = 0.232/0.303/0.376/0.028 ms

利用したコマンド

ethtool -s enp0s25 speed 10 duplex full autoneg off
ethtool -s enp0s25 speed 100 duplex full autoneg off
ethtool -s enp0s25 autoneg on
ping -s 703 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 703 192.168.0.252 -c 300 | tail -2
ping -s 1472 192.168.0.252 -c 1 > /dev/null 2>&1 && ping -s 1472 192.168.0.252 -c 300 | tail -2