OSPFパケットフォーマット
OSPFパケットはIPプロトコル番号 89 にて構成されています。
ブロードキャスト環境(イーサネットなど)では下記のマルチキャストアドレスを宛先アドレスとして利用します。
- 224.0.0.5
OSPFが実行している全てのルータ宛てへの送信時に利用 - 224.0.0.6
OSPFのDR/BDRが実行しているルータ宛てへの送信時に利用
OSPFのヘッダーが下記になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | Type | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
上記OSPFヘッダーがあり、さらに5種類のOSPFデータ(下記はHelloのパケット構造)を使ってルータ間でOSPFの情報を交換します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 1 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Network Mask | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HelloInterval | Options | Rtr Pri | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RouterDeadInterval | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Designated Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Backup Designated Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Neighbor | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | |
パケットキャプチャーしたOSPFパケットを下記に保存していますので、Wiresharkでパケットの情報確認するのにどうぞ。
OSPF-State-Packet
OSPFパケットの種類
OSPFには下記5種類のパケットで構成されています。
タイプ | パケット名 | パケットの種類 |
1 | Hello | ネイバールータの発見と生存確認を行う |
2 | DBD | 自身のLSDBに含まれているLSAのリスト一覧。ネイバールータとこのDBDを交換し合うことにより、自身に不足しているLSAが何なのかを認識することができる。 |
3 | LSR | 自身のLSDBに不足しているLSAがあった場合、ネイバールータにその特定のLSAを要求するために使用される。 |
4 | LSU | LSRによりネイバーから要求されたLSAを送信するために使用。 |
5 | LSAck | LSUを受信したことを通知するための確認応答として送信。 |
OSPF状態遷移(OSPFネイバー確立まで)
Down State
ネイバー確立の初期停止状態、OSPF Type1 Helloパケット(224.0.0.5)宛てに送信されて隣接ルータに到達する。
Init State
ルータが近隣ルータから HELLO パケットを受信したが、HELLO パケットに受信側ルータの RouterID が含まれていないことを示しています。 ルータがネイバーから HELLO パケットを受信するときは、有効な HELLO パケットを受信したことの確認応答として、HELLO パケットに送信側のルータの ID をリストして送信します。
2-Way State
ルータ間で双方向での通信が確立した状態。ネイバールータの存在を認識して上図でのneighborが含まれている状態である。マルチアクセスネットワークの場合はこのStateで「DR」「BDR」などが選出される。(詳細はDRの選定について)
Exstart State
隣接関係を形成するときの最初の状態です。
OSPF Type2 DBDパケットを相互に交換して、マスターとスレーブの選定、および隣接関係形成のための初期シーケンス番号の選択に使用されます。
Exchange State
Exchange 状態では、OSPF Type2 DBDパケットを交換し。LSAヘッダーだけが含まれ、リンク ステート データベース全体の内容が記述されています。 各 DBD パケットにはシーケンス番号があり、そのシーケンス番号を増分できるのは、スレーブによって明示的に確認されているマスターだけです。 上図のパケット交換で、R1にはLSA(1.1.1.1)、R2には(2.2.2.2),(3.3.3.3)の情報を持っていることを交換出来ます。
Loading State
Loading Stateでは、受信したDBDと自身のLSDBを比較し、不足分のLSAについてOSPF Type3 LSRパケットを利用して自信に不足しているLSA情報を要求します。
要求されたルータLSAをOSPF Type4 LSUパケットに格納してLSAを送信します。上図ではR1は、(LSA 1.1.1.1(R1)、R2は(LSA 2.2.2.2(R2), 3.3.3.3(R3))の交換が行われている。
Full State
完全状態。DBDの受信を確認するとOSPF Type5 LSAckを受信確認を送信します。互いにLSAckを送信することで隣接ルータと完全にLSDBを同期できた状態でになります。これにより同期プロセスが完了。
スポンサーリンク
パケットキャプチャーファイル
上記の実際のパケットのやり取りのファイルです。参考にどうぞ。
OSPF-State-Packet
参考サイト
スポンサーリンク
OSPF 関連記事一覧
OSPFプロトコル解説記事
- OSPFとは
- OSPF Router-ID
- OSPF パケットの種類およびパケットヘッダーフォーマット
- OSPF状態遷移およびOSPFパケットの種類
- OSPF Optionsフィールド
- OSPF DR/BDR
- ネットワークタイプ
- LSAの概要 LSAヘッダー
- エリア
- エリア スタブエリア / トータリースタブエリア
- エリア NSSAエリア / トータリーNSSAエリア
- OSPF 経路集約
OSPF設定例記事
- 基本設定
Cisco IOS Cisco IOS-XR Cisco NX-OS Juniper JUNOS VyOS1.3 - コスト設定
Cisco IOS Cisco IOS-XR Cisco NX-OS Juniper JUNOS - プライオリティ
Cisco IOS Cisco IOS-XR NX-OS Juniper JUNOS - MD5認証
Cisco IOS Cisco IOS-XR Cisco NX-OS Juniper JUNOS - NetworkType ( Broadcast / Point-to-Point )
Cisco IOS Cisco IOS-XR Cisco NX-OS Juniper JUNOS - スタブエリア
Cisco IOS Cisco IOS-XR Cisco NX-OS - トータリースタブエリア
Cisco IOS Cisco IOS-XR Ciso NX-OS - NSSA
Cisco IOS Cisco IOS-XR Cisco NX-OS - トータリNSSA
Cisco IOS Cisco IOS-XR Cisco NX-OS - 経路集約
Cisco IOS Cisco IOS-XR Cisco NX-OS
OSPF RFC
- RFC2328 OSPF Version 2
- RFC3101 The OSPF Not-So-Stubby Area (NSSA) Option
- RFC3883 Detecting Inactive Neighbors over OSPF Demand Circuits (DC)
OSPF関連図書
私が所持しているOSPF本の紹介です。ただし絶版になっている本も紹介していますがご容赦ください。