スタティックルートの AD 値(アドミニストレーティブディスタンス)は 1 で、どのダイナミックルーティングプロトコルよりも小さい値です。そのため、同じ宛先のルートがあれば、ダイナミックルーティングで学習したルートよりスタティックルートが優先されます。
一方、実際のネットワークでは「普段はダイナミックルーティングで学習した経路(プライマリルート)を使い、プライマリルートに障害が起きたときだけ、スタティックルートで設定したバックアップルートへ切り替えたい」という要件があります。この記事では、これを実現するフローティングスタティックを、Cisco ルータで設定して動作を確認します。
- OSPF でプライマリ経路を作り、ルーティングテーブルで AD 値を確認する
- AD 値を指定したスタティックルート(フローティングスタティック)を設定する
- プライマリ回線を切断し、バックアップ回線へ切り替わることを確認する
フローティングスタティックとは
スタティックルートの AD 値を、プライマリルートを学習するダイナミックルーティングプロトコルの AD 値より大きくすると、そのスタティックルートは普段はルーティングテーブルに入りません。プライマリルートがルーティングテーブルから消えたときに初めて使われます。このように、AD 値を大きくしてバックアップ用にしたスタティックルートをフローティングスタティックと呼びます。
主なルート情報の AD 値(Cisco ルータの既定値)は次のとおりです。
| ルート情報 | AD 値 |
|---|---|
| 直接接続 | 0 |
| スタティックルート | 1 |
| eBGP | 20 |
| EIGRP(内部) | 90 |
| OSPF | 110 |
| IS-IS | 115 |
| RIP | 120 |
| EIGRP(外部) | 170 |
| iBGP | 200 |
| 不明 | 255(信頼できないルートとして扱われ、ルーティングテーブルに入らない) |
AD 値の考え方と動作は、次の記事で詳しく説明しています。
>> 参考:Ciscoルータのルート選択はどう決まる?Administrative Distanceを徹底解説
検証構成
R1 と R2 を、プライマリ回線(192.168.12.0/24)とバックアップ回線(192.168.21.0/24)の2本でつなぎます。プライマリ回線では OSPF を動かし、R2 のループバックアドレス 2.2.2.2/32 を R1 に広告します。バックアップ回線では OSPF を動かさず、R1 にフローティングスタティックを設定します。
OSPF でプライマリ経路を作る
プライマリ回線で OSPF を有効にし、R2 のループバックアドレス 2.2.2.2/32 を R1 に広告します。
R1
R1(config)# router ospf 1 R1(config-router)# network 192.168.12.1 0.0.0.0 area 0
R2
R2(config)# router ospf 1 R2(config-router)# network 2.2.2.2 0.0.0.0 area 0 R2(config-router)# network 192.168.12.2 0.0.0.0 area 0
R1 のルーティングテーブルを確認すると、2.2.2.2/32 を OSPF で学習しています。AD 値が 110 になっていることを確認してください。
R1
R1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/2] via 192.168.12.2, 00:03:37, FastEthernet0/0.12
〜 以降省略
| 表示 | 意味 |
|---|---|
| O | OSPF で学習したルート |
| [110/2] | [AD 値/メトリック]。AD 値は OSPF の既定値 110、メトリックは OSPF のコスト |
| via 192.168.12.2 | ネクストホップはプライマリ回線の R2(.2) |
| FastEthernet0/0.12 | パケットを出す R1 のインターフェース |
2.2.2.2 へトレースルートを実行すると、プライマリ回線(192.168.12.2)を経由していることがわかります。
R1
R1# traceroute 2.2.2.2
Type escape sequence to abort.
Tracing the route to 2.2.2.2
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.12.2 12 msec 48 msec 16 msec
フローティングスタティックを設定する
プライマリ回線がダウンしたときに、2.2.2.2/32 宛ての通信をバックアップ回線へ切り替えるためのフローティングスタティックを設定します。今回使っている OSPF の AD 値は 110 なので、スタティックルートの AD 値をそれより大きい 111 にします。AD 値は、スタティックルートの設定の末尾に書きます。
R1
R1(config)# ip route 2.2.2.2 255.255.255.255 192.168.21.2 111
| 設定 | 意味 |
|---|---|
| 2.2.2.2 255.255.255.255 | 宛先のネットワークとサブネットマスク |
| 192.168.21.2 | ネクストホップ(バックアップ回線の R2) |
| 111 | このスタティックルートの AD 値。省略すると 1 になる |
設定しても、OSPF のルート(AD 値 110)がある間は、AD 値 111 のスタティックルートはルーティングテーブルに入りません。表示されるのは OSPF のルートのままです。
AD 値は、OSPF の 110 より大きければいくつでもかまいません。筆者の場合、OSPF のバックアップルートであることを強調したいときは OSPF の AD 値に 1 を足して 111 に、EIGRP のバックアップルートであることを強調したいときは 91 にします。元のルーティングプロトコルではなく、バックアップルートであること自体を強調したいときは 254 にします。
AD 値の最大は 255 ですが、255 は信頼できないルートとして扱われ、設定してもルーティングテーブルに入りません。フローティングスタティックには 255 を使わないようにします。
AD 値は、プライマリルートを学習しているプロトコルの AD 値と比べます。同じ EIGRP でも、内部ルートは 90、外部ルート(再配布したルート)は 170 です。外部ルートのバックアップに 91 を設定すると、スタティックルートのほうが優先され、普段からバックアップ回線を使ってしまいます。プライマリルートが show ip route でどの AD 値になっているかを確かめてから値を決めます。
プライマリ回線を切断して切り替わりを確認する
R1 から 2.2.2.2 へ ping を実行しながら、プライマリ回線を切断します。
R1
R1# ping 2.2.2.2 repeat 1000
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!..................
*Sep 11 13:22:23.547: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.12
from FULL to DOWN, Neighbor Down: Dead timer expired...!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
切断したタイミングで ping が途切れ、OSPF のネイバーがダウンした直後に ping が復旧していることがわかります。
ログの Dead timer expired は、R2 からの Hello パケットが届かないまま Dead タイマーが切れたため、ネイバーをダウンと判断したことを表しています。Cisco ルータの Ethernet インターフェースでは、Hello の間隔が既定で 10 秒、Dead タイマーはその4倍の 40 秒です。ping が途切れていたのは、主にこの Dead タイマーが切れるのを待っていた時間です。
OSPF のルートが消えて初めてフローティングスタティックが使われるので、切り替えの速さは、プライマリルートの障害をどれだけ早く検知できるかで決まります。
R1 のルーティングテーブルを確認します。
R1
R1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
2.0.0.0/32 is subnetted, 1 subnets
S 2.2.2.2 [111/0] via 192.168.21.2
| 表示 | 意味 |
|---|---|
| S | スタティックルート |
| [111/0] | [AD 値/メトリック]。AD 値は設定した 111、スタティックルートのメトリックは 0 |
| via 192.168.21.2 | ネクストホップはバックアップ回線の R2(.2) |
OSPF のルートが消えたため、フローティングスタティックとして設定したルートが使われるようになりました。
2.2.2.2 へトレースルートを実行すると、バックアップ回線(192.168.21.2)を経由しています。
R1
R1# traceroute 2.2.2.2
Type escape sequence to abort.
Tracing the route to 2.2.2.2
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.21.2 8 msec 20 msec 12 msec
プライマリ回線が復旧して OSPF で再び 2.2.2.2/32 を学習すると、AD 値の小さい OSPF のルートがルーティングテーブルに戻り、スタティックルートは待機の状態に戻ります。
本番で使うときの注意
検証では R1 から ping を打ったので、送信元はバックアップ回線の R1 側のアドレス(192.168.21.1)になり、R2 は直接接続のルートで応答を返せました。実際のネットワークでは、次の点も確認しておきます。
| 確認すること | 理由 |
|---|---|
| 戻りの経路 | R1 の配下にある LAN からの通信を切り替える場合、R2 側にも R1 配下の LAN へのバックアップルートが必要です。片方だけ設定すると、行きと戻りで経路が合わず通信できません。 |
| ネクストホップへの到達性 | スタティックルートは、ネクストホップ(192.168.21.2)に到達できないとルーティングテーブルに入りません。バックアップ回線自体が使える状態かを、普段から確認しておきます。 |
| AD 値の比較相手 | プライマリルートの AD 値より大きいかを、プロトコルの種類(EIGRP の内部・外部など)まで含めて確認します。 |
まとめ
| 項目 | 内容 |
|---|---|
| フローティングスタティック | AD 値をプライマリルートより大きくした、バックアップ用のスタティックルート |
| 設定 | ip route 宛先 マスク ネクストホップ AD値(今回は AD 値 111) |
| 通常時 | AD 値の小さい OSPF のルート(110)がルーティングテーブルに入り、スタティックルートは待機 |
| 障害時 | OSPF のルートが消えると、スタティックルート(111)がルーティングテーブルに入る |
| 切り替え時間 | プライマリルートの障害を検知するまでの時間で決まる(今回は Dead タイマーの満了で検知) |
| 使えない値 | 255 はルーティングテーブルに入らないため使わない |
コメント