2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

ハブの構造と動作!

現在のEthernetの主流は、1000BASE-Tや100BASE-TXだ。しかし、ここでは少し昔の10BASE-Tや100BASE-TXについて話してみたい。なぜなら、筆者個人が未だに10BASE-Tや100BASE-TXを使っているからである。Ethernetの規格は、リピータハブ(共有ハブ)やスイッチングハブを使った星型、スター型のネットワーク構成でPCはハブが備えているPortと一対一で接続される。リピータハブとスイッチングハブとでは、Ethernetの動作が違う。ここでは、リピータハブとスイッチングハブ
の動作の違いについて説明する。


1.リピータハブ(共有ハブ)
このハブは、またの名を「馬鹿ハブ」とも言われている。名前のように決して馬鹿ではないが、ネットワークを共有するためのタダの中継器である。構造が比較的簡単で値段も安い。PCから信号を受け取り、その信号を自分(送信元)以外のPortへ出力する(図1)。

図1 リピータハブの機能

ハブのPortに接続されている、あるPCが信号を送ると、そのPCネットワークを占有する。もっと簡単に言えば、こいつバス(信号線の束)構成のネットワークを星型に変換する装置である。電気的に崩れた波形を整えたり(整形という)、壊れたパケット(ここではフレームとも言う)を見つけ出し破棄する機能もある。さらに、こいつ CSMA/CD( Carrier Sense Multiple Access with Collision Detection ) と言う信号の衝突を検出して回避する機能を持っている。しかし、リピータハブとPCを繋ぐとき10BASE-Tや100BASE-TXの、より対線ケーブルでは、そのケーブルの構造により信号がケーブル上で実際に衝突する事はない。何故かというと、同じEthernetでも同軸ケーブルでは一本の線を送信と受信で共有するため、送受信が同時に発生した場合に衝突が起きる。しかし、より対線ケーブルでは内部に8本の導線があり、送信用と受信用の線が別々になっているため衝突が起きないのである。それゆえに、リピータハブでは信号の衝突を擬似的に作り出すのである。

図2 リピータハブでの信号の衝突(1)
図3 リピータハブでの信号の衝突(2)

