3. イーサネットのはなし

目次へ戻る

3.1 イーサネットの歴史

いわゆるイーサネット(Ethernet)は1973年にXerox社が開発したLAN方式。1980年にXerox, DEC, Intelの3社が製品化し、IEEEの規格ともなっている。普通はIEEEの規格書は有償でしか入手できないが、LAN関連の IEEE802については現在 http://www.ieee.ort/getieee802/ で若干古いものでよければ無償で配布されているため興味があればオリジナルの文献を参照可能である。

そもそものイーサネット(通称10Base-5)は、指ほどの太さの同軸ケーブル(とても固くて重い)にトランシーバーと呼ばれる弁当箱ほどの装置を取り付けてコンピュータに接続する仕組みだった。1本の同軸ケーブルにすべてのコンピュータが接続されているため、このような方式のLANをバス接続と呼ぶ。その後トランシーバまでコンピュータに入れるインターフェースカードに内蔵し、同軸ケーブルを細いものに変えた10Base-2と呼ばれるシステムもでたが、1筆描きの同軸ケーブルにすべてのコンピュータがぶら下がっているという構造には全く変化がなかった。

構造的に大きな変化が生じたのは、10Base-Tと呼ばれる変種からである。10Base-Tでは、一筆書きの同軸ケーブルをだらだらと引っ張る代わりに、HUB(ハブ)と呼ばれる箱に同軸ケーブルとトランシーバに相当する部分をすべて詰め込み、各コンピュータへは細いケーブルで配線するようになった。つまり、見た目は一筆書きのバス接続ではなく、1つのHUBからケーブルが伸びているかのように(スター型)変化したのである。もちろん、HUBが最初に作られた段階では実質的な変化は生じていなかった。しかし1つの箱にコンピュータからのケーブルが一旦集まる(つまり、箱とコンピュータを繋ぐケーブルはコンピュータ毎に別々であり、他のコンピュータとは共有していない)という物理的な構造が、後にスイッチ技術という画期的な制御システムを可能にしたという意味でこの変化は非常に大きな進化であったと言えるだろう。

その後、10Mbpsから速度が100Mbpsに、更に1000Mbps(1Gbps)と高速化が進み、電線も光ファイバーを使ったものなどもでてきた。しかしこれらの進化はすべて10Base-Tの末裔、つまりHUBを経由して各コンピュータを接続するという方式だけであり、本来の同軸ケーブルを使った一筆書きというシステムは全く進歩せず既に歴史的遺産といえる。特に10Base-2は10Base-Tが普及した後は全くメリットがなかったためあっという間に衰退した。10Base-5は1本のケーブルで通信可能な距離が500m以内と長かったため(10Base-TはHUB-コンピュータ間の最長が100m)、光ファイバを使ったシステムが安くなるまでは建物間やフロア間などの接続用としてしばらくは生き残っていたが、次回のリプレースで生き残るとは考えにくい。

3.2 CSMA/CD

すべてのコンピュータが1本の同軸ケーブルを共有しているため、同時に2台以上のコンピュータがデータを送信しようとすると、ケーブル内で電気信号がぶつかって乱れてしまい通信できない。たとえて言えば、1本の糸に複数の紙コップを取り付けた糸電話のようなものである。複数の紙コップから同時に話すと、声が混ざってしまい意味不明になる(人間は声の質などでフィルタして聞き分けてしまうかもしれないが)。この問題を解決するために、EthernetではCSMA/CD(Carrier Sense Multiple Access with Collision Detection)と呼ばれる制御方式を採用している。

CSMA/CDの詳細はIEEE802.3を参照のこと。概念的に言えば、電線を共有しているLANは、紙コップを沢山とりつけた糸電話のようなものである。糸電話では複数の人が同時に話すとしゃべっている内容が混ざってしまい何をいっているかよくわからなくなる。このように信号がぶつかってデータが壊れることをCollision(コリジョン・衝突)と呼ぶ。

コリジョンが発生するとデータが正しく送れないわけであるから、誰かがデータを送っている間はじっと我慢していることが最低限要求されるマナーとなる。そこで、まず話す前にちょっと聞いて誰も話していないことを確認してから話し出すのが糸電話でのマナーとなる。CSMA/CDの基本的な考え方はこれとまったく同じである。データを送信する前にちょっと電線の様子を調べて、他のコンピュータからのデータ送信が行われていないようなら「空いてる」と判断してデータを送り始めるようになっている。

