題名:ネットワークについて

五郎の入り口に戻る

日付:1999/7/13

 この文章について | ネットワークの動作概要 | Physical Layer:物理層 | Media Access Control SubLayer | Logical Link Sublayer | Network Layer | Transport Layer


Media Access Control SubLayer-Part2

4.2 Conflict-Free Techniques

さて、今度は前の章で述べた技術と異なり、最初から衝突が起こらない方法について述べる。

 

(1)Polling

この方式のよくみられる例としては、セントラルコンピュータに多くの端末がぶらさがっているものだ。考えてみれば一昔前はコンピュータと名が付くものの大多数はこれだったのではないか。

基本的なアルゴリズムは簡単である。セントラルコンピュータがすべてを管理する。彼は接続されたターミナルに対して順番に「おーいしゃべってもいいぞ」と詔をたれる。すると名前を呼ばれた端末がうやうやしく「それでは恐れながら申し上げます」と通信をするわけだ。かのように強力なセントラルコンピュータがすべてをしきっているから彼が妙な事を始めない限りパケットの衝突などというものはおこりようがない。しかしながらセントラルコンピュータが端末を切り替えるのに要する時間が性能を制限する要因となる。また系全体の信頼性もセントラルコンピュータだけに依存する。もっともこうしたシステムでは端末だけでは何もできないのが普通だから、セントラルコンピュータが死んでしまえばシステム全体それまでなのであるが。

 

(2)Token Passing

このTokenとは「しるし」とかいう意味で使われると思うのだが、実体は特別なパケットである。トポロジーとしてはリングとBus(つまるところは一本の道だ)の2種類があるがここの説明はリングの方でおこなう。このリングの絵をみて、かつ動作原理をつらつら見ている内に私はちょっとした混乱に陥った。リングとはいいながら、ここで使われているのはネットワークに参加しているノードの数だけ存在する細切れの区間なのだ。

 

何がいいたいかって?あるノードに右からはいってきた(この右の定義は?とあまり気にしないように)パケットはもしリングが連続した媒体で有ればそのまま素通りして左にでていく。(もちろんノードがモニタすることができるが)しかし後の動作説明を読むと解るが、Token Ringは、右から到着したパケットは一旦ノードが受け取り、そして必要であれば左に送り出す、とそういった方式である。従ってTokenが左からはいって右にでていく間にはかならずなんらかの処理による遅れが発生する。

 

さて、この方式の基本的なアルゴリズムは以下の通りである。

 

・ Tokenは一つのステーションから別のステーションに規定された順番に送られる。

・ 各ステーションがTokenを受け取ったら、回線を決められた間だけ使用できる。その後Tokenを放して次のステーションに送る。

・ データのパケットを回線から取り除くのは、送り手の場合もあるし、受取手の場合もある。前者はSource Removeal,後者はDestination Removalと呼ばれる。ただしそのときパケットを取り除いたステーションはTokenを放さなくてはならない。

 

さてこの方式の性能は、基本的にPollingと同じになる(そうだ。私はこの理屈を完全に理解したわけではない)衝突が起こるわけではないから、Random AccessTechniqueの項で説明した性能の不安定性は存在しない。回線が込み合うにつれ、スループットはどこかで頭打ちになるが、下がっていくことはない。

さてこの方式の性能を考える際に重要なパラメータに"Ring Latency"というものが存在する。リングを一周するのにかかる伝送遅れ+各ステーションでの遅れ時間だ。先ほど説明した「基本的なアルゴリズム」をよく見てみよう。Source removalの場合、Tokenを受け取りデータを送信したステーションは、Tokenがぐるっと一周回ってくるまでTokenを放さないから、その間リング上にあるすべてのステーションはぼーっと待ちながら回ってきたデータ+Tokenを中継するしかやることがない。確かに衝突は起こらないが、これでは回線がもったいない気がする。(ちなみにこの方法はToken ringの4MBpsで用いられている)

