元々リピータハブは受信した信号をネットワーク全体(すべてのポート)に対して、転送するように設計されてる。簡単にいえば、これは「受け取ったパケットを全部のホストに送りつけて、あとは本来受け取るホストが判断して欲しい」といっているようなものである。これだと装置自体は簡単だが、データのやり取りの効率が悪くなってしまい、最悪の場合コリジョンという衝突状態が発生してデータのやり取りが一時的にできなくなってしまう。
これを解消するために設計されたのがスイッチングハブである。一言でいってしまえば、「リピーターハブよりスイッチングハブの方が頭がよい」ということである。
スイッチングハブ(レイヤ2スイッチ)はリピーターハブにアドレステーブルとメモリという概念を拡張した機器である。リピーターハブ内部に存在したリピーター回路はなく、その代わりにスイッチ素子が存在する。
アドレステーブルとはMACアドレスとポートの番号*1を登録した一覧表のことである。Ethernetパケット(IPヘッダの先頭にMACヘッダを追加したもの)のヘッダには送信先MACアドレスが含まれている。その送信元MACアドレスが一覧表に追加され、そのとき通ってきたポートの番号が一覧表に対応付けされる。
例えば、ポートの番号4を通って、スイッチングハブに到達したEthernetパケットが到達するとする。まずケーブルからRJ-45コネクタを介して、EthernetパケットがMAUに到達する。するとMAUに隣り合っているバッファメモリに受信したパケットを一時的に格納する。そして先頭部分の宛先のMACアドレスと同じものがアドレステーブルに登録されていないかを検索する。検索結果、もし登録されていればそのポートにパケットを送信する。もし登録されていなければ、そのアドレスを持つ機器がどこにあるかわからないので、すべてのポートに対してパケットを送信する。どちらにせよ、途中でスイッチ素子で解析され、送信元MACアドレスの「00-11-22-AA-BB-CC」を一覧表の行に追加する。そして経路情報もその行に追加される。即ちアドレステーブルの1行には、MACアドレスとポートの番号と経路情報の3つのフィールドがあることになる。これによって、次回のパケット転送のために役立つアドレステーブルができあがる。
コンピュータやルーターはIPを使ってデータの転送を行うため、送信先を判断する材料としてIPアドレスが使われる。一方、スイッチングハブはIPという高度な通信プロトコルを利用できないため、IPアドレスではなくMACアドレスを判断する材料として使われる。
[補講]海外のホテルでは日本のLANケーブルのプラグと同じ形(RJ-45)をした電話線の差込口が設置されていることがある。このような差込口とノートPCのLANポートあるいはLANカードを接続すると、LANシステムよりも高い電圧がかかるために、PCのLANポートあるいはLANカードを破壊してしまう。部屋にある説明書やフロントでLANが設置されていることを確認できなければ、このようなポートを利用しないほうが安全である。また、回線チェッカーを差し込んでみてLEDが点灯しなければ、問題が生じる可能性は低くなる。 ◇
ちなみにスイッチングハブによっては、スイッチ素子ではなく、共有メモリまたはバスを利用するものもある。また図ではMAUそれぞれにバッファメモリが隣り合っているが、機器によっては全体でひとつのメモリを共有するものもある。
スイッチングハブはこのようなアドレステーブルを参考にするので、データ転送を行うことができる。その他にも複数のパケットが同時に実行することもできるという恩恵もある。
スイッチングハブもリピータハブ同様にカスケード接続用ポートが存在する。近年のスイッチングハブは切り替えスイッチによって、カスケード接続用ポートの内部をクロスにしたり、ストレートにしたりできる。さらにオートMDIと機器に記述してあれば、スイッチングハブ内で自動的にMDI-XやMDIを調整してくれる。最近はこのタイプのスイッチングハブをよく見かける。これらによって、他のハブを増やす場合であっても、カスケード接続用ポートにLANカードと接続しようとする場合であっても、どちらの場合でもストレートケーブルだけで統一できるような配慮されているのだ。
以下のチップが連携して処理を行う。
1:コンピュータから送信されたMACフレームが、ポートからトランスを経由してPHYチップに入力されると、PHYチップは受信した波形を1と0のビット列を表す信号に復号して、MACチップに送る。
2:MACチップはフレームの先端についているプリアンブル信号によって、フレームの先端部を確認しMACヘッダ以下のデータをバッファメモリに格納し、FCSをチェックして、データにエラーがないかを調べる。フレームに異常がある場合は、この時点でフレーム全体が破棄される。
3:続いて、MACチップはフレームの送信元MACアドレスを調べる。このとき、送信元のMACアドレスがアドレステーブルに記録されていない場合は、このフレームを受け取ったポートの番号と送信元のMACアドレスをアドレステーブルに書き込む。そして、フレームの宛先MACアドレスをメモリ内のアドレステーブルに照らし合わせ、宛先のポートを探索する。
4:宛先のポートが見つかると、バッファメモリに格納してあるMACフレームをスイッチチップに送る。ただし、スイッチチップがMACチップに統合されている場合があり、この場合は直接MACチップがスイッチの動作を行う。
5:スイッチチップは、目的のポートを管理するMACチップにフレームを渡す。
6:フレームを受け取ったMACチップは、ポートに接続されているPHYチップに、MACフレームに送る。
7:PHYチップは受け取ったMACフレームを符号化による波形に変換して、プリアンブルと共にポートから送出する。
[例]複数のクライアントから大量のアクセスが集中するファイルサーバーについて考える。
複数のクライアントから同時アクセスされるサーバーは、通常より広い帯域(ビッグパイプ)が必要となる。
こうした場合、拡張スロットでギガビットEthernetポートを増設し、そこにファイルサーバーを接続するとよい。 ◇