概要

OSPFのネットワークタイプについて設定ミスの切り分けと修正を行います。

ネットワーク構成

下記のネットワーク構成でOSPFの設定を行っています。シングルエリア構成で、エリアは0です。

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

トラブルの状況

ネットワークの一部で通信ができない状況が発生しています。ルーティングのトラブルが発生しているようです。ルーティングが正常に行われているかを確認するために、各ルータでshow ip ospf neighborをみたところ、すべてFULL状態になっているのでネイバーは問題なく確立されているようです。

R1 show ip ospf neighbor

R1#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.3.3       0   FULL/  -        00:00:38    192.168.123.3   FastEthernet0/0
192.168.2.2       0   FULL/  -        00:00:33    192.168.123.2   FastEthernet0/0

R2 show ip ospf neighbor

R2#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.1       1   FULL/DROTHER    00:00:34    192.168.123.1   FastEthernet0/0
192.168.3.3       1   FULL/BDR        00:00:32    192.168.123.3   FastEthernet0/0

R3 show ip ospf neighbor

R3#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.1       1   FULL/DROTHER    00:00:37    192.168.123.1   FastEthernet0/0
192.168.2.2       1   FULL/DR         00:00:30    192.168.123.2   FastEthernet0/0

ところが、ルーティングテーブルには必要なルート情報が登録されていません。

R1 show ip route

R1#show ip route
~省略~

Gateway of last resort is not set

C    192.168.123.0/24 is directly connected, FastEthernet0/0
     192.168.1.0/32 is subnetted, 1 subnets
C       192.168.1.1 is directly connected, Loopback0

R2 show ip route

R2#show ip route
~省略~

Gateway of last resort is not set

C    192.168.123.0/24 is directly connected, FastEthernet0/0
     192.168.2.0/32 is subnetted, 1 subnets
C       192.168.2.2 is directly connected, Loopback0
     192.168.3.0/32 is subnetted, 1 subnets
O       192.168.3.3 [110/2] via 192.168.123.3, 00:18:37, FastEthernet0/0

R3 show ip route

R3#show ip route
~省略~

Gateway of last resort is not set

C    192.168.123.0/24 is directly connected, FastEthernet0/0
     192.168.2.0/32 is subnetted, 1 subnets
O       192.168.2.2 [110/2] via 192.168.123.2, 00:19:33, FastEthernet0/0
     192.168.3.0/32 is subnetted, 1 subnets
C       192.168.3.3 is directly connected, Loopback0

もう少し詳しい状況を確認するために、show ip ospf interfaceコマンドの出力を見ると、次のようになりました。

R1 show ip ospf interface

R1#show ip ospf interface
Loopback0 is up, line protocol is up
  Internet Address 192.168.1.1/32, Area 0
  Process ID 1, Router ID 192.168.1.1, Network Type LOOPBACK, Cost: 1
  Loopback interface is treated as a stub Host
FastEthernet0/0 is up, line protocol is up
  Internet Address 192.168.123.1/24, Area 0
  Process ID 1, Router ID 192.168.1.1, Network Type POINT_TO_MULTIPOINT, Cost: 1
  Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:07
  Supports Link-local Signaling (LLS)
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 2, Adjacent neighbor count is 2
    Adjacent with neighbor 192.168.3.3
    Adjacent with neighbor 192.168.2.2
  Suppress hello for 0 neighbor(s)

R2 show ip ospf interface

R2#show ip ospf interface
Loopback0 is up, line protocol is up
  Internet Address 192.168.2.2/32, Area 0
  Process ID 1, Router ID 192.168.2.2, Network Type LOOPBACK, Cost: 1
  Loopback interface is treated as a stub Host
FastEthernet0/0 is up, line protocol is up
  Internet Address 192.168.123.2/24, Area 0
  Process ID 1, Router ID 192.168.2.2, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 192.168.2.2, Interface address 192.168.123.2
  Backup Designated router (ID) 192.168.3.3, Interface address 192.168.123.3
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:07
  Supports Link-local Signaling (LLS)
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 4 msec
  Neighbor Count is 2, Adjacent neighbor count is 2
    Adjacent with neighbor 192.168.1.1
    Adjacent with neighbor 192.168.3.3  (Backup Designated Router)
  Suppress hello for 0 neighbor(s)

R3 show ip ospf interface

R3#show ip ospf interface
Loopback0 is up, line protocol is up
  Internet Address 192.168.3.3/32, Area 0
  Process ID 1, Router ID 192.168.3.3, Network Type LOOPBACK, Cost: 1
  Loopback interface is treated as a stub Host
FastEthernet0/0 is up, line protocol is up
  Internet Address 192.168.123.3/24, Area 0
  Process ID 1, Router ID 192.168.3.3, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State BDR, Priority 1
  Designated Router (ID) 192.168.2.2, Interface address 192.168.123.2
  Backup Designated router (ID) 192.168.3.3, Interface address 192.168.123.3
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:08
  Supports Link-local Signaling (LLS)
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 0, maximum is 1
  Last flood scan time is 0 msec, maximum is 4 msec
  Neighbor Count is 2, Adjacent neighbor count is 2
    Adjacent with neighbor 192.168.1.1
    Adjacent with neighbor 192.168.2.2  (Designated Router)
  Suppress hello for 0 neighbor(s)

問題

show ip ospf interfaceの出力を見ることで、あるルータでの設定ミスが判明しました。その設定ミスを修正すると、正常にルーティングが行えるようになりました。

  • どのルータでどのような設定ミスのため、このトラブルが起こっているでしょうか?
  • その設定ミスに関わらずなぜネイバーはすべてFULL状態になるのでしょうか?

