概要

OSPFルータを識別するルータIDについて、設定ミスの切り分けと修正を行います。

ネットワーク構成

以下のネットワーク構成でOSPFによるルーティングを行っています。

図 OSPF 設定ミスの切り分けと修正 Part5 ネットワーク構成
図 OSPF 設定ミスの切り分けと修正 Part5 ネットワーク構成

設定概要

各ルータのOSPFに関する設定の概要は次の通りです。これらの設定には、一部設定ミスがあります。

R1

interface Ethernet0/0
 ip address 192.168.1.1 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.12.1 255.255.255.0
!
router ospf 1
 router-id 1.1.1.1
 log-adjacency-changes
 network 192.168.1.1 0.0.0.0 area 0
 network 192.168.0.0 0.0.255.255 area 0

R2

interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.23.2 255.255.255.0
!
router ospf 1
 router-id 2.2.2.2
 log-adjacency-changes
 network 192.168.1.2 0.0.0.0 area 0
 network 192.168.0.0 0.0.255.255 area 0

R3

interface Ethernet0/0
 ip address 192.168.23.3 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.34.3 255.255.255.0
!         
router ospf 1
 router-id 3.3.3.3
 log-adjacency-changes
 network 192.168.1.3 0.0.0.0 area 0
 network 192.168.0.0 0.0.255.255 area 0

R4

interface Ethernet0/0
 ip address 192.168.34.4 255.255.255.0
!
interface Ethernet0/1
 ip address 192.168.4.4 255.255.255.0
!
router ospf 1
 router-id 1.1.1.1
 log-adjacency-changes
 network 192.168.1.4 0.0.0.0 area 0
 network 192.168.0.0 0.0.255.255 area 0

トラブルの症状

それぞれのサブネット上のルータでネイバーを確立することができています。

R1 show ip ospf neighbor

R1#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           1   FULL/DR         00:00:39    192.168.12.2    Ethernet0/1

R2 show ip ospf neighbor

R2#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
3.3.3.3           1   FULL/DR         00:00:39    192.168.23.3    Ethernet0/1
1.1.1.1           1   FULL/BDR        00:00:39    192.168.12.1    Ethernet0/0

R3 show ip ospf neighbor

R3#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           1   FULL/BDR        00:00:39    192.168.34.4    Ethernet0/1
2.2.2.2           1   FULL/BDR        00:00:39    192.168.23.2    Ethernet0/0

R4 show ip ospf neighbor

R4#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
3.3.3.3           1   FULL/DR         00:00:37    192.168.34.3    Ethernet0/0

ネイバーを確立してすべてのルータでLSDBの同期を取れているように見えますが、LSDBの内容が正しくありません。R1でshow ip ospf databaseを確認すると、次のようになります。

R1 show ip ospf database

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         6           0x8000007F 0x0058D8 2
2.2.2.2         2.2.2.2         615         0x80000003 0x008B7E 2
3.3.3.3         3.3.3.3         620         0x80000002 0x006E65 2

                Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.12.2    2.2.2.2         616         0x80000001 0x008F1F
192.168.23.3    3.3.3.3         620         0x80000001 0x004254
192.168.34.3    3.3.3.3         620         0x80000001 0x0096F8

LSDBを見ると、LSAタイプ1が3つしかありません。そして、ルータID 1.1.1.のLSAタイプ1がフラッピングしているようで、Sequence番号がどんどん増えていってしまっています。LSDBが正しくないので、ルーティングテーブル上のOSPFルータが正常に計算されておらず、ルーティングテーブルに必要なルートが存在していません。

R1 show ip route ospf

R1#show ip route ospf 
O    192.168.23.0/24 [110/20] via 192.168.12.2, 00:12:54, Ethernet0/1
O    192.168.34.0/24 [110/30] via 192.168.12.2, 00:12:54, Ethernet0/1

R2 show ip route ospf

R2#show ip route ospf 
O    192.168.34.0/24 [110/20] via 192.168.23.3, 00:00:05, Ethernet0/1
O    192.168.1.0/24 [110/20] via 192.168.12.1, 00:00:05, Ethernet0/0

