
ネットワークループが発生すると、ブロードキャストやマルチキャストが雪だるま式に増加し、スイッチのCPU負荷が急上昇してネットワーク全体が通信不能に陥ります。原因が特定できるまでの間も被害は広がり続けるため、「自動的に封じ込める仕組み」を事前に設定しておくことが非常に重要です。
CiscoスイッチのStorm Control機能を使えば、トラフィックが一定の閾値を超えた際に自動的にポートをerr-disabled状態にし、被害を最小限に抑えることができます。この記事では、Storm Controlの仕組みから設定例・閾値の考え方・復旧方法・運用ルールまで、実務目線で解説します。
以前担当した現場で、早朝に「ネットワークが全部つながらない」という連絡が入りました。確認するとスイッチのCPU使用率が100%近くになっており、show interfacesを見るとブロードキャストカウンタが異常な速度で増加していました。原因はフロアのHUBにケーブルが二重接続されてループが発生していたことでした。
その後、Storm Controlをスイッチ全ポートに設定しました。数週間後に同様のループが発生したときは、該当ポートだけがerr-disabledになり、他の機器への影響はほぼゼロでした。事前設定の有無でこれだけ差が出ることを痛感した経験です。
ネットワークループとブロードキャストストームとは
Storm Controlの設定を理解するために、まず「なぜループがこれほど危険なのか」を整理します。
ループ発生のメカニズム
スイッチはブロードキャストパケットを受信すると、そのパケットを受信ポート以外の全ポートにフラッディングします。ループ構成(A→B→C→Aのような経路の輪)があると、フラッディングされたブロードキャストが再びスイッチに戻り、また全ポートにフラッディングされます。これが繰り返されることで、パケット数が爆発的に増加します。
この状態を「ブロードキャストストーム」と呼びます。帯域幅を使い切り、スイッチのCPUが過負荷になり、最終的にはネットワーク全体が通信不能になります。STPが設定されていない環境やSTPの設定ミスがある環境では、この被害が全スイッチに伝播します。
ループの主な発生原因
Storm Controlとは何か・仕組みの解説
Storm Controlは、Ciscoスイッチのポートごとに設定できるトラフィック制御機能です。ポートを流れるブロードキャスト・マルチキャスト・未知のユニキャストトラフィックの割合または帯域幅を監視し、設定した閾値を超えた場合に指定したアクションを実行します。
監視対象のトラフィック種別
| 種別 | 設定キーワード | 説明 | ループ時の増加 |
|---|---|---|---|
| ブロードキャスト | broadcast | 全機器宛てのパケット | 急激に増加 |
| マルチキャスト | multicast | グループ宛てのパケット | 増加することあり |
| 未知のユニキャスト | unicast | MACテーブルにない宛先へのパケット | MACフラッピング時に増加 |
実行できるアクション
| アクション | 設定コマンド | 動作 | 推奨度 |
|---|---|---|---|
| シャットダウン | action shutdown | ポートをerr-disabledにする。最も封じ込め効果が高い | ループ対策に最適 |
| トラップ通知のみ | action trap | SNMPトラップを送信するが通信は継続 | 監視目的向け |
| アクションなし(抑制のみ) | (デフォルト) | 閾値超過パケットをドロップするがポートは維持 | 軽微な制御向け |
ループ発生時のerr-disabled確認
Storm Controlがアクションを実行すると、対象ポートがerr-disabled状態になります。まず現状を把握するための確認コマンドを覚えておきましょう。
① ポートの状態一覧確認
Switch# show interfaces status
Port Name Status Vlan Duplex Speed Type
Gi0/1 connected 10 a-full a-1000 10/100/1000BaseTX
Gi0/2 err-disabled 10 a-full a-1000 10/100/1000BaseTX
Gi0/3 connected 10 a-full a-1000 10/100/1000BaseTXStatus列にerr-disabledと表示されていれば、そのポートは管理的に無効化されており通信できない状態です。
② err-disabledの原因確認
複数の機能がerr-disabledを発生させる場合があります。以下のコマンドで原因を特定できます。
Switch# show interfaces GigabitEthernet0/2
GigabitEthernet0/2 is err-disabled
Line protocol is down (err-disabled)
...
Switch# show errdisable recovery
ErrDisable Reason Timer Status
----------------- --------------
storm-control Enabled (300 seconds)③ Storm Controlの統計確認
Storm Controlが実際に動作しているかどうかは、以下のコマンドで確認できます。
Switch# show storm-control GigabitEthernet0/2
Interface Filter State Upper Lower Current
--------- ------------- ----------- ----------- ----------
Gi0/2 Forwarding 1.00% 1.00% 0.01%Filter StateがForwardingなら正常動作中、Blockingならトラフィックが閾値を超えて抑制中です。
Storm Controlの設定例
基本設定(ループ対策に推奨)
アクセスポートのループ対策として最も一般的な設定例です。
Switch(config)# interface GigabitEthernet0/2
! ブロードキャストトラフィックが1%以上になったら制限
Switch(config-if)# storm-control broadcast level 1.00
! マルチキャストトラフィックが1%以上になったら制限
Switch(config-if)# storm-control multicast level 1.00
! 閾値超過時の動作をポートshutdownに設定
Switch(config-if)# storm-control action shutdown上記設定により、指定ポートでループが発生してブロードキャスト/マルチキャストが閾値を超えると、自動的にポートがerr-disabledになります。
上限・下限閾値(leveling)の設定
Storm Controlでは上限(rising threshold)と下限(falling threshold)の2段階で閾値を設定できます。閾値を超えたらトラフィック抑制を開始し、下限を下回ったら抑制を解除する、という段階的な制御が可能です。
! 上限2%を超えたら抑制開始、0.5%を下回ったら抑制解除
Switch(config-if)# storm-control broadcast level 2.00 0.50全アクセスポートへの一括設定(interface rangeの活用)
エンドユーザーが接続するアクセスポートには、一括でStorm Controlを設定するのが効率的です。
Switch(config)# interface range GigabitEthernet0/1 - 24
Switch(config-if-range)# storm-control broadcast level 1.00
Switch(config-if-range)# storm-control multicast level 1.00
Switch(config-if-range)# storm-control action shutdown閾値の考え方と設定値の目安
Storm Controlの閾値設定は、平常時のトラフィックを把握した上で設定することが大原則です。低すぎると通常通信でもポートが停止し、高すぎるとループを検知できません。
閾値の単位
| 単位 | コマンド例 | 内容 |
|---|---|---|
| 帯域幅の割合(%) | level 1.00 | ポートの帯域幅に対する割合。最もよく使われる |
| bps指定 | level bps 1000000 | 絶対値(bps)で指定。1Mbpsなど具体的な値で管理したい場合 |
| pps指定 | level pps 1000 | パケット数(pps)で指定。機種によって使用可否が異なる |
環境別の推奨閾値の目安
| 環境 | 推奨閾値の目安 | 理由 |
|---|---|---|
| 一般的なオフィスPC | 1〜2% | 通常のPC通信でブロードキャストが1%を超えることはほぼない |
| DHCP多用の環境 | 3〜5% | DHCP Discoverはブロードキャストのため、低すぎると誤作動の恐れ |
| AP(無線LAN)接続ポート | 3〜5% | 多数の端末が接続するためブロードキャストが多め |
| サーバー接続ポート | 設定しないか10%以上 | サーバーは正常動作でも大量のブロードキャストを出す場合があり、誤検知リスクが高い |
show interfaces GigabitEthernet0/X でinput/output rateを確認し、平常時のブロードキャスト量をおおよそ把握してから閾値を設定するのがベストプラクティスです。err-disabledからの復旧方法
Storm Controlによってerr-disabledになったポートを復旧させる方法は2つあります。どちらの場合もループの原因を取り除いてから復旧させることが絶対条件です。
① 手動復旧(推奨)
ループの原因(二重配線・不正機器など)を確認・解消してから手動でポートを復旧させます。確認作業を挟めるため、最も安全な復旧方法です。
! ループ原因を除去してから実施すること
Switch# configure terminal
Switch(config)# interface GigabitEthernet0/2
Switch(config-if)# shutdown
Switch(config-if)# no shutdown② 自動復旧の設定
遠隔地の拠点や夜間に作業員がいない環境など、手動復旧が困難な場合は自動復旧を設定することもできます。設定した時間が経過すると、自動的にポートが復旧します。
! storm-controlが原因のerr-disabledの自動復旧を有効化
Switch(config)# errdisable recovery cause storm-control
! 300秒(5分)後に自動復旧
Switch(config)# errdisable recovery interval 300Storm Controlと他のループ対策機能との使い分け
Storm ControlはCiscoスイッチが持つループ対策機能の1つですが、STPやBPDU Guardなど他の機能と組み合わせることでより強固な対策ができます。
| 機能 | 動作タイミング | 特徴 | 設定難易度 |
|---|---|---|---|
| Storm Control | ストーム発生後に検知・封じ込め | ループが起きても被害を最小化。事後対応型 | 低〜中 |
| STP(スパニングツリー) | ループを論理的に防止(予防型) | 正しく設定されていれば最も根本的な対策 | 中〜高 |
| BPDU Guard | BPDUを受信したポートを即シャットダウン | PortFastポートへの不正スイッチ接続を防ぐ | 低 |
| Loop Guard | BPDUが届かなくなったポートをブロック | STPの片方向障害によるループを防ぐ | 中 |
理想的な構成はSTP + BPDU Guard + Storm Controlの組み合わせです。STPで予防し、BPDU Guardで不正スイッチの接続を遮断し、それでもループが起きた場合にStorm Controlが封じ込めるという多層防御の考え方です。
運用上の注意点まとめ
| 注意点 | 内容・対策 |
|---|---|
| 閾値は平常時トラフィック基準で設定 | 設定前にshow interfacesでブロードキャストの平常値を把握し、その5〜10倍程度を閾値にするのが安全 |
| 低すぎる閾値は正常通信でも停止する恐れ | 0.1%など極端に低い値を設定するとDHCP更新やARPなどの正常なブロードキャストでもerr-disabledになる |
| アップリンクポートには設定しない | コアスイッチへの上流ポートや基幹ポートには設定しない。トラフィック量が多く誤検知リスクが高い |
| 自動復旧はループ原因解消後に使う | 原因未解消のまま自動復旧すると、err-disabled→復旧→再びerr-disabledを繰り返す断続障害になる |
| show storm-controlで定期的に統計を確認 | Blockingが頻発しているポートは閾値が低すぎるか、ループの予兆がある可能性がある |
| STPやBPDU Guardと組み合わせる | Storm Control単体ではなく多層防御としてSTP・BPDU Guardとセットで設計するのがベスト |
まとめ
Storm Controlは、ループやトラフィック異常時にポートをerr-disabledにしてネットワーク全体の停止を防ぐ有効な機能です。設定自体はシンプルですが、閾値の設定と運用ルールの整備がセットで必要です。
- Storm Controlはブロードキャスト・マルチキャスト・未知のユニキャストを監視し、閾値超過でアクションを実行する
action shutdownを設定すると閾値超過でポートがerr-disabledになる- 閾値は平常時のトラフィックを計測した上で、環境に合った値を設定する
- 復旧時は必ずループ原因を取り除いてからshutdown/no shutdownを実施する
- STP・BPDU Guardと組み合わせることで多層的なループ対策になる
- アクセスポートへの設定が基本。アップリンクポートへの設定は慎重に判断する
Storm Controlを設定しておくだけで、ループ発生時の被害範囲を劇的に小さくできます。大規模ネットワークほど、正しい閾値設定と運用ルールの整備をセットで導入することが効果的です。


