EEM: SoOの付け替え

前回の続き(EIGRP SoOのURL貼る)


前提

iosv-6(config)#int gi0/1
iosv-6(config-if)#shut
iosv-6(config-if)#
*Sep 12 10:32:22.138: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 68.1.1.8 (GigabitEthernet0/1) is down: interface down
iosv-6(config-if)#
*Sep 12 10:32:24.106: %LINK-5-CHANGED: Interface GigabitEthernet0/1, changed state to administratively down
*Sep 12 10:32:25.107: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to down
iosv-6(config-if)#do sh ip ro | b Gate
Gateway of last resort is not set

      6.0.0.0/32 is subnetted, 1 subnets
C        6.6.6.6 is directly connected, Loopback0
      16.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        16.1.1.0/24 is directly connected, GigabitEthernet0/0
L        16.1.1.6/32 is directly connected, GigabitEthernet0/0
      66.0.0.0/32 is subnetted, 1 subnets
C        66.66.66.66 is directly connected, Loopback1

現在16.1.1.0/24と58.1.10/24に同じ16:16のSoOが付いているため、各CEルータがMPLS越の経路を学習していない。
したがってCE同士で接続している箇所がリンクダウンすると、対向の経路がわからなくなる。
そこで、EEMを設定してリンクダウンをトリガーにSoOを張り替えることを試みる。

設定1

iosv-5(config)#ip sla 1
iosv-5(config-ip-sla)#icmp-echo 68.1.1.8 source-int gi0/0
iosv-5(config-ip-sla-echo)#threshold 500
iosv-5(config-ip-sla-echo)#timeout 500
iosv-5(config-ip-sla-echo)#frequency 5
iosv-5(config-ip-sla-echo)#vrf bbb
iosv-5(config-ip-sla-echo)#exit
iosv-5(config)#ip sla schedule 1 life forever start now
iosv-5(config)#track 10 ip sla 1
iosv-5(config-track)#exit

iosv-5(config)#event manager applet EEM
iosv-5(config-applet)#event track 10 state down
iosv-5(config-applet)#action 1.1 cli command "conf t"
iosv-5(config-applet)#action 1.2 cli command "route-map SOO_2 permit 10"
iosv-5(config-applet)#action 1.3 cli command "no set extcommunity soo 16:16"
iosv-5(config-applet)#action 1.4 cli command "set extcommunity soo 58:58"
iosv-5(config-applet)#exit

iosv-5(config)#event manager applet EEM_UP
iosv-5(config-applet)#event track 10 state up 
iosv-5(config-applet)#action 1.1 cli command "conf t"
iosv-5(config-applet)#action 1.2 cli command "route-map SOO_2 permit 10"
iosv-5(config-applet)#action 1.3 cli command "no set extcommunity soo 58:58"
iosv-5(config-applet)#action 1.4 cli command "set extcommunity soo 16:16"
iosv-5(config-applet)#end

★失敗(超重要)

iosv-8(config)#int gi0/1
iosv-8(config-if)#shut