それを改良して、データを送信し終わったら、一定時間後にTokenをリリースしてしまう方法もある。この方法だとRing Latencyの間他のステーションが待っているなんてことはない。この方法はIEEE802.5の16MBpsで用いられている。さらに待つなんてことをしないでデータ送信が終わると同時にTokenをリリースしてしまう方法もある。これは光ファイバーを使って100Mbpsでデータを送信するFDDIで用いられている。

さてここまでの説明は基本的にRing型のトポロジーを念頭においておこなってきたが、前述したようにこのToken Passingに分類される方式にはBus型のものもあるIEEE802.4で規定されているToken Busだ。バスというくらいだから、こちらの方法ではTokenをバス上にリリースすればそれは右だ左だと細かい事をいわずにとにかくバスにつながっているステーションすべてに伝わる。従ってロジックでToken Passingの制御をおこなう必要がありこのアルゴリズムは大変複雑になる。聞くところによるとこのToken Busの仕様書というのは数十ページに渡る偉大な代物だという。

 

 

4.3 それぞれの方式の比較

 

さてここで、Random Access TechniqueのCSMA/CDとConflict-Free TechniqueのToken Ringを比較してみよう。

 

トラフィック量が少ない時では、CSMA/CDのほうが待ち時間が少ない。極端な例で言うと、媒体上で一つのステーションしかデータを送信しようとしていないときは、彼はやりたい放題である。待ち時間はほとんど0だ。逆にToken Ringでは同じような場合でも平均してRing Latencyの半分は待たなくてはならない。従ってこの条件下ではCSMA/CDのほうが待ち時間は少ない。しかしトラフィックが増加するに従い、待ち時間が増加する割合はCSMA/CDのほうが大きいから、どこかで待ち時間の大小関係は逆転する。

スループットの最大値はToken ringのほうが高い。CSMA/CDではどうしたってトラフィックが多くなるにしたがい、衝突の可能性もますので頭打ちになってしまう。おまけにさらにトラフィックが増すとスループットは下がってしまう。Token Ringにはこうした不安定性は存在しない。

もう一つの要素は、データが目的とするノードに伝わるまでの時間がどの程度予測できるか、ということである。CSMA/CDは基本的に確率に依存する。すなわち運がわるければとんでもなく長い時間を要する可能性もあるということだ。逆にToken Ringは最悪の場合でもRing latency(+α)以上にはかからない。すなわち最悪値が保証されているわけである。これはリアルタイムの制御等を考えた時には大変好ましい性質である。

 

こう考えてくるとどうもToken Ringのほうが遙かに望ましい選択肢のような気がする。しかしながらなぜか世の中少なくとも私が見回した範囲ではCSMA/CDを使ったEthernetのたぐいが優勢だ。それどころか例えばMacintoshのToken Ring対応カードなどというものは以前は見かけた気がするのだが、最近はこの言葉自体聞くことが少なくなってしまった。(あちこちホームページをあさっていたら、米国では未だにToken Ringはよく使われている、とかいう話もあったが)なぜこういう事態に至っているのかはわからない。

これは私が推定することだが、たぶん最初シェアが開き始めたときにはそれなりに正当な理由が(それが技術的な優劣に関係する物かどうかは別として)存在していたのであろう。しかし今となっては理由は明白だ。Ethernetが圧倒的多数で使用され、しかもその性能的な優劣に大きなさがなければ、必ずシェアの大きい方が勝のである。これはこうしたコンピュータ関係の世界においてあまりにもしばしば見られる図式だ。

 

4.4 現実世界の規格

さて最後に今まで述べてきたMAC Layerの技術が実際の世界ではどのような規格として制定されているか。またどのように使われているかの説明をしてみる。

参考文献4は1982年に英国で発行されているが、その中の「最近の展開」という章は次の文章で始まっている。

「1981年に入り、新しいLAN関連商品は、追随していくのが大変なほどの勢いで続々と発表された。(中略)

