ファイヤープロジェクト
ギガビットイーサネットってなんだ?
2003-08-05T00:00+09:00   matsu
ギガビットイーサネットに関する基本調査
ギガビットイーサネットとは,1000BASE-??なイーサネットであり,IEEE802.3xで標準化されている.そして,媒体に応じて以下の4つがある.
IEEEケーブル
1000BASE-T802.3abカテ5e(UTPケーブル)
1000BASE-SX802.3zマルチモードファイバ
1000BASE-LX802.3zマルチモード/シングルモードファイバ
1000BASE-CX802.3z2芯平衡型同軸ケーブル
で,PCクラスタとの関係が気になるのは1000BASE-Tである.最近は5000円以下のカードも出てきており,PCクラスタのコストパフォーマンスに与える影響は非常に興味深い.1000BASE-TのNICは製品によって,全二重と半二重のものがあるらしい.
100BASE-TXを使用していて,ネットワークがボトルネックになっているシステムにおいて,ギガビイーサは有効な解決策となるかもしれない.だが,ギガビイーサにしたところで,次はPCIバスがネックとなって性能が期待した程あがらないかもしれない.
ギガビイーサで必要となるPCIバス幅と32bit PCIバス幅,64bit PCIバス幅を以下に示す.
バス幅
ギガビットイーサネット100〜125Mbyte/s(が必要,全二重にするとその倍)
32bit PCI/33MHz133Mbyte/s
32bit PCI/66MHz266Mbyte/s
64bit PCI/33MHz266Mbyte/s
64bit PCI/66MHz533Mbyte/s
パーツ屋などでは32bit PCIでは33MHzが多く,64bit PCIでは66MHzが多いように見える.したがって,ギガビイーサを導入しその効果を得るには64bit PCIもしくはPCI-XやPCI Expressが必要である.
PCIの話になってしまうが,PCI-Xとは主にバス・プロトコルの改善と,最大バスクロックを133にすることにより,転送速度を上げる規格である.また,従来のPCIと互換性があるが,混在して使用すると従来のPCIの性能になる.現在リビジョン1.xが製品化され,2.0が承認されているらしい.
PCI Expressとは,データをpoint to pointでシリアル伝送するためのレーンと呼ばれる信号線の集まりを任意に束ねて伝送速度を上げる規格である.2003年後半から2004年に製品化される見込みらしい(2.5Gbps 3GHz見込み).

LANに段階的にギガビイーサを導入するという記述をよく見掛ける.ここで重要なのは,オートネゴシエーション(Autonegotiation)機能である.今回の環境構築においても,この機能について知っておく必要があるだろうか.

LAN機器であるEthernetカード,リピータハブ,スイッチングハブなどは,Ethernetフレームのやり取りの他に,常にリンクパルスというパルス信号をやり取りしている.これはもともとは互いの通信機器が正常に動作しているかどうかを確認し合うための信号であった.NICのあの緑のランプはこのリンクパルスをやり取りして(少なくともNICとケーブルは)正常に動作しているときに点滅する.私は大規模クラスタなどでNICのランプが点滅しまくっていてドキドキしたことがあるが,別に激しく通信していたわけではないようだ.で,初期のEthenet機器のリンクパルスにはこの程度の機能しかなかったが,あとになってこのリンクパルスの周期などのパターンが定められた.

何のためにリンクパルスの周期などのパターンを決めるたのだろうか.そういえば,クロスケーブルで直でつないだ二台のマシンはリピータハブにつないだ時よりも通信性能がよい.クロスケーブルで直でつないだ場合は全二重通信しているからだ.コリジョンは起きない.で,リピータハブを介してつないだ二台のマシンの場合は,各マシンの送信線と受信線がいり混じってコリジョンが起きる.すなわち半二重通信である.で,コリジョンが起こり得ない状況では,送信している間に受信しても,それは当然コリジョンしているわけではない.コリジョンが起こり得る状況では逆に送信している間に受信すればコリジョンが起こっている.各機器は全二重か半二重かを検知してそれに応じた処理をする必要がある.これをオートネゴシエーションと言う.そして,それを実現するために,リンクパルスのパターンを定めたのである.リンクパルスのパターンをやり取りすることによって,お互いにとって正確かつ最適に動作する動作モードを決定して通信するのである.

このオートネゴシエーションを応用すれば,「ギガビか否か」などバンド幅なども最適なものを決定し,それに応じて通信することができる.100BASE-TなどのLANに,段階的にギガビイーサを導入していくためには,オートネゴシエーションは是非とも必要な機能だ.ギガビットイーサでは100BASE-Tなどでは使用していない線を使用するので互換性は無い(たぶん).が,オートネゴシエーションで互いの通信方式を検知して,ギガビイーサのNICは100BASE-Tで通信する(当然パフォーマンスは100BASE-Tと等価になる).これが,「ギガビイーサが100BASE-Tと互換性がある」ことの正体である.

論理的にはギガビットイーサネットは全二重通信では2Gbpsでるらしい.で,半二重通信では半分の1Gbpsだがいくつかの注意点がある.フレームが短いと1Gbpsも出ない.これはコリジョンが起きる可能性が大きくからだろうか(ヘッダ分については全二重でも同じだから理由にはならないハズ).また,半二重ではFrame Burstingというのをするらしい.フレームをバースト転送すればコリジョンが減るという理屈だろう.
100BASE-TXではフローコントロールとして,(コリジョン時に発信する)ジャミング信号を発するを使用してきた.すなわちバッファがいっぱいになるとこれを発信して送信を抑制する.これは802.3xでは標準ではない.変わりにPAUSE信号を発信する.というのは,半二重のときはコリジョンが起こり得るが,全二重の時はおこらないので,ジャミング信号ではまずい,ということだろうか.だいたいコリジョンが起こったのか受信側のバッファがいっぱいになったのかを判別できた方がいろいろと嬉しい気がする.
matsu(C)
Since 2002
Mail to matsu