CiscoルーターにおけるOSPFで学習したルートのネクストホップとなるForward Sddressについて説明します。
ネットワーク構成
CMLで下記ネットワークを構築し検証を行います。ポイントとしては、Router1とRouter2の接続セグメント内(172.16.1.0/24)にOSPFが設定されていないRouter3が存在していることです。
ネットワーク機器の設定
ルーティング関連の主な設定は下記のとおりです。
・Router1とRouter2がOSPFネイバーとなっている。
・Router3のLANセグメントへの経路は、Router2にスタティックルートが設定されている。
・Router1はコネクトルートを、Router2はコネクトルートとスタティックルートをOSPFで再配送している。
・Router3のデフォルトルートは、Router2がネクストホップになっている。
通信経路の確認
【Case1】Server1とServer2の通信
Server1とServer2の想定の通信経路は下記の通りとなります。
Router1とRouter2のそれぞれのLANセグメントに対するルーティングは下記のとおりです。想定の経路を通って通信が行われています。
Router1#show ip route | inc 192.168.2.0
O E2 192.168.2.0/24 [110/100] via 172.16.1.2, 02:30:04, GigabitEthernet0/1
Router2#show ip route | inc 192.168.1.0
O E2 192.168.1.0/24 [110/100] via 172.16.1.1, 02:31:28, GigabitEthernet0/1
【Case2】Server1とServer3の通信
Router1のOSPFで学習するルートのネクストホップが、全てRouter2となると仮定すると、Server1とServer3の想定の通信経路は下記の通りとなります。
しかし、Router1の192.168.3.0へのルーティングを確認すると、ネクストホップがRouter3(172.16.1.3)となっています。
Router1#show ip route | inc 192.168.3.0
O E2 192.168.3.0/24 [110/100] via 172.16.1.3, 02:50:38, GigabitEthernet0/1
そのため、実際の通信経路は下記の通りとなります。
OSPFのForward Addressの説明
なぜ、このような状況になるのかというと、OSPFでアドバタイズされるルーティング情報には、”Forward Address”というものが含まれているからです。この情報が、転送先のIPアドレスとなり、ルーティングテーブルに登録されるネクストホップとなります。
“Forward Address”の情報を確認するためには、下記のコマンドを実施します。
show ip ospf database external
Router1#show ip ospf database external
OSPF Router with ID (172.16.1.1) (Process ID 100)
Type-5 AS External Link States
LS age: 218
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 192.168.2.0 (External Network Number )
Advertising Router: 172.16.1.2
LS Seq Number: 80000006
Checksum: 0x938C
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 100
Forward Address: 0.0.0.0
External Route Tag: 0
LS age: 1469
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 192.168.3.0 (External Network Number )
Advertising Router: 172.16.1.2
LS Seq Number: 8000000C
Checksum: 0xDF78
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 100
Forward Address: 172.16.1.3
External Route Tag: 0
“Forward Address”の値は下記の通りです。
宛先セグメント | Forward Address | Advertising Router |
---|---|---|
192.168.2.0 | 0.0.0.0 | 172.16.1.2 |
192.168.3.0 | 172.16.1.3 | 172.16.1.2 |
“Forward Address”が、0.0.0.0の場合は、”Advertising Router”のIPアドレスがネクストホップになります。
Forward Addressが0.0.0.0以外となる条件
ネクストホップアドレスが属しているセグメントのインターフェースが、下記の条件を全て満たす場合、”Forward Address”に「0.0.0.0以外」がセットされます。(ほとんどの状況で、そのルーターが保持しているネクストホップアドレスがセットされます。)
- OSPFが有効になっている。
- 設定されているアドレスが、router ospf のnetworkコマンドで指定された範囲に入っている。
- OSPFのパッシブインターフェースではない。
- OSPFタイプが、point-to-point及びpoint-to-multipointではない。
Router2が、”ネクストホップ:172.16.1.3″となっている経路をOSPFで再配信する場合、Gi0/1が上記の条件をすべて満たしているため、“Forward Address”に”172.16.1.3″をセットします。
パケットキャプチャとデバッグによる確認
OSPFのアドバタイズ情報(リンクステートのアップデート情報)とSPFの登録更新をパケットキャプチャとデバッグで確認します。
パケットキャプチャ
Router2からのリンクステートアップデートのパケットは下記の通りとなります。
192.168.2.0のリンクステートアップデート → Forwarding Address:0.0.0.0
192.168.3.0のリンクステートアップデート → Forwarding Address:172.16.1.3
デバッグ
デバッグで、SPFの登録更新を確認するには下記コマンドを実施します。
debug ip ospf spf
Router1#debug ip ospf spf
OSPF SPF debugging is on
OSPF SPF intra debugging is on
OSPF SPF inter debugging is on
OSPF SPF external debugging is on
192.168.2.0のリンクステートアップデートを受け取った後のSPF更新
Router1#
09:32:42.874: OSPF-100 SPF : Schedule partial SPF type 5, LSID 192.168.2.0, adv_rtr 172.16.1.2 area dummy area
09:32:42.876: OSPF-100 SPF : Service partial SPF, spf instance 26, 0/1/0/0
09:32:42.876: OSPF-100 EXTER: Process partial Opaque LSA queue
09:32:42.876: OSPF-100 INTER: Process partial summary spf queue
09:32:42.877: OSPF-100 EXTER: Process partial external spf queue
09:32:42.877: OSPF-100 EXTER: Process partial spfQ: LSA 5/192.168.2.0/172.16.1.2, age 1, seq 0x80000001, area dummy area
09:32:42.878: OSPF-100 EXTER: Partial SPF for prefix 192.168.2.0/24, LSA 5/192.168.2.0/172.16.1.2
09:32:42.878: OSPF-100 EXTER: Start partial processing AS External LSA 5/192.168.2.0/172.16.1.2, mask 255.255.255.0
09:32:42.879: OSPF-100 EXTER: age 1, seq 0x80000001, metric 100, metric-type 2, fw-addr 0.0.0.0
09:32:42.879: OSPF-100 EXTER: border table path: ASBR via 172.16.1.2 on GigabitEthernet0/1, area 0, cost 1, flags (none)
09:32:42.880: OSPF-100 EXTER: Entered External route sync for area dummy area
09:32:42.881: OSPF-100 EXTER: Process partial nssa spf queue
192.168.3.0のリンクステートアップデートを受け取った後のSPF更新
Router1#
09:32:49.315: OSPF-100 SPF : Schedule partial SPF type 5, LSID 192.168.3.0, adv_rtr 172.16.1.2 area dummy area
09:32:49.316: OSPF-100 SPF : Service partial SPF, spf instance 27, 0/1/0/0
09:32:49.316: OSPF-100 EXTER: Process partial Opaque LSA queue
09:32:49.317: OSPF-100 INTER: Process partial summary spf queue
09:32:49.317: OSPF-100 EXTER: Process partial external spf queue
09:32:49.318: OSPF-100 EXTER: Process partial spfQ: LSA 5/192.168.3.0/172.16.1.2, age 1, seq 0x80000001, area dummy area
09:32:49.318: OSPF-100 EXTER: Partial SPF for prefix 192.168.3.0/24, LSA 5/192.168.3.0/172.16.1.2
09:32:49.318: OSPF-100 EXTER: Start partial processing AS External LSA 5/192.168.3.0/172.16.1.2, mask 255.255.255.0
09:32:49.319: OSPF-100 EXTER: age 1, seq 0x80000001, metric 100, metric-type 2, fw-addr 172.16.1.3
09:32:49.320: OSPF-100 EXTER: forwarding address 172.16.1.3 is not in the GRIB
09:32:49.320: OSPF-100 EXTER: forwarding address route path: via 172.16.1.1 on GigabitEthernet0/1, flags (Connected)
09:32:49.322: OSPF-100 EXTER: Entered External route sync for area dummy area
09:32:49.323: OSPF-100 EXTER: Process partial nssa spf queue
以上で、OSPFのForward Address(OSPF学習ルートのネクストホップアドレス)の説明は完了です。