HOME > お役立ちコラム > 技術コラム > Ethernet(イーサネット)のアクセス制御方式「CDMA/CD方式」の仕組みを徹底解説

Ethernet(イーサネット)のアクセス制御方式「CDMA/CD方式」の仕組みを徹底解説

  • このエントリーをはてなブックマークに追加

前回2017年3月4日付の記事ではイーサネットのネットワークトポロジーについて解説しました。現在のイーサネットで主流となっているLANケーブルを用いたネットワークにおいてスター型が多く採用されていますが、その際に、複数のノードから信号が同時送信された場合、信号が衝突する可能性が高まることから、CDMA/CD方式を使ってアクセス制御を行い衝突を回避していることをお伝えしました。

今回は、イーサネットにおいてどの様な仕組みで衝突回避を行っているのか見ていき、CDMA/CD方式のアクセス制御方式について解説します。

アクセス制御方式とは?

はじめに、アクセス制御方式とは、ネットワークにおいて、信号の衝突を回避するために、信号の伝播を制御する方式のことです。


OSI参照モデル(筆者作成)

OSI参照モデルでは、データリンク層で規定されている部分で、パソコンやサーバーなどの通信機器である「ノード」間において、データ転送を行う際に適用されます。

ネットワーク上に複数のノードと接続されていた場合、同時に信号を送信するケースが考えられますが、その際に、一斉に信号が送信された場合、複数の信号が衝突する可能性が考えられます。そのため、これらの信号の衝突を回避するためにも、道路で言う交通整理の役割を果たすアクセス制御方式が規定されています。

アクセス制御方式で、イーサネットに使われている「CDMA/CD方式」や「トークンパッシング方式」などがあります。今回は、イーサネットで使われているCDMA/CD方式について具体的に見ていきます。

CDMA/CD方式で信号の衝突を回避

CDMA/CD方式は、Carrier Sense Multiple Access with Collision Detectionの略で、ネットワークにおいて空きがあれば信号の送信を行い、複数の信号に対して衝突を検知した場合はしばらく時間を置いてから送信を開始するというルールに基いて、通信を行っています。

具体的な判別方法としては、次の通りに規定されています。

1. ノードは信号を送信する前、接続されているネットワーク上において、他のノードが通信を行っていないか確認する
2. 他のノードが送信していなければ通信を開始する。
3. 他のノードが通信していた場合、それを検出して通知。
4. 他のノードが通信中の場合は、しばらく時間を置いてから再度送信を行う。

他のノードが通信を行っていた場合、待機後最大16回まで再送信を試みます。ただし、信号を伝播する速度には限りがありますので、仮に複数のノードにおいて空きが発生し通信を開始した場合でも、その通信中に他の信号が通信を行うことも考えられることから、場合によってはいつまでも通信ができないことも考えられます。

そのため、複数のノードから効率的に信号を送信を行うためにも、後述しているように、ケーブルの最大長とパケットの長さを考慮して通信速度が規定されます。

また、同軸ケーブルの場合、電線が1本であるため、1つのノードに対して送信と受信が同時にできないことから、必ず時間差を利用して送受信を行う半二重通信が採用されています。

一方で、LANケーブルなどのツイストペアケーブルや光ケーブルは、送信と受信で2本以上の電線を使用しているため、各ノードにおいて送信と受信が同時にできる全二重通信が採用されています。

衝突を確実に検知するための仕組み

CDMA/CD方式で確実に衝突を検出して回避するためにも、ケーブルの最大長とパケットの長さ、通信速度の関係性が重要になります。

例えば、イーサネットが当初採用していた同軸ケーブル「10BASE5」の場合、同軸ケーブルの最大長は2.5キロメートルですが、そこに信号を送信した場合、送信元のノードから送信先のノードまで伝播して戻ってくるまでの時間と遅延時間を考慮すると、50μ秒の時間を要します。これらを考慮して信号を伝播する際のパケット長を64bytesに規定することで、信号を確実に検知することが可能になります。一方で、パケット長が64bytesより小さいと、信号が検知できずに、送信先に届いてしまう可能性があります。


衝突が検出可能な範囲「コリジョンドメイン」(筆者作成)

衝突を検知が可能な範囲を「コリジョンドメイン」といいます。コリジョンドメインは、中継器であるリピーターであれば、それを超えて検知することが可能です。一方で、コリジョンドメインを分割したい場合は、ブリッジやスイッチ、ルーターで領域を分割する必要があります。

例えば、それぞれノードA、ノードB、ノードC、ノードDの4つのノードがあった場合、ノードAとB、ノードCとDをそれぞれ独立した形で通信を行いたい場合などコリジョンドメインを2つに分割できます。

「技術コラム」カテゴリの関連記事