BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 40周年を迎えたEthernet

40周年を迎えたEthernet

原文(投稿日:2020/09/30)へのリンク

1980年9月30日に "The Ethernet: A Local Area Network; Data Link Layer and Physical Layer Specification" がバージョン1.0仕様として公開されてから、今日がちょうど40年目にあたる。この仕様は1981年7月、ACM SIGCOMM Computer Communication Reviewに掲載された。Ethernetは現在もコンピュータネットワークの最下層として広く使用されており、IPとその上位レベルプロコトルであるTCP/UDPの下に位置している。

1970年代から1980年代にかけてのコンピュータ間ネットワークは、プロプライエタリで制限されたものだった。この状況に対処するため、Robert Metcalfeという元Xeroxのエンジニアが、Xerox、Intel、DECとともに、各社のコンピュータの相互運用を可能にする共有ネットワーク定義を共同開発した。開発されたネットワークは、Alohanetを参考にしたMetcalfe氏の博士論文に基づいていた。Alohanetは当時のネットワーク(プロプライエタリなToken Ringネットワークなど)が使用していた電話線とは違い、無線電波を通信に使用するネットワークシステムだった。Alohanetとの関係性において重要なのは、2つの無線信号が同時にブロードキャストされるとクラッシュが発生する(無線は単一通信あるいは半二重通信のメディアである。双方向通信が可能だが、両方向で同時に通信することはできない)ことだ。Alohanetと、それに続く氏の論文の共通点は、送信ステーションがこの状態を感知することが可能で、再送信の前にランダムな時間の遅延を置くことができれば、このクラッシュを受容することができる、という部分にある。Metcalfe氏はその後、自身のコンピュータネットワーク会社の3-Comで、この技術を商用化した。

Metcalfe氏はDavid Boggs、Chuck Thacker、Butler Lampson各氏と共同で討議草案(draft discussion) "Ethernet: Distributed Packet Switching for Local Computer Networks" を執筆し、1976年7月に公刊されたCommunications of the ACM Vol 19 No 7に掲載した。この論文によって、(例えば)ひとつのトークンを全コンピュータで回覧するため、一度に1台しか通信できないToken Ringネットワークなどとは違う、コントローラやその他の手続きを持たないパケットベースのネットワークプロトコルという、現在のプロトコルの基盤が設定された。論文の要約では、特にランダムバックオフ(random backoff)とリトライの重要性を取り上げている。

Ethernetの共有通信機能、すなわちEther(エーテル)は、中央制御を持たないパッシブブロードキャストメディアです。パケットをブロードキャストするためにEtherにアクセスする際のコーディネーションは、コントロールされた統計的調停を使用することによって、競合する送信ステーション間に分散されています。

これにより、ネットワークケーブルを使って結合され、なおかつ相互通信のための中央制御やスイッチを持たないローカルエリアネットワークが実現した。最初の実装では、テレビで広く使用されていた同軸ケーブルを使用して、ネットワークの物理層として機能するようにしていた。ただし、この同軸/10Base2ネットワークでは、信号の反射を回避するため、同軸ケーブルの末端にターミネータを使用する必要があった。Ethernetの紹介資料には、同軸ケーブルを使用することのメリットが謳われている。

実験的なEtherの実装では、低損失の同軸ケーブルと市販のCATVタップとコネクタを使用しました。単一のEthernetに複数のEtherを混在することが可能です。私たちはステーションクラスタ内の簡単な接続手段としては小径の同軸を、クラスタ間の低損失な運用には径の大きな同軸を使用しています。同軸ケーブルに必要なコストは、Ethernetがサポートする分散コンピューティングシステムのコストに比較すれば、わずかなものに過ぎません。

妥当な最大ネットワークサイズは、ケーブル長で1キロメートルのオーダになるものと予想しています。

パケット構造では、Ethernetアドレス — 現在はネットワークカードのMACアドレスと呼ばれている — をパケットの先頭部分に置くことで、ネットワークに接続されたコンピュータがそのアドレスを監視し、自身のネットワークカードを示すものでなければ無視する、という処理を可能にしている。最初の実装ではソースおよびディスティネーションアドレスとして1バイト — 最大256台のコンピュータ — を使用していたが、Ethernet 1.0がリリースされる時点では、6オクテット(バイト)のデータでソースとディスティネーションを表現していた。これは、今日の802.3 Ethernetフレーム仕様でも変更されていない。ifconfig(Windowsの場合はipconfig)を実行すれば、MACアドレス(12:34:56:78:9a:bcのように)とMTUを含むネットワークカードの情報が表示される。