(1) ベースバンド・コンテンション・バス・システム

(中略)“イーサネット型”と呼ばれるシステムがある。

 

(5)トークンアクセスシステム

目下のところ、適正なトークン・アクセス手法を用いたネットワーク商品はほとんど利用できる状態にないが、この手法が効率の点で優れていること、米国での標準になりうるものであることから、将来重視されるものとなろう。」

 

当時このような状態にあったLAN関係の技術はその後どのように発展していったのだろうか。IEEE802.X(X=2,3,4)の3種類の規格について現在までに調べがついたことについて書いてみよう。ここからの記述はhttp://www.net.is.uec.ac.jp/lecture/net-ch2/tsld001.htmの内容から多くを学んでいる。しかしながらこのURLにあるのは、講義で使われたと思われるスライドだけであり、私がここから書くことはそのスライドの内容を勝手にふくらましたものだから間違いがある可能性も多々ある。

 

IEEE802.3の元となったEthernetの起源はその道では伝説的な(少なくとも私にとってはそうだ)Xerox PARC(Palo Alto research center)である。Smalltalkであるとか、マウスを使った直感的なインタフェースであるとか、GUIを備えたワークステーションであるとかEthernetであるとかはすべてここから生まれているのである。そこまですばらしいコンセプトを世に送り出しながらXeroxが商売からみて何を得たのか、というのはかなり興味のある話題であるが、それはここでは関係ない。

Ethernetはイーサーネットと発音する(はず)だ。この頭5文字のEtherだけとると普通日本語では「エーテル」と発音する。ここで言うエーテルとは化学物質のほうではなくて、電磁波を伝える媒体として想定されているエーテルのほうである。(従って私のある知り合いはEthernetを「エーテルネット」と発音する-もちろんわざとだが-)こちらのエーテルのほうもかなり興味深い話がいろいろとあるので、老後の楽しみにとっておこうと思っているのだが、まあそれはそれ。

イーサネット・システムの原型は1970年代はじめにカリフォルニア州にあるゼロックス社のPalo Alto Research Centerに実験用として設置された。このシステムの目的はオフィス内のワークステーション群を高価なコンピュータや他のオフィス機器に結合し、これらの装置群を全員がワークステーションを使って共用しようということだった。その後、この方式はEthernetとして1980年にXerox,DEC,Intelにより 同軸ケーブルを用いた CSMA/CD 方式のLANとして商品化された。

 

さて対するにConflict-Free Techniqueの一方式であるところのToken - Ring-IEEE802.5はIBMの開発である。この方式の開発背景については今ひとつよくわからない。

 

もう一つの規格、Token-Bus-IEEE802.4であるが、これは親愛なる米国General Motorsの出である。(私はちょっとこの最後の述語に関しては自信がない)米国の自動車会社は今はどうかしらないが、80年代から90年代の始めにかけては「悪いことがおこればそれはすべて日本のせい」とわめきちらすので大変評判が悪い会社であった。それだけのエネルギーをまともな車を作る方に向ければいいと思うのだが、そうはせず、政治家に圧力をかけてしこたま米国車を輸入させたり、自分のボーナスを大幅にあげたり、と。心ある人(日本人、米国人をとわずだが)からは「米国の恥」と呼ばれるような人間がトップをしきっていたのである。

しかしながら、このToken-Busの開発経緯を聞くとき、彼らはそうした邪悪な対策だけに血道をあげていたのではないことが見て取れる。実際GMというのは巨大な会社であり、トップはどうだか知らないが、私が知っている限りやはり上に立つ人間というのはそれなりにできた人間である。(彼らと話すのは相手がほほえみをうかべていたとしても神経を破壊するような経験だが)日本の自動車会社との競合を予想したGMは、工場のオートメーション化に関する方式の開発に着手した。(それが役に立つかどうかは別として、GMは実に多様な研究を行っているのだ)

