第1章
Ethernetの種類と動作原理を理解する
Ethernetの基礎知識

  Ethernetの動作原理の基本は,CSMA/CDと呼ばれる衝突検出方式にある.また「10Base-T」という表記にも意味や命名規則がある.第3章以降でFPGAでネットワーク・コントローラを設計する際にも,パケット・フォーマットなどの知識は必須である.ここではEthernetの特徴やEthernetフレームの構造,Ethernetの種類などについて解説する. (編集部)


Ethernetというもの

 ことばのもつ意味は,時代とともに変化していきます.あるものは,本来とはまったく異なった意味のものへと変化し,またあるものは本来の意味合いを含みつつ,より広範囲の解釈ができるものへと変化します.Ethernetということばは後者にあたります.現在,Ethernetと呼ばれているものは,昔の技術を含みつつ,まったく新しい技術にも対応しています.もっとも,その中には消えていった枝葉があることも事実ですが.

 最近の10ギガビットEthernetなどを見ていると,「いったいどのあたりがEthernetなのか?」と,表向きには昔の面影などまったく見えません.しかし,よく見ていくと所々に昔ながらのエッセンスが加わっていることを見つけることができます.そして,誕生初期に確立された技術も,依然として利用されているので,ひと言にEthernetといっても,現在では広範囲なものとなっているということになります.

 今回は,このEthernetに関して,技術的に基本となる部分を見直す意味で,初期の技術について見ていこうと思います.しかし,昔の技術を包含しつつ発展しているといっても,ほとんど消えてしまった部分も当然あるので,今でも利用されているものの中で古いもの,言い換えれば,現在のEthernetのもっとも基本となるべき10Base-Tにスポットをあてて見ていくことにします(図1).

図1 Ethernetの流れ

 なお,最近では10Base-TのIEEE802.3iは単独ではなくIEEE802.3の規格書の13章および14章に入っています.


Ethernetの特徴と思想

  Ethernetの黎明期に活躍したネットワークは,実際のところ単なる同軸ケーブルでした.ケーブルの被膜が黄色であったことからイエロ・ケーブルとも呼ばれました.この同軸ケーブルの両端に無反射終端(ターミネータと呼ぶ)をつけた,最大長500m(1本のケーブルとしてであって,リピータ接続を行った場合は2500m)の何の変哲もないケーブルがネットワークでした.

 この同軸ケーブルに四角いタップ・トランシーバという箱を,ケーブルに「噛み付くように」とりつけ,そのタップ・トランシーバと,端末であるコンピュータの間をトランシーバ・ケーブルと呼ばれるケーブルで接続するようになっていました.

 Ethernetとして規定されている通信方式のもっとも基本部分に位置する概念は,自己責任による通信と考えることができます.言い換えれば,通信を行う場合においてネットワークの動静を監視しているマスタから,いちいち送受信の許可を得るというようなものではなく,ネットワーク上に存在するそれぞれの端末自身が自立的に送信が可能な状態であるかどうかを確認,判断し,動作を行うということです.この動作を実現する

ために用いられる手法がCSMA/CD(Carrier Sense Multiple Access with Collision Detection)方式です.ネットワークに接続されたそれぞれの端末が,このCSMA/CD方式による動作を行うことによって,全体としての通信を実現します.

 この手法のメリットは,それぞれの端末が自立的な動作を行うがゆえに,端末の追加やネットワーク構成の変更が容易にできるという点があげられます.たとえば,街の電気屋さんで買ってきた電話機にどのような設定を行おうが,ネットワークである電話網に勝手につないでも通信はできません.無論,親子電話のようにすることはできますが,これは端末が2台になったのではなく,マイクとスピーカが2セットになっただけで,同時に異なった通信はできないので増えたとはいえません.当然,2台の電話機を2ワイヤのケーブルで直接接続しても何の役にも立ちません.電話機を使えるようにするためには交換機が必須であり,交換機によって構成されるネットワーク側で設定を行わなければなりません.

 しかし,Ethernetの場合では,そのネットワークのルールに従った範囲内で設定を行うだけで,ネットワークに接続し,通信を行うことが可能です(図2).また,2台のEthernet端末をクロス・ケーブルなどで直接接続して通信を行うことも当然可能です(逆に,同軸ケーブルに何か「設定」してみろといわれても困るが…).

図2 通信を行う機能の所在

Ethernetの動作原理
――CSMA/CDとは)

 ネットワーク上で動作するにあたり,どこかのマスタから許可をもらうのではなく,自己の判断で通信を行うための手法として用いるCSMA/CD方式の前提には,「ネットワーク・リソースは共有されるべきものである」ということがあります.

 基本的な動作を大ざっぱに言うと,それぞれの端末はネットワークである同軸ケーブル上に,ほかにデータがなければ送出しようとするデータを置きます.どれかの端末に向けて送出するのではありません.無論宛て先は示されてはいますが,ネットワーク上に相手側の端末が存在するかどうかに関わらず,とりあえずネットワークに送り出すので,ここではネットワーク上に置くと表現しました.

 そして,データの送出を行っている端末以外のすべての端末は,ネットワーク上にデータが置かれた場合,自分宛てであるものを取り込みます.このため,データとしてのフレームの受信動作は,ネットワーク上に存在するものを,とりあえずすべて受信して,そのうえで宛て先が自分宛てもしくは全員宛てというように,みずからに必要であると思われるものの場合には処理を継続し,それ以外,つまり受け取る必要のないものであればフレームを破棄します.

 もう少し詳しく見ていくと,送出動作の大まかな流れは,送出しようとするときに,最初にほかの端末がネットワークに対してデータの送出動作を行っていないということを確認するところから始まります.具体的な動作としては,ネットワーク上に電位差が見えるかどうかで判断します.そもそもEthernetのネットワークの基幹部分は単なる同軸ケーブルなので,そこを基点として電位差は発生しません.どこかの端末が,ネットワークである同軸ケーブルに対して電流を流していない限り電位差の発生はありえないのです.逆に言えば,ネットワーク上に電位差が見受けられるということは,どこか別の端末がフレームの送出動作を行っていると解釈できます(図3).

