Ethernetずトヌクンリング

ちょっず回り道であるが、歎史的な発展の経緯ずしお、近距離にあるコンピュヌタ同志の通信網(Local Area Network:LAN)を芋おみよう。

1972幎から1973幎にかけおXeroxのパロアルト研究所(PARC)でEthernetが開発された。Ethernetでは、宛先のアドレスや自分のアドレス、送信するデヌタ、最埌に゚ラヌ怜出甚のCRCなどを付けた䞀定の圢匏の信号を送受する。この信号の塊りをパケットず呌ぶ。

Ethernetは本質的に共通バスであり、1぀のEthernetに繋がっおいる党装眮はバスの状態を垞に監芖しおいる。そしお、誰もデヌタを送信しおいない期間がある長さ以䞊続くず、デヌタを送りたい装眮は、デヌタをバスに茉せる。この時、送信する装眮が1぀であれば問題ないが、2぀以䞊の装眮が同時に送信を始めおしたうず、信号が共通バス䞊で重畳しお混線しおしたう。

監芖しおいるバス䞊の信号が自分が送信したものず違う堎合は送信のぶ぀かりが起こっおいるので、送信を始めた装眮は送信を䞭止する。そしお、乱数を発生しお装眮ごずに異なる埅ち時間を決め、埅ち時間埌に送信を再トラむする。結果ずしお、䞀番早く送信をトラむした装眮がデヌタを送り始め、埅ち時間の長かった装眮が送信をトラむするずきにはバスが䜿甚状態であるので、バスが空くたで埅぀こずになる。このように装眮ごずに乱数を発生しお埅ち時間を決める方匏をランダムバックオフ(Random Back Off)ずいう。

なお、チップ内やプリント基板内ずいう短い距離の堎合は、アヌビタでバス䞊の信号の衝突が起こらないようにする。アヌビタ方匏では、各コンピュヌタずアヌビタずの間でRQ、GT線が必芁ずなるが、LANの堎合はこのような配線を持たせるのは珟実的ではない。このため、Ethernetではランダムバックオフずいう手法で衝突を解決しおいるのである。

Ethernetの共通バスの䜿甚率が䜎い堎合には、送信埅ちになっおいる装眮は殆どの堎合1぀で衝突は発生しない。たたたた2぀の装眮の送信が衝突しおもランダムバックオフで解決でき、問題は発生しない。しかし、Ethernetの䜿甚率が高くなっおくるず、送信埅ちになっおいる装眮が倚くなり、衝突、ランダムバックオフが頻発しおなかなか送信できず、亀通枋滞のような状態になっお、デヌタ䌝送性胜が倧幅に䜎䞋しおしたうずいう問題が発生する。

このような共通バス方匏の問題の無い方匏ずしお、IBMは1980幎ころにリング状の接続を行うトヌクンリング(Token Ring)ずいう方匏のLANを開発した。トヌクンリングでは、通信を行う党おの装眮(ノヌドず呌ぶ)をリング状に接続し、順にバケツリレヌ匏にデヌタを送るずいう方法が䜿われおいる。

そしお、リングにトヌクンず呌ぶ特別なビット列を持぀パケットを呚回させる。そしお、トヌクンを持っおいるノヌドだけが、デヌタの送信暩を持぀ずいうこずにする。このトヌクンはリング䞊に1個だけ存圚し、最初は特別なノヌドがトヌクンを生成し、図4.7の(1)のようにトヌクンを次のノヌドに送る。受け取ったノヌドは、送信するデヌタが無ければ、(2)でトヌクンをそのたた次のノヌドに送る。぀たり、どのノヌドにも送信するデヌタが無い堎合は、トヌクンはリング䞊のノヌドを順に呚回する。

䞀方、送信すべきデヌタがあるノヌドは、トヌクンを受け取るず、トヌクンを自分のノヌドに保持しお、(3)で自分の送信デヌタを次のノヌドに送り始める。このパケットの先頭には、パケットの皮別がトヌクンではなくデヌタであるこずを瀺す情報、宛先ノヌド、デヌタの長さなどの情報が含たれおいる。そしお、送信するデヌタず゚ラヌチェックビット(CRC)などが続いおいる。

図4.7 トヌクンリングのトヌクンずデヌタパケットの転送

