ネットワークではルーティングを使い、通信を様々な場所の機材に転送しています。
コマンドプロンプトでtracert google.com
などを実行すると、
コンピュータからgoogle.comまでの経路内に存在するルータ(ルーティングする機材)の一覧が出てきます。
本資料では、静的ルーティング(スタテックルーティング)とOSPFを使った動的ルーティングについて、 最低限実験環境で遊べるようになる程度のものを解説します。
ルーティングテーブルには「宛先(Route)」、「次のルータ(Next hop)」、「インターフェース」の3つが記述されています。
宛先(Route)はIPアドレス(インターネット上の住所)が複数連なったサブネット(区画のようなもの, 丁など?)が記述されています。
次のルータ(Next hop)はその宛先向けのパケット(通信, 郵送物にたとえると良い)をどのルータに送るべきかが記述されています。 このルータは基本的にConnected(L2レベルで直接接続されている)である必要があります。
インターフェースはNext hopのつながっているインターフェース(LANポートなど)を示します。
下記のルーティングテーブルを見てみましょう。
Route | Next hop | Interface |
---|---|---|
1.0.0.0/24 | 100.64.0.2 | port1 |
2.0.0.0/24 | 100.64.1.2 | port2 |
3.0.0.0/24 | connected | port3 |
100.64.0.0/24 | connected | port1 |
100.64.1.0/24 | connected | port2 |
0.0.0.0/0 (default) | 100.64.0.2 | port1 |
このルータは5つのルーティングテーブルを持っています。
1.0.0.0/24
(1.0.0.0 ~ 1.0.0.255)はport1
につながっている100.64.0.2
に対して転送するパケットになります。
ここで表示されるNext hopは最終経由地ではなく、あくまで直近の経由地のため、再度転送される場合があります。
ではconnected
とはどういう意味でしょう。これは、「ルータ本体が最終経由地」であることを表します。
connected
がついているサブネットは、ルータからL2で接続されており、これらにはルータ本体がパケットを渡しに行くことができます。
(本来は一番最初に表示されるものですが、)最後にdefault
とついているルーティングがあります。
これは、それ以外のすべてのルールに一致しなかったパケットの転送先です。
デフォルトゲートウェイなどと呼ばれる場合もあります。
閉鎖されたネットワークや大規模なルータでは、指定されない場合もあります。
郵便配達にたとえて書いてみましょう。
宛先 | 転送先の郵便局 | 輸送路 (良いたとえ募集中) |
---|---|---|
秋葉原 | 秋葉原郵便局 | 品川-秋葉原 間 郵便物輸送路 |
梅田 | 東京都郵便局 | 東京都郵便局-品川郵便局 間 輸送路 |
品川 | 管轄内 | 品川エリア配送ネットワーク |
秋葉原郵便局 | 管轄内 | 品川-秋葉原 間 郵便物輸送路 |
東京都郵便局 | 管轄内 | 品川-秋葉原 間 郵便物輸送路 |
上記以外の宛先 | 東京都郵便局 | 東京都郵便局-品川郵便局 間 輸送路 |
先ほどのルーティングテーブルを書くことで、ルータ間でパケットのやり取りが可能になります。 逆に、ルーティングテーブルを書かないと、受け取ったパケットをどこに送るべきかがわからないため、 通信ができません。
Note
通常、connectedはルータが自動的に挿入するため、ルータに直接つながっているネットワーク同士の通信は可能です。
Tip
一般的な家庭に設置されるルータはdefault
とconnected
のみを持っています。
LAN側(PCやスマホがつながっているネットワーク)とプロバイダとの直接接続をconnected
とし、
それ以外のインターネット上の宛先はすべてdefault
でプロバイダの機材に転送しています。
Static Routeを記述することで、手動でルータにルーティングを教えることができます。
ルーティングテーブルを手動で書くことは多くの場合苦行を生みます。 特定経路に障害が発生した場合は別経路の設定が必要ですし、 ネットワークの構成が変われば、関係するすべてのルータに再設定が必要になります。 OSPFを使うことで、これらの煩雑な管理を最小限に抑え、 ルーティングテーブルを簡単に自動生成することができます。
Note
OSPFにはAreaやTypeなどの概念があり、多くの場合学習にはシンプルなRIPが利用されています。 今回はより新しいOSPFを扱いますが、AreaやTypeなどは扱いません。 本資料内ではArea 0, Type Regularと仮定し記述しています。
Tip
OSPFは家庭や企業の同一局舎内などの狭い範囲で利用されることを前提として作られています。 広い範囲でのルーティングには、eBGPなどを利用するのが一般的です。
OSPFを利用する際はルータに名前を付けます。これがRouter ID
です。
基本、0-255の間の数値を4つ利用し、IPv4アドレスと同じ書式で32bitを利用し表現します。
OSPFを利用する際にはredistribute
を使い、connected
をOSPFで広報したり、
Networkを指定し、明示的に特定の経路だけを広報したりします。
広報するものや、受け取るものを条件で制限することも可能です。
OSPFを利用した経路の交換を行うと、最も近いわけではない経路も収集できます。 これにより、1つの経路が利用できない状態になっても、迂回路を利用し、 パケットの転送が可能です。