図3 ネットワーク上にデータが存在する場合のケーブル上の信号例(10Base-5)

 ネットワーク上にほかの端末からのデータが存在する場合,それがなくなるまで待ちます.この際,データの送出状況を監視し続けるのではなく,時間を置いて再度確認を行い,データがあるようならば再び時間を置き,なければ送出動作を開始してよいのです.

 さて,めでたくネットワークをほかのどの端末も利用していないことが確認できた場合,フレームの送出動作に移行します.しかし,別の端末がほとんど同じタイミングで同じ動作を行っている可能性は否定できません.Ethernet上の端末は,それぞれ独立して動作しているため,ほとんど同じタイミングでデータの送出を行おうとする端末が複数台あることは高い確率で存在します.2台の端末が同時に送出動作を行おうとして,ネットワーク上のデータの存在を確認したときに,ネットワーク上にデータがなければ,2台とも送出動作を開始してしまうというわけです.そしてネットワークに接続された端末の台数が増えれば増えるほど同じタイミングで送出動作が行われる確率は増えていきます.ネットワークを介したフレームのやりとりは電位差による二値情報で行われるので,複数の端末が同時にフレームの送出を行った場合,フレームが衝突し,情報は破壊されてしまいます(図4).

図4 送出データが衝突した場合のケーブル上の信号例(10Base-5)

 このようなフレームの衝突を検出するようにしなければ,端末はフレームを送ったつもりでも,実際には役に立たないものがネットワーク上に存在することになり,目的を果たせません.受け取るほうからすれば,相手先のアドレスも破壊されているので受信できませんし,受信途中から衝突が発生した場合は,途中までは正常な情報であったとしても,Ethernetフレームの最後にあるFCS(Frame Check Sequence)でエラーとなり,破棄することも可能です.しかし,送るほうからすれば,衝突の検出を行っていなければ送出は完了していると考えてしまうので,こちらは問題が生じてしまいます.TCPのような上位のプロトコルでは情報の再送制御も可能ですが,Ethernetフレームでは,フレームひとつひとつが,基本として独立した情報単位とされるので,受信側からの再送要求はありえません.そのため,送り側は衝突の検出を行い,ネットワーク上において,送出したフレームが確実に存在することを見極め,再送処理を行う必要があります.

 上位のアプリケーションから見ればともかく,衝突の発生自体は,Ethernetからすればレイヤ2の動作としては正常な動作の一つなので,受信側から指示が出るのはおかしく,送信側が責任をもって処理しなければなりません.

 このことから,Ethernetとして基本的な通信を行うことができる範囲は,衝突を検出できる範囲となってしまい,この範囲をコリジョン・ドメインと呼びます(コラム1).

 衝突を検出した場合,送信を途中で取りやめ,再送処理に移行するということはむだな情報がネットワーク上に存在する時間を短縮し,ネットワーク・リソースのむだを軽減するという観点からも正しい動作となります.

 ただし,衝突が検出されたといって送出中のフレームを停止したとしても,即座に再送処理を開始するわけにはいきません.理由は簡単で,フレームの衝突を起こして,送出を取りやめた複数の端末が,その直後,お互いにすぐに再送を行うと,まちがいなく再送フレームも衝突を起こすからです.

バック・オフの話

  フレームの送出において衝突が発生した場合,仮に即座に再送処理を行わなかったとしても,同じ動作を行っていれば,どれくらい時間を置こうが再度衝突してしまいます.つまり,衝突検出後10ms待機の後に再送処理とするならば,衝突を起こしたフレームを送出した2台の端末から,結局10ms後にフレームが送出され,再び衝突が発生します.

 この再送処理について,インターフェース単位で設定を行い,あるインターフェースは1ms後,別のものは3ms後とすると,再度の衝突は発生しませんが,通信を行う機会が均等に与えられないことになるので問題となります.

 よって,ここでは乱数が用いられます.衝突の発生した回数によって決められる範囲内の値を乱数によって決定し,あらかじめ決められた時間幅のタイム・スロットに対して,何タイム・スロット経過した後に再送処理に戻るかを個々のインターフェースで決定するようにしています.

 この待機時間をバック・オフ・タイムといい,詳細は第2章で解説します.

以降の内容は本誌を参照ください

インデックス
プロローグ
◆第1章

今月号特集トップページへ戻る


Copyright 2004 松本 信幸