解答

[どのルータでどのような設定ミスのため、このトラブルが起こっているでしょうか?]

R1のFastEthernet0/0に次の設定ミスがあります。

R1

interface FastEthernet0/0
 ip ospf network point-to-multipoint
 ip ospf hello-interval 10

トラブルを解決するためには、次のコマンドでネットワークタイプをデフォルトのBROADCASTに戻します。

R1

interface FastEthernet0/0
 no ip ospf network

[その設定ミスに関わらずなぜネイバーはすべてFULL状態になるのでしょうか?]

ネットワークタイプの一致は、ネイバーを確立するための条件ではないので、ネイバーを確立することができます。しかし、DR/BDRの要/不要の認識が違っていると、LSDBの同期をうまくとれなかったり、LSDBの同期がとれてFULL状態になってもSPF計算がうまくできなくなります。

解説

R1のshow ip ospf neighborを見ると、Steteが「FULL/ – 」の表示になっています。

R1 show ip ospf neighbor

R1#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.2.2       0   FULL/  -        00:00:32    192.168.123.2   FastEthernet0/0
192.168.3.3       0   FULL/  -        00:00:33    192.168.123.3   FastEthernet0/0

これは、R1はFastEthernet0/0上にはDR/BDRは存在しないとしています。DR/BDRが存在しないようなインタフェースはPOINT_TO_POINTまたはPOINT_TO_MULTIPOINTのネットワークタイプのインタフェースです。FastEthernet0/0のデフォルトのネットワークタイプはBROADCASTなので、設定によってPOINT_TO_POINTまたはPOINT_TO_MULTIPOINTに変更されていることがわかります。

POINT_TO_POINTの場合は、インタフェース上のネイバーはただ一つになるはずです。FastEthernet0/0上で2つのネイバーを認識していて、DR/BDRが存在しないと言うことはPOINT_TO_MULTIPOINTのネットワークタイプになっています。R1のshow ip ospf interfaceを見ると、FastEthernet0/0がPOINT_TO_MULTIPOINTになっていることが確認できます。POINT_TO_MULTIPOINTのデフォルトのHelloインターバルは30秒です。Helloインターバルがデフォルトの30秒から10秒に変更されていることもわかります。つまり、R1ではFa0/0で次のような設定がされていることになります。

R1 Fa0/0の設定

interface FastEthernet0/0
 ip ospf network point-to-multipoint
 ip ospf hello-interval 10

この設定により、ネットワークタイプが「POINT_TO_MULTIPOINT」になり、Hello/Deadインターバルはデフォルトの組み合わせの10/40となります。

R1 show ip ospf interface

R1#show ip ospf interface
Loopback0 is up, line protocol is up
  Internet Address 192.168.1.1/32, Area 0
  Process ID 1, Router ID 192.168.1.1, Network Type LOOPBACK, Cost: 1
  Loopback interface is treated as a stub Host
FastEthernet0/0 is up, line protocol is up
  Internet Address 192.168.123.1/24, Area 0
  Process ID 1, Router ID 192.168.1.1, Network Type POINT_TO_MULTIPOINT, Cost: 1
  Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:00
  Supports Link-local Signaling (LLS)
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 4 msec
  Neighbor Count is 2, Adjacent neighbor count is 2
    Adjacent with neighbor 192.168.2.2
    Adjacent with neighbor 192.168.3.3
  Suppress hello for 0 neighbor(s)

これがこのトラブルの原因です。

R1のFa0/0はPOINT_TO_MULTIPOINTのネットワークタイプで、DR/BDRは存在しないとみなします。一方、R2とR3のFa0/0はデフォルトのBROADCASTでDR/BDRが存在します。各ルータのネイバーのStateはFULLなので、LSDBの同期自体はとれています。ですが、R1はDR/BDRが存在しないはずのFa0/0のネットワークを表すLSAタイプ2があり、SPF計算を正常に行うことができなくなっています。そのため、R1のルーティングテーブルにはR2やR3のLoopbackインタフェースのルート情報がありません。

OSPFのネットワークタイプは、ネイバーを確立する条件には直接関係していないということをきちんと認識しておきましょう。ネイバーを確立する条件は、Helloパケット内の下記のパラメータが一致していることが条件です。

  • エリア番号
  • ネットマスク
  • Hello/Deadインターバル
  • 認証情報
  • スタブエリアフラグ

ネットワークタイプによって、Hello/Deadインターバルのデフォルト値が決まるので間接的にはネイバーを確立する条件に関わっています。ですが、ネットワークタイプが違っていてもネイバーにはなれます。ネットワークタイプが違っていてもネイバーになれるのですが、DR/BDRの要/不要の認識がきちんと一致していなければいけません。そうしなければ、この問題のようにネイバーになれてもLSDBの同期がとれなかったり、SPF計算がうまくできなくなります。

つまり、以下の組み合わせであればネットワークタイプが異なっていても問題ありません。

  • POINT_TO_POINTとPOINT_TO_MULTIPOINT
  • BROADCASTとNON_BROADCAST

「ネイバー」とは、同一ネットワーク上のOSPFルータなので、ネットワークタイプはほとんどの場合、一致しているはずです。そのため、実環境ではあまりネットワークタイプが一致しているかどうかは気にしないですし、あえてネットワークタイプを変更することもまずないでしょう。ですが、CCIEラボ試験ではOSPFのネットワークタイプに関する問題は、もうお決まりと言っていいぐらいです。CCIEラボ試験を受験する方は、OSPFのネットワークタイプの理解を深めてください。

OSPFの仕組み