iosv-5#dtebug event manager action cli
Debug EEM action cli debugging is on
iosv-5#
iosv-5#
iosv-5#
iosv-5#
*Sep 11 09:03:50.542: %TRACK-6-STATE: 10 ip sla 1 reachability Up -> Down
*Sep 11 09:03:50.576: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : CTL : cli_open called.
*Sep 11 09:03:50.580: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : **************************************************************************
*Sep 11 09:03:50.580: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * IOSv is strictly limited to use for evaluation, demonstration and IOS  *
*Sep 11 09:03:50.580: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * education. IOSv is provided as-is and is not supported by Cisco's      *
*Sep 11 09:03:50.581: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * Technical Advisory Center. Any use or disclosure, in whole or in part, *
*Sep 11 09:03:50.582: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * of the IOSv Software or Documentation to any third party for any       *
*Sep 11 09:03:50.582: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * purposes is expressly prohibited except as otherwise authorized by     *
*Sep 11 09:03:50.583: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * Cisco in writing.                                                      *
*Sep 11 09:03:50.583: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : **************************************************************************
*Sep 11 09:03:50.583: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5>
*Sep 11 09:03:50.584: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5>conf t
*Sep 11 09:03:50.601: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : conf t
*Sep 11 09:03:50.602: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : ^
*Sep 11 09:03:50.602: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : % Invalid input detected at '^' marker.
*Sep 11 09:03:50.603: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : 
*Sep 11 09:03:50.603: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5>
*Sep 11 09:03:50.604: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5>route-map SOO_2 permit 10
*Sep 11 09:03:50.715: %H
iosv-5#A_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : route-map SOO_2 permit 10
*Sep 11 09:03:50.715: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : ^
*Sep 11 09:03:50.716: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : % Invalid input detected at '^' marker.
*Sep 11 09:03:50.716: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : 
*Sep 11 09:03:50.717: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5>
*Sep 11 09:03:50.718: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5>no set extcommunity soo 16:16
*Sep 11 09:03:50.829: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : no set extcommunity soo 16:16
*Sep 11 09:03:50.830: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : ^
*Sep 11 09:03:50.830: %HA_EM-6-LOG: EEM : DEBUG(cli_lib
iosv-5#) : : OUT : % Invalid input detected at '^' marker.
*Sep 11 09:03:50.830: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : 
*Sep 11 09:03:50.830: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5>
*Sep 11 09:03:50.831: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5>set extcommunity soo 58:58
*Sep 11 09:03:50.944: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : set extcommunity soo 58:58
*Sep 11 09:03:50.944: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : ^
*Sep 11 09:03:50.945: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : % Invalid input detected at '^' marker.
*Sep 11 09:03:50.946: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : 
*Sep 11 09:03:50.946: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5>
*Se
iosv-5#p 11 09:03:50.947: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : CTL : cli_close called.
*Sep 11 09:03:50.962: 
*Sep 11 09:03:50.962: tty is now going through its death sequence

現在iosv-5にはprivilege level 15を設定しており、ユーザモードをすっ飛ばせるようにしているが、EEMで起動するcliはそれとはまた別物。
そのため、EEMでcliを動かす場合はenableから入れる必要がある。

設定2

iosv-5(config)#event manager applet EEM
iosv-5(config-applet)#action 1.0 cli command "enable"
iosv-5(config-applet)#exit
iosv-5(config)#event manager applet EEM_UP
iosv-5(config-applet)#action 1.0 cli command "enable"

確認1: debug event manager action cli

iosv-5#
*Sep 11 09:10:30.566: %TRACK-6-STATE: 10 ip sla 1 reachability Up -> Down
*Sep 11 09:10:30.598: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : CTL : cli_open called.
*Sep 11 09:10:30.604: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : **************************************************************************
*Sep 11 09:10:30.604: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * IOSv is strictly limited to use for evaluation, demonstration and IOS  *
*Sep 11 09:10:30.605: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * education. IOSv is provided as-is and is not supported by Cisco's      *
*Sep 11 09:10:30.606: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * Technical Advisory Center. Any use or disclosure, in whole or in part, *
*Sep 11 09:10:30.606: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * of the IOSv Software or Documentation to any third party for any       *
*Sep 11 09:10:30.607: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * purposes is expressly prohibited except as otherwise authorized by     *
*Sep 11 09:10:30.608: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : * Cisco in writing.                                                      *
*Sep 11 09:10:30.609: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : **************************************************************************
*Sep 11 09:10:30.609: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5>
*Sep 11 09:10:30.610: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5>enable
*Sep 11 09:10:30.622: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5#
*Sep 11 09:10:30.623: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5#conf t
*Sep 11 09:10:30.635: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : Enter configuration commands, one per line.  End with CNTL/Z.
*Sep 11 09:10:30.636: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5(config)#
*Sep 11 09:10:30.637: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5(config)#route-map SOO_2 permit 10
*Sep 11 09:10:30.751: %HA_EM-6-LOG: EEM : DEB
iosv-5#UG(cli_lib) : : OUT : iosv-5(config-route-map)#
*Sep 11 09:10:30.751: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5(config-route-map)#no set extcommunity soo 16:16
*Sep 11 09:10:30.864: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5(config-route-map)#
*Sep 11 09:10:30.865: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : IN  : iosv-5(config-route-map)#set extcommunity soo 58:58
*Sep 11 09:10:30.976: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : OUT : iosv-5(config-route-map)#
*Sep 11 09:10:30.977: %HA_EM-6-LOG: EEM : DEBUG(cli_lib) : : CTL : cli_close called.

確認2: show ip eigrp vrf topology

iosv-1#sh ip eigrp vrf bbb topo 58.1.1.0/24
EIGRP-IPv4 VR(cisco) Topology Entry for AS(100)/ID(16.1.1.1)
           Topology(base) TID(0) VRF(bbb)
EIGRP-IPv4(100): Topology base(0) entry for 58.1.1.0/24
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 1310720
  Descriptor Blocks:
  5.5.5.5, from VPNv4 Sourced, Send flag is 0x0
      Composite metric is (1310720/0), route is Internal (VPNv4 Sourced)
      Vector metric:
        Minimum bandwidth is 1000000 Kbit
        Total delay is 10000000 picoseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 0
        Originating router is 58.1.1.5
      Extended Community: SoO:58:58

確認3: show ip route

iosv-8(config-if)#do sh ip ro | b Gate
Gateway of last resort is not set

      6.0.0.0/32 is subnetted, 1 subnets
D        6.6.6.6 [90/131072] via 58.1.1.5, 00:02:42, GigabitEthernet0/0
      8.0.0.0/32 is subnetted, 1 subnets
C        8.8.8.8 is directly connected, Loopback0
      16.0.0.0/24 is subnetted, 1 subnets
D        16.1.1.0 [90/3072] via 58.1.1.5, 00:02:42, GigabitEthernet0/0
      58.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        58.1.1.0/24 is directly connected, GigabitEthernet0/0
L        58.1.1.8/32 is directly connected, GigabitEthernet0/0
      66.0.0.0/32 is subnetted, 1 subnets
D        66.66.66.66 [90/131072] via 58.1.1.5, 00:02:42, GigabitEthernet0/0
      68.0.0.0/24 is subnetted, 1 subnets
D        68.1.1.0 [90/3328] via 58.1.1.5, 00:02:42, GigabitEthernet0/0
      88.0.0.0/32 is subnetted, 1 subnets
C        88.88.88.88 is directly connected, Loopback1

確認4: ping

iosv-8(config-if)#do ping 6.6.6.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 6.6.6.6, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 11/13/17 ms

使いそうなshow

show event manager history

iosv-5#show event manager history events 
No.  Job Id Proc Status   Time of Event            Event Type        Name
1    1      Actv success  Mon Sep11 08:59:15 2023  track             applet: EEM 
2    2      Actv success  Mon Sep11 09:03:10 2023  track             applet: EEM_UP 
3    3      Actv success  Mon Sep11 09:03:50 2023  track             applet: EEM 
4    4      Actv success  Mon Sep11 09:08:15 2023  track             applet: EEM_UP 
5    5      Actv success  Mon Sep11 09:10:30 2023  track             applet: EEM 
6    6      Actv success  Mon Sep11 09:16:45 2023  track             applet: EEM_UP 

show event manager policy registered

iosv-5#show event manager policy registered 
No.  Class     Type    Event Type          Trap  Time Registered           Name
1    applet    user    track               Off   Mon Sep 11 08:57:18 2023  EEM
 track 10 state down
 maxrun 20.000
 action 1.0 cli command "enable"
 action 1.1 cli command "conf t"
 action 1.2 cli command "route-map SOO_2 permit 10"
 action 1.3 cli command "no set extcommunity soo 16:16"
 action 1.4 cli command "set extcommunity soo 58:58"

2    applet    user    track               Off   Mon Sep 11 08:58:34 2023  EEM_UP
 track 10 state up
 maxrun 20.000
 action 1.0 cli command "enable"
 action 1.1 cli command "conf t"
 action 1.2 cli command "route-map SOO_2 permit 10"
 action 1.3 cli command "no set extcommunity soo 58:58"
 action 1.4 cli command "set extcommunity soo 16:16"

参考

CCIE Enterprise Infrastructure Foundation, 2nd Edition

感想(読む価値なし)

便利で面白いんだけど、これ商用環境で使う価値あるのか?
動作確認めちゃくちゃめんどくさいし、cli commandで指定するコマンドは文字列であれば許容される(cli command "ABC"でも入っちゃう)ので不具合めちゃくちゃ発生しそうだし、切り分けポイントを増やすだけになりそう。
事前検証でぜっっっっったいに不具合起きませんよって保証を付けてからじゃないと導入できなさそう。

今更ながらのEEM設定

↑読んだ。
今回みたいな設定変更で使うよりも、リンクダウン等をトリガーにログやコンフィグを自動で取得する目的のために使われることが多いのか。納得。

この記事が気に入ったらサポートをしてみませんか?