ネットワーク構築案件において最もよく相談を受けるのがループ対策をしておきたい、という内容です。一般的にLayer2におけるループ対策で挙げられるのは SpanningTreeがあげられます。
ただ、これらの対策を講じておいても導入したCatalystの特定ポート配下でループが生じればSTPを有効にしておこうがストームが発生してしまい、L3スイッチが一台だけの環境だと全体に影響がでてしまいネットワーク麻痺状態となってしまう場合がよくあります。
そこで実案件でオススメしているのがStormControl機能です。これは特定の種類のパケット(フレーム)が一定の閾値を超えた場合にトラップ送信や該当ポートをerrdisableにする機能です。
以下、設定例です。
(config)# interface GigabitEthernet0/1 (config-if)# storm-control broadcast level 5.00 (config-if)# storm-control action shutdown (config-if)# storm-control action trap |
上記ではブロードキャストパケットの入力トラフィックが帯域の5%を超えた段階でこのポートを強制的にシャットダウンにし、なおかつトラップも送信するという設定です。1G の5%なので50Mbpsですね。帯域以外の他にはbpsやppsの具体的な値なども指定することが可能ですが、私の場合はいつもパーセンテージで指定しています。普通に考えてブロードキャストが50Mbpsを超えるというのは特殊な要件でもない限り、ループ以外に理由が思いつかないのでこれが発動した際にはループが起きたと考えて問題ないと思います。( 理論的にはループに限った話ではないのですが )
また、トラフィックの対象は一般的には broadcastを指定することが多いと思いますが、multicastやunicastを指定することも可能です。ただ、余程特殊な要件でもない限り使うことはないかと。
StormControlが有効になっているかどうかは下記コマンドで確認可能です。
# show errdisable detect ErrDisable Reason Detection Mode ----------------- --------- ---- arp-inspection Enabled port bpduguard Enabled port channel-misconfig Enabled port community-limit Unsupported dhcp-rate-limit Enabled port dtp-flap Enabled port ekey Unsupported gbic-invalid Unsupported iif-reg-failure Enabled port/vlan inline-power Enabled port invalid-policy Unsupported l2ptguard Enabled port link-flap Enabled port link-monitor-failure Enabled port lsgroup Enabled port oam-remote-failure Enabled port mac-limit Unsupported pagp-flap Enabled port port-mode-failure Unsupported pppoe-ia-rate-limit Enabled port psecure-violation Enabled port/vlan security-violation Enabled port sfp-config-mismatch Unsupported storm-control Enabled port udld Enabled port unicast-flood Unsupported vmps Enabled port |
実際にこれが発動された場合、該当ポートはerrdisable状態になり使用不能になります。その際のログには以下のようなものが出力されます。
%SW_MATM-4-MACFLAP_NOTIF: Host 1234.5678.90ab in vlan X is flapping between port Gi0/1 and port Gi0/2 %PM-4-ERR_DISABLE: storm-control error detected on Gi0/1, putting Gi0/1 in err-disable state %STORM_CONTROL-3-SHUTDOWN: A packet storm was detected on Gi0/1. The interface has been disabled. |
どれとどれのポートの間でループが起きたのか、ループしているMACアドレスは何かが表示されます。( 上記ではGi0/1とGi0/2の間でループが発生 ) これらを手がかりにループ状態を解除した後に以下のコマンドで該当ポートを復旧します。
(config)# interface GigabitEthernet0/1 (config-if)# shutdown (config-if)# no shutdown |
但し、ループ状態が解除されていないと再びStormControlが発動してerrdisableになります。