Skip to content
Published on

[コンピュータネットワーク] 11. ネットワーク層の概要:フォワーディングとルーティング

Authors

ネットワーク層の概要:フォワーディングとルーティング

ネットワーク層(Network Layer)は、送信ホストから受信ホストまでパケットを転送する役割を担います。トランスポート層がエンドツーエンドの論理的通信を提供するのに対し、ネットワーク層はホスト間の実際の経路を決定しパケットを移動させる中核的な層です。

この記事では、ネットワーク層の2つの中核機能である**フォワーディング(Forwarding)ルーティング(Routing)**を区別し、ネットワークサービスモデル、仮想回線とデータグラムネットワークの違い、そしてルータの内部構造を見ていきます。


1. フォワーディングとルーティングの区別

1.1 フォワーディング(Forwarding)

フォワーディングは、ルータの入力ポートに到着したパケットを適切な出力ポートに移動させるローカル動作です。ハードウェアレベルでナノ秒単位で実行され、フォワーディングテーブルを参照して決定されます。

1.2 ルーティング(Routing)

ルーティングは、パケットが送信元から宛先まで移動する全体経路を決定するネットワーク全域の動作です。ルーティングアルゴリズムがフォワーディングテーブルの内容を決定します。

1.3 比喩で理解する

自動車旅行に例えると次のようになります。

  • ルーティング:ソウルから釜山までの全体経路をナビゲーションで計画すること
  • フォワーディング:各交差点でナビゲーションの案内に従って左折または右折すること
フォワーディングとルーティングの関係
=====================================

[ルーティングアルゴリズム] -----> [フォワーディングテーブル]
  (経路決定)                     (テーブル参照)
                                      |
                                      v
パケット到着 --> [入力ポート] --> [スイッチング] --> [出力ポート] --> パケット送信
                 (フォワーディング:ローカル動作)

2. ネットワークサービスモデル

ネットワーク層がトランスポート層に提供できるサービスモデルは大きく2つあります。

2.1 コネクション型サービス(Connection-Oriented)

データ転送前に経路を設定し、すべてのパケットが同じ経路を辿ります。ATM、Frame Relayネットワークが代表的です。

2.2 コネクションレス型サービス(Connectionless)

各パケットが独立してルーティングされます。インターネットのIPプロトコルがこの方式を使用しています。

サービスモデル比較
===================

項目              | コネクション型 (VC)    | コネクションレス型 (Datagram)
------------------+------------------------+------------------------------
接続設定          | 必要                   | 不要
パケット経路      | 同一経路               | 各々独立
状態維持          | ルータに状態を保存     | 状態なし
帯域幅保証        | 可能                   | 不可
代表技術          | ATM, MPLS              | IP(インターネット)

3. 仮想回線ネットワーク(Virtual Circuit)

3.1 仮想回線の概念

仮想回線(VC)ネットワークは電話ネットワークと類似した方式で、データ転送前に経路を設定します。物理的に専用回線を割り当てるわけではありませんが、論理的に固定された経路を辿ります。

3.2 VCの3段階

  1. 接続設定(Setup):経路上のすべてのルータにVC番号を割り当て、フォワーディングテーブルにエントリを追加します。
  2. データ転送(Data Transfer):パケットはVC番号をヘッダに含めて設定された経路を辿ります。
  3. 接続解除(Teardown):経路上のすべてのルータからVC関連の状態を削除します。
仮想回線動作例
================

ホストA --> [R1] --> [R2] --> [R3] --> ホストB

VC番号変換テーブル(ルータR1):
+------------------+----------+-------------------+----------+
| 入力インタフェース | 入力VC  | 出力インタフェース | 出力VC  |
+------------------+----------+-------------------+----------+
|        1         |    12    |        3          |    22    |
|        2         |    63    |        4          |    18    |
+------------------+----------+-------------------+----------+

パケットがインタフェース1にVC=12で到着
  --> インタフェース3へVC=22に変換して転送

3.3 シグナリングプロトコル