想定している用途が工場に設置されている機器の制御だから、いくつかの性質が必要とされる。まずリアルタイムに機器を制御しなくてはならないから、情報が伝送されるのに「がんばってはみますがいつ着くかわかりません」と言われてしまっては困る。最悪の場合でも何秒以内、という具合に最悪値が保証されてほしいものだ。それならばToken-Ringでいいじゃないかと思うのだが、工場の組立ラインというのはたいていの場合長ーいものである、ということに注意する必要がある。Token-Ringを使おうと思えば、ネットワークの頭としっぽは接続されてリングになっている必要があるのだ。ところがながーい組立ラインの最初と最後の機械をまた接続する、なんてのはあまりうれしい話ではない。できれば接続が一直線ですんでくれればうれしい。従ってトポロジーとしてリングよりもバス型が望ましいわけである。

さてここからが今ひとつはっきりしない。このためにToken BUSが開発されたのが、あるいは別の機会に開発されていたものが採用されたのかどちらかよくわからないのである。しかしながら、GMが開発したこの工場の自動化用のプロトコルセットはMAPと呼ばれ、その下位のプロトコルとしてToken BUSが使用されているのは間違いないところである。

さて、私が前にあげた文献によればここからの経緯は概略以下の様である。こうしたLAN用の技術がぼつぼつ出始めたときに「LAN用のプロトコルの標準を設定しよう」ということでこの業界が大騒ぎになったと。私の勝手な想像だが、どの技術をかついでいる団体も「うちの技術が一番。うちの技術=標準だ」とわめきちらしたに違いない。そして結局のところ標準を一本化しようという構想はゴミ箱に放り込まれ、MAC Layer+Physical Layerを3種類標準化し、その上にのるData Link Control LayerをIEEE802.2として共通化することで決着がついたと。従って今まで述べた3種類のプロトコルの関係は以下の図に示すようになっている。

さてこの中で一番普通の生活をしていて(別に工場のオートメーションを担当していることが「普通の生活ではない」と言うつもりもないが)目にするのがEthernetことIEEE802.3シリーズについて具体的に観てみよう。(正確に言うとこの二つのプロトコルは、パケット中のあるフィールドが異なっているため完全に互換性があるわけではない)

この言葉でくくれる規格は何種類も存在している。私が本講義をうけたころは話はまだ簡単だった。10Base-2, 10Base-5, 10Base-Tの3種類があると覚えておけばなんとかなったからである。ここでの記号は、最初の数字が伝送速度-単位はMbps-を表し、次のBaseがこの伝送方式がBase Bandであることを(だから世の中にはBroad Bandの10BROAD36なる規格も存在する)最後の-Tが媒体を示す。Tとはより線、つまりTwist Pairのことである。ここが2だの5だのになると伝送距離(単位は100m)を示す。

昔は10Base-5が多かったようだ。遠い昔の月刊ASCIIという雑誌の記事に「黄色いイーサで結合だ!」という一文があったのを覚えている。その名の通り10Base-5のケーブルというのは黄色い色をしている。(私はたぶんこのケーブルを一度しかみたことがない)ところがこのケーブルの太さたるや大変なもので、とてもそこらへんを気軽に取り回しするというわけにはいかない。その次には10Base-2が多くなった。これは細い同軸ケーブルだし(見かけはTVのアンテナからくる同軸ケーブルにそっくりである。中身まで一緒かどうかは知らないが)数珠繋ぎにできるからなかなか便利であった。最近みかけるのはほとんどの場合10Base-Tである。こちらはシールドされていないツイストペアのケーブル(電話線のもうちょっと高級なやつのようなものだ)であり、ハブを中心としたスター型の結合になっている。

