ブリッジとスイッチの本質的な違い


Ethernet, TCP/IPについて勉強し始めた頃、「ブリッジとスイッチ(L2スイッチ、スイッチングハブ)の違いは何か?」という疑問を抱いたことのある人は多いと思う。

よく言われることは、「スイッチはマルチポートである」「スイッチはHW処理である」「スイッチは転送方式が異なる(カットアンドスルー等)」などであるが、私はそれらの違いのどれもブリッジとスイッチの本質的な違いを説明しているようには思えなかった。

しかし、私はようやく本質的な違いを理解した。それはすでに挙げたことであるが「マルチポートであること」である。マルチポートであるというのは単にポート数が増えただけで本質的ではないように思えるが、そうではないのだ。

ブリッジもスイッチもアドレス学習機能を持ち、その原理は同じである。フレームを受信するとその送信元MACアドレスは受信したポートに接続されていると認識し記憶する。その後、記憶してあるMACアドレス宛のフレームを受信したら、そのポートへ送信する。記憶していない未学習のMACアドレス宛のフレームを受信した場合は、受信ポート以外のポートから、そのフレームをコピーして送出する。

このアドレス学習機能の目的は何だろうか?それは「不要なフレーム転送の抑制」である。「あるMACアドレスがどのポートに所属しているかの区別」ではない。確かにこの学習においてアドレスとポートの関連付けはおこなわれるのであるが、それは目的ではなく手段である。

アドレス学習機能の目的が「不要な転送の抑制」であることがわかると、どうしてスイッチがスイッチと呼ばれるようになったかがわかる。スイッチとは初期は単なるマルチポートブリッジでしかなかった。アドレス未学習のときにフレームを受信したポート以外から転送することはポート数が2個だろうとそれより多かろうと同じである。

しかし、ポート数が2個であれば、ブリッジのすることはそのフレームを受信ポートでないひとつのポートから送出するか否かを判断することでしかないが、マルチポートつまり3個以上になると、「受信ポートでない複数のポートのどこから送出するか」を判断することになる。

ブリッジというと、二つの場所を「接続する」というイメージがある。実際に接続することにはなるのだが、そもそもブリッジが登場した目的はノード数の増加とともに増大するコリジョンを削減するためであった。ひとつの大きなコリジョンドメインを分割する目的で考え出された装置なのである。

ブリッジが3つ以上の場所を接続することになっても、それは同じであるが、接続する場所が3つ以上になったことにより、それまでは「出すか出さないか」でしかなかった判断が「どこに出すか」という判断になった。それを判断するための原理は2ポートの時と同じでも機能したのであるが、単なる不要な転送の抑制だけが目的であったのに加え、「どのポートへ転送するか」という目的も兼ねるようになったのである。これは2ポートの場合にはなかったことである。

HW処理になったり、転送方式が改良されたりしたのも、この新しい目的の為である。だからブリッジとスイッチの一番本質的な違いはマルチポートであることである。