VCの設定と解除にはシグナリングプロトコル(Signaling Protocol)が使用されます。ATMではQ.2931、Frame RelayではLMIプロトコルが代表的です。


4. データグラムネットワーク(Datagram Network)

4.1 データグラム方式の特徴

データグラムネットワークでは接続設定のプロセスがありません。各パケットは宛先アドレスをヘッダに含み、ルータはそのアドレスに基づいて独立してフォワーディングの決定を行います。

4.2 最長プレフィックスマッチング(Longest Prefix Matching)

ルータのフォワーディングテーブルは、宛先アドレスのプレフィックスを基準にマッチングします。複数のエントリがマッチした場合、最も長いプレフィックスを持つエントリが選択されます。

最長プレフィックスマッチングの例
=================================

フォワーディングテーブル:
+-------------------------------+-----------+
| 宛先アドレスプレフィックス      | 出力リンク |
+-------------------------------+-----------+
| 11001000 00010111 00010       | リンク 0  |
| 11001000 00010111 00011000    | リンク 1  |
| 11001000 00010111 00011       | リンク 2  |
| その他                         | リンク 3  |
+-------------------------------+-----------+

宛先アドレス:11001000 00010111 00011000 10101010
  --> リンク 0:プレフィックス21ビットマッチ
  --> リンク 1:プレフィックス24ビットマッチ  <-- 選択(最長マッチ)
  --> リンク 2:プレフィックス21ビットマッチ

5. ルータの内部構造

ルータは大きく4つの構成要素から成り立っています。

ルータの内部構造
=================

        [ルーティングプロセッサ]
         (制御プレーン)
              |
              | フォワーディングテーブル配布
              v
[入力ポート] --> [スイッチングファブリック] --> [出力ポート]
[入力ポート] --> [スイッチングファブリック] --> [出力ポート]
[入力ポート] --> [スイッチングファブリック] --> [出力ポート]
              (データプレーン)

5.1 入力ポート(Input Port)

入力ポートは3つの機能を実行します。

  1. 物理層機能:入ってくる物理信号をビットに変換
  2. リンク層機能:フレームのヘッダを処理しデカプセル化
  3. フォワーディング機能:フォワーディングテーブルを参照して出力ポートを決定
入力ポートの処理過程
=====================

物理信号 --> [回線終端] --> [リンク層処理] --> [フォワーディングテーブル検索]
                                                         |
                                                         v
                                                  [スイッチングファブリックへ]

5.2 スイッチングファブリック(Switching Fabric)

スイッチングファブリックは入力ポートから出力ポートへパケットを物理的に移動させます。3つの方式があります。

メモリベーススイッチング:初期のルータで使用された方式で、CPUがパケットをメモリにコピーした後、出力ポートへ転送します。メモリ帯域幅により速度が制限されます。

バスベーススイッチング:パケットが共有バスを通じて入力ポートから出力ポートへ直接移動します。バス帯域幅により速度が制限されます。

クロスバースイッチング:N個の入力とN個の出力を接続する格子構造です。異なるポートペア間で同時転送が可能で、最も高速です。

スイッチングファブリックの3つの方式
=====================================

1. メモリベース         2. バスベース          3. クロスバー

[入力] -> [メモリ]      [入力] --+              [入力]-+-+-+
            |           [入力] --+--> [バス]     [入力]-+-+-+
            v           [入力] --+              [入力]-+-+-+
         [出力]         [出力] <-+                     | | |
                        [出力] <-+              [出力] [出力] [出力]
                        [出力] <-+

5.3 出力ポート(Output Port)

出力ポートはスイッチングファブリックから受け取ったパケットをバッファに格納し、リンク層および物理層の処理を経て出力リンクに送信します。

5.4 キューイングとパケット損失

入力ポートと出力ポートの両方でキューイングが発生する可能性があります。

出力ポートキューイング:複数の入力ポートから同時に同じ出力ポートへパケットが到着すると、バッファで待機する必要があります。バッファが一杯になるとパケットがドロップされます。