しかし、これだけでは2つ以上のコンピュータがほとんど同時にデータを送りたいと思っているときには困るかもしれない。「空いているな」と判断して同時にデータを送り出すと、やはりコリジョンが生じてデータが壊れてしまうからである。コリジョンが生じているかどうかは、自分が送り出したデータを自分で受け取って比較すればわかる。もしコリジョンが生じていることを検出した場合は送信を中断して、jam信号という特殊な信号を送りコリジョンが生じたことをすべてのコンピュータに通知する。

コリジョンが生じたということは、同時に送信したいと思ってるコンピュータが他にも存在するわけなので、すぐに再度送信を行うとまたコリジョンが生じることはミエミエである。また、各コンピュータが同じ時間だけ待ってから再度送信をしようとすればまたコリジョンが生じることも明らか。そこで、コリジョン回数に応じて平均待ち時間が長くなるような乱数で待ち時間を決め、待ってから再度送信しようとする。

CSMA/CDでは、上記のようにコリジョンを検出できることが正しい通信を行うための必要条件となる。そこで問題となるのが、ケーブル内を情報が伝わる速度は有限であるということである。1秒間に10Mbpsのデータを送るということは、1ビットあたり1/10,000,000秒で送信しないといけない。光がいくら速いといっても高々毎秒30万kmであるから、1ビット送信する間には300mしか進めない。実際にケーブルの中を伝わる速度は光速よりかなり遅め(6割から7割くらい)であるから、10Mbpsで150m, 100Mbpsで15m, 1000Mbpsでは1.5mが限界になってしまう。これは単に信号が届く時間だけの制限なので、さらに半導体素子の動作速度などの制限が加わると条件はもっと厳しくなる。

これではいくらなんでも実用性がないので、Ethernetでは送信するデータの最低サイズを64オクテット(512bit)に制限している。つまり512bit送り終わるまでの間に衝突を検出できれば大丈夫ということになる。そんなに送るデータがない場合は、ダミーデータを入れてでも最低サイズになるようにする必要がある(これ以下のサイズのデータは、受信側で捨てられてしまう)。

10Mbpsの場合、512bitを送り出すのに必要な時間は512bit/10,000,000であるから51.2マイクロ秒かかる(100Mbpsなら5.12マイクロ秒、1000Mbpsの場合は最小サイズは変わらないが、コリジョン検出のために使う時間が4096bit分に増えるので4.096マイクロ秒)。コリジョンを正しく検出するためには、この間(slot timeと呼ぶ)に同一のEthernetに繋がっている一番遠い2台のコンピュータ間で信号が往復できないといけない。

コンピュータAがネットワークが空いているのを確認した上で送信を開始したとする。ワーストケースを考えると、ネットワーク上で一番遠いコンピュータBにその信号が届く直前にコンピュータBがやはり送信を開始した場合である。コリジョンが発生しているかどうかを判断できるのはデータを送信しているコンピュータのみであるから、コンピュータAにコンピュータBからの送信データが混ざって壊れた信号が届くまではコンピュータAにとってはコリジョンは生じていないことになる(コンピュータBは送信開始直後にコリジョンが発生していることに気づく)。

正しくCSMA/CDが働くためには、コンピュータAが送信を終了する前にコンピュータBからの送信データがコンピュータAに届く必要がある。コンピュータAが送信を終了するまでには上述のように最短で51.2マイクロ秒かかるので、この間にコンピュータBからの信号で壊れたことを検知できればOKである。単に信号が往復する速度だけで考えると30万km/秒×70%×51.2マイクロ秒÷2 = 5326mであるが、電線以外の遅延も考えて10Base-5では2500mまでに制限されている。

コリジョンが生じる範囲のことを、コリジョンドメインと呼ぶ。コリジョンドメインに繋がっているコンピュータが多いほど、また送信が増えるほどコリジョンは増えてネットワークの速度は低下していく。

LANにおける送信制御の方式としてよく使われるもう一つの方式は、トークンパッシングと呼ばれる方法である。これは送信権を表すトークンをコンピュータ間で順次手渡していき、トークンを持っているコンピュータだけが送信できるというシステム。トークンが1個しかなければ同時に送信するコンピュータは必ず1台に限定されるのでCSMA/CDのようなコリジョンは理論的にあり得ない。トークンリングを開発し、積極的に売っていたIBMはかつてこの点をウリとしてイーサネットを批判していた。

3.3 MACアドレス(Media Access Controlアドレス)

