プロローグ
Ethernetのハードウェアを理解しよう!


Ethernetあれこれ

 ローカル・エリア・ネットワーク技術としてEthernetが登場して幾星霜.初期においては,当時のEthernetである,10Base-5とともに,TokenRingやFDDIといった技術も利用されていました.少し後に登場した10Base-2は,10Base-5より多少操作性がよく,そして安価なため,Thin-Ethernet(細いイーサネット)やCheeperNet(イーサネットの語呂に似せて,安価を意味するCheepと掛け合わせたことば)と呼ばれました.つまり当時はローカル・エリア・ネットワークにおいてEthernetといえば10Base-5を指していたのです.一時的とはいえ,同じようなメカニズムで動作するものでさえ,Ethernetとは違う名称が付けられていました.

 しかし時は流れ,TokenRingやFDDIもお目にかからなくなりました.それでもEthernetは,インターネットを支える技術として依然存在し続けています.とはいえ,現在耳にするEthernetは10Base-5を指しているのではありません.またTokenRingやFDDIが発展しなかったわけではありません.TokenRingも初期の8Mbpsから16Mbpsへと速度向上を図りました.FDDIに関してもケーブルの作業性を向上させるために同軸ケーブルを用いるCDDIやツイスト・ペア・ケーブルを使用するTPDDIというものも検討されましたし,速度を向上させ,新しいアプリケーションにも対応できるようなFDDI-IIもありました.

 新しいアプリケーションに対応し,高速のインターフェースを提供できる技術として,ATM-LANが話題になったときもありました.これは電話網の流れをくむ局用の通信技術として登場したATMをローカル・エリアの世界に持ち込もうとしたものです.これはEthernetのライバルとしての技術ではなく,Ethernetを取り込み,共存する技術として一時期発展しました.ATM技術の初期においては音声のような連続情報を格納するAAL Type1とパケット形状の情報に用いるAAL Type3/4の二種類しかなかった(AAL Type2は欠番:後に新しいフォーマットで再登場)のですが,Ethernetフレームとの整合性をならびにTCP/IPの動作との整合性を考慮してAAL Type5が新設されたという経緯もあります.

 しかし,ATMも本命とはなり得ませんでした.個人的には,ATM Cellの大きさを53バイトという素数を用いるという愚行を行ったことが原因の一つであると思っています.64バイトの長さをカウントするためには8ビット・カウンタを2段組み合わせればカウントすることは可能ですが,素数の場合にはそうはいきません.このほかにもいくつかの要因があり,エッジ系に配置する機器のアップリンク・インターフェースを安価に用意することができなかったのです.

 ATMを尻目に,Ethernetは独自の進化を遂げます.インターフェースの速度は10倍ずつ増加していきます.にもかかわらず,UTPを用いるインターフェースにおいてはオート・ネゴシエーションを用いた自動切り替えによりインターフェース速度を決定し,VLAN-tagの利用やMPLSにより,いろいろなアプリケーションにも対応可能になりました.さらにUTPケーブルに便乗させる形で電力を供給する技術も確立されるに至り,バリエーション豊富な技術として,不動の地位を築いたといっても過言ではないでしょう.

Ethernet≒CSMA/CD!?

 昨今は,PCショップをのぞいてみると,10M/100M両対応の機器が一般的で,5ポート程度のハブが2,000円も出せばお釣りがくるような時代です.さらにギガビットにも対応した機器も,手ごろな価格で次々と登場しています.

 このようなときに,なぜ今ごろ10Base-Tインターフェースを手作りしようなどと試みたか…それは,Ethernetの基本はCSMA/CD(Carrier Sense Multiple Access with Collision Detection)方式にあると考えているからです.もしここで,NE2000互換のコントローラなど市販のネットワーク・インターフェース・コントローラ(NIC)を使ってしまうと,衝突検出および再送処理はコントローラが自動的に行ってしまうので,それを体験的に学習したり試してみることができません.そこであえて,NICそのものを作ってみることにしたのです.

 また,現在のEthernetを支えるコア技術は一つだけではなく,たくさんの技術が組み合わされて実現されています.この技術の中にはローカル・エリア・ネットワーク技術の流れを組まないものも入っていますし,新しいものばかりというわけでもありません.一例をあげると1000Base-Tのような新しいインターフェースであっても,実現するために新たに導入された技術は,新しいものばかりではなく,古くから別のシステムで使用されていたものを流用しているものも少なくありません(たとえば1000Mbpsという高速で全二重通信を実現するために使われた技術は,もともと固定電話で培われた技術を流用している).

 つまり,将来,10Base-Tを支え発展させた技術が,概念としてまったく異なったシステムに流用されることがあっても良いのではないかと思っているのです.ネットワークが宅内にどんどん入り込んできていますが,今後登場してくるものの中にはCSMA/CDを応用した,Ethernetではないネットワークや装置があるかもしれません.

 たとえばインターネット電話といった新しいシステムに対応するためには,CSMA/CD方式を用いず,全二重による通信を行ったほうが良いことはわかっています.しかし「基礎なくして応用なし」です.規格の流れからすれば,高速化のために消えつつあるCSMA/CD方式ではあるのですが,このCSMA/CD方式による通信をもう一度しっかり見直し,理解してこそ,これから登場してくる新しい技術を,より深く理解できると信じています.

