OSPFとは
OSPFとはダイナミックルーティングのプロトコルの一つです。ダイナミックルーティングは大きく2つにわけることが出来ます。ディスタンスベクタ型(RIP)、リンクステート型(OSPF、IS-IS)があります。OSPFはリンクステート型のダイナミックルーティングプロトコルになります。
今回紹介しているIPv4で利用するOSPFv2を紹介します。IPv6はOSPFv2機能を拡張したOSPFv3が利用されています。
ディスタンスベクタ型(RIP)
ディスタンスベクタ型のRIPは最大ホップ数に制限があり、ルーティング情報を常に交換し非効率、また障害が発生した際の経路収束も遅いプロトコルです。
RIPでは受信したルーティングにHop数を追加し、さらに自身のルーティング情報を追加し隣接に情報伝達を30秒単位で実施しています。30秒単位で情報を伝達する仕組みのため、経路収束に時間がかかります。
R1 RIP ルーティングテーブル
1 2 3 4 5 6 7 |
R1#show ip route rip 2.0.0.0/32 is subnetted, 1 subnets R 2.2.2.2 [120/1] via 192.168.12.2, 00:00:08, GigabitEthernet0/1 3.0.0.0/32 is subnetted, 1 subnets R 3.3.3.3 [120/2] via 192.168.12.2, 00:00:08, GigabitEthernet0/1 R 192.168.23.0/24 [120/1] via 192.168.12.2, 00:00:08, GigabitEthernet0/1 R1# |
R2 RIP ルーティングテーブル
1 2 3 4 5 6 |
R2#show ip route rip 1.0.0.0/32 is subnetted, 1 subnets R 1.1.1.1 [120/1] via 192.168.12.1, 00:00:17, GigabitEthernet0/1 3.0.0.0/32 is subnetted, 1 subnets R 3.3.3.3 [120/1] via 192.168.23.3, 00:00:28, GigabitEthernet0/2 R2# |
R3 RIP ルーティングテーブル
1 2 3 4 5 6 7 |
R3#show ip route rip 1.0.0.0/32 is subnetted, 1 subnets R 1.1.1.1 [120/2] via 192.168.23.2, 00:00:05, GigabitEthernet0/1 2.0.0.0/32 is subnetted, 1 subnets R 2.2.2.2 [120/1] via 192.168.23.2, 00:00:05, GigabitEthernet0/1 R 192.168.12.0/24 [120/1] via 192.168.23.2, 00:00:05, GigabitEthernet0/1 R3# |
R1〜R2間RIP パケットキャプチャファイル
RIP-R1-R2.pcap
リンクステート型(OSPF)
neighbor(隣接関係)を確立する。
OSPFのHello間隔時間はNETWORK Typeで異なりますが、10秒もしくは30秒毎にhelloパケットを送信することでneighbor関係を維持します。
R1 OSPF neighbor
1 2 3 4 5 |
R1#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 0 FULL/ - 00:00:39 192.168.12.2 GigabitEthernet0/1 R1# |
R2 OSPF neighbor
1 2 3 4 5 6 |
R2#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 3.3.3.3 0 FULL/ - 00:00:32 192.168.23.3 GigabitEthernet0/2 1.1.1.1 0 FULL/ - 00:00:36 192.168.12.1 GigabitEthernet0/1 R2# |
R3 OSPF neighbor
1 2 3 4 5 |
R3#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 0 FULL/ - 00:00:35 192.168.23.2 GigabitEthernet0/1 R3# |
※今回は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の結果ですが、同じ状態になります。
1 2 3 4 5 6 7 8 9 10 11 |
R1#show ip ospf database OSPF Router with ID (1.1.1.1) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 1696 0x8000002F 0x009053 3 2.2.2.2 2.2.2.2 1663 0x80000032 0x005850 5 3.3.3.3 3.3.3.3 1741 0x8000002C 0x00F6BF 3 R1# |
1 2 3 4 5 6 7 8 9 10 11 |
R2#show ip ospf database OSPF Router with ID (2.2.2.2) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 1769 0x8000002F 0x009053 3 2.2.2.2 2.2.2.2 1734 0x80000032 0x005850 5 3.3.3.3 3.3.3.3 1812 0x8000002C 0x00F6BF 3 R2# |
1 2 3 4 5 6 7 8 9 10 11 |
R3#show ip ospf database OSPF Router with ID (3.3.3.3) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 1.1.1.1 1800 0x8000002F 0x009053 3 2.2.2.2 2.2.2.2 1765 0x80000032 0x005850 5 3.3.3.3 3.3.3.3 1841 0x8000002C 0x00F6BF 3 R3# |
SPFツリーを作成してルーティングテーブルの作成
LSDBのトポロジー情報を元に、自身を起点した最短ルートを計算し、ルーティングテーブルを作成する。
R1
1 2 3 4 5 6 7 8 |
R1#show ip route ospf 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/2] via 192.168.12.2, 1d01h, GigabitEthernet0/1 3.0.0.0/32 is subnetted, 1 subnets O 3.3.3.3 [110/3] via 192.168.12.2, 1d01h, GigabitEthernet0/1 O 192.168.23.0/24 [110/2] via 192.168.12.2, 1d01h, GigabitEthernet0/1 R1# |
R2
1 2 3 4 5 6 7 |
R2#show ip route ospf 1.0.0.0/32 is subnetted, 1 subnets O 1.1.1.1 [110/2] via 192.168.12.1, 1d01h, GigabitEthernet0/1 3.0.0.0/32 is subnetted, 1 subnets O 3.3.3.3 [110/2] via 192.168.23.3, 1d01h, GigabitEthernet0/2 R2# |
R3
1 2 3 4 5 6 7 8 |
R3#show ip route ospf 1.0.0.0/32 is subnetted, 1 subnets O 1.1.1.1 [110/3] via 192.168.23.2, 1d01h, GigabitEthernet0/1 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/2] via 192.168.23.2, 1d01h, GigabitEthernet0/1 O 192.168.12.0/24 [110/2] via 192.168.23.2, 1d01h, GigabitEthernet0/1 R3# |
Configファイルおよびパケットキャプチャファイル
R1,R2,R3のConfigファイル
R1〜R2間のOSPFパケットをキャプチャーしたファイルを添付しています。neighborの確立とLSAの交換を確認出来ます。
OSPF-R1-R2.pcap
スポンサーリンク
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本の紹介です。ただし絶版になっている本も紹介していますがご容赦ください。