リピータハブは、二つ以上のPortで信号の入力を検出した場合(図2)、ある一つのPortで信号の入出力両方を検出した場合(図3)に信号が衝突したと判断する事になってる。そして、リピータハブは衝突した旨を知らせるジャム信号を全てのPortへブロードキャストする(図4

図4 衝突を検出した後処理

図4を説明すると、衝突を検出したリピータハブは、信号の送信を中断して衝突を知らせる信号(ジャム信号)を送信する。ジャム信号を受け取った各PCは衝突が起こった事に気が付く。データ送信に失敗したPCはランダムな時間だけ待って再送を試みる。当然のことだが、PCが増えるに従い衝突が発生する確率は上がる。

2.スイッチングハブ
リピータハブはネットワークを効率的に利用してるとはイマイチ言えない。データを送信した本人以外、全てのPortへデータを配信するため、ネットワークをより混雑させる。また、この仕組みの致命的な事で全二重通信が出来ない。それでは、全二重通信とは如何なる物かというと、PCが送信動作と受信動作を同時に行えることを言う(図5)。リピータハブは、送信と受信を別々に行える、より対線を使っているのに、半二重通信しか出来ないのである(図6)。これらの問題をクリアして、ネットワークを効率的に利用するため考え出されたのが、スイッチングハブである。見た目は、リピータハブとそっくりそのまま同じだが、動作はみごとに異なる。このスイッチングハブというのが、上手くできていて信号が衝突せずに、全二重通信が可能なのである。

図5 全二重通信
図6 半二重通信

スイッチングハブはリピータハブのように信号を全てのPortへ配信しない(図7)。相手PCが接続されているPortを特定しながら、そのPortのみに信号を送信する。他の関係ないPCには一切信号を送らないのである。この仕組みを実現するために、スイッチングハブは各Portとそこに接続されているPCのMACアドレスを関連付けした対応表を持っている。さらにスイッチングハブは、受信したEthernetフレーム全体を一端バッファメモリへ突っ込んだ後、MACアドレス対応表を調べ、特定のPortへデータを転送する。バッファを使いデータを順次処理するため、リピータハブで「衝突」と判断するような事も起こらない。そのバッファメモリの容量だが、8Portのスイッチングハブで256KB程度を備えるのが一般的のようだ。また、バッファメモリへ格納することにより、10BASE-T(10Mビット/秒)と100BASE-TX(100Mビット/秒)の速度の違いを吸収することも出来る。これにより、1台のスイッチングハブへ速度の違うPCを接続しても問題は起こらない(リピータハブでは、混在出来ない製品が多い)。
スイッチングハブの種類の中で、MACアドレス対応表を使ってPortをグループ化して、別のネットワークセグメントとして設定出来る機能を持つ製品もある(かなり、高価だが)。これを、仮想LAN(VLAN)機能と呼ぶ。ただし、別のグループに対しては、ブロードキャストパケットは届かない。そのため、相手のPCのMACアドレスを調べることも出来ないのである。結局、別のVLANグループのPCと話をするにはルータを介さないとやっぱ駄目である。

図7 スイッチングハブの構造

先にスイッチングハブは全二重通信が可能だと説明した。ただ、実際に全二重通信を実現するには、スイッチングハブのコントローラにプラスしてPCのNICが全二重通信をサポートしてることが必要である。PC側が半二重通信しかサポートしてない、もしくは半二重通信モードに固定して設定してある場合は、そのPCが接続されているPortのみ半二重通信となってしまうので注意が必要である。ということは、このPortのみCSMA/CDで衝突検出を行うことになる。うんじゃ、スイッチングハブを使った場合のEthernetフレームの送受信動作を具体的に説明してみる。まず、最初はARPというブロードキャストプロトコルを使って相手PCのMACアドレスを調べる(図8)。ここでの注意点は、コントローラがPortとMACアドレスの対応を学習して記録することだ。相手PCが返事したときもMACアドレスを記録する(図9)。実際にEthernetフレームを送信する際は、一端フレームをフレームバッファへ格納して、アドレス管理テーブル(MACアドレス対応表)に該当するデータが無いかを調べる(図10)。

図8 スイッチングハブにおけるデータの送信動作(1)
図9 スイッチングハブにおけるデータの送信動作(2)
図10 スイッチングハブにおけるデータの送信動作(3)
図11 スイッチングハブにおけるデータの送信動作(4)

該当するMACアドレスがしまってある場合は、そのPortへEthernetフレームを送信する(図11)。図9の場合、IPアドレスが192.168.255.13のマシンはMACアドレスがZで有ることをPC A自身が記憶する。次回、PC AはARPを行わないで、直接MACアドレス ZであるPC Cへデータを送ろうとする。だが、この時にスイッチングハブのアドレス管理テーブルから、PC Cのデータが消えてしまっている場合がある。この場合、スイッチングハブは全てのPortへMACアドレスを問い合わせる。この動作を、ファラディング(洪水)と呼ぶようである。また、スイッチングハブはPCのEthernetインターフェースの規格や半二重/全二重を自動的に判断する機能を持っている。PCとスイッチングハブがネゴシエーション(接続確立)信号をやり取りして決定する。この信号をNLP(Normal Link Pulse)と言う。ネゴシエーション時は極力、高速の全二重モードで認識することにトライする。具体的なプライオリティは、

1 全二重100BASE-T2
2 全二重100BASE-TX
3 半二重100BASE-T2
4 半二重100BASE-T4
5 半二重100BASE-TX
6 全二重10BASE-T
7 半二重10BASE-T

こんな感じのようである。ちゃんとネゴシエーション出来た時点で、そのモードで利用可能だと判断する。PC側のEthernetインターフェースが10BASE-Tや100BASE-TX専用の場合は、アイドル時にインターフェースが送信する信号で判断する。

3.ハブの増設

図12 カスケード接続(1)
図13 カスケード接続(2)

リピータハブもスイッチングハブも接続するPCが増えると当然Portが足りなくなる。そんな時はケーブルを使って手軽に増設できる。
ごく一般的なのは、どちらか一方のハブのPortを “MDI” でもう一方を “MDI-X” (Xはクロスの意味だよ)にする。MDIはPCのEthernet Portと同じ端子配列、MDI-XはPCのEthernet Portに対して受信と送信を入れ替えた端子配列となる。一般的に、PortはデフォルトでMDI-Xになっていることが多く、ハブのパネルに付いているボタンで簡単にMDIへ切り替えることが出来る。ケーブルの中で送信と受信の導線対を入れ替えた「クロス」ケーブルを使えば、Portの設定を変える必要はない。ただ、クロスケーブルはストレートケーブルより手間がかかっているため高価である。さらに、ストレートケーブルと間違って利用してしまうとネットワークに問題が起きる。そんなような理由から、クロスケーブルはあまり使わない方が良いかと思う。ハブを増設する場合には、接続段数に気を遣う必要がある。スイッチングハブは機器と機器との間が100m以内で有れば、何個カスケードしても良い。しかし、リピータハブに関しては衝突の発生を考慮する必要が有る。そのため段数が制限される(図14)。リピータハブは信号を増幅して中継するだけの機能であり、もっとも遠いPC同士の衝突の発生を検出出来なければならないのである。10BASE-Tの場合は4段、100BASE-TXは2段が上限となる。

以上

コメント