IP SLAはサービスレベルを満たしているかどうか確認する機能です。一般的にはObject trackingと組み合わせて自動経路切替を行いますが、ここではIP SLAのみを解説します。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type echo protocol ipIcmpEcho <dst_addr> Router(config-sla-monitor-echo)# request-data-size <byte> Router(config-sla-monitor-echo)# timeout <msec> Router(config-sla-monitor-echo)# threshold <msec> Router(config-sla-monitor-echo)# frequency <sec> Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type tcpConnect dest-ipaddr <dst_addr> dest-port <port> [ control disable ] Router(config-sla-monitor-tcp)# request-data-size <byte> Router(config-sla-monitor-tcp)# timeout <msec> Router(config-sla-monitor-tcp)# threshold <msec> Router(config-sla-monitor-tcp)# frequency <sec> Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type tcpConnect dest-ipaddr <dst_addr> dest-port <port> control disable Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type udpEcho dest-ipaddr <dst_addr> dest-port <port> [ control disable ] Router(config-sla-monitor-udp)# request-data-size <byte> Router(config-sla-monitor-udp)# timeout <msec> Router(config-sla-monitor-udp)# threshold <msec> Router(config-sla-monitor-udp)# frequency <sec> Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type pathJitter dest-ipaddr Router(config-sla-monitor-pathJitter)# request-data-size <byte> Router(config-sla-monitor-pathJitter)# timeout <msec> Router(config-sla-monitor-pathJitter)# threshold <msec> Router(config-sla-monitor-pathJitter)# frequency <sec> Router(config)# ip sla monitor schedule <num> start-time { now | <hh:mm> } life { forever | <sec> } Router(config)# ip sla monitor responder Router(config)# ip sla monitor reaction-configuration <num> react { timeout | connectionLoss | verifyError } action-type trapOnly Router(config)# snmp-server host <addr> <community> Router(config)# snmp-server enable traps
構成図
以下の環境で動作確認を行います。R1, R2間の接続についてclock rateを低めに設定し、threshold超過が発生しやすいようにします。
s0/0 s0/0 +--------+.1 .2+--------+ | R1 +--------+ R2 | +--------+ +--------+ 192.168.12.0/24 R1 Loopback0 R2 Loopback0 10.1.1.1/32 10.2.2.2/32
[R1] interface Loopback0 ip address 10.1.1.1 255.255.255.255 ! interface Serial0/0 ip address 192.168.12.1 255.255.255.0 encapsulation frame-relay clock rate 246 frame-relay map ip 192.168.12.1 100 frame-relay map ip 192.168.12.2 100 broadcast frame-relay intf-type dce [R2] interface Loopback0 ip address 10.2.2.2 255.255.255.255 ! interface Serial0/0 ip address 192.168.12.2 255.255.255.0 encapsulation frame-relay frame-relay map ip 192.168.12.1 100 broadcast frame-relay map ip 192.168.12.2 100
設定全文は下記ファイルです。詳細設定は下記を参照ください。
仕様説明
icmp echo
icmpによる監視を行う場合は、以下のようなコマンドを使用します。”type echo”と入力した後は、ヘルプストリングに従って設定を投入して下さい。
一定時間以内にレスポンスが返るかどうかで挙動を変えたい場合は、timeoutに加えthresholdを設定します。timeoutを超過するとreturn codeが”NG”になり、thresholdを超過するとreturn codeが”Over threshold”となります。”NG”, “Over threshold”の使い分けについては、Object Trackingのページを参照してください。
Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type echo protocol ipIcmpEcho <dst_addr> Router(config-sla-monitor-echo)# request-data-size <byte> Router(config-sla-monitor-echo)# timeout <msec> Router(config-sla-monitor-echo)# threshold <msec> Router(config-sla-monitor-echo)# frequency <sec> Router(config)# ip sla monitor schedule <num> start-time { now | <hh:mm> } life { forever | <sec> }
tcp connectoin
tcpによる監視を行う場合は、以下のようなコマンドを使用します。”type tcpConnect”と入力した後は、ヘルプストリングに従って設定を投入して下さい。
Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type tcpConnect dest-ipaddr <dst_addr> dest-port <port> [ control disable ] Router(config-sla-monitor-tcp)# request-data-size <byte> Router(config-sla-monitor-tcp)# timeout <msec> Router(config-sla-monitor-tcp)# threshold <msec> Router(config-sla-monitor-tcp)# frequency <sec> Router(config)# ip sla monitor schedule <num> start-time { now | <hh:mm> } life { forever | <sec> }
tcp connectionを使用する場合は、対向機が応答をIP SLA control protocolに基づく応答を返す必要があります。対向機が応答を返すように以下のコマンドで”ip sla monitor responder”を設定します。
Router(config)# ip sla monitor responder
なお、対向機で”ip sla monitor responder”が設定できない場合や対向機がcisco機ではない場合は、以下のようにcontrol disableとして下さい。この設定によりIP SLAs control protocolに基づく応答でなくてもIP SLAによる監視ができるようになります。
Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type tcpConnect dest-ipaddr <dst_addr> dest-port <port> control disable Router(config)# ip sla monitor schedule <num> start-time { now | <hh:mm> } life { forever | <sec> }
udp echo monitor
udpによる監視を行う場合は、以下のようなコマンドを使用します。”type udpEcho”と入力した後は、ヘルプストリングに従って設定を投入して下さい。
Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type udpEcho dest-ipaddr <dst_addr> dest-port <port> [ control disable ] Router(config-sla-monitor-pathJitter)# request-data-size <byte> Router(config-sla-monitor-pathJitter)# timeout <msec> Router(config-sla-monitor-pathJitter)# threshold <msec> Router(config-sla-monitor-pathJitter)# frequency <sec> Router(config)# ip sla monitor schedule <num> start-time { now | <hh:mm> } life { forever | <sec> }
udp jitter monitor
udp jitterを計測したい場合は以下のようなコマンドを入力します。jitterとはパケットのゆらぎを示す指標で、音声品質の良さを表します。QoSが想定通りに機能しているかどうかをmonitorする時に使用します。
Router(config)# ip sla monitor <num> Router(config-sla-monitor)# type pathJitter dest-ipaddr Router(config-sla-monitor-echo)# request-data-size <byte> Router(config-sla-monitor-echo)# timeout <msec> Router(config-sla-monitor-echo)# threshold <msec> Router(config-sla-monitor-echo)# frequency <sec> Router(config)# ip sla monitor schedule <num> start-time { now | <hh:mm> } life { forever | <sec> }
jitter(ゆらぎ)を計測するためにはudpに対する応答を返す必要があります。監視される側のホストに以下コマンドを投入すると、”ip sla monitor responder”が有効になりjitter(ゆらぎ)が計測できるようになります。
Router(config)# ip sla monitor responder
SNMP trap
以下のコマンドで、IP SLAによる監視が失敗した際にSNMP trapを送信する事ができます。
Router(config)# ip sla monitor reaction-configuration <num> react { timeout | connectionLoss | verifyError } action-type trapOnly
snmptrapdサーバの指定やsnmp有効化の指定も必要です。snmp有効化については諸説あります。cisco360公式トレーニングの教材によれば、”snmp-server enable traps snmp”が必要と書いてありますが、configuration guideには、”rtr”または”syslog”が必要と書いてあります。私が行ったエミュレータによる動作確認の結果は、全てのsnmpを有効化しなければtrapは送信されませんでした。
Router(config)# snmp-server host <addr> <community> Router(config)# snmp-server enable traps
icmp echo
設定投入
R1からR2へのicmp echoによる監視を実装します。
[R1] ip sla monitor 1 type echo protocol ipIcmpEcho 10.2.2.2 source-interface Loopback0 request-data-size 1250 timeout 500 threshold 50 frequency 10 ip sla monitor schedule 1 life forever start-time now
設定投入
以下のshowコマンドにより、IP SLAの結果を確認します。この設定例の場合thresholdが小さめに設定されていますので、監視結果がOver thresholdとなっている事が読み取れます。
[R1] R1#show ip sla monitor statistics Round trip time (RTT) Index 1 Latest RTT: 100 ms Latest operation start time: *00:06:21.839 UTC Fri Mar 1 2002 Latest operation return code: Over threshold Number of successes: 9 Number of failures: 0 Operation time to live: Forever R1#
tcp monitor
設定投入
R1からR2へのtcpによる監視を実装します。この設定例の場合、R2側で”ip sla monitor responder”を設定していないので、R1側に”control disable”が必要になります。
[R1] ip sla monitor 2 type tcpConnect dest-ipaddr 10.2.2.2 dest-port 23 control disable timeout 1000 frequency 15 ip sla monitor schedule 2 life 60 start-time now
動作確認
以下のshowコマンドにより、IP SLAの結果を確認します。
[R1] R1#show ip sla monitor statistics 2 Round trip time (RTT) Index 2 Latest RTT: 116 ms Latest operation start time: *00:09:54.787 UTC Fri Mar 1 2002 Latest operation return code: OK Number of successes: 4 Number of failures: 0 Operation time to live: 0 R1#
udp monitor
設定投入
R1からR2へのudp echoによる監視を実装します。動作確認のため、R2に”service udp-small-servers”コマンドを入力します。このコマンドによりR2がecho server(udp 7)として機能します。
[R1] ip sla monitor 3 type udpEcho dest-ipaddr 10.2.2.2 dest-port 7 control disable timeout 1000 frequency 10 ip sla monitor schedule 3 life forever start-time now [R2] service udp-small-servers
動作確認
以下のshowコマンドにより、IP SLAの結果を確認します。
[R1] R1#show ip sla monitor statistics 3 Round trip time (RTT) Index 3 Latest RTT: 160 ms Latest operation start time: *00:16:09.827 UTC Fri Mar 1 2002 Latest operation return code: OK Number of successes: 25 Number of failures: 1 Operation time to live: Forever R1#
udp jitter monitor
設定投入
R1, R2間のudp jitterを計測します。jitter(ゆらぎ)を計測するためにはudpに対する応答を返す必要がありますので、R2側に”ip sla monitor responder”コマンドを入力して下さい。
[R1] ip sla monitor 4 type pathJitter dest-ipaddr 10.2.2.2 source-ipaddr 10.1.1.1 interval 10 request-data-size 1250 timeout 1000 frequency 10 ip sla monitor schedule 4 life forever start-time now [R2] ip sla monitor responder
動作確認
以下のshowコマンドにより、IP SLAの結果を確認します。
[R1] R1#show ip sla monitor statistics 4 Round trip time (RTT) Index 4 Latest RTT: 78 ms Latest operation start time: *00:04:11.403 UTC Fri Mar 1 2002 Latest operation return code: OK ---- Path Jitter Statistics ---- Hop IP 192.168.12.2: Round Trip Time milliseconds: Latest RTT: 78 ms Number of RTT: 10 RTT Min/Avg/Max: 63/78/99 ms Jitter time milliseconds: Number of jitter: 8 Jitter Min/Avg/Max: 3/9/16 ms Packet Values: Packet Loss (Timeouts): 0 Out of Sequence: 0 Discarded Samples: 0 Operation time to live: Forever R1#
SNMP trap
設定投入
udp echo 失敗時にトラップを送信するようにします。R1に以下設定を投入して下さい。
[R1] ip sla monitor reaction-configuration 3 react timeout action-type trapOnly snmp-server enable traps snmp-server host 192.168.12.2 CISCOTRAP
動作確認
udp timeoutを発生させるため、R2のudp-small-serversを無効化します。
[R2] no service udp-small-servers
デバッグメッセージより、snmp trapが送信された事を確認します。
[R1] R1#debug snmp packets SNMP packet debugging is on R1# R1# *Mar 1 00:24:26.919: SNMP: Queuing packet to 192.168.12.2 *Mar 1 00:24:26.919: SNMP: V1 Trap, ent ciscoConfigManMIB.2, addr 192.168.12.1, gentrap 6, spectrap 1 ccmHistoryEventEntry.3.15 = 1 ccmHistoryEventEntry.4.15 = 3 ccmHistoryEventEntry.5.15 = 2 *Mar 1 00:24:27.171: SNMP: Packet sent via UDP to 192.168.12.2 R1#