さて、遠い昔はこのEthernetの10MBpsという速度はまるで使い切れないほど高速なように思えた物である。ところがコンピュータに関わる数字というのは対数規模で増加していく。CPUの処理能力が当時から何桁あがったかわからないくらいだし、(思えば初代のPC-9801は5MHzのクロックで動いたのだ)パソコンに搭載されたハードディスクという物に初めてお目にかかったとき、その容量は20MBだったが、私のパソコンにはいまや4GBのハードディスクがついている。そしてコンピューターはLANで接続されるのがあたりまえになった。こういう時代になるともはや10Mbpsで誰も「これで安泰」とは言っていられない。100Mbps、はてにはGigaBit Etherなどというものまで聞こえてくる始末である。ここらへんの規格については、細かくフォローしていないので特に述べることができない。

 

さて、このMac Layerで、すでに或程度の衝突だのなんだののコントロールが行われるわけであるが、となれば伝送するデータのフレーム(それこそ枠のようなものだ)の定義が必要になる。以下にその例を示そう。(内容説明は参考文献5による)

それぞれのフィールドの説明は以下の通りである。

PA:Preamble, プリアンブル。同期確立のために使用する一定のビットパターン

SFD:Start Frame Delimiter、フレーム開始デリミタ。パターンは10101011

DA:Destination Address。6バイトだが、最初の2bitsが特殊な意味を持つ。

SA:Source Address。内容はDestination addressと同じ。

LEN:データの長さ

Data +Pad:実際に転送するデータ。ただし最低でも46バイトの長さが必要でそれに満たない場合にはPadと呼ばれる上げ底というかダミーのデータが詰められる。

FCS:CRCを用いたフレーム検索シーケンス

さて、ここで説明したフレームというのはあくまでもMAC Sublayerでのフレームであることに注意する必要がある。物理層には別のフレームが存在しているし、上位のDLCでも別途のフレームが存在している。そしてそれぞれのフレームは、下位のフレームの中ではデータとして扱われる。この各層でのフレームが入れ子になっている様子、というのはもっと上位の層を説明するときに示す。

このフレームの中に現れ、時々耳にする言葉、MAC Addressについて説明しておこう。これはMacintoshのアドレスのことではなく、このMAC Layerで使用している番号のことである。上記のフレームの説明のなかでは、Source Address, Destination Addressに使われれているものがそれだ。これはEthernetであれば、インタフェースの製造時に全世界でユニーク(つまり世界で一つ)になるように設定される。ところが私にはこれが邪悪なことかそうでないのかわからないのだが、ソフトウェアで設定するものも存在するらしい。大抵の場合Ethernetのインターフェースにはその製造時に固有の番号が書き込まれているから問題はないのだが、今までの人生で一度だけソフトでこの番号を書き込むタイプのシステムを見たことがある。そこで設定されていた番号は私の背筋を凍らせるようなものであったが。

 

さて、MAC sub layerの話はこれくらいにして、次には、さらにデータリンク層の中にあるMac SubLayernの上位の層、Logical Link Layerについて述べる。

次の章


注釈

10Base-5:この文章公開当初から、2002年1月28日まで、この部分の記述で10Base2と10Base5を反対にして書いていた。お詫びして訂正いたします。

10BASE5:10mmのシールド付き同軸ケーブルを使った接続方式。Thick Ethernet

10Base2:太さ5mmの同軸ケーブルを使った接続方式。Thin Ethernet本文に戻る

未だにToken Ringはよく使われている;2003年5月23日に掲載されたインタビューを引用しておく。

「PARCの研究者、Bob Metcalfe氏だった。同氏は1973年、今日広範に普及しているイーサネットプロトコルの原型となる技術をメモに記した。」

「Metcalfe トークン・リングは多くの場所で使われていますが、IBMはここ数週間、社内でトークン・リングの利用をやめて、イーサネットに置き換える1億ドルの
プログラムを発表しています。これはトークン・リングに死亡宣告がなされたという印です。」

出典:http://www.zdnet.co.jp/news/0305/22/ne00_ethernet_2.html
ZDNet イーサネット誕生から30年、開発者が語る“ゴジラ”との戦い 本文に戻る