興味深いことに、Ethernet 1.0仕様ではOSI 7階層モデルの初期バージョンを採用しており、Ethernetを物理層(同軸ケーブル上のトランシーバを使用)上とデータリンク層上に定義している(草案の発表が1980年であるのに対して、OSI仕様が公式に発行されたのは4年後の1984年である)。Ethernetの以降のバージョンでも同じフレーミングを使用するが、10BaseT(ツイステッドペア、一般的にはCat-5あるいはCat-6ケーブルと呼ばれる)、さらには光ファイバケーブルへと切り替わっている。

EthernetフレームにはCRC(Cyclic Redundancy Check)エラーコードが含まれており、エンコードや配信、あるいはデコード中にエラーが発生したパケットを破棄することが可能になっている。草案では16bit CRCが使用されていたが、バージョン1.0で32bit CRCにアップグレードされ、現在もそれが使用されている。最近のネットワークカードでは、ハードウェアを使用してEthernetパケットのCRC計算と検証を自動的に行っているため、無効なパケットは通知することなく廃棄される。CRCはEthernetフレームのコンテンツ全体を対象とするので、パケットの最後の部分に配置されている。

Ethernetパケットの本体部分は可変長である。最初の草案は500バイトで始まったが、Ethernet 1.0仕様でアップグレードされ、46バイトから1500バイトまでのサイズを持つ可変長データフィールドの使用が可能になった。ヘッダとチェックサムを合わせると、Ethernetフレームのサイズは64~1522バイトということになる。今日ではこれがMaximum Transmission Unit(MTU)として知られているが、ISPが8バイトのPPPoEヘッダを使用するためにMTUを1492バイトに制限する、といったように、ADSLやPPPoEなどのネットワークではわずかに減少することが少なくない。仕様の(かなり)後のバージョンでは、1500から9000バイトというジャンボフレームを許可しているが、一般的にはハードウェアがラージフレームやジャンボフレームをサポートするローカルエリアネットワーク内でのみ使用されている。

最初の10MbpsのEthernetネットワークカードが登場して以来、100Mbpsの"高速"EthernetやGigabit Ethernet、さらには10Gigabit Ethernetなど、より高速なネットワークプロコトルが開発されている。しかしながら、変更されたのは信号速度とパケットデータをネットワーク上でエンコードする方法のみで、40年前に定義されたものと同じパケットフレームが現在のコンピュータネットワークでも使用されているのだ。有線データ通信から無線に移行し(数十年前、インターネットに接続するためにPsion/Nokia IrDAをセットアップしたことを思い出す)、さらにはWiFi自体も時代とともに進化して、現在ではWiFi-6が無線によるコンピュータ相互接続の標準となっている。しかしながら、これらのネットワークすべてが1.0仕様と同じEthernetフレームをいまだに使用しており、MACアドレスやMTUといった用語もまた、ローカルエリアEthernetネットワークによってコンピュータが初めてネットワーク接続された時代と同じように、現在も使用されているのだ。

当然ながら、最新のネットワークは低層プロトコルの上に構築されている — IPは異なるLAN間で、WANを越えたパケットのルーティングを可能にし(そしてインターネット自体と、その名前の由来となったInternet Protocolを生み出した)、その上位プロトコルであるTCPとUDP(さらには、その特定目的のユースケースであるHTTPやQUICなど)は、おそらくはモバイルネットワークを通じて、あなたがこの文章を読んでいるデバイスで使用されているプロトコルなのである。

皮肉なのは、少なくともプレーンテキストであるならば、この記事全体が1つのジャンボEthernetパケットあるいは6つの標準サイズのEthernetパケットに収まるということだ — ただし、周囲のHTMLタグやページ上の他のコンテンツを加えれば、おそらく数百パケットにはなるだろう。

40年前のプロトコルにしては悪くない、そう思わないだろうか?

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT