![]() |
![]()
ホーム > その他ネットワーク豆知識 > L2ループ対策
マスタリングTCP/IP 応用編
入門編を卒業したらこちら。
応用編も入門編と同様に豊富な図を使用し、TCP/IPに関するさらに詳細な解説を記している。
特にパッケットの構造はかなり詳細に解説しており、初心者にはすこしつらいかもしれないが非常に読みやすいのでぜひ読んでみてほしい。
詳解TCP/IP〈Vol.1〉プロトコル
これも 必読中の必読書。
TCP/IPアーキテクチャを、実際にネットワークを組んで通信の動きを観察するという方法で書かれている。
本書に構成されているネットワークは単純なので、実際に同じ構成を組んで実機をいじりながら読み進めると非常に効果的に学ぶことが出来ると思います。
「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 が
繰り返されるわけで、ネットワークがとても不安定な状態なるので
注意しましょう。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓
L2ループ対策
L2ネットワークにおけるループ対策について
L2ループ対策 その2
L2ネットワークにおけるループ対策について