OSPF

OSPF ( Open Shortest Path First )とは

OSPFとは

OSPFとはダイナミックルーティングのプロトコルの一つです。ダイナミックルーティングは大きく2つにわけることが出来ます。ディスタンスベクタ型(RIP)、リンクステート型(OSPF、IS-IS)があります。OSPFはリンクステート型のダイナミックルーティングプロトコルになります。

今回紹介しているIPv4で利用するOSPFv2を紹介します。IPv6はOSPFv2機能を拡張したOSPFv3が利用されています。

ディスタンスベクタ型(RIP)

ディスタンスベクタ型のRIPは最大ホップ数に制限があり、ルーティング情報を常に交換し非効率、また障害が発生した際の経路収束も遅いプロトコルです。
RIPでは受信したルーティングにHop数を追加し、さらに自身のルーティング情報を追加し隣接に情報伝達を30秒単位で実施しています。30秒単位で情報を伝達する仕組みのため、経路収束に時間がかかります。

R1 RIP ルーティングテーブル

R2 RIP ルーティングテーブル

R3 RIP ルーティングテーブル

R1〜R2間RIP パケットキャプチャファイル  

リンクステート型(OSPF)

neighbor(隣接関係)を確立する。


OSPFのHello間隔時間はNETWORK Typeで異なりますが、10秒もしくは30秒毎にhelloパケットを送信することでneighbor関係を維持します。
R1 OSPF neighbor

R2 OSPF neighbor

R3 OSPF neighbor

※今回はLSAの数を減らすためにルータ間のOSPFのNetwork Typeは POINT_TO_POINTで設定しています。

LSA交換によるデータベース同期


neighborを確立すると保持しているLSA(Link State Advertisement)情報を交換し、自身が保持していないLSAを要求し取得することで、LSAを同期します。

下記がR1〜R2間でパケットキャプチャしたパケット一部です。R1がLSA Type1 で 1.1.1.1/32 および19.168.12.0/24 のLinkを持っていてる情報を送信しています。このようなLSAを互いに交換します。※今回はLSAの数を減らすためにルータ間のOSPFのNetwork Typeは POINT_TO_POINTで設定およびコスト1を設定しています。
一度交換すると以降は30分間隔で同期を行います。ただし障害などトポロジーが変化があれば即時にLSAをアップデートして各ルータに伝達します。

LSDBを作成しトポロジーマップを作成

LSAを交換した後にLSDB(Link State Database)を展開し、ルータのトポロジーマップを作成する。トポロジーは同期している為、全て同じ結果になります。

下記は OSPF databaaseの結果ですが、同じ状態になります。

SPFツリーを作成してルーティングテーブルの作成

LSDBのトポロジー情報を元に、自身を起点した最短ルートを計算し、ルーティングテーブルを作成する。
R1

R2

R3

Configファイルおよびパケットキャプチャファイル

R1,R2,R3のConfigファイル


R1〜R2間のOSPFパケットをキャプチャーしたファイルを添付しています。neighborの確立とLSAの交換を確認出来ます。

スポンサーリンク

OSPF 関連記事一覧

OSPFプロトコル解説記事

OSPF設定例記事

OSPF RFC

OSPF関連図書

私が所持しているOSPF本の紹介です。ただし絶版になっている本も紹介していますがご容赦ください。

著:ジョン・T. モイ, 監修:泰弘, 小原, 原著:Moy,John T., 翻訳:トップスタジオ

他ネットワークプロトコル解説記事

-OSPF
-