【ネットワーク:Cisco】ループを発生させて errdisable の動作を検証する
運用しているなかでたまに errdiasble が発生します。普段はリモートから対応しているのでスイッチやハブの物理的な状態(リンクランプなど)を見たことがありません。
そこで自分で検証してリンクランプの状態を確認し、今後の運用対応に活かしたいと思います。
目次
環境
・Cisco catalyst 2960 8ポートスイッチ
型番:WS-C2960C-8TC-L(バージョン: 15.0(2)SE5)
・1GB対応ハブ
型番:LSW6-GT-5EPL
スパニングツリーを無効化
Ciscoスイッチは、もともとスパニングツリーが有効になっているらしく、それを知らなかったのでループ構成にしても待てど暮らせどループにならないと悩んでいました。
いろいろ調べたところ、スパニングツリーを無効にすればよいことがわかりました。
スパニングツリーの無効は、vlan単位で実行します。
無効化する前に show run を見てみるとスパニングツリーに関する設定がありました。
show run の結果より一部抜粋
!
spanning-tree mode pvst
spanning-tree extend system-id
!
今回は vlan 10 でスパニングツリーを無効にするので以下コマンドを実行します。
SW01(config)#no spanning-tree vlan 10
show run で設定を再確認すると vlan10 に対してスパニングツリーが無効化されていることがわかります。
これでループが発生した場合、スパニングツリーは機能せずループのログが出力され、その他ループによる影響が出るようになります。
!
spanning-tree mode rapid-pvst
spanning-tree extend system-id
no spanning-tree vlan 10
!
errdisable について
以下サイトを参考にさせていただき、また、引用させていただきます。
https://www.infraexpert.com/study/catalyst27.html
errdisable について
Catalystスイッチは、ソフトウェアがポートのエラー状態を検出した場合、ソフトウェアがそのポートを自動的にディセーブル状態(disable)にします。この状態のことをerrdisable(エラーディセーブル)と言います。
ポートがerrdisableになると、そのポートでのトラフィックは送受信されなくなり、そのポートのリンクランプは、橙色の点灯になり、カスケードされているハブのポートのリンクランプは消灯します。
show interfaces statusで確認すると該当ポートは「 err-disabled 」と表示されています。
errdisableの理由について
errdisableの理由はいろいろありますが、今回はループに焦点をあてて検証したいと思います。
これはスイッチの型番などでコマンドが異なるのかもしれませんが今回の検証では「show errdisable detect」でいろいろな理由を確認することができました。ループに関しては「loopback」か「loopdetect」が該当すると思われます。
違いについては現時点で理解できておりません。。。
errdisableからの復旧について
errdisableになった場合、デフォルト設定では管理者が手動で復旧させなければ元の通信できる状態に戻りませんが事前に設定しておけば自動で復旧するようになります。
自動復旧するかどうかは「show errdisable recovery」で確認できます。デフォルト設定ではすべて「Disabled」で無効化されており手動による復旧が必要となります。
「Timer interval」は自動復旧までの時間でデフォルトは 300 秒となります。
errdisableの手動復旧について
手動で復旧させる場合は、インターフェースコンフィグレーションモードでshutdownコマンド⇒no shutdownコマンドを実行します。
errdisable の原因を解消してから実行しないとまたすぐに errdisable になってしまいますのでご注意ください。
errdisableの自動復旧を有効化する
今回はループを発生させて errdisable の動作を検証するので「loopback」と「loopdetect」を対象とします。
errdisable recovery causeコマンドを実行することで、一定時間(デフォルト:300秒)の経過後に自動的に該当ポートが有効化されます。
管理者が手動でshutdownコマンド ⇒ no shutdownコマンドを実行した時と同じ結果となります。
「show errdisable recovery」コマンドの「ErrDisable Reason」に表示されている文字を以下コマンドの「原因」にあてはめて実行します。
今回は「loopback」と「loopdetect」を対象としていますのでコマンドは「errdisable recovery cause loopback」、「errdisable recovery cause loopdetect」となります。
(config)# errdisable recovery cause 原因
実行後、「show errdisable recovery」コマンドで設定が反映されたか確認します。
「loopback」、「loopdetect」が「Enabled」になり有効化されました。
errdisableの自動復旧までの時間を変更
デフォルト設定は「300秒」で検証するには少し時間が長いので「60秒」へ変更します。
指定できる範囲は30秒 ~ 86400秒です。
今回のコマンドは「errdisable recovery interval 60」となります。
(config)# errdisable recovery interval 時間(秒)
検証
スイッチのFa0/1 配下にハブやノートPCを接続し、ハブでループ結線を作ります。
Fa0/1 が vlan10 に割り当てられていることを確認します。
SW01#sh int status
Port Name Status Vlan Duplex Speed Type
Fa0/1 notconnect 10 auto auto 10/100BaseTX
Fa0/1 配下にハブやノートPCを接続し、ハブでループ結線を作ります。
ログに Loop-back detected と err-disable が出力されFa0/1 は、自動シャットダウンされダウンしました。
show interface status コマンドで status を確認すると err-disabled であることが確認できます。
err-disabled状態のFa0/1ポートのリンクランプは、橙色の点灯となり、カスケードされているハブのポート 5 は、リンクダウンして消灯となりました。
↓ 自動復旧の設定どおり 60秒後 に Fa0/1 はリンクアップしました。
↓ ループ結線は解消されてないので、またループを検知し、errdisableとなりました。ループ結線が解消されるまでこれが繰り返されます。
まとめ
検証を実施し、想定どおりであることを確認することができました。「loopback」と「loopdetect」の違いは気になりますがおいおい調べたいと思います。