CSMA/CDとCSMA/CAの違い、無線LANでのさらなる衝突回避

イーサネットでは伝送媒体アクセス制御方式としてCSMA/CD(Carrier Sense Multiple Access with Collision Detection:搬送波感知多重アクセス/衝突検出方式)が用いられる。

手順は名称通りで

  • データの送信を開始する時に受信作業を行い、まず他に通信が行われていないか確認する。
  • 多数のクライアントが一つの回線を利用しているので、他者が通信していなければ通信を行う。
  • 自分の通信中に他者が通信を行ったため衝突が生じた場合には、通信を止めて乱数時間後に再度送信を行う。

ただし、最近では全二重で通信が行われているため、CSMA/CDでの制御はほとんど行われていない。

無線LANIEEE802.11)では、CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance:搬送波感知多重アクセス/衝突回避方式)が用いられる。

こちらも手順は名称通り。

  • データの送信を開始する時に受信作業を行い、まず他に通信が行われていないか確認する。
  • 多数のクライアント(無線子機)が一つの回線を利用しているので、他者が通信していなければ通信を行う。
  • しかし、他者が通信している場合、その通信が終わったときに自分が直ぐ通信を開始すれば、同じように通信を行おうとしている他のクライアントとの衝突が生じる可能性が高い。そのため、他者の通信が終了して乱数時間の待ち時間を取り、その後に通信を開始する。なお、待ち時間の間に他者が通信を開始した場合にはやはり通信終了まで待つ。しかし永久に送信できないことを避けるために、待ち時間は徐々に短縮する。

無線LANではこのような「待ち時間」が原理的に存在するためオーバーヘッドとなってしまい、通信効率が上がらない。

CSMA/CDとの最大の違いは、CSMA/CDにおいては送信中に衝突を検出し、もし検出したら即座に通信を中止し待ち時間を挿入するのに対し、CSMA/CAは送信の前に待ち時間を毎回挿入する点である。 無線通信など信頼できる衝突検出の手段がない伝送路では、CSMA/CAが使用される。
wikipedia:CSMA/CA

また、無線子機は、無線親機との当初の通信の返答にACK信号を受信することで通信が行えたと判断する(ACK制御方式)。
ただし、無線子機同士が例えば離れていて互いの電波が受信できないと、衝突が生じて通信が行えない場合もある(「隠れ端末問題」)。これを回避するためにRTS/CTS制御方式がオプションとして設けられている。(RTS/CTS:Request To Send/Clear To Send)

  • 他者が通信していない。
  • 乱数時間待機後に無線子機がRTS信号を送信する。
  • 無線親機がその返答としてCTS信号を送信する。
  • RTS信号を送信した無線子機がCTS信号を受信すると、通信を開始する。
  • その返答にACK信号を受信することで通信を行えたと判断する。

RTS信号を送信していない無線子機もCTS信号は受信できる。CTS信号を受信したと言うことは、当然ながら他の無線子機が通信を行っているので、待機を行う。これにより無線子機同士が互いの電波を受信できなくても通信の衝突を抑制できる。
ただし、このRTS/CTS制御方式を用いると、さらなるオーバーヘッドが生じるために通信速度は低下する。

参考:
http://itpro.nikkeibp.co.jp/prembk/NCC/NETPOINT/20050117/154824/
802.11高速無線LAN教科書 - 守倉正博, 久保田周治 - Google ブックス

ちなみに、有線だがAppleTalkもCSMA/CAを使っているとのこと。

2014 徹底解説ネットワークスペシャリスト本試験問題 (本試験問題シリーズ)

2014 徹底解説ネットワークスペシャリスト本試験問題 (本試験問題シリーズ)