OSPF状態遷移とLSDB

OSPF(Open Shortest Path First)は、起動時に他ルーターとの関係を初期状態から遷移させていきます。また、状態遷移により隣接関係を結ぶと、LSDB(Link State DataBase)によって統一したデータベースを持つようになります。

本項では、OSPFの状態遷移とLSDBについて説明します。

なお、OSPFの基本的な動作や仕組みについては、OSPFをご参照ください。

状態の説明

OSPFのインターフェースが起動すると、同一サブネット内のルーターとHelloパケットを送受信して状態を変化させます。

以下に、各状態の特徴をまとめます。

【OSPF状態(2-Wayまで)】
状態 意味
Down 初期状態
Init Helloパケット交換中
2-Way ネイバー確立

この状態遷移は、Helloパケットを受信した1台1台に対して個別に発生します。

この時、ルーターに設定してあるプライオリティが高い機器からDR(Designated Router)とBDR(Backup Designated Router)が選出されます。

DRやBDR以外の機器間は、ネイバーを確立して2-Way状態のままになります。DRやBDRとの間では、経路情報などを交換するためにDBD(Data Base Description)パケットをやり取りし、さらに以下のような状態遷移をします。

【OSPF状態(FULLまで)】
状態 意味
ExStart マスター/スレーブ決定
Exchange DBD交換
Loading LSA要求と送信
Full 隣接関係確立

DBD交換は、ルーターIDが大きいマスター側から送信し、スレーブ側が応答する形で進みます。

Loading状態で経路情報がやりとりされ、Fullで隣接関係(Adjacency)を確立します。また、その後も隣接関係の間で経路情報がやりとりされます。

状態遷移の例

以下は、RFC 2328:OSPF Version 2で示されている状態遷移の例を簡略化したものです。

OSPF状態遷移の例

上記で、DRはルーター2です。DBD交換の最初では、互いにマスターを主張しますが、ルーターIDの低いルーター1は次のパケットでスレーブとして応答しています。

また、上記では2-WayにならずにExStartに移行してDBD交換を始めています。これは、2つめのHelloパケットでDRが決定したため、隣接関係を結ぶために直接遷移しています。

ルーター2では、Loadingを経由していません。これは、DBD交換で新規の情報が不要(LSAが不要)だったためです。

このように、必ずしもすべての状態を遷移していくという訳ではありません。

LSDBとルーティングテーブル

隣接関係を結ぶ機器間は、LSU(Link State Update)パケットで経路情報などを送受信します。その情報はLSA(Link State Advertisement)と呼ばれ、OSPFを構成する機器で同一のデータベースとなるLSDBを持つようになります。

LSU、LSAとLSDB

LSDBは、各機器がどのように接続されているかわかるようになっています。例えば、機器に接続されているネットワーク、ネットワークに接続されている機器、サブネットマスクなどの情報です。これらの情報を元に、自分を中心に最短となる経路を計算します。この計算はSPF(Shortest Path First)計算と呼ばれ、SPFツリーを作成します。

LSDBとSPFツリー

機器を特定する時に使われるのは、ルーターIDです。ルーターIDは1.1.1.1など明示的に設定も可能ですが、明示的に設定されていない場合はループバックアドレス、インターフェースに設定した最大のIPアドレスの順で決定されます。ループバックアドレスは、他の装置に接続しない仮想的なアドレスです。

SPFツリーに基づき、ルーティングテーブルを作成します。

SPFツリーに基づくルーティングテーブル作成

高速コンバージェンス

Helloパケットが届かなくなると、相手機器の状態をDownに遷移し、LSA(224.0.0.6宛て)をDRとBDRに送信します。Helloパケットは通常10秒間隔で送信され、40秒受信できないとDownと認識します。また、自身のインターフェースがダウンした時は、ネットワークへの経路が失われたことを即座にLSAで通知します。

OSPFの高速コンバージェンス

LSAを受信したDRは、隣接関係にある機器にLSA(224.0.0.5宛て)を送信します。

LSAは、他のサブネットにも同様に転送し、エリア内機器のLSDBを同期させます。LSDBからSPF計算によって、各機器でルーティングテーブルが更新されます。

ダウンを検知してすぐに通知を行うため、ルーティングテーブルの切替は数秒から数十秒程度です。

次のページOSPFのLSAタイプ