このドキュメントでは、Performance Routing(PfR)が複数の Border Relay(BR)を経由するトラフィックを最適化するネットワークで使用される Embedded Event Manager(EEM; 組み込みイベント マネージャ)アプレットについて説明します。転送ループもいくつか確認されます。このアプレットは、ループが確認された場合にデータを収集して、転送ループの影響を緩和するために使用します。
このドキュメントに関する特定の要件はありません。
このドキュメントの情報は、EEM バージョン 4.0 をサポートする Cisco IOS® ソフトウェアに基づくものです。
ご使用の Cisco IOS リリースでサポートされる EEM バージョンを確認するには、次のコマンドを使用します。
Router#sh event manager version | i Embedded
Embedded Event Manager Version 4.00
Router#
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
PfR は、トラフィック クラス(TC)を制御する場合、BR 上にダイナミック ルート マップまたはアクセス コントロール リスト(ACL)を作成します。ある BR 上では、指定された出口点を持つルート マップは指定された出口を指しています。一方、他の BR 上では、ルート マップは内部インターフェイスを指しています(ネクストホップが選択された BR)。
異なる BR 間でダイナミック ACL が正しく同期されていない(たとえば、バグが原因で)場合、問題が発生します。
次の図では、焦点となるのは DSCP EF の値を持つ 172.16.1.0/24 宛てのすべての IP パケットに一致する TC です。このシナリオでは、関連する ACL エントリが指定された BR(BR-2)から削除されています(しかし、BR-1 からは削除されていません)。その TC のパケットは、172.16.1.0/24 宛てのすべての IP パケットに一致するプレフィックス エントリと BR 2 上でヒットします。このプレフィクス エントリの指定された出口は Exit-1 であるため、BR-2 上の関連するルート マップまたは ACL は BR-1 を指します。
その TC のパケットは、今度は BR の間で存続可能時間(TTL)が 0 に達するまでループされます。
このドキュメントでは、以下のことを行うために使用する必要な EEM アプレットについて説明します。
マスター コントローラ(MC)と BR のコンボの場合に使用するアプレットは、はるかに簡単です(MC が複数の BR の 1 つで稼動する場合)。専用の MC を使用したシナリオについても説明しています。
ここでは、このプロセスに使用するアクセスリスト、およびアプレットのログ ファイルについて説明します。
アプレットでは、転送ループを検出するために、パケットを低い値の TTL と一致させる ACL を利用します。
BR 間でループするパケットごとに 1 つの(かつ唯一の)ヒットを取得するために、2 つの連続した比較的低い TTL 値(20 と 21)で一致する ACE を使用することを推奨します。traceroute パケットから頻繁にヒットしないように、使用する TTL 値は低すぎないようにしてください。
interface gig0/0 (internal interface)
ip access-group LOOP in
!
ip access-list extended LOOP
permit ip 10.116.48.0 0.0.31.255 any ttl range 20 21
permit ip any any
ACL は、show pfr master border topology コマンドの出力で報告される内部インターフェイスに配置する必要があります。
送信元 IP の範囲(ここでは 10.116.48.0/20)は、1 つ以上の内部ネットワーク(内部インターフェイスを介して到達可能なプレフィクス)と一致している必要があります。
ループの影響を受けるリモート サイトまたは TC を特定するために、リモート サイトまたは TC ごとにより具体的な ACE を使用して、インターフェイスに 2 番目の ACL アウトバウンドを追加できます。
interface gig0/0 (internal interface)
ip access-group LOOP-DETAIL out
!
ip access-list extended LOOP-DETAIL
permit ip 10.116.48.0 0.0.31.255 10.116.132.0 0.0.0.255 ttl range 20 21
permit ip 10.116.48.0 0.0.31.255 10.116.128.0 0.0.0.255 ttl range 20 21
.... (add here one line per remote site)
permit ip any an
次に示すように、異なるリモート サイトのサブネットと宛先 IP が一致します。
10.116.132.0/24 -> site-1
10.116.128.0/24 -> site-2
ループの影響を受ける TC を正確に特定する必要がある場合は、1 つのリモート サイトに複数の行を追加することもできます。
アプレットでは、30 秒ごとに ACL のループで TTL と一致する ACE のヒット カウントをチェックします。アプレットでは、これらのチェックの結果に基づいて以下のタスクを実行する場合があります。
アプレットでは、次のものをトラッキングするログ ファイルを維持管理します。トラッキングされるのは、ヒット カウントの数(カウントが 0 より大きい場合)、一時的なループのすべての発生(THRESHOLD_1 を超えたものの THRESHOLD_2 は超えていない場合)、または実際のループ(THRESHOLD_1 と THRESHOLD_2 の両方を超えた場合)です。
このドキュメントで説明するシナリオは、最も単純なものです。ループ検出と PfR のクリアは同じデバイス上で実行されるため、デバイスの EEM アプレットの通信を開始する必要はありません。別々のアプレットが、MC と BR のコンボおよび他の BR で実行されます。
次の出力では、MC と BR のコンボで使用されるアプレットに関する重要な情報が示されています。この特定の出力に関する重要な注意点は、次のとおりです。
event manager environment THRESHOLD_1 1000
event manager environment THRESHOLD_2 500
event manager environment DISK bootflash
!
event manager applet LOOP-MON authorization bypass
event timer watchdog name LOOP time 30
action 100 cli command "enable"
action 110 cli command "show ip access-list LOOP"
action 120 set regexp_substr 0
action 130 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 140 cli command "clear ip access-list counters LOOP"
action 150 if $regexp_substr gt 0
action 200 set MATCHES $regexp_substr
action 210 file open LOGS $DISK:script-logs.txt a
action 220 cli command "enable"
action 230 cli command "show clock"
action 240 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+ est [A-Za-z]+
[A-Za-z]+ [0-9]+ 201[0-9]" $_cli_result _regexp_result
action 250 set TIME $_regexp_result
action 260 if $MATCHES gt $THRESHOLD_1
action 270 wait 15
action 280 cli command "show ip access-list LOOP"
action 290 set regexp_substr 0
action 300 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 310 if $regexp_substr gt $THRESHOLD_2
action 320 cli command "enable"
action 330 cli command "show ip access-list LOOP-DETAIL
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 340 cli command "show pfr master traffic-class perf det
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 350 cli command "show route-map dynamic detail
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 360 cli command "show ip route
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 370 cli command "clear pfr master *"
action 380 cli command "clear ip access-list counters LOOP-DETAIL"
action 390 file puts LOGS "$TIME - LOOP DETECTED - PfR CLEARED -
matches $MATCHES > $THRESHOLD_1 and $regexp_substr
> $THRESHOLD_2 - see $DISK:script-output-$_event_pub_sec.txt"
action 400 syslog priority emergencies msg "LOOP DETECTED -
PfR CLEARED - see $DISK:script-output-$_event_pub_sec.txt !"
action 410 else
action 420 file puts LOGS "$TIME - TEMPORARY LOOP : matches
$MATCHES > $THRESHOLD_1 and $regexp_substr < or = $THRESHOLD_2"
action 430 cli command "clear ip access-list counters LOOP-DETAIL"
action 440 end
action 450 else
action 460 cli command "en"
action 470 cli command "clear ip access-list counters LOOP-DETAIL"
action 480 file puts LOGS "$TIME - number of matches =
$MATCHES < $THRESHOLD_1"
action 490 end
action 500 else
action 510 cli command "clear ip access-list counters LOOP-DETAIL"
action 520 end
ここでは、他の BR に使用するアプレットについて説明します。この特定の出力に関する重要な注意点は、次のとおりです。
event manager environment THRESHOLD 700
event manager environment DISK flash 0
!
event manager applet LOOP-BR authorization bypass
event timer watchdog name LOOP time 20
action 100 cli command "enable"
action 110 cli command "show ip access-list LOOP"
action 120 set regexp_substr 0
action 130 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 140 cli command "clear ip access-list counters LOOP"
action 150 if $regexp_substr gt 0
action 160 set MATCHES $regexp_substr
action 170 file open LOGS $DISK:script-logs.txt a
action 180 cli command "show clock"
action 190 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+
est [A-Za-z]+ [A-Za-z]+ [0-9]+ 201[0-9]" $_cli_result _regexp_result
action 200 set TIME $_regexp_result
action 210 if $MATCHES gt $THRESHOLD
action 220 cli command "enable"
action 230 cli command "show route-map dynamic detail | tee /append
$DISK:script-output-$_event_pub_sec.txt"
action 240 cli command "show ip route | tee /append
$DISK:script-output-$_event_pub_sec.txt"
action 250 file puts LOGS "$TIME : matches = $MATCHES >
$THRESHOLD - see $DISK:script-output-$_event_pub_sec.txt"
action 260 syslog priority emergencies msg "LOOP DETECTED -
Outputs captured - see $DISK:script-output-$_event_pub_sec.txt !"
action 270 else
action 280 file puts LOGS "$TIME : matches = $MATCHES < or = $THRESHOLD"
action 290 end
action 300 end
ループ検出、および PfR のクリアと統計の収集は、デバイス間の EEM アプレットの通信が備わった複数のデバイス上で実行されます。デバイス間の通信は、さまざまな方法で実行されます。このドキュメントでは、IGP でアドバタイズされる専用ループバックの到達可能性を確認するために、トラッキング対象オブジェクトを介したデバイスの通信について説明します。イベントが検出されると、ループバックはシャットダウンされます。これにより、トラッキング対象オブジェクトがオフラインになると、リモート デバイス上のアプレットが開始できます。異なる情報を交換する必要がある場合、別のループバックを使用できます。
以下のアプレットおよび通信方法が使用されます。
アプレット名 | 場所 | 処理内容 | トリガー | 通信 |
LOOP-BR | BR | ループを検出するために ACL のヒット カウントをチェックする |
定期的 | Loop100 のシャットダウン |
LOOP-MC | MC | - PfR 情報の収集 - PfR のクリア |
Loop100 の到達可能性のトラッキング | Loop200 のシャットダウン |
COLLECT-BR | BR | 情報の収集 | Loop200 の到達可能性のトラッキング | none |
上の表を表している図を次に示します。
アプレットによって使用されるプロセスは、次のとおりです。
ここでは、ループバックの作成(IP が IGP でアドバタイズされるように)方法およびトラック オブジェクトの作成方法について説明します。
トラック オブジェクトの作成時に留意すべき重要な注意点は、次のとおりです。
BR-1
interface Loopback100
ip address 10.100.100.1 255.255.255.255
!
track timer ip route 1
track 1 ip route 10.100.100.200 255.255.255.255 reachability
BR-2
interface Loopback100
ip address 10.100.100.2 255.255.255.255
!
track timer ip route 1
track 1 ip route 10.100.100.200 255.255.255.255 reachability
MC
interface Loopback200
ip address 10.100.100.200 255.255.255.255
!
track timer ip route 1
track 1 ip route 10.100.100.1 255.255.255.255 reachability
track 2 ip route 10.100.100.2 255.255.255.255 reachability
track 11 ip route 10.116.100.1 255.255.255.255 reachability
track 12 ip route 10.116.100.2 255.255.255.255 reachability
track 20 list boolean and
object 11
object 12
LOOP-BR
ここでは、BR にループバックを作成する方法について説明します。留意すべき重要な注意点は、次のとおりです。
event manager environment THRESHOLD_1 100event manager environment
THRESHOLD_2 500event manager environment DISK bootflash
!event manager applet LOOP-BR authorization bypass
event timer watchdog name LOOP time 30 maxrun 27
action 100 cli command "enable"
action 110 cli command "show ip access-list LOOP"
action 120 set regexp_substr 0
action 130 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 140 cli command "clear ip access-list counters LOOP"
action 150 if $regexp_substr gt 0
action 200 set MATCHES $regexp_substr
action 210 file open LOGS $DISK:script-detect-logs.txt a
action 220 cli command "enable"
action 230 cli command "show clock"
action 240 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+
est [A-Za-z]+ [A-Za-z]+ [0-9]+ 201[0-9]"
$_cli_result _regexp_result
action 250 set TIME $_regexp_result
action 260 if $MATCHES gt $THRESHOLD_1
action 270 wait 15
action 280 cli command "show ip access-list LOOP"
action 290 set regexp_substr 0
action 300 regexp "range 20 21 \(([0-9]+) matches\)"
$_cli_result _regexp_result regexp_substr
action 310 if $regexp_substr gt $THRESHOLD_2
action 320 cli command "enable"
action 330 cli command "conf t"
action 340 cli command "interface loop100"
action 350 cli command "shut"
action 360 file puts LOGS "$TIME - LOOP DETECTED - Message sent to MC -
matches $MATCHES > $THRESHOLD_1 and $regexp_substr > $THRESHOLD_2"
action 370 wait 5
action 375 cli command "enable"
action 380 cli command "conf t"
action 390 cli command "interface loop100"
action 400 cli command "no shut"
action 410 else
action 420 file puts LOGS "$TIME - TEMPORARY LOOP : matches $MATCHES >
$THRESHOLD_1 and $regexp_substr < or = $THRESHOLD_2"
action 430 cli command "clear ip access-list counters LOOP-DETAIL"
action 440 end
action 450 else
action 460 cli command "en"
action 470 cli command "clear ip access-list counters LOOP-DETAIL"
action 480 file puts LOGS "$TIME - number of matches =
$MATCHES < $THRESHOLD_1"
action 490 end
action 500 else
action 510 cli command "clear ip access-list counters LOOP-DETAIL"
action 520 end
LOOP-MC
ここでは、MC 上にループバックを作成する方法について説明します。留意すべき重要な注意点は、次のとおりです。
event manage environment DISK bootflash
event manager applet LOOP-MC authorization bypass
event syslog pattern "10.100.100.[0-9]/32 reachability Up->Dow" ratelimit 60
action 100 file open LOGS $DISK:script-logs.txt a
action 110 regexp "10.100.100.[0-9]" "$_syslog_msg" _regexp_result
action 120 set BR $_regexp_result
action 130 wait 2
action 140 track read 20
action 150 if $_track_state eq "up"
action 160 cli command "enable"
action 170 cli command "show clock"
action 180 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+
est [A-Za-z]+ [A-Za-z]+ [0-9]+ 201[0-9]"
"$_cli_result" _regexp_result
action 190 set TIME "$_regexp_result"
action 200 cli command "show pfr master traffic-class perf det
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 210 cli command "conf t"
action 220 cli command "interface loop200"
action 230 cli command "shut"
action 240 wait 10
action 250 cli command "conf t"
action 260 cli command "interface loop200"
action 270 cli command "no shut"
action 280 cli command "end"
action 290 cli command "clear pfr master *"
action 300 file puts LOGS "$TIME - LOOP DETECTED by $BR -
PfR CLEARED - see $DISK:script-output-$_event_pub_sec.txt"
action 310 syslog priority emergencies msg "LOOP DETECTED by $BR -
PfR CLEARED - see $DISK:script-output-$_event_pub_sec.txt !"
action 320 else
action 330 file puts LOGS "$TIME - REACHABILITY LOST with
$BR - REACHABILITY TO ALL BRs NOT OK - NO ACTION"
action 340 end
COLLECT-BR
ここでは、BR の情報を収集する方法について説明します。アプレットは、BR が MC 上の Loopback200(10.100.100.200)への到達可能性を失った場合に開始します。収集のために使用されるコマンドは、action 120、130、および 140 に示されています。
event manager environment DISK bootflash
event manager applet COLLECT-BR authorization bypass
event syslog pattern "10.100.100.200/32 reachability Up->Dow" ratelimit 45
action 100 file open LOGS $DISK:script-collect-logs.txt a
action 110 cli command "enable"
action 120 cli command "sh ip access-list LOOP-DETAIL |
tee /append $DISK:script-output-$_event_pub_sec.txt"
action 130 cli command "show route-map dynamic detail
| tee /append $DISK:script-output-$_event_pub_sec.txt"
action 140 cli command "show ip route | tee /append
$DISK:script-output-$_event_pub_sec.txt"
action 150 cli command "show clock"
action 160 regexp "[0-9]+:[0-9]+:[0-9]+.[0-9]+ CET [A-Za-z]+ [A-Za-z]+
[0-9]+ 201[0-9]" "$_cli_result" _regexp_result
action 170 set TIME "$_regexp_result"
action 180 file puts LOGS "$TIME - OUTPUTs COLLECTED -
see $DISK:script-output-$_event_pub_sec.txt"
SYSLOG-MC
ループが検出された場合の MC 上の syslog を次に示します。
MC#
*Mar 8 08:52:12.529: %TRACKING-5-STATE: 1 ip route 10.100.100.1/32
reachability Up->Down
MC#
*Mar 8 08:52:16.683: %LINEPROTO-5-UPDOWN:
Line protocol on Interface Loopback200, changed state to down
*Mar 8 08:52:16.683: %LINK-5-CHANGED: Interface Loopback200,
changed state to administratively down
MC#
*Mar 8 08:52:19.531: %TRACKING-5-STATE: 1
ip route 10.100.100.1/32 reachability Down->Up
MC#
*Mar 8 08:52:24.727: %SYS-5-CONFIG_I: Configured from console by
on vty0 (EEM:LOOP-MC)
*Mar 8 08:52:24.744: %PFR_MC-1-ALERT: MC is inactive due to PfR
minimum requirements not met;
Less than two external interfaces are operational
MC#
*Mar 8 08:52:24.757: %HA_EM-0-LOG: LOOP-MC:
LOOP DETECTED by 10.100.100.1 - PfR CLEARED
- see unix:script-output-1362732732.txt !
MC#
*Mar 8 08:52:26.723: %LINEPROTO-5-UPDOWN:
Line protocol on Interface Loopback200, changed state to up
MC#
*Mar 8 08:52:26.723: %LINK-3-UPDOWN: Interface Loopback200,
changed state to up
MC#
*Mar 8 08:52:29.840: %PFR_MC-5-MC_STATUS_CHANGE: MC is UP
*Mar 8 08:52:30.549: %TRACKING-5-STATE: 2
ip route 10.100.100.2/32 reachability Up->Down
MC#
*Mar 8 08:52:37.549: %TRACKING-5-STATE: 2
ip route 10.100.100.2/32 reachability Down->Up
MC#
改定 | 発行日 | コメント |
---|---|---|
1.0 |
27-May-2013 |
初版 |