イーサネットにおいては、各ネットワークカード(コンピュータではない)に固有の48bit長の番号(アドレス)が割り当ててある。この番号のことをMACアドレスとよぶ。このアドレスは通常はユーザが割り当てることはできず、カードを作ったメーカーが製造時に1枚1枚のカードに固有の番号を割り当てる。番号の重複を避けるため、上位24bitはIEEEからメーカーに割り当てられるベンダーIDと呼ばれる部分であり、残りの24bitについてはメーカーが責任をもって唯一性を保つように割り当てることになっている。ベンダーIDと割り当てられているメーカーとの対応については、IEEEが公開している

イーサネットはバス型の構造であるから、送信されたデータは接続されているすべてのネットワークカードに一応届く。すべてのデータを受け取ってしまうことも可能ではあるが、通常は送り主のMACアドレスと受け取り先のMACアドレスがヘッダに記載されているため、自分宛のデータ以外は受信しても破棄してしまうことになっている。

世の中にはいろいろなメーカーがあるため、実はユーザが自由にMACアドレスを設定できてしまうイーサネットインターフェースというのも存在するが、当然のことながら同じネットワーク内で同じMACアドレスのネットワークカードが2枚以上存在した場合にはまともに通信できなくなる。

3.4 スイッチングHUB

さて、CSMA/CDで送信制御を行うEthernetでは、同時に送信したがるコンピュータが増えるとコリジョン発生が増加し、実質的に転送できるデータ量が減少していくことになる。コリジョンによってデータが壊れたり待ち時間が生じたりするため、通常のイーサネットでは実質的に転送に使える帯域は全体の半分にも満たないことが多く、実際には3割程度の気分である(送信するデータ長や頻度によって異なる)。

また、通常の通信は相互に情報をやりとりするが、CSMA/CDを使っている限り同時に通信することは不可能である。どちらか一方が送信している間は待っているしかない。

さらに問題なのは、100Base-TXではコリジョンの検出を確実に行うためにネットワークの物理的な大きさが極度に制限されてしまうということがある。上述のように、100Base-TXでのコリジョン検出に使える時間は10Base-Tの場合の1/10であり、電気と半導体の速度の問題もあってHUBは2個しか挿入できず、HUBとHUBの間は5mまでしか離せない。これでは、実質的にはHUBを1箇所に集中せざるを得ないためネットワーク構成に大きな制限となる。

これらの問題をすべて解決する技術がスイッチングと呼ばれる技術である。これは通常HUBの中に組み込まれている。糸電話モデルで考えると、話したい相手によって糸を繋ぎ直す交換機のような機能がHUBの中に入っていると考えればよい。

HUBの構造を思い出してみよう。HUBの接続口(ポート)とPCとはケーブルの両端で接続され、その途中にはなにも接続されない。また、10Base-Tの(100Base-TXもそうだが)ケーブルは送信用に1ペア、受信用に1ペアの4本のケーブルを使っている。さらに、コンピュータ間の通信は通常1:1(場合によっては1:多のこともある)である。

 HUBのポート1, 2, 3, 4にそれぞれコンピュータA, B, C, Dが繋がっていて、AはBと通信したい、CはDと通信したいという状況を例にとってかんがえてみよう。通常のHUBではA, B, C, Dのどれか1つが送信していれば他の3台は送信できない。さらに、コリジョンの検出のため自分が送信したデータを常に受信していないといけないため、HUBとの間では、送受信の線が別であるにも係わらず同時に別のデータを送受信することはできない。CSMA/CDを前提とすれば仕方ない話ではあるが、とってももったいない状況である。

それでは、送信相手によってHUBのポートを動的に切り替えてやるようにすればどうなるだろう? 送信元と受信先のMACアドレスがイーサネットを流れているデータには両方とも含まれているのであるから、各ポートからHUBに届くデータを見て受信先のMACアドレスが繋がっているポートに「だけ」送るように配線を切り替えてやると、他のコンピュータには一切データが流れずコリジョンも発生しないことになる。これがスイッチングHUBの基本的発想である。

スイッチングHUBを使うと、

など、いいことが沢山ある。コリジョンによって速度が低下するというCSMA/CDの弱点をきっちりカバーできるイーサネットスイッチの技術が開発されなかったならば、果たしてイーサネットがLAN技術のメインストリームであり続けられたかどうかは疑問である。なお、通常のスイッチングHUBはイーサネットのMACアドレスを使って宛先ポートへのスイッチ動作をする物が多いが(第2層でのスイッチ)、ものによっては第3層やそれより上の層の情報を使ってスイッチ動作を行うものもある。

3.5 VLAN(Virtual LAN)