R3 show ip route ospf

R3#show ip route ospf 
O    192.168.12.0/24 [110/20] via 192.168.23.2, 00:00:08, Ethernet0/0
O    192.168.4.0/24 [110/20] via 192.168.34.4, 00:00:08, Ethernet0/1

R4 show ip route ospf

R4#show ip route ospf 
O    192.168.12.0/24 [110/30] via 192.168.34.3, 00:13:46, Ethernet0/0
O    192.168.23.0/24 [110/20] via 192.168.34.3, 00:13:46, Ethernet0/0

問題

  • なぜLSDBの内容が正しくないのですか。
  • LSDBの内容が正しくなり正常にルーティングできるようにするためには、どのように設定を修正すればよいですか。

解答

なぜLSDBの内容が正しくないのですか。

同一エリア内のR1とR4でルータID 1.1.1.1 が重複している。ルータID 1.1.1.1のLSAタイプ1がR1とR4からアドバタイズされるため、LSDBで1.1.1.1のLSAタイプ1がフラッピングしている。

LSDBの内容が正しくなり正常にルーティングできるようにするためには、どのように設定を修正すればよいですか。

R4

router ospf 1
 router-id 4.4.4.4

ワンポイント

  • OSPFはルータIDでルータを識別する
  • ルータIDをスタティックに設定するときにはルータIDが重複しないように注意

解説

OSPFはルータIDによってルータを識別しています。つまり、ルータIDはOSPFルータの名前のようなものです。当然、ルータIDが重複してはいけません。OSPFルータIDは、次のように決定されます。

  1. router-idコマンドによる手動設定
  2. アクティブなループバックインタフェースのうち最大のIPアドレス
  3. アクティブなインタフェースのうち最大のIPアドレス

IPアドレスからルータIDを決定しているときは、ルータIDが重複することはほとんどありません。IPアドレスは重複しないように設定されていることが普通だからです。router-idコマンドでスタティックに設定するときには、重複しないように注意してください。

同一サブネット上のOSPFルータでルータIDが重複していると、次のようなメッセージが表示されます。

*Mar  1 00:04:50.687: %OSPF-4-DUP_RTRID_NBR: OSPF detected duplicate router-id 1.1.1.1 from 192.168.1.2 on interface FastEthernet0/0

HelloパケットにルータIDが記述されているので、HelloパケットによってルータIDが重複しているルータが存在していることをすぐに検出できます。しかし、Helloパケットを直接やり取りしない別サブネットにルータIDが重複しているルータが存在すると、わかりにくくなります。

各ルータは自身が持つリンク(OSPFが有効なインタフェース)の情報をLSAタイプ1でアドバタイズします。LSAタイプ1もルータIDで識別します。ルータIDが重複しているルータが存在すると、それぞれのルータが同じルータIDでLSAタイプ1を生成します。その結果、LSDBを確認すると重複しているルータIDのLSAタイプ1がフラッピングします。LSDBを見ると、重複しているルータIDのLSAタイプ1のシーケンス番号がどんどん増えていきます。このようにLSAタイプ1がフラッピングすると、ルータIDが重複しているルータの存在がわかり、次のようなメッセージが表示されます。

*Mar  1 00:26:17.243: %OSPF-4-DUP_RTRID_AREA: Detected router with duplicate router ID 1.1.1.1 in area 0

ただ、ルータIDが重複しているルータがどれなのかということは、このメッセージだけでは特定できません。エリアの中のどこかにルータIDが重複しているルータが存在しているということがわかるだけです。各ルータのルータIDを見ると、R1とR4のルータIDが重複してしまっています。

R4 show ip ospf

R4#show ip ospf 
 Routing Process "ospf 1" with ID 1.1.1.1
 Start time: 00:00:11.496, Time elapsed: 00:12:09.588
 Supports only single TOS(TOS0) routes
 Supports opaque LSA
 Supports Link-local Signaling (LLS)
 Supports area transit capability
 Router is not originating router-LSAs with maximum metric
