このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
ここでは、ダイナミックルーティングの一方式であるリンクステートアルゴリズ ムを採用している OSPF について解説します。 OSPF(Open Shortest Path First Version 2 RFC 2328)はリンクステート型のルーティン グプロトコルです。
OSPF は IGP、 つまり一つのネットワーク管理下にあるネットワークで使用し
ます。
独立した一つの管理ネットワークを自律システム(Autonomous System AS)と呼
ばれます。
ネットワーク間の接続は AS で行います。
この AS という言葉を使うと、IGP は AS 内ルーティングプロトコル、 EGP
は AS 間ルーティングプロトコルと言うことができます。
AS は通常はプロバイダーなど大きなネットワークになりますが、東京電機大
は一つの AS になっています(AS番号 17943)。
OSPF で扱えるネットワークの形態は次の 4 つです。
一旦リンクステートデータベースができた後は定期的な Hello を流すだけな ので通常のトラフィックは少ない。 また、障害が発生した際も、障害を発見したルータ自ら変更部分の LSA を流 すか、あるいは障害を他のルータが Hello などで検知した後に変更部分の LSA が一回流れるだけなので、障害時の対応は即座に行われる。
OSPF ではまず、 Hello プロトコルにより Neighbor と呼ばれる隣接ルー タを探します。 そして、 Neighbor が決まったところでネットワーク毎にDisignated(代 表)ルータ を決めます。 そして、リンクステート広告を行います。
![]() |
ルータの周りの接続状況は、各ルータが自分がどのネットワークへ接続してい るかをメトリックを添えてマルチキャスト、または、 adjacent に従って広告 します。 ネットワークがそのルータと接続しているかは代表ルータが広告します。 ネットワークからルータへはメトリック 0 で送ります。
リンクステートデータベースとはネットワークとルータの接続情報のデータベー スです。 これは LSA を集めたもので、ネットワークの接続情報の有向グラフを表現し ます。 グラフの頂点になるのはルータとネットワークです。 ルータ同士が直接 Point-to-Point ネットワークにより接続している時、ルー タ同士を相互に辺で結びます。 ネットワークに対してルータがインターフェイスを持つ時、ルータからネット ワークへ有向辺がひかれます。 ネットワークからルータへ有向辺が引かれるかどうかはネットワークの種類に よります。 ネットワークがそのネットワークを通過するトラフィックを扱うか否かで、ト ランジットネットワーク、スタブネットワークに分けます。 そして、トランジットネットワークのみ、ルータへ辺を引きます。 また、ルータからネットワークへは 32bit の整数でメトリックを設定します。
すべてのルータが通信により同じリンクステートデータベースを持ちます。 これは、各要素にメトリックが入った隣接行列で表現します。 なお、ネットワークからルータへの辺のメトリックは0 とします。 次のネットワークの例に対して、隣接行列は次のようになります。
RT1 | RT2 | RT3 | RT4 | RT5 | RT6 | RT7 | RT8 | RT9 | RT10 | RT11 | RT12 | N3 | N6 | N8 | N9 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RT1 | 0 | |||||||||||||||
RT2 | 0 | |||||||||||||||
RT3 | 6 | 0 | ||||||||||||||
RT4 | 8 | 0 | ||||||||||||||
RT5 | 8 | 6 | 6 | |||||||||||||
RT6 | 8 | 7 | 5 | |||||||||||||
RT7 | 6 | 0 | ||||||||||||||
RT8 | 0 | |||||||||||||||
RT9 | 0 | |||||||||||||||
RT10 | 7 | 0 | 0 | |||||||||||||
RT11 | 0 | 0 | 0 | |||||||||||||
RT12 | 0 | 0 | ||||||||||||||
N1 | 3 | |||||||||||||||
N2 | 3 | |||||||||||||||
N3 | 1 | 1 | 1 | 1 | ||||||||||||
N4 | 2 | |||||||||||||||
N6 | 1 | 1 | 1 | |||||||||||||
N7 | 4 | |||||||||||||||
N8 | 3 | 2 | ||||||||||||||
N9 | 1 | 1 | 1 | |||||||||||||
N10 | 2 | |||||||||||||||
N11 | 3 | |||||||||||||||
N12 | 8 | 2 | ||||||||||||||
N13 | 8 | |||||||||||||||
N14 | 8 | |||||||||||||||
N15 | 9 | |||||||||||||||
H1 | 10 |
このリンクステートデータベースに対して、各ルータはダイクストラ法により、 自ルータから最短経路木を計算します。 例えば、 RT6 が最短経路木を計算すると次のようになります。 但し、外部ネットワークである N12 の取扱は次の節でしますので、ここでは二つ経路 が書かれてます。
以下のダイクストラ法により各頂点への最短距離を求めます。
これをもとにルーティングテーブルを計算すると次のようになります。
宛先 | 転送先 | メトリック |
---|---|---|
N1 | RT3 | 10 |
N2 | RT3 | 10 |
N3 | RT3 | 7 |
N4 | RT3 | 8 |
Ib | * | 7 |
Ia | RT10 | 12 |
N6 | RT10 | 8 |
N7 | RT10 | 12 |
N8 | RT10 | 10 |
N9 | RT10 | 11 |
N10 | RT10 | 13 |
N11 | RT10 | 14 |
H1 | RT10 | 21 |
RT5 | RT5 | 6 |
RT7 | RT10 | 8 |
外部ネットワークへのメトリックを処理するのに、二種類の方法が選べます。
ルーティングを簡単にし、ルータやネットワークの負荷を減らすために、 AS
をエリアに分割することができます。
エリアには 32 bit のエリア番号が付きます。
エリア 0 はバックボーンと呼ばれます。
そして、それ以外のエリアはすべてバックボーンに接続します。
これはスターグラフという形になります。
バックボーンが中心部のハブとなり、他のエリアはスポークになります。
このようにすると、通常のエリア内のルータはエリア内だけは、リンクステー
トデータベースを作りルーティングテーブルを計算しますが、
他のエリアへは基本的にはバックボーンへと送ります。
つまり、他のエリアの情報はエリア 0 で入ってくる外部ネットワークの情報
を Type 1 で計算したようになります。
その結果、エリア外のリンクステート情報を扱う必要がなくなりますので、効
率が上がります。
このとき、バックボーンのルータは、バックボーン内のルータと、各エリアか らのネットワークの情報を元にルーティングを計算します。 別エリアのリンクステート広告は受けとらないので、負荷は減りますが、すべ てのネットワークに対してどのエリアに含まれているかの情報は受けとります。
バックボーンと他のエリアにまたがっているルータ(エリアボーダルータ)は、 バックボーンと他のエリアの両方のルーティングを計算する必要があります。 そして、バックボーンには他のエリアにあるネットワークへのメトリックの情 報を、他のエリアにはバックボーンから得られるすべてのネットワークへのメ トリックの情報をそれぞれ流します。
なお、このエリアはすべてバックボーンと接してなければならないという原則 を破るためにバーチャルリンクという設定があります。 これは特定のルータに対してバックボーンからのスタティックルーティングを 設定することにより、そのルータもバックボーンのルータとするものです。 これにより、バックボーンに接していないエリアを作ることができます。 またさらに、バックボーンでないエリア同士が接している時、通常はバックボー ンを介さないと通信ができませんが、その接しているルータにバーチャルリン クを張ることでそのルータを介して通信をすることができます。
バックボーンと一箇所でしか接していないエリアを スタブエリア と呼びます。 このスタブエリアは他のエリアのネットワーク情報の代わりに、エリアボーダ ルータへデフォルトを指定するだけでルーティングテーブルが完成しますので、 ルータの計算が楽になります。
RIP は UDP の 520 番ポートを使用しますが、 OSPF は TCP や UDP とは別の 独自のプロトコルを IP の上で使用します。 また、 OSPF はマルチキャストを使用します。 但し、 TTL は 1 とするためルータを介した中継はしません。 使用するマルチキャストアドレスは全ルータに対しては 224.0.0.5 を、各 代表ルータには 224.0.0.6となります。