特集の構成について

 今回の特集の章立ては次のようになります.

 第1章では,(お約束どおりだが)Ethernetという技術の概要について解説します.

 第2章では,そのEthernetの中から,今回特にスポットを当てて開発を行う10Base-Tについて,その特徴を見ていくことにします.

 第3章では,10Base-Tの動作を確認しつつ,オリジナル仕様のEthernetコントローラの設計を行います.今回の開発は編集部の意向もあり,FPGAをベースとしたものとなります.外付けする部品は,パルス・トランスと数個のコンデンサと抵抗のみという非常に簡単な回路です.またフリー版のFPGA開発ツールで論理合成や配置配線も可能で,HDLソースも公開するので,だれもが実際に試せるようになっています.

 第4章では,実際に製作したEthernetコントローラについて,正常に動作しているかどうかの確認を行います.今回はFPGAをほぼ直結しただけなので,Ethernetの仕様を100%満たせているわけではありません.また一言で10Base-Tといっても,実際に製品として出回っているハブやLANカードには,細かな点でいろいろと動作の異なるものがたくさんあります.ここではオシロスコープやロジアナなどで,実際の波形を観測したり,いろいろなハブやLANカードと接続して,実際にパケットのやりとりができるかどうかをテストします.

 第5章では,今回製作したEthernetカードに対応したLinux用デバイス・ドライバを作成し,実際に製作したEthernetカードをLinux上から使ってみます.Linux側でSambaを立ち上げ,Windowsマシンから見えるネットワーク・ドライブにファイルをコピーするなど,手作りのEthernetカードで実際に本格的なネットワーク・アプリケーションが動いているところを見ると,やはり感動します.

 第6章では,組み込み機器にEthernetを採用する場合に必要となるTCP/IPプロトコル・スタックについて解説します.ここではITRON準拠のTOPPERS/JSPと組み合わせて使えるTINETについて解説しています.ターゲットとなるプラットホームはH8マイコン・ボードにRTL8019ASという非常にポピュラなものなので,各分野に応用が利くと思われます.

 第7章では,Ethernetを搭載したCQ RISC評価キットの活用事例として,組み込み機器向けに最適化したTCP/IPプロトコル・スタックを開発し,転送性能などを評価しています.こちらもスタックはオープン・ソースとする予定とのことで,近日中には公開されると思います.

 さらに今回はAppendixとして,ネットワーク装置を開発する際に関連してきそうなEthernet技術の中から,Power over Ethernetについて概要の紹介もしています.

写真 今回設計したオリジナル仕様のLANカードを実際に動作させているようす

 左のPCに今回設計したLANカードを実装し,Linuxを起動してSambaやhttpサーバを走らせている.右のPCはWindows 2000を起動し,ネットワーク・ドライブでファイル・アクセスを行い,WWWブラウザでテストWebページを表示させているようす.

 右に重ねたハブや,左に並べた市販されている各種LANカードのすべてと問題なく通信できることを確認している.

今後の展開

 今回の特集は,もっとも基本的な動作を理解することが目的であるため,10Base-Tの半二重動作のみとなっています.

 しかし近い将来,今回の設計をベースにいくつかの機能を加えていきたいとも考えています.まず次のステップとしては,オート・ネゴシエーション機能を加えて,10Base-Tの全二重でも動作できるようにしたいと考えています.

 そして次に,100Mbpsの速度に対応した100Base-TX(Fast Ethernet)への対応を実現させ,オート・ネゴシエーションと組み合わせることで,100Base-TXの全二重と半二重,そして10Base-Tの全二重と半二重で動作可能なものにしていきたいと思っています.

 とりあえずは,基礎の基礎である10Base-Tについて解説していきます.

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

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


Copyright 2004 松本 信幸