~省略~

図 R4 ルータIDの重複
図 R4 ルータIDの重複


R4で誤ってR1と同じ1.1.1.1になってしまっていることがわかります。R4のルータIDをR1と重複しないように修正します。

R4 ルータIDの修正

router ospf 1
 router-id 4.4.4.4
 end
clear ip ospf process
yes

R4のルータIDを修正すると、R1~R4で正しくLSDBの同期を取ることができ、ルーティング可能になります。

R1 show ip ospf database/show ip route ospf

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         108         0x800000B9 0x00E313 2
2.2.2.2         2.2.2.2         999         0x80000003 0x008B7E 2
3.3.3.3         3.3.3.3         1000        0x80000003 0x006C66 2
4.4.4.4         4.4.4.4         64          0x80000002 0x00045F 2

                Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.12.2    2.2.2.2         1004        0x80000001 0x008F1F
192.168.23.3    3.3.3.3         1001        0x80000001 0x004254
192.168.34.3    3.3.3.3         63          0x80000002 0x002B57
R1#show ip route ospf 
O    192.168.4.0/24 [110/40] via 192.168.12.2, 00:00:53, Ethernet0/1
O    192.168.23.0/24 [110/20] via 192.168.12.2, 00:00:53, Ethernet0/1
O    192.168.34.0/24 [110/30] via 192.168.12.2, 00:00:53, Ethernet0/1

ちなみに、次のようにエリアが異なればルータIDが重複していても問題なくルーティングできます。OSPFでは、他のエリアの詳細な構成は認識していないからです。

図 エリアが異なるときのルータIDの重複
図 エリアが異なるときのルータIDの重複

上記のR1とR4が異なるエリアに所属していて、R1とR4のルータIDが重複してしまっている場合のshow ip ospf databaseおよびshow ip route ospfコマンドは以下のようになっています。

R1 show ip ospf database/show ip route ospf

R1#show ip ospf database 

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         384         0x80000003 0x00515C 2
2.2.2.2         2.2.2.2         385         0x80000002 0x00EA3E 1

                Net Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.12.2    2.2.2.2         385         0x80000001 0x008F1F

                Summary Net Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.4.0     2.2.2.2         167         0x80000001 0x009C0D
192.168.23.0    2.2.2.2         425         0x80000001 0x0002A8
192.168.34.0    2.2.2.2         167         0x80000001 0x00ECA8
R1#show ip route ospf
O IA 192.168.4.0/24 [110/40] via 192.168.12.2, 00:02:49, Ethernet0/1
O IA 192.168.23.0/24 [110/20] via 192.168.12.2, 00:06:22, Ethernet0/1
O IA 192.168.34.0/24 [110/30] via 192.168.12.2, 00:02:49, Ethernet0/1

R4 show ip ospf database/show ip route ospf

R4#show ip ospf database 

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 4)

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         230         0x80000001 0x00EA91 2
3.3.3.3         3.3.3.3         191         0x80000003 0x009A57 1

                Net Link States (Area 4)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.34.3    3.3.3.3         191         0x80000001 0x0096F8

                Summary Net Link States (Area 4)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.1.0     3.3.3.3         402         0x80000001 0x009F09
192.168.12.0    3.3.3.3         427         0x80000001 0x00C1E5
192.168.23.0    3.3.3.3         427         0x80000001 0x00E3C2
R4#show ip route ospf
O IA 192.168.12.0/24 [110/30] via 192.168.34.3, 00:03:08, Ethernet0/0
O IA 192.168.23.0/24 [110/20] via 192.168.34.3, 00:03:08, Ethernet0/0
O IA 192.168.1.0/24 [110/40] via 192.168.34.3, 00:03:08, Ethernet0/0

ルーティングテーブルに必要なルート情報が適切に登録されるので、問題なく通信できます。ただ、エリアが違っている場合も、ルータIDが重複しないようにするべきです。

OSPFの仕組み