| 確認 |
シスコ・ルーターは,OSPFインタフェースにフレームリレーを使っていると,インタフェースのネットワーク・タイプを「NON_BROADCAST」にするので,ブロードキャスト(マルチキャスト)・パケットをインタフェースから出さなくなります。
その解決方法として,neighborコマンドを使ってユニキャストでHelloパケットをやりとりする方法がありました。
IOS10.0より前はこの方法しか使えなかったのですが,IOS10.0以降はネットワーク・タイプをブロードキャストが転送できるタイプに変えて解決するという方法が使えます。
●設定の確認
まずは,
ip ospf network broadcast
というコマンドを入れる前の,OSPFインタフェースのデフォルトのネットワーク・タイプを確認しましょう。
RouterA#show ip ospf interface
Serial0 is up, line protocol is up
Internet Address 192.168.1.1/24, Area 0
Process ID 1, Router ID 192.168.1.1, Network Type NON_BROADCAST, Cost: 64
Transmit Delay is 1 sec, State DR, Priority
1
Designated Router (ID) 192.168.1.1, Interface
address 192.168.1.1
No backup designated router on this network
Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
Hello due in 00:00:12
Index 2/2, 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 0, Adjacent neighbor
count is 0
Suppress hello for 0 neighbor(s)
Ethernet0 is up, line protocol is up
Internet Address 192.168.0.1/24, Area 0
Process ID 1, Router ID 192.168.1.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority
1
Designated Router (ID) 192.168.1.1, Interface
address 192.168.0.1
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:01
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 0, maximum is
0
Last flood scan time is 0 msec, maximum
is 0 msec
Neighbor Count is 0, Adjacent neighbor
count is 0
Suppress hello for 0 neighbor(s)
Serial0のネットワーク・タイプは,NON_BROADCASTになっているのがわかります。
この状態では,フレームリレーのルーター同士で通信できません。
ネットワーク・タイプがNON_BROADCASTのインタフェースには,ブロードキャスト(マルチキャスト)・パケットを出さないので,ルーター同士でHelloパケットをやりとりできないからです。
(以上のことは,詳しくはNBMAネットワーク(ノンブロードキャスト)の回を見てください)。
●動作の確認
ルーター同士がHelloパケットをやりとりできないのは,ネットワーク・タイプがNON_BROADCASTになっているからです。
そこで,ネットワーク・タイプを,ブロードキャストがやりとりできる「BROADCAST」というタイプに変更してしまいましょう。
そのコマンドが,ip ospf netowork broadcastです。
RouterAのSerial0インタフェースにこのコマンドを入力します。
RouterA(config)#interface serial 0
RouterA(config-if)#ip ospf network broadcast
再び,Serial0インタフェースのネットワーク・タイプを確認してみましょう。
するとネットワーク・タイプが,「BROADCAST」に変わったことがわかります。
RouterA#show ip ospf interface
Serial0 is up, line protocol is up
Internet Address 192.168.1.1/24,
Area 0
Process ID 1, Router ID 192.168.1.1, Network Type BROADCAST, Cost: 64
Transmit Delay is 1 sec, State
WAITING,
Priority 1
No designated router on this
network
No backup designated router
on this network
Timer intervals configured,
Hello 10, Dead
40, Wait 40, Retransmit 5
Hello due in 00:00:07
Wait time before Designated
router selection
00:00:17
Index 2/2, flood queue length
0
Next 0x0(0)/0x0(0)
Last flood scan length is 1,
maximum is
2
Last flood scan time is 4 msec,
maximum
is 4 msec
Neighbor Count is 0, Adjacent
neighbor
count is 0
Suppress hello for 0 neighbor(s)
Ethernet0 is up, line protocol
is up
Internet Address 192.168.0.1/24,
Area 0
Process ID 1, Router ID 192.168.1.1,
Network
Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State
DR, Priority
1
Designated Router (ID) 192.168.1.1,
Interface
address 192.168.0.1
No backup designated router
on this network
Timer intervals configured,
Hello 10, Dead
40, Wait 40, Retransmit 5
Hello due in 00:00:03
Index 1/1, flood queue length
0
Next 0x0(0)/0x0(0)
Last flood scan length is 0,
maximum is
0
Last flood scan time is 0 msec,
maximum
is 0 msec
Neighbor Count is 0, Adjacent
neighbor
count is 0
Suppress hello for 0 neighbor(s)
この状態で,RouterBとネイバーが確立できるのでしょうか。
RouterBのOSPFインタフェースは,デフォルトのNON_BROADCASTのままです。
RouterBがRouterAから受信しているHelloパケットを見てみます。
RouterB#debug ip ospf hello
OSPF hello events debugging is
on
00:37:09: OSPF: Rcv hello from 192.168.1.1 area 0 from
Serial0 192.168.1.1
00:37:09: OSPF: Mismatched hello parameters from 192.168.1.1
00:37:09: OSPF: Dead R 40 C 120, Hello R 10 C 30 Mask
R 255.255.255.0 C 255.255.255.0
00:37:19: OSPF: Rcv hello from
192.168.1.1
area 0 from Serial0 192.168.1.1
00:37:19: OSPF: Mismatched hello parameters
from 192.168.1.1
00:37:19: OSPF: Dead R 40 C 120,
Hello R
10 C 30 Mask R 255.255.255.0
C 255.255.255.0
「Mismatched hello parameters」と表示されました。
「Helloパケットのパラメータがミスマッチである」というエラー・メッセージです。
その下の行に,パラメータの違いが示されています。
「R」が相手(RouterA)のパラメータで,「C」が自分(RouterB)のパラメータです。
見ると,Dead間隔が40秒と120秒,Hello間隔が10秒と30秒になっており,確かに両ルーターでパラメータが違っています。
ルーター同士がOSPFでネイバーを確立する条件は,Helloパケットに記述されている以下のパラメータが一致している必要があります。
・エリア番号
・サブネット・マスク
・Hello/Dead間隔
・スタブエリア・フラグ
つまり,Hello/Dead間隔が違うと,OSPFルーター同士でネイバーが確立できません。
(アジャセンシーを確立するためには,Helloパラメータではありませんが,代表ルーター選出の必要性も一致している必要があります。これについては,NBMAネットワーク(ポイントツーマルチポイント)の回を見て下さい。)
そこで,RouterBのSerial0インタフェースにもip
ospf network broadcastコマンドを入れて,ネットワーク・タイプをRouterAと同じBROADCASTにします。
RouterB(config)#interface serial
0
RouterB(config-if)#ip ospf network broadcast
00:52:09: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1
on Serial0 from LOADING to FULL, Loading
Done
RouterA(192.168.1.1)とアジャセンシーを確立したことを知らせるメッセージが表示されました。
ネイバーを調べてみると,RouterA(192.168.1.1)とアジャセンシーが確立されていることがわかります。
RouterB#show ip ospf neighbor
Neighbor ID Pri State
Dead
Time Address Interface
192.168.1.1 1 FULL/DR
00:00:30
192.168.1.1 Serial0
RouterAからHelloパケットがどのように出ているのか見てみましょう。
デバッグでIPパケットを見てみます。
RouterA#debug ip packet detail
IP packet debugging is on (detailed)
RouterA#
00:54:46: IP: s=192.168.0.1 (local), d=224.0.0.5
(Ethernet0), len 64, sending broad/multicast,
proto=89
00:54:49: IP: s=192.168.1.1 (local), d=224.0.0.5 (Serial0), len 72, sending broad/multicast, proto=89
00:54:52: IP: s=192.168.1.3 (Serial0), d=224.0.0.5,
len 68, rcvd 0, proto=89
00:54:52: IP: s=192.168.1.3 (Serial0), d=224.0.0.5,
len 68, rcvd 0, proto=89
00:54:54: IP: s=192.168.1.2 (Serial0), d=224.0.0.5,
len 68, rcvd 0, proto=89
00:54:54: IP: s=192.168.1.2 (Serial0), d=224.0.0.5,
len 68, rcvd 0, proto=89
00:54:56: IP: s=192.168.0.1 (local), d=224.0.0.5
(Ethernet0), len 64, sending broad/multicast,
proto=89
OSPFのHelloパケットが,マルチキャスト(224.0.0.5)で出ています。
両ルーター(RouterAとRouterB)にip ospf network
broadcastコマンドを入れたことによって,お互いがマルチキャストでHelloパケットをやりとりできるようになったわけです。
同様に,RouterCのSerial0インタフェースのタイプもBROADCASTに設定します。
RouterC(config)#interface serial
0
RouterC(config-if)#ip ospf network broadcast
00:53:20: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1
on Serial0 from LOADING to FULL,
Loading
Done
RouterBと同様に,RouterAとアジャセンシーが確立されました。
RouterC#show ip ospf neighbor
Neighbor ID Pri State
Dead
Time Address Interface
192.168.1.1 1 FULL/DR
00:00:31
192.168.1.1 Serial0
これで3台のルーター同士が通信できるようになりました。
ただし,BROADCASTタイプだとHelloパケットは10秒間隔で送出されるので,WAN回線(フレームリレー)の帯域を食います。
やはりBROADCASTは,LAN(イーサネット)などの帯域の余裕のあるネットワーク向きと言えます。
そのため現在は,フレームリレーの場合,「デフォルトのNON_BROADCASTでいちいちneighbor設定するのが面度だ」と思ったら,同じHello間隔が30秒のPOINT_TO_MULTIPOINTに変更するのが一般的です。
|
|