Skip to content
Published on

[コンピュータネットワーク] 03. ネットワーク遅延、損失、スループット

Authors

本記事は James Kurose, Keith Ross 著 Computer Networking: A Top-Down Approach (6th Edition) の教科書を基にまとめた内容です。


1. パケット交換ネットワークにおける遅延の概要

パケットが送信元から宛先まで移動する際、経路上の各ノード(ルーター)で複数の遅延を経験する。最も重要なのは**ノード遅延(nodal delay)**であり、4つの要素で構成される。

ノード遅延(d_nodal) = d_proc + d_queue + d_trans + d_prop

  d_proc  : 処理遅延 (Processing Delay)
  d_queue : キューイング遅延 (Queuing Delay)
  d_trans : 伝送遅延 (Transmission Delay)
  d_prop  : 伝搬遅延 (Propagation Delay)

2. 4種類の遅延要素

2.1 処理遅延(Processing Delay)

パケットヘッダを検査し、どこに送るかを決定する時間である。

  • パケットヘッダのビットエラー検査
  • フォワーディングテーブルの検索
  • 一般的に**マイクロ秒(us)**以下
パケット到着 → [ヘッダ検査] → [フォワーディング決定] → キューに入る
               処理遅延 (d_proc)

2.2 キューイング遅延(Queuing Delay)

パケットが出力リンクのキューで送信を待つ時間である。

  • キューで待機中の他のパケット数に依存
  • マイクロ秒からミリ秒レベルまで変動
  • 4種類の遅延の中で最も複雑で予測困難
出力キュー:
  [pkt5][pkt4][pkt3][pkt2][pkt1] ──> 出力リンク
                                      (送信中)
  ← これらのパケットの待ち時間 = キューイング遅延 →

2.3 伝送遅延(Transmission Delay)

パケットのすべてのビットをリンクに押し出すのにかかる時間である。

伝送遅延 = L / R

  L: パケット長(bits)
  R: リンク伝送率(bps)

L = 10,000 bitsR = 10 Mbps

d_trans = 10,000 / 10,000,000 = 0.001秒 = 1ms

伝送遅延はパケット長リンク伝送率に依存し、2つのルーター間の距離とは無関係である。

2.4 伝搬遅延(Propagation Delay)

ビットがリンクを通じて物理的に伝搬する時間である。

伝搬遅延 = d / s

  d: 2つのルーター間の物理的距離(meters)
  s: 媒体の伝搬速度(約 2 * 10^8 m/s 〜 3 * 10^8 m/s)

:ルーター間距離 = 5,000 km、伝搬速度 = 2.5 x 10^8 m/s

d_prop = 5,000,000 / 250,000,000 = 0.02秒 = 20ms

伝搬遅延は距離に依存し、パケットサイズとは無関係である。

2.5 伝送遅延 vs 伝搬遅延の比喩

高速道路の料金所の比喩:

車の列 = パケットのビット列
料金所 = ルーター
高速道路 = リンク

伝送遅延:すべての車が料金所を通過する時間
          (車の数 / 料金所の処理速度)

伝搬遅延:1台の車が料金所から次の料金所まで走る時間
          (距離 / 車の速度)

3. キューイング遅延とパケット損失

3.1 トラフィック強度(Traffic Intensity)

キューイング遅延の程度はトラフィック強度で判断できる。

トラフィック強度 = L * a / R

  L: パケットサイズ(bits)
  a: 平均パケット到着率(packets/sec)
  R: リンク伝送率(bps)

トラフィック強度に応じたキューイング遅延

キューイング
遅延
  ^
  |          |
  |          |     /
  |          |    /
  |          |   /
  |          |  /
  |        __|_/
  |   ___/   |
  |__/       |
  +-----------+-------> トラフィック強度 (La/R)
  0          1

  La/R → 0 : キューイング遅延はほぼゼロ
  La/R → 1 : キューイング遅延が急激に増加
  La/R > 1 : キューが無限に増加(システム不安定)

核心ルール

トラフィック強度キューイング遅延の状態
La/Rが0に近いほぼゼロ
La/Rが1に近い急激に増加
La/Rが1を超える無限に増加(実質的にパケット損失)

システム設計のゴールデンルール:トラフィック強度が1を超えないように設計しなければならない。

3.2 パケット損失(Packet Loss)

現実ではキュー(バッファ)のサイズは有限である。

バッファが満杯の状態で新しいパケットが到着:

  [pkt_n][...][pkt2][pkt1] ──> 出力リンク
  ^^^^^^^^^^^^^^^^^^^^^^^^
  バッファ容量 = n(満杯)

  pkt_new到着 → ドロップ!(パケット損失)
  • 損失したパケットは前のノードや送信元で再送される可能性がある
  • または全く再送されない場合もある(アプリケーションに依存)
  • 混雑したネットワークでは損失率が大幅に増加

4. エンドツーエンド遅延(End-to-End Delay)

送信元から宛先までの全体遅延を計算してみよう。

N個のリンクを経由する場合(混雑なしと仮定):

d_end-to-end = N * (d_proc + d_trans + d_prop)
             = N * (d_proc + L/R + d/s)