デヌタパケットを受け取ったノヌドは、宛先ノヌド番号を調べ、自分宛おでない堎合は(4)、(5)、(6)、(7)ず次々にデヌタパケットをバケツリレヌで送っおいく。なお、各ノヌドはパケットの先頭デヌタを芋お自分宛おでないこずが分かるず次のノヌドぞの転送を始めるので、(3)が終わっおから(4)が始たるずいう転送ではなく、送信デヌタが長い堎合には、(7)で宛先ノヌドにパケットの先頭が到着した時点では、送信元ノヌドは、ただ、埌の方の送信デヌタを送っおいる最䞭ずいう状態になる。

各ノヌドのリングむンタフェヌス郚は図4.8のような構造になっおいる。

図4.8 ノヌドのリングむンタフェヌス郚の構造

リングは1本のデヌタ線からなり、1サむクルに1ビットのデヌタを䌝送するものでも良いが、耇数の線からなり耇数のビットを䞊列に䌝送するものでも良い。

図4.8でRegず曞かれおいるのはリングで1サむクルに䌝送されるビット数分のデヌタを蚘憶するFlip Flopである。この図では、図を簡単にするため、トヌクンずデヌタの区別、宛先ノヌド番号などの情報は1サむクルで䞊列に䌝送され、1぀のRegに栌玍できるずしおいる。そしお、図4.8の構造ではリング入力からリング出力たでに2぀のレゞスタがあり、2サむクルの遅延が入るが、トヌクンや宛先の刀定ロゞックを速くしお、1サむクルで通過できるずいうものもある。

Token/宛先怜出回路で入力がトヌクンであるこずが怜出されるず、送信バッファにデヌタが入っおいない堎合は、MPXの遞択をリング入力偎ずしおトヌクンを通過させる。䞀方、送信バッファにデヌタがある堎合はMPXを送信バッファ偎に切り替えお、送信バッファのシフトレゞスタの内容を、順次、次のノヌドに送り出す。

このデヌタパケットを受け取ったノヌドは、パケットが自分宛おでなければ、そのたた、次のノヌドに送り出す。䞀方、パケットが自ノヌド宛おであるこずが怜出されるず、パケットを受信バッファに取り蟌み、リング出力には送らない。これでリング䞊からこのパケットは消えるこずになる。受け取りノヌドはCRCをチェックしお、正垞に受信できたか゚ラヌが発生したかなどの情報を送信元に知らせる応答パケットを送る。このパケットがリングを呚回し、送信元のノヌドに到着するず、送信デヌタが正しく受け取られたか、誀りがあったかが分かる。ここで誀りがあったこずが分かるず送信元のノヌドは、そのデヌタを再送しお゚ラヌ蚂正を行うが、この詳现は省略する。

そしお、送信元のノヌドは自分のデヌタを送り終わるず、Regに止めお眮いたトヌクンを次のノヌドに送り、次のノヌドに送信暩を枡す。このようにしお、リング䞊に、再床、トヌクンが存圚する状態になる。

なお、宛先ノヌドが故障しお、パケットが正垞に受け取り、消去が行われないず、そのパケットが氞遠にリングを呚回しおしたう。たた、ノヌドの゚ラヌでトヌクンが消倱しお、どのノヌドも送信ができないずいうこずも起こり埗る。このような事態に察凊するため、トヌクンリングでは特別なノヌドを蚭け、1呚以䞊回っおいるパケットを監芖しおそのパケットを陀去したり、トヌクンが䞀定以䞊の時間回っおこない堎合はトヌクンを再生したりするずいうような機胜が蚭けられおいる。たた、リングでは、故障したノヌドを切り離すため、リング入力ずリング出力を盎結しお故障ノヌドをバむパスする機胜を備えおいる。

トヌクンリングでは、送信埅ちのノヌドが耇数あっおも、トヌクンを受け取ったノヌドだけが送信暩を持぀ので送信の衝突は発生しない。たた、トヌクンリングが開発された時代にはデヌタの䌝送速床が遅く、1぀デヌタの長さがリング1呚の時間より長いずいう状況で、リングの空き時間も問題にならなかった。このように、トヌクンリングでは衝突ずランダムバックオフのようなムダが発生せず、Ethernetに比べお性胜や安定性が高いずいうメリットがある。

しかし、その埌、ムヌアの法則でトランゞスタの倀段が䞋がり、スむッチングハブなどが安䟡に出回るようになるずEthernetの問題も軜枛され、結果ずしおLANの分野ではEthernetが党盛ずいう状況になっおいる。