STP を究める 基礎編 (3)Bridged LAN の冗長化
ブリッジが一台しかないと、そのブリッジが壊れてしまうとLAN 間の通信手段は無くなってしまいます。
上図では、LAN-1 とLAN-2 がBridge によって相互接続されています。
Brige のMAC アドレステーブルには、次のようなエントリが作成されており、PC-2 宛のフレームはPort-2 へ、PC-1 宛のフレームはPort-1 へ転送します。
仮に、PC-1 宛のフレームをPort-1 で受け取ると、受信ポートと転送先が同じなので、破棄されます。
Bridge に不具合が発生すると、PC-1 とPC-2 の間でフレームを送りあう手段は無くなってしまいます。
このような状態になってしまうのは、LAN-1 とLAN-2 の間のBridge が一台しかないからです。
Bridge も機械ですから、絶対に壊れないということはありえません。
1台しかないからだめなのであれば、2台にしてみましょう。
LAN-1 とLAN-2 の間に、2台のBridge を置いてみました(Bridge-A、B)。
これなら、Bridge が一台壊れても、もう一台のBridge を経由して通信を継続することができます。
2台のBridge では、MAC アドレステーブルは次のようになっています。
PC-1 からPC-2 へ送られるフレームは、Bridge-B によりLAN-1 へ転送された後、Bridge-A のPort-1 でも受信されます。
Bridge-A のMAC アドレステーブルでは、PC-1 のMAC アドレスはPort-1 で学習されているので、Port-2 へ転送されることは無く、破棄されます。
フレームがブロードキャストの場合はどうでしょうか?
ff-ff-ff-ff-ff-ff は、全てのノードを意味するMAC アドレスです。
ff-ff-ff-ff-ff-ff を送信元とするノードは存在しないので、このアドレスがブリッジに学習されることはありえません(※文末)
学習されることがないため、宛先MAC アドレスがff-ff-ff-ff-ff-ff となっているフレーム(ブロードキャスト)を受け取ったブリッジは、無条件に他のポートへ転送します。
結果、二台のブリッジによってフレームは永遠に転送され続けることになります。
Ethernet フレームには、IP ヘッダのTTL のような、転送された回数を記録する仕組みがないからです。
当然、ブリッジはそのフレームが何回転送されたかを知ることができず、永遠に転送され続けることになります。
PC-1 だけではなく、フレームを送信したPC-2 にも、大量のブロードキャストフレームが届きます。
PC は受信したブロードキャストフレームを処理するのに手一杯となります。
ブリッジにもCPU が搭載されており、受信したブロードキャストフレームを処理する必要があります。
PC と同じように手一杯になり、ブリッジ本来のフレーム転送処理にも影響が出てきます。
いわゆる、ブロードキャストストームです。
たいていの技術書で説明していあるのは、ここまでです。
しかし、複数のLAN の間に二台以上のブリッジがある場合に発生する問題は、これだけではありません。
これまでの説明では、ユニキャストフレームなら問題がないようにも読めます。
PC-2 から送信されたフレームは、Bridge-A とB の両方で受信され、それぞれLAN-1 へ転送されます。
結果、PC-1 はPC-2 が送信した数の二倍のフレームを受信することになります。
また、二台のブリッジが完全に同期を取ってフレームを転送するわけではありません。
つまり、PC-2 が送信した順番通りに、PC-1 に届くとは限らないわけです。
前者をFrame Duplication (複製)、後者をMiss Ordering (順番間違い)と呼びます。
上位層のプロトコルにも依存しますが、PC-1 は、受信したフレームから上位層のデータを正しく再生できない場合もあります。
Ethernet では、フレームは、必ず送信された順番で受信される必要があります。
単純にブリッジの台数を増やしただけでは、冗長化は実現できないことが分かりました。一方のブリッジが待機系となり、他方のブリッジが正常に動作している間はフレーム転送処理を行わないような仕組みがあれば、なんとかなりそうです。
本特集で取り上げるSTP (Spanning Tree Protocol) を使うと、そのような問題を解決することができます。
※ 送信元にff-ff-ff-ff-ff-ff を入れる端末と、そんなフレームを受信するとMAC アドレステーブルに登録してしまうLAN スイッチ・・・・関連性のない二つのバグのコラボレーションで、特定ポートにしかブロードキャストを転送できなくなるというトラブルを経験したことがあります・・・
- STP を究める 基礎編 の内容は、特に明記しない限り、1998年版のIEEE 802.1D に基づいています。
Bridge ID、Port ID、Path Cost 値など、IEEE 802.1T で行われた仕様の拡張は、2004年版のIEEE 802.1D に盛り込まれています。
これらの拡張仕様については、応用編にて説明する予定です。
ネットワークエンジニアになろう!のトップページへ戻る