【CCNP解説_OSPF編 4】OSPFの動作の流れと8つのステータス①
OSPFの動作の流れと8つのステータス①
OSPFでは5種類のパケットを用いて情報の交換を行い、3種類のテーブルを作成します。
また、情報交換の過程において最大8種類のステータスを遷移していきます。
今回はOSPFの動作の詳細な流れとステータス遷移について説明します。
OSPFの動作の流れ
OSPFではコンバージェンスするまでにいくつかのステータスを遷移していきます。
5種類のパケットをやり取りしていく中で、隣接ルータとのステータスを変化させます。
OSPFの基本的な動作は次のようになります。
1.Helloパケットを交換してネイバーの検出を開始する
2.ネイバーテーブルにネイバーを登録する
3.相互を認識し、LSDBの交換の準備をする
4.ルータ間でDBDパケットを交換する
5.詳細なLSAの情報を交換する
6.アジャセンシーの確立
この過程を経てコンバージェンスします。今回は1から3までの動作について見ていきましょう。
1.Helloパケットを交換してネイバーの検出を開始する
OSPFを動作させた直後のルータは、まだ隣接ルータを認識していません。
Helloパケットを受信していないこの状態はDownステートとなります。
OSPFを動作させたルータはHelloパケットの送信を開始します。
Helloパケットのところでも述べたように、マルチキャストアドレス224.0.0.5宛に送信します。
Helloパケットには自身のルータIDと認識しているネイバーの一覧が格納されていますが、
初期の段階ではまだネイバーとして認識しているルータがいないため、
送信するHelloパケット内のネイバー一覧は空となります。
Helloパケットを受け取ったルータはその一覧を確認することで相手が自分を認識しているかどうかを判断します。
以下の図でRouter1からHelloパケットが送信された場合の流れを見てみましょう。
OSPFでは各ルータをルータIDで識別するため、ここではRouter1のルータIDを1.1.1.1、
Router2のルータIDを2.2.2.2とします。
Router1はまだネイバーを認識していないため、ネイバーテーブルは空の状態です。
そのため、Router1が送信するHelloパケット内のネイバー一覧にもネイバーが含まれていません。
なお、ルータIDはIPアドレスと同じ表記となります。詳細は別途説明します。
2.ネイバーテーブルにネイバーを登録する
Helloパケットを受け取ったルータは、ネイバーテーブルに送信元のルータを登録し、
自身のルータの状態をInitステートに設定します。受信したHelloパケット内のネイバー一覧に
自身のルータIDが記載されていないため、自身だけが相手を認識し相手はまだ認識していないという、
一方だけが相手のルータを認識している状態です。この状態ではまだLSAを交換しません。
このとき、Helloパケットを受信したからといって、送信元のルータを無条件に
ネイバーとして登録するわけではありません。ネイバーとして登録するには、
Helloインターバル、Deadインターバル、サブネットマスク、エリアID、スタブフラグ、認証の情報
を隣接するルータと合わせておかなければなりません。
3.相互を認識し、LSDBの交換の準備をする
ネイバーを認識したルータは、Helloパケットに自分の認識しているネイバー一覧を格納します。
相手から受け取ったHelloパケットのネイバー一覧に自身が記録されている場合、
2-Wayステートという状態になります。
このようなHelloパケットのやり取りを複数回行うことで、Router2も2-Wayステートになります。
お互いを認識し、LSDBを同期させるために双方とも準備ができている状態が確立されます。
今回のまとめ
今回はOSPFが起動してネイバー関係を確立するまでの動きについて詳しく見ました。
ネイバーテーブルを作成するまでの間に、Downステート、Initステートと細かくステータスが遷移し、
2-Wayステートになって初めて双方が相手を認識し、ネイバー関係が確立されます。
その動作についてしっかりと把握しておきましょう。
■今回のポイント
・OSPFが起動した最初の段階はDownステートから始まる
・Helloパケットを受信して片方のルータだけが相手を認識している状態がInitステート
・双方が互いに相手を認識している状態が2-Wayステート
【お知らせ】
ブログの筆者が執筆したCCNA・CCNP試験対策参考書が発売されています。
当ブログでは説明しきれない細かい内容やコマンド設定などさらに充実した内容となっていますので、
この機会にぜひ書籍版も手に取ってみてください!