:ルーター3つ(リンク3つ)、d_proc = 0.003msL = 1,500 bytesR = 2 Mbpsd = 5,000 kms = 2.5 * 10^8 m/s

各ホップの遅延:
  d_proc  = 0.003 ms
  d_trans = (1500 * 8) / 2,000,000 = 6 ms
  d_prop  = 5,000,000 / 250,000,000 = 20 ms

1ホップ遅延 = 0.003 + 6 + 20 = 26.003 ms
総遅延 = 3 * 26.003 = 78.009 ms

4.1 Traceroute

traceroute(Windowsでは tracert)コマンドで実際のエンドツーエンド経路と各ホップの遅延を測定できる。

traceroute www.example.com
出力例:
  1  192.168.1.1     1.234 ms   1.123 ms   1.345 ms
  2  10.0.0.1        5.678 ms   5.432 ms   5.789 ms
  3  72.14.215.85   15.234 ms  14.987 ms  15.123 ms
  ...

各行は1つのルーター(ホップ)を表し、3回のRTT測定値が表示される。

4.2 その他のエンドツーエンド遅延

意図的な遅延

  • メディアパケット化遅延:VoIPで音声データをパケットにまとめる時間
  • 処理遅延:メールサーバーでのウイルス検査など

5. スループット(Throughput)

5.1 定義

スループットは単位時間あたりに送信元から宛先へ転送されるビット数である。

  • 瞬間スループット(instantaneous throughput):特定時点の伝送率
  • 平均スループット(average throughput):全体の転送時間における平均伝送率
Fビットのファイル転送にT秒かかる場合:

  平均スループット = F / T (bps)

エンドツーエンドのスループットは経路上で最も遅いリンクによって決まる。

サーバー ──Rs──> ルーター ──Rc──> クライアント

  Rs = サーバー側リンク伝送率
  Rc = クライアント側リンク伝送率

  スループット = min(Rs, Rc)

例1:サーバー側がボトルネック

  サーバー ──2 Mbps──> ルーター ──10 Mbps──> クライアント

  スループット = min(2, 10) = 2 Mbps
  ボトルネックリンク:サーバー側リンク

例2:クライアント側がボトルネック

  サーバー ──100 Mbps──> ルーター ──1.5 Mbps──> クライアント

  スループット = min(100, 1.5) = 1.5 Mbps
  ボトルネックリンク:クライアント側リンク(アクセスネットワーク)

5.3 多数の接続が共有するリンク

10組のサーバー-クライアントペアが1つのコアリンク(R)を共有:

  サーバー1 ──Rs──┐                    ┌──Rc──> クライアント1
  サーバー2 ──Rs──┤                    ├──Rc──> クライアント2
  ...             ├── R(共有リンク)───┤
  サーバー10──Rs──┘                    └──Rc──> クライアント10

各接続のスループット:

スループット = min(Rs, Rc, R/10)

実際のインターネットではコアリンクの容量が非常に大きいため、ほとんどの場合アクセスネットワークがボトルネックとなる。

一般的な場合:
  コアリンク >> アクセスネットワーク伝送率

  → スループット = min(Rs, Rc)
  → ボトルネックはほぼ常にアクセスネットワーク側

6. 遅延とスループットの関係

遅延(Delay)とスループット(Throughput)は独立した性能指標:

  遅延:1つのパケットが到着するまでにかかる時間
  スループット:単位時間あたりに転送されるデータ量

  パイプの比喩:
  ┌─────────────────────────────┐
  │  水(データ)が流れるパイプ    │
  └─────────────────────────────┘
    ← パイプの長さ = 遅延 →
    パイプの断面積 = スループット

7. まとめ

遅延要素依存する変数大きさ
処理遅延ルーター性能us以下
キューイング遅延トラフィック強度us〜ms
伝送遅延パケットサイズ/リンク伝送率us〜ms
伝搬遅延リンク距離/伝搬速度ms

核心公式:

d_nodal = d_proc + d_queue + d_trans + d_prop
トラフィック強度 = La/R(1未満であれば安定)
スループット = min(経路上すべてのリンクの伝送率)

8. 確認問題

Q1. 伝送遅延と伝搬遅延の違いを説明せよ。
  • 伝送遅延:パケットのすべてのビットをリンクに押し出す時間。L/Rで計算し、パケットサイズとリンク伝送率に依存する。
  • 伝搬遅延:ビットがリンクを通じて物理的に移動する時間。d/sで計算し、距離と伝搬速度に依存する。

料金所の比喩:伝送遅延はすべての車が料金所を通過する時間、伝搬遅延は1台の車が次の料金所まで走る時間である。

Q2. トラフィック強度が1を超えるとどうなるか?

パケットの平均到着率がリンクの伝送能力を超えるため、キューが際限なく増加する。実際にはバッファが有限であるため、大量のパケット損失が発生する。したがって、トラフィック強度が1を超えないようにネットワークを設計しなければならない。

Q3. エンドツーエンドのスループットを決定する要因は?

経路上で最も遅いリンク、すなわち**ボトルネックリンク(bottleneck link)**がエンドツーエンドのスループットを決定する。実際のインターネットではほとんどの場合、アクセスネットワーク(家庭のDSL、ケーブルなど)がボトルネックとなる。