なぜフレーム間ギャップが必要か
では,これらの規則が生じた原因を順番に見ていきましょう。最初はフレーム間のギャップです。
イーサネットは,連載の第1回で紹介したように,ALOHA(アロハ)システム*という複数の端末が同時に送受信する無線通信に端を発しています。簡単に言ってしまえば,無線通信で使っていた方法を1本の同軸ケーブルで実現したのがイーサネットです。
イーサネットでも無線のときと同様に事前に通信の制御はしないことにしました。そのため,いつどの端末が送信を始めるかはまったく予測できません。そこで,頻繁に衝突が発生して伝送効率が極端に悪くなっていた無線時代を反省して,効率よく通信するために考え出された制御方式がCSMA/CDです。
まずCSMA/CDの基本原理を確認します。モデルを単純化し,2台の端末が送受信する場合で考えてみましょう。ここでは,わかりやすくするために端末を人,同軸線を1本の土管に見立てて説明します。通信は,土管に話しかけることで相手にメッセージを伝えるイメージのモデルです。
まず,ぞれぞれの人は土管の中の音を常に聞いており,自分あてのメッセージが聞こえてこないか確かめながら,同時に自分が話をできる状態かを確認しています(図3[拡大表示])。そして,相手が話をしていない(通信していない)ことを確認できた場合にのみ,メッセージを叫んで土管に話しかける(通信する)ようにしています。もし,相手が話しかけていて土管の中に声が聞こえている場合には,それが終了して声が聞こえなくなったことを確認するまでは自分からメッセージを発しません。
このように,送信前にだれも使っていないことを確認することで基本的な衝突を回避する方式が,初期のイーサネットの基本となりました。これが,CSMA/CDのCS(Carrier Sense)の部分に相当します。逆に言うと,イーサネットの通信ではこの無音(無信号)の検出が必須となります。無音状態のギャップがないとイーサネットの通信そのものが成り立たないのです。
初期のギャップ最短長は4マイクロ秒
初期の10BASE5では,フレーム間のギャップの最短長は4マイクロ秒です。正確には,ギャップの検出としては「信号が途絶えてから(フレームの送信が完了してから)最小で4マイクロ秒,最大で9.6マイクロ秒の間に検出を再開すること」と規定しています。つまり,フレームの送信がとぎれた時点ですぐにギャップを検出し始めたとして,最短で4マイクロ秒後に次のフレームの検出が開始可能です。
なぜ,最短が4マイクロ秒となったかは,当時のトランシーバ*の電気特性が影響しています。当時のトランシーバの仕様は,「信号がなくなってから160ナノ秒以内に駆動を止め無信号状態にする」「この停止時間も含めて300ナノ~2マイクロ秒以内にアイドル状態(電圧変化がない無信号の中間電位の状態)になる」といったものでした。
逆に言えば,2マイクロ秒以内では電気的に不安定になってギャップが検出できない可能性がありました。そこで,電気的なばらつきも考慮して,その2倍の4マイクロ秒後から次のフレームの検出を開始するようにしたのです。
なぜ最小フレーム長は64バイトなのか
続いて,なぜイーサネットの最小フレーム長が64バイトなのかを見てみましょう。
通信を始める前に誰も使っていないことを確認しても,運悪くメッセージが途中で衝突することがありえます。土管に話した声は土管内を通る間に,相手にはわずかに遅れて聞こえます。このため,完全に同時でなくても,一方の声が届く前にもう一方が話し始めることがありえます。そうすると,二人の声は土管の中で衝突して何を話しているのか聞き取れなくなってしまいます(図4[拡大表示])。これは,声ではなく電気信号をやりとりするイーサネットでも同じです。
イーサネットでは,このような衝突が発生すると,すぐに検知してデータの送信を停止する*ようになっています。ALOHAシステムのような無線を使っていた時代には,自分の送出する電波に比べて,相手が送っている電波は極端に小さいのが一般的でした。このため,仮に衝突が発生した場合でも,信号が交ざったことをすぐに検出することは困難でした。
しかし,イーサネットでは同軸線上の電気信号でやりとりしています。このため,無線と違って相手の通信の影響をすぐに検出できます。二つの電気信号が衝突すると,正常な通信では起こりえない異常に大きな電圧が発生することになるため,簡単に検出できるのです。このように複数の端末が同時に送信することがCSMA/CDのMA(Multiple Access),衝突を検出することがCD(Collision Detection)に当たります。
信号が伝わったことを確認するために必要
信号が衝突したことを検出するのは,イーサネットにとって非常に重要です。衝突が発生して相手は正確に受け取れないでいるのに,送信側でそれを検出できずデータをきちんと再送しなければ,お互いの間に矛盾が発生し通信データの欠落が生じます。
とはいえ,イーサネットのフレームが伝送路のどこで衝突するかはわかりません。通信を開始してすぐに衝突するかもしれませんし,自分とは遠く離れた先のネットワーク上で衝突するかもしれません。衝突の有無を確実に検知するには,自分の通信がネットワークのすみずみに確実に伝わったことを確認する必要があります。
そのためには,自分の発したメッセージがネットワーク全体に伝わっている間に,ネットワーク上のだれも通信を開始しなかったことを確認できればよいことになります。最悪のケースで想定すると,ネットワークの一番端の端末で開始した通信が,反対側の端に伝わる直前にその端にある端末が通信を開始してしまった場合でも検知できればよいということです。つまり,ネットワークの両端の間での伝送にかかる2倍の時間を送信者が監視すれば,その通信では衝突が発生しなかったことが確認できます。
このためには,この最大往復伝搬に必要な遅延時間の間,送信者がそのフレームの送信を終了しなければいいことになります。そうすれば,フレームの送信中にネットワーク上で衝突したかどうかを確実に検知できます。もしフレームが最大往復伝搬に必要な遅延時間より短いと,衝突が発生したことを示す信号を受信したとしても,それが自分のフレームのものかどうかがわからなくなります。場合によっては,別のフレームの送信を始めていて,そのフレームが衝突したと誤って判断するかもしれません。
10BASE5のネットワークで64バイトに決定
初期のイーサネットでは導線(LANケーブル)の長さは最大2500m,リピータ*の数は4台以内と決まっていました。つまり,最大の構成は図5[拡大表示]のようになります。
この場合の往復伝搬の遅延時間は,最も長い場合で46.38マイクロ秒となります。内訳としては,ケーブルでの伝送遅延が約26マイクロ秒,リピータやトランシーバといった中継器とそれらの処理遅延が約20マイクロ秒です。
この46.38マイクロ秒は,10Mビット/秒の10BASE5では464ビット時間*に相当します。実際のイーサネットの仕様では,少し余裕をもってこの時間を512ビット(=64バイト)時間と決めました。これが最小フレーム構成を64バイトとしている理由です。もし,これよりも短いフレームで送ってしまうと,衝突が発生した場合に検出できない可能性が発生します。つまり,最小パケットの長さは10BASE5の最大ネットワーク構成と伝送速度で決まっているということです。
ネットワークの構成が想定している制限を超えても,実は同じ問題が発生する可能性があります。ネットワークを増設しているうちに,いつの間にか制限を超えていることに気づかないことがありました。このようなケースでは原因を特定することが非常に困難です。問題が発生するのが,端に近いもの同士の間という限られた環境でしか発生せず,しかも限られたタイミングの場合だけだからです。
では,最大フレーム長の制約はどうでしょう。実はこちらには最小フレーム長ほど明確な根拠はありません。1台の端末がネットワークを専有することがないように決めたものです。低コストを実現するために,当時としてはリーズナブルなメモリー・サイズで実現できる長さに制限したための制約です。
●筆者:岩崎 有平 アンリツ IPネットワーク事業推進部 副事業推進部長 ●筆者:福井 雅章 アンリツ システムソリューション事業部 第1ソリューション開発部 プロジェクトチーム課長 |