Cisco IP SLA設定手順|ICMP監視とtrack連携で経路を自動切替【実機検証】

Cisco IP SLAとtrackオブジェクトでHSRPを連動させた経路自動切替の構成図

「主回線がダウンしてるのに、ルータは何事もなかったように主経路にパケットを流し続ける」——これ、現場で一度はやらかすやつ。物理リンクは生きてるのに上流ISPだけ死んでる、みたいなケースはfloating static routeだけじゃ守れない。

そこで使うのが IP SLAtrack の組み合わせ。実際に外部の宛先まで疎通確認させて、ダメだったらルートやHSRPのpriorityを動かす。この記事ではIP SLAの設定手順、track連携、HSRP・Static Routeとの結びつけ方、確認コマンドまで、Catalyst 9300とISR 4321で検証しながらまとめた。

IP SLAとは何か、何を解決してくれるのか

IP SLAは「ルータから能動的に疎通を試す機能」

IP SLA(Internet Protocol Service Level Agreement)はCisco IOSの組み込み機能で、ルータ自身が能動的にICMPやUDP、HTTP、DNSなどのプローブを投げて応答時間や成否を測定する仕組み。リンクのup/downでは検出できない「先方まで本当に届いているか」を継続的に監視できる。

📝 補足情報

昔は「Service Assurance Agent (SAA)」という名前だった。古いConfigやベテランの先輩から「SAAで監視してる」と言われたら、それはIP SLAのこと。RFC 2925のpingMIBや、Ciscoの公式ドキュメントに詳細がある。

💡 現場での体験談

以前、客先で主回線のONUが「リンクは上がってるけど通信は死んでる」状態になったことがあった。ルータはGi0/0をupと判定してるからfloating staticは動かない。結局5分くらい外向き通信が止まって、慌ててIP SLA + trackに作り替えた。あれ以来、外向きルートの監視は「物理だけじゃダメ、必ず宛先到達性まで見る」が口癖。

IP SLAでよく使う運用パターン

代表的な4つの使い方

IP SLA単体で使うことはほとんどなくて、たいていtrackやHSRP、EEMと組み合わせる。ぶっちゃけ覚えるべきパターンはこの4つでだいたい足りる。

用途組み合わせ何を実現するか
経路監視IP SLA + track + Static Route主回線NG時に副回線へ自動切替
FHRP連動IP SLA + track + HSRP/VRRP上流障害時にActive側を降格させて切替
SLA測定IP SLA jitter/UDP echo遅延・ジッタ・パケロスを長期記録
EEM連動IP SLA + track + EEM applet障害検知時に通知や自動コマンド実行

floating staticとの違いはここ

floating staticは「経路の優先度を変えるだけ」で、検出のトリガーは結局ネクストホップの到達性に依存する。IP SLA + trackなら、宛先まで届かなければ何が起きていようと切り替わる。

図1: 障害検知の精度比較(体感ベース)

IP SLA + track

92%

floating static (NH監視)

55%

物理リンクup/down監視

30%

IP SLA設定手順(ICMP echoとtrack連携)

この章で作るもの

構成図の通り、R1(HSRP Active)から8.8.8.8へICMPを5秒間隔で打ち、3回連続で失敗したらtrackをDownにする。Down検知でHSRP priorityが−20されてR2が昇格、ユーザー端末は同じvIP宛で副回線(ISP-B)経由に切り替わる、という流れ。

パラメータ設定値備考
SLA番号1機器内ユニーク
監視先8.8.8.8ISP-A経由で抜ける宛先
送信元IFGi0/0主回線側を明示指定
frequency5秒短すぎるとCPU負荷上がる
timeout2000ms遠隔地なら3000推奨
track delaydown 10 / up 30フラッピング防止
Step 1: IP SLAオペレーションを定義する
R1(config)# ip sla 1
R1(config-ip-sla)#  icmp-echo 8.8.8.8 source-interface GigabitEthernet0/0
R1(config-ip-sla-echo)#  frequency 5
R1(config-ip-sla-echo)#  timeout 2000
R1(config-ip-sla-echo)#  threshold 1500
R1(config-ip-sla-echo)#  exit
R1(config)# ip sla schedule 1 life forever start-time now

ポイントは source-interface を必ず明示すること。これを書かないと再帰ルックアップでISP-B側から抜けてしまうことがあって、肝心の主回線監視にならない。

⚠ よくあるミス

ip sla schedule 1 life forever start-time now を入れ忘れるとプローブが永遠に動かない。show ip sla statisticsで「Operation timeout (in milliseconds): … Number of successes: 0」のままならまずこれを疑う。あとIOS 12.4以前は ip sla monitor という旧コマンドなので、古い機器を触るときは注意。

Step 2: trackオブジェクトを作る
R1(config)# track 1 ip sla 1 reachability
R1(config-track)#  delay down 10 up 30
R1(config-track)#  exit

delayの「down 10」は、SLAがDownになっても10秒待ってからtrackをDownにするという意味。瞬断でフラフラ切り替わるのを防げる。upを長めにしてあるのは、復旧直後の不安定な状態でまた切り戻して再障害になるのを避けるため。正直なところ、現場ではdown 5〜15、up 30〜60くらいで運用してることが多い。

