OSPF状態遷移とLSDB
OSPF(Open Shortest Path First)は、起動時に他ルーターとの関係を初期状態から遷移させていきます。また、状態遷移により隣接関係を結ぶと、LSDB(Link State DataBase)によって統一したデータベースを持つようになります。
本項では、OSPFの状態遷移とLSDBについて説明します。
なお、OSPFの基本的な動作や仕組みについては、OSPFをご参照ください。
状態の説明
OSPFのインターフェースが起動すると、同一サブネット内のルーターとHelloパケットを送受信して状態を変化させます。
以下に、各状態の特徴をまとめます。
状態 | 意味 |
---|---|
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)パケットをやり取りし、さらに以下のような状態遷移をします。
状態 | 意味 |
---|---|
ExStart | マスター/スレーブ決定 |
Exchange | DBD交換 |
Loading | LSA要求と送信 |
Full | 隣接関係確立 |
DBD交換は、ルーターIDが大きいマスター側から送信し、スレーブ側が応答する形で進みます。
Loading状態で経路情報がやりとりされ、Fullで隣接関係(Adjacency)を確立します。また、その後も隣接関係の間で経路情報がやりとりされます。
状態遷移の例
以下は、RFC 2328:OSPF Version 2で示されている状態遷移の例を簡略化したものです。
上記で、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を持つようになります。
LSDBは、各機器がどのように接続されているかわかるようになっています。例えば、機器に接続されているネットワーク、ネットワークに接続されている機器、サブネットマスクなどの情報です。これらの情報を元に、自分を中心に最短となる経路を計算します。この計算はSPF(Shortest Path First)計算と呼ばれ、SPFツリーを作成します。
機器を特定する時に使われるのは、ルーターIDです。ルーターIDは1.1.1.1など明示的に設定も可能ですが、明示的に設定されていない場合はループバックアドレス、インターフェースに設定した最大のIPアドレスの順で決定されます。ループバックアドレスは、他の装置に接続しない仮想的なアドレスです。
SPFツリーに基づき、ルーティングテーブルを作成します。
高速コンバージェンス
Helloパケットが届かなくなると、相手機器の状態をDownに遷移し、LSA(224.0.0.6宛て)をDRとBDRに送信します。Helloパケットは通常10秒間隔で送信され、40秒受信できないとDownと認識します。また、自身のインターフェースがダウンした時は、ネットワークへの経路が失われたことを即座にLSAで通知します。
LSAを受信したDRは、隣接関係にある機器にLSA(224.0.0.5宛て)を送信します。
LSAは、他のサブネットにも同様に転送し、エリア内機器のLSDBを同期させます。LSDBからSPF計算によって、各機器でルーティングテーブルが更新されます。
ダウンを検知してすぐに通知を行うため、ルーティングテーブルの切替は数秒から数十秒程度です。
次のページ「OSPFのLSAタイプ」