ksaitoの日記

日々試したことの覚え書き

ネットワーク遅延

ネットワーク遅延について理解が曖昧だったのでおさらいしました。

調べ方

測定したいサーバのいずれかからpingコマンドを使って調べます。

gceのインスタンスからヤフージャパンとyahooを測定します。

$ ping -c 2 www.yahoo.co.jp
PING ***.jp (***.***.***.***): 56 data bytes
64 bytes from 183.79.248.252: icmp_seq=0 ttl=51 time=132.073 ms
64 bytes from 183.79.248.252: icmp_seq=1 ttl=51 time=131.703 ms
--- edge.g.yimg.jp ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 131.703/131.888/132.073/0.185 ms
$ ping -c 2 www.yahoo.com
PING ***.jp (***.***.***.***): 56 data bytes
64 bytes from 98.139.180.181: icmp_seq=0 ttl=48 time=29.914 ms
64 bytes from 98.139.180.181: icmp_seq=1 ttl=48 time=29.397 ms
--- atsv2-fp.wg1.b.yahoo.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 29.397/29.655/29.914/0.259 ms
$ 

各サイトは、単なるサンプルなので以降は、サンプル1、サンプル2とします。

読み方

最初の1行目で送信先IPアドレスとデータ部が56バイトのパケットを送信していることがわかります。パケットサイズは、-sオプションで指定が可能です。

-cで指定した回数送信が試みられます。1パケット1行の結果が表示されます。56バイトのデータ部と8バイトのヘッダで計64バイトのパケットが送信されます。time=がRTTです。

RTT(round-trip time)は、パケットを送信して応答があるまでの時間です。

最後の2行は、パケットロスの発生とRTTの統計情報がでます。

スループット

パケットの最大サイズとRTTからネットワークのスループットが分かります。論理的に最大で送信できるデータ量を把握したり、複数の測定結果を比較することで性能差や改善を確認するといったことができるようになります。

パケットの最大サイズ

ifconfigで対象のNICを指定してパケットの最大サイズを確認できます。例えば、下記のようにするとeth0のMTUを見ることでパケットの最大サイズが1,460バイトであることがわかります。

$ ifconfig eth0 | grep MTU
          UP BROADCAST RUNNING MULTICAST  MTU:1460  Metric:1
$ 

スループット

最初のサンプル1とサンプル2のRTTを使ってスループットを計算します。

計算 サンプル1 サンプル2
1秒間に送信できるパケット数 1,000ミリ秒÷131.888≒7.6回 1,000ミリ秒÷29.655≒33.7回
1秒間に送信できる最大サイズ(バイト/秒) 1,460バイト✕7.6回≒11,070バイト/秒 1,460バイト✕33.7≒49,233バイト
1秒間に送信できる最大ビット(ビット/秒) 11,070✕8ビット≒88,560ビット/秒 49,233✕8ビット≒393,863ビット
スループット 88,560÷1024≒86Kbps 393,863÷1024≒385Kbps

データ送信にかかる時間を計算する

スループットと送信データサイズから送信にかかる時間を計算します。

サンプル1のスループットで1GBのデータを送信するのにかかる時間です。

計算 サンプル1の計算式
データサイズ 8,589,934,592ビット=1GB✕1024✕1024✕1024✕8ビット
回線速度 88,064bps≒86Kbps✕1024
転送時間 8,589,934,592bit÷88,064bit✕伝送効率

転送効率が100%だったとしても27時間くらいかかります。

実測値から転送効率を計算する

実際にデータ送信にかかった時間から転送効率を計算します。

サンプル1のスループットで1GBのデータを送信するのに40時間かかった場合の転送効率です。

計算 サンプル1の計算式
送信時間 144,000秒 = 40時間✕60分✕60秒
データサイズ 8,589,934,592ビット=1GB✕1024✕1024✕1024✕8ビット
回線速度 88,064bps≒86Kbps✕1024
転送速度 59,652bps = 8,589,934,592ビット÷144,000秒
転送効率 0.677≒59,652bps÷88,064bps

このケースでは、転送効率は、67.7%となります。