Step 3a: HSRPに連動させる場合
R1(config)# interface Vlan10
R1(config-if)#  standby 10 ip 10.0.0.254
R1(config-if)#  standby 10 priority 110
R1(config-if)#  standby 10 preempt
R1(config-if)#  standby 10 track 1 decrement 20

トラックがDownになった瞬間、priorityが110→90に落ちる。R2側のpriority 100より下になるので、preempt有効ならR2が昇格してActiveになる、という仕掛け。decrement値は「相手のpriorityと自分のpriorityの差より大きい」が鉄則。

Step 3b: Static Routeに連動させる場合
R1(config)# ip route 0.0.0.0 0.0.0.0 192.0.2.1 track 1
R1(config)# ip route 0.0.0.0 0.0.0.0 198.51.100.1 200

主経路はAD=1(デフォルト)でtrack付き、副経路はAD=200のfloating static。trackがDownになると主経路がルーティングテーブルから消えて、副経路が浮上する。HSRPがいない単機構成のサイトでよく使うパターン。

動作確認とshowコマンド

最低限見るべき4つのコマンド

show ip sla statistics — 成功カウンタを見る
R1# show ip sla statistics 1
IPSLAs Latest Operation Statistics

IPSLA operation id: 1
        Latest RTT: 12 milliseconds
Latest operation start time: 14:32:05 JST Wed Apr 29 2026
Latest operation return code: OK
Number of successes: 142
Number of failures: 0
Operation time to live: Forever

return codeがOK、Number of successesが増え続けていれば正常。タイムアウトしているとここがTimeoutになる。

show track — track状態と最終遷移時刻
R1# show track 1
Track 1
  IP SLA 1 reachability
  Reachability is Up
  1 change, last change 00:42:11
  Delay up 30 secs, down 10 secs
  Tracked by:
    HSRP Vlan10 10
show standby brief — HSRPの現在状態
R1# show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp  Pri P State    Active          Standby         Virtual IP
Vl10        10   110 P Active   local           10.0.0.2        10.0.0.254
📝 検証Tips

切替テストはISP側ルータがあれば一番リアルだけど、無ければ access-list 100 deny icmp host R1のIP host 8.8.8.8 をISP側に入れて意図的に8.8.8.8への返答を落とすのが手っ取り早い。実回線を引っこ抜いてもいいけど、戻すときに別の事故を起こしがち。

ハマりやすいトラブル3パターン

設定ミスと検出のヒント

症状原因対処
SLAがずっとTimeoutscheduleコマンドを入れ忘れip sla schedule 1 life forever start-time now を投入
主回線NGなのに切替らないsource-interface未指定でISP-B経由で抜けているSLA定義に source-interface を追加
頻繁にフラッピングするdelayが短すぎ/timeoutが厳しすぎdelay down 10 up 30、timeoutを2000〜3000に
HSRPだけ切替らないdecrement値が両ルータのpriority差より小さいdecrement 20以上、preempt必須
🚫 やってはいけないこと

監視先を自社の上流ルータの管理IPにしないこと。ISP-A側のルータが死んでなくても上流の上流が死んだら、結局切り替わらない。最低でも8.8.8.8や1.1.1.1のような「インターネット側の安定した宛先」にするか、複数ターゲットを track 10 list boolean or で組み合わせる。

あわせて読みたい
まとめ

この記事のキモ

📋 まとめ

IP SLAは「物理リンクは生きてるけど通信が死んでる」を検出する唯一の現実解。schedule投入とsource-interface明示は必ずセットで覚える。trackのdelayでフラッピングを抑え、HSRPはdecrementを20以上にしてpreempt有効。これだけ守れば、現場で動くIP SLA冗長は組める。

よくある質問(FAQ)

Q. IP SLAを動かすのに専用ライセンスは要りますか?

基本的なICMP echoや一部のUDP echoはBase IOSでもいける。一方、jitterやVoIP系の高度なオペレーションはIP Services以上のフィーチャセットが必要。Catalyst 9300のIOS XE 17.x系ならNetwork Advantageで全部使える。古い機器は show license で要確認。

Q. プローブの間隔(frequency)はどれくらいが適切?

外向き経路の冗長監視なら5秒〜10秒でちょうどいい。1秒にすると検知は早いけどCPU負荷とトラフィックが地味に増える。100台規模で1秒間隔を全機にやったら、機器のCPUが常時5%乗ってしまった事例もある。要件次第だけど、5秒が無難。

Q. IP SLA Responderって何?要りますか?

jitterやUDP echoのような双方向測定をするとき、対向機器側で ip sla responder を有効にすると、より精度の高い遅延・ジッタ計測ができる。ただ、ICMP echoの単純な疎通監視だけなら不要。今回の構成では使わない。

Q. trackをANDやORで組み合わせられますか?

できる。track 10 list boolean or でtrack 1とtrack 2のORを取る、みたいな書き方。複数の監視先を組み合わせて「どっちか1つでも落ちたら障害」「両方落ちたら障害」みたいな判定が組める。サイトによっては必須。