スイッチングHUBの考え方は、データに含まれている宛先MACアドレスを使ってポートを動的に繋ぎ変えていくというものであった。これをもう少し発展させると、一つのスイッチングHUBのポートを複数のブロックに分割して、相互に全く別のネットワークとして扱うという考え方が可能になる。VLANの基本的な考え方はここにある。

つまり、一つのスイッチングHUBが論理的には複数個のスイッチングHUBとして動作するようなものである。それなら最初から複数のスイッチングHUBを用意しておけばいいと思うかもしれないが、VLANは単純にポート単位での割当だけではなく、MACアドレスなどによって論理的に分割したり、複数のスイッチングHUB間で構成したりすることも(スイッチングHUBを選ぶが)可能である。複数の機器の間で VLANを構成する方法の一つは、IEEE 802.1Qで定義されているタグ付きVLANである。

さらに、通常はソフトウェア的に構成を変更できるためケーブルを繋ぎ変える手間がないというメリットもある。例えばユーザをどのようにネットワークに分割するかは、業務の内容の変化や人事異動によってしばしば変更されるが、VLANを使えば配線を引き直さずに簡単に変更可能である。事業部拡大によって複数フロアを同一ネットワークにしなければならないようなケースではこれは大変有り難い。

3.6 Ethernetの種類

現在使われているEthernet類は速度とメディア(電線かファイバーか)によってかなりいろいろな種類がある。大まかにまとめると以下の表のようになる(落ちているものも多い)

Ethernetの種類と特徴
速度 メディア 名称 特徴など
10Mbps 同軸ケーブル 10Base-5 中継なしで500mまでのばせる
10Base-2 中継なしで185mまでのばせる
ツイストペア線(CAT3) 10Base-T HUBとPCの間は100mまで
100Mbps ツイストペア線(CAT5) 100Base-TX HUBとPCの間は100mまで
光ファイバ 100Base-FX 20kmまで利用可能
1000Mbps ツイストペア線(CAT5以上) 1000Base-T 4対全部利用。100mまで。4対で上下共用
ツイストペア線(CAT6) 1000Base-TX 4対全部利用。100mまで。上り2対、下り2対
光ファイバ 1000Base-SX 550mまで
1000Base-LX 5kmまで
同軸ケーブル 1000Base-CX 25mまで

ツイストペア線はCAT(カテゴリ)と呼ばれるランキングがされており、数値が大きい方が高性能となっている。そのため、CAT3を要求するネットワーク用にCAT5のケーブルを用いても問題なく動作するが、逆は伝送速度の低下やそもそも使えない可能性が高い。なお、よくCAT5e(エンハンストCAT5)というケーブルが売っているが、これは CAT5よりいいよ。ということであり CAT6よりはだいぶ悪いので注意が必要。たとえば扱える信号の周波数は、CAT5eでは 100MHzまでなのに対し、CAT6は 250MHzである。当然のことながらコネクタの加工や敷設にはそれなりの慎重さが必要となる。

実習3-1 10Base-T/100Base-TXケーブルの加工

以下の手順書に従って、実習用のLAN環境に各班のコンピュータを接続するためのケーブル加工を行いなさい。このケーブルが完成しないと実習用の教材を見ることすらできない。

実習3-2 コリジョンの実験

糸電話を使ってイーサネットの実験を行ってみよう。以下の3つの電文をすべて読み上げるためにかかる時間をチェックしてみること。CSMA/CDで最初に聞く時間は聞いた瞬間に話し声が聞こえなければそれでよい。コリジョンが発生した後の待ち時間は、本来は乱数で決定するが便宜的に自分の班の番号秒だけ待つこと。

電文1. 「年金保険は保険というものの実質的には世代間の所得移転なので年金税と呼ぶ方が適切です」
電文2. 「なまむぎ なまごめ なまたまご。あなたはイメージできますか?」
電文3. 「牛に引かれて善光寺。という言葉がありますが、ushiに轢かれて集中講義という言葉はありません

実験1. 1班だけが電文を読む
実験2. 偶数班が電文を読む
実験3. すべての班が電文を読む

実習3-3 スイッチの実験

糸電話を送信と受信の2本で使うのがスイッチを使った全2重通信の状態である。1-4班と5-8班で分かれて糸電話を2本使い、上と同じ電文を読み上げて時間を計測してみなさい。


目次へ戻る

本サイトにアダルトコンテンツ、XXXコンテンツ類は一切含まれていません。暴力反対。

©2003, OGAWA, Hiroshi Santa <santa123@olab.org>