Cisco覚書_pingトラッキング


### CiscoIOSのipslaとEEMでPINGトラッキングの結果をトリガーに所定のコマンドを実行する
ルーティングプロトコルで迂回できない故障時などにワークアラウンドとし利用することが多い。
Juniper機器でも[「JunosのPINGトラッキング」](https://qiita.com/38pinn/private/c8ebe9af7024e958adb4)**rpm**と**event-policys**を使って同じような実装できる。

#### IP SLA設定
以下、適宜わかりやすい文言を決める。イベント属性名や動作はIOSで定義済。
>
`IPSLA12_TIMEOUT_ADMINDOWN` イベントアプレット名
`"IP SLAs.12.: Threshold Occurred for timeout"`イベント発生時にログ出力する文言
`---------IPSLA12_TIMEOUT_ADMINDOWN--------`イベント発生時にTRAPのOIDに続けて出力する文言

**ip sla**に続けて適宜番号を決定。**frequency**は5で5秒ごとにPINGを実行。
**life forever start-time now**はすぐに、永遠にPING監視する。
**Consecutive occurrences 2**では2回計測してPING応答がタイムアウトになるとリアクションする。

```ios:ios
ip sla 12
 icmp-echo 10.10.10.1 source-ip 11.11.11.1
 frequency 5
ip sla schedule 12 life forever start-time now
ip sla reaction-configuration 12 react timeout threshold-type consecutive 2 action-type none 
```

---
#### EEM設定
IPSLAで設定したIPSLAのPING監視がタイムアウトになったときのlogの文字列をEEMで検知し**action 10-50**までのconfigを自動投入する。**action 60-80**でtrapにOIDと出力内容を指定して出力する。

```ios:ios
event manager applet IPSLA12_TIMEOUT_ADMINDOWN
 event syslog pattern "IP SLAs.12.: Threshold Occurred for timeout"
 action 10 cli command "enable"
 action 20 cli command "configure terminal"
 action 30 cli command "interface GigabitEthernet1/12"
 action 40 cli command "shutdown"
 action 50 cli command "end"
 action 60 info type snmp var "var1" oid 1.3.6.1.4.1.9.9.41.1.2.3.1.3 int 5
 action 70 info type snmp var "var1" oid 1.3.6.1.4.1.9.9.41.1.2.3.1.5 string "------- IPSLA12_TIMEOUT_ADMINDOWN -------"
 action 80 info type snmp trap enterprise-oid 1.3.6.1.4.1.9.9.41.2 generic-trapnum 6 specific-trapnum 1 trap-oid 1.3.6.1.4.1.9.9.41.2.0.1 trap-var "var1"

```
---
####動作ステータス確認
OKならPING監視できている

```ios:ios
IPSLAs Latest Operation Summary
ID          Type       Destination       Stats   Return      Last
                                          (ms)    Code        Run
----------- ---------- ---------------  ------ ---------- -----------------                                                                                                             
*12         icmp-echo  10.10.10.1   RTT=1    OK         1 second ago                                   
```
---
####PING-NG発生時のログ

```ios:ios
Mar 23 17:11:10.021 JST: %RTT-4-OPER_TIMEOUT: condition occurred, entry number = 12
Mar 23 17:11:10.021 JST: %RTT-3-IPSLATHRESHOLD: IP SLAs(12): Threshold Occurred for timeout
Mar 23 17:11:10.073 JST: %LINK-5-CHANGED: Interface GigabitEthernet1/12, changed state to administratively down
Mar 23 17:11:10.077 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/12, changed state to down
Mar 23 17:11:10.101 JST: %SYS-5-CONFIG_I: Configured from console by  on vty10 (EEM:IPSLA12_TIMEOUT_ADMINDOWN)
```
---

####イベント実行確認
event appletで指定したshutdownが実行済みになっている

```ios:ios
ISP-RT11#sh ip int brief g1/12
Interface              IP-Address      OK? Method Status                Protocol
GigabitEthernet1/12     unassigned      YES unset  administratively down down                        
```
---
####PING復旧時ログ
※PINGがOKになったときに自動復旧させたい場合はIFがUPしてPINGが復旧した時のLOGで別のEEMを作成すればよい

```ios:ios

Mar 23 17:12:55.022 JST: %RTT-4-OPER_TIMEOUT: condition cleared, entry number = 12
Mar 23 17:12:55.022 JST: %RTT-3-IPSLATHRESHOLD: IP SLAs(12): Threshold Cleared for timeout
Mar 23 17:13:18.267 JST: %LINK-3-UPDOWN: Interface GigabitEthernet1/12, changed state to down
Mar 23 17:13:18.811 JST: %LINK-3-UPDOWN: Interface GigabitEthernet1/12, changed state to up
Mar 23 17:13:21.803 JST: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/12, changed state to up
Mar 23 17:13:40.659 JST: %SYS-5-CONFIG_I: Configured from console by 38pinn on vty9 (192.168.1.1)
Mar 23 17:15:25.024 JST: IPSLA-INFRA_TRACE:OPER:12 slaSchedulerEventWakeup
```

(参考)PINGが復旧したときのlog
%RTT-3-IPSLATHRESHOLD: IP SLAs(12): Threshold Cleared for timeout

---

####参考リンク
[Junosでpingトラッキング](https://qiita.com/tags/pingトラッキング?page=1)