「L2 のループ対策なんて STP を使えば良いんじゃね?」
仰るとおりなのですが、そこで思考を止めてもおもしろくないので、
今回は、STP を使用していたとしてもループが発生してしまう場合と、
そんな時にどんなループ対策があるんでしょうということを
書いてみたいと思います。
L2 ループが発生する条件は、当然 L2 ネットワークで
ループ構成になっていることが前提。
L2 ネットワークでループ状態になると以下のような問題が発生します。
スイッチはブロードキャストやマルチキャストは受信したポート以外の
全ポートにフラッディングします。
それを受信したスイッチは、同じように受信したポート以外の全ポート
にフラッディングします。
さらにそれを受信したスイッチは、同じように受信したポート以外の全ポート
にフラッディングします。
・・・という動作を繰り返すことで、延々とブロードキャストや
マルチキャストのフレームが転送され続けてしまうことを、
ブロードキャストストーム / マルチキャストストームと呼びます。
ブロードキャストストーム / マルチキャストストームが発生すると、
この問題を解決する方法は言わずとしれた STP を使用すること。
STP については以下で解説しています。
・STP -スパニングツリー-
社内ネットワークに良くある構成で考えてみます。
上図のように基本的な L2 ネットワークはツリー構成になっています。
ここで末端のハブ同士を誤って接続してしまった場合を考えてみます。
で、通常のコアやアクセススイッチでは STP を有効にしてループが
発生しないようにするわけですが、仮にエッジポートで STP を
停止させている場合。
この場合はループ状態となり、ブロードキャストストーム /
マルチキャストストームが発生してしまいます。
では、エッジポートに STP を設定していた場合はというと、
通常はエッジポートで BPDU を受信するとループを検知して
Blocking に遷移するためループにはなりません。
でも、末端のハブによっては BPDU を廃棄するハブがあったりします。
この場合、アクセススイッチではループを検知出来ずにループ状態に
なってしまいます。
こういった事象は意外に多いのかなぁと。
そこで、STP 以外でループを回避する方法をごにょごにょと
考えてみました。
ああそうそう、ここでは Cisco のスイッチにある機能のみを
書いています。
その他のベンダーのスイッチの機能については記載していませんので
あしからず。
Cisco スイッチでデフォルト動作している「keepalive」機能は、
ループ検知のための基本的な機能です。
「keepalive」機能が有効の場合、スイッチは keepalive フレームを
定期的に送出し、自身が送出した keepalive フレームを同一ポートで
受信した場合にポートをダウンさせます。
以下のような状況でループが発生した場合に有効な機能。
以下のような状況では残念ながら役に立たず。
設定は至って簡単です。
インタフェースコンフィグレーションモードで以下の設定を投入するだけ。
(config-if)# keepalive [ period ]
デフォルトは 10 秒おきに keepalive フレームを送信します。
ループを検知すると、インタフェースがダウンするのですが、
その場合に show interface を見ると、以下のように
通常の dowm 表示ではなく、「(err-disabled)」という表示になります。
Switch#show interfaces
GigabitEthernet0/1 is down, line protocol is down (err-disabled)
ちなみにループ検知による Down は、「自身が送出した keepalive
フレームを同一ポートで受信した場合」意外にも、リンクが
フラップした場合やレイトコリジョンの検出など機種によって
トリガがいくつか存在しています。
err-disabled によるポートダウンの復旧方法は、
インタフェースの shutdown → no shutdown で復旧出来ます。
もし、err-disabled から自動的に復旧させたい場合は
以下の設定を投入します。
(config-if)# errdisable recovery {cause {option}} | {interval interval}
option で自動復旧させたい項目を選択することが可能です。
interval はerr-disabled になってから自動復旧するまでの
時間を指定できます。(デフォルトは 300 秒)
ただし、errdisable recovery を投入しておくと、
ループの原因が取り除かれていないと、当然ポートの down/up が
繰り返されるわけで、ネットワークがとても不安定な状態なるので
注意しましょう。