【Cisco】フローティングスタティック

 

スタティックルートの AD 値(アドミニストレーティブディスタンス)は 1 で、どのダイナミックルーティングプロトコルよりも小さい値です。そのため、同じ宛先のルートがあれば、ダイナミックルーティングで学習したルートよりスタティックルートが優先されます。

一方、実際のネットワークでは「普段はダイナミックルーティングで学習した経路(プライマリルート)を使い、プライマリルートに障害が起きたときだけ、スタティックルートで設定したバックアップルートへ切り替えたい」という要件があります。この記事では、これを実現するフローティングスタティックを、Cisco ルータで設定して動作を確認します。

この記事でわかること
  1. OSPF でプライマリ経路を作り、ルーティングテーブルで AD 値を確認する
  2. AD 値を指定したスタティックルート(フローティングスタティック)を設定する
  3. プライマリ回線を切断し、バックアップ回線へ切り替わることを確認する

フローティングスタティックとは

スタティックルートの AD 値を、プライマリルートを学習するダイナミックルーティングプロトコルの AD 値より大きくすると、そのスタティックルートは普段はルーティングテーブルに入りません。プライマリルートがルーティングテーブルから消えたときに初めて使われます。このように、AD 値を大きくしてバックアップ用にしたスタティックルートをフローティングスタティックと呼びます。

通常時 プライマリ回線の障害時 OSPF AD 110 使う Static AD 111 待機 OSPF AD 110 消える Static AD 111 使う
図1 同じ宛先のルートは、AD 値の小さいものがルーティングテーブルに入る

主なルート情報の AD 値(Cisco ルータの既定値)は次のとおりです。

ルート情報AD 値
直接接続0
スタティックルート1
eBGP20
EIGRP(内部)90
OSPF110
IS-IS115
RIP120
EIGRP(外部)170
iBGP200
不明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 Area 0 Primary 192.168.12.0/24 .1 .2 192.168.21.0/24 Backup .1 .2 R1 R2 Lo0 2.2.2.2/32
図2 検証構成。OSPF を動かすのはプライマリ回線だけ

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
〜 以降省略
表示意味
OOSPF で学習したルート
[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 値は、プライマリルートを学習しているプロトコルの 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 のルートが消えたため、フローティングスタティックとして設定したルートが使われるようになりました。

Primary 192.168.12.0/24 .1 .2 192.168.21.0/24 Backup .1 .2 フローティングスタティック(AD 111)で転送 R1 R2 Lo0 2.2.2.2/32
図3 プライマリ回線の切断後は、フローティングスタティックでバックアップ回線へ転送する

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 はルーティングテーブルに入らないため使わない

コメント