入力ポートキューイング:スイッチングファブリックがすべての入力パケットを同時に処理できない場合に発生します。HOL(Head-of-Line)ブロッキング問題が発生する可能性があります。

HOLブロッキング問題
====================

入力ポート1のキュー:[パケットA -> 出力1] [パケットB -> 出力2]
入力ポート2のキュー:[パケットC -> 出力1] [パケットD -> 出力3]

パケットAとCの両方が出力ポート1宛
  --> パケットCは待機が必要
  --> パケットDは出力ポート3が空いているが
      パケットCの後ろにあるため一緒に待機(HOLブロッキング)

6. 制御プレーンとデータプレーン

6.1 従来のアプローチ

従来、ルーティングアルゴリズムは各ルータで独立して実行され、隣接ルータと情報を交換してフォワーディングテーブルを構成していました。

6.2 SDN(Software-Defined Networking)

SDNでは、リモートコントローラがフォワーディングテーブルを計算して各ルータに配布します。ルータはフォワーディングのみを実行し、ルーティングの決定は中央で行われます。

従来方式 vs SDN
=================

従来方式:                      SDN方式:

[R1]---[R2]---[R3]             [リモートコントローラ]
 |      |      |                /     |     \
各ルータが独立的に              [R1]  [R2]  [R3]
ルーティングアルゴリズム実行    コントローラが中央で
                                フォワーディングテーブル計算・配布

7. バッファサイズの設定

ルータのバッファサイズはネットワーク性能に大きな影響を与えます。

従来の経験則によると、リンク容量がCで平均RTTがRTTの場合、バッファサイズは以下のように設定します。

バッファサイズ = RTT x C

例:
  RTT = 250ms, C = 10 Gbps
  バッファサイズ = 0.25 x 10 x 10^9 = 2.5 Gbit

最近の研究による修正された公式:
  バッファサイズ = (RTT x C) / sqrt(N)
  N = TCPフロー数

この修正された公式は、多数のTCPフローが統計的多重化効果により、より小さなバッファでも十分であることを示しています。


8. パケットスケジューリング

出力ポートで複数のパケットが待機中の場合、どのパケットを先に送信するかを決定するスケジューリング方式が必要です。

8.1 FIFO(First-In First-Out)

最も単純な方式で、到着順に送信します。

8.2 優先度キューイング(Priority Queuing)

パケットを優先度クラスに分類し、高い優先度のパケットを先に送信します。

8.3 ラウンドロビンとWFQ

ラウンドロビン(Round Robin):各クラスを巡回しながら1つずつ送信します。

WFQ(Weighted Fair Queuing):ラウンドロビンの重み付きバージョンで、各クラスに重みを付与して帯域幅を公平に分配します。

パケットスケジューリング比較
=============================

FIFO:      [1][2][3][4] --> 順番通りに送信

優先度:    高:[A][C]  --> A, Cを先に送信
            低:[B][D]  --> その次にB, D

WFQ:       クラス1 (w=2):[A][C]  --> 2倍の帯域幅
            クラス2 (w=1):[B]     --> 1倍の帯域幅

9. まとめ

ネットワーク層の主要な概念をまとめると以下の通りです。

概念核心内容
フォワーディングローカル動作、入力から出力へパケットを移動
ルーティング全域動作、送信元から宛先までの経路を決定
仮想回線接続設定後に同一経路を使用、ルータに状態を維持
データグラム接続設定なし、各パケットが独立してルーティング
最長プレフィックスマッチフォワーディングテーブルで最も長いプレフィックスを選択
HOLブロッキングキュー先頭のパケットが後方のパケットまで遅延させる問題

次の記事では、インターネットの中核プロトコルであるIP(Internet Protocol)のデータグラム形式とアドレス体系を詳しく見ていきます。


参考資料

  • James F. Kurose, Keith W. Ross, "Computer Networking: A Top-Down Approach", 6th Edition, Chapter 4
  • RFC 791 - Internet Protocol
  • Andrew S. Tanenbaum, "Computer Networks", 5th Edition