概要

IEEE802.11の無線LAN(Wi-Fi)は、1つのチャネルの電波をアクセスポイントも含めたステーションで使いまわしている半二重通信です。Wi-Fiステーションでの電波(伝送媒体)にアクセスする制御方式としてCSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)を利用しています。CSMA/CAの概要について見ていきましょう。

このページでは、イーサネット(IEEE802.3)や無線LAN(IEEE802.11)の規格の表現と同じようにPC/スマートフォンなどデータを送受信する機器を「ステーション(Station)」と表現します。ステーションとは、イーサネットやWi-Fiを利用するPC/スマートフォンなどのことと考えてください。

CSMA/CAとCSMA/CD

「CSMA/CA」は、初期の半二重イーサネットで利用していた「CSMA/CD」と一字違いです。CA(Collision Avoidance : 衝突回避)とCD(Collision Detection : 衝突検出)という違いです。

CSMA/CD

イーサネットの半二重通信で利用するCSMA/CDは、複数のステーションが同時にデータを送信(=ケーブルにデータを変調した電気信号を送り出す)してしまって、コリジョンが発生することを見越した制御を行います。なるべくコリジョンが起こらないように、CS(Carrier Sense : キャリアセンス)でケーブルが空いていることを確認してからデータを送信します。でも、たまたま複数のステーションが同じようなタイミングでキャリアセンスして、ケーブルが空いていると判断したら、コリジョンが発生してしまいます。コリジョンが発生すると、電気信号の電圧が正常な範囲から外れてしまいます。電気信号、つまり電流が流れるようにするために閉じた電気回路を形成しています。そのため、電気信号の送信元ステーションにもコリジョンが起こってしまった電気信号が流れてくるので「コリジョンを検出(Collision Detection)」できます。

コリジョンを検出したら、ランダムなバックオフ時間待機したあとに、再度、キャリアセンスからやり直します。CSMA/CDは、「だいたいはコリジョンなんて起こらないけど、たまにコリジョンが発生することがあるよね。じゃ、そのときは再送しましょう」といったコンセプトです。

CSMA/CA

一方、Wi-FiのCSMA/CAはコリジョンができる限り起こらないようにするように制御します。その理由は、Wi-Fiの通信ではコリジョンを検出できないからです。Wi-Fiの通信は電波で行います。電波の発信元は、原理的にその電波を受信できません。電波は発信元から空間中に拡散されていくからです。コリジョンが起こってしまって電波に変調したデータが壊れてしまっても、送信元のステーションはそのことがわかりません。コリジョンを検出できないから、「できる限りコリジョンが起こらないようにしよう(Collision Avoidance)」というのがCSMA/CAのコンセプトです。

制御方式CSMA/CACSMA/CD
利用している規格IEEE802.11 無線LAN(Wi-Fi)IEEE802.3 イーサネット
コンセプトコリジョンを検出できないから、なるべくコリジョンが起こらないようにしようコリジョンが起こってしまったら再送しよう
表 CSMA/CAとCSMA/CD

ACKとCSMA/CAの要素

Wi-Fiのデータは必ず確認する

CSMA/CAでコリジョンを回避するといっても、100%確実にコリジョンを回避できるわけではありません。コリジョンが起こってしまう可能性はあります。コリジョンが起こると、データは壊れてしまうことになります。

そこで、Wi-Fiのデータは必ず確認します。Wi-Fiでデータを受信すると、受信したステーションはFCSでフレームをチェックします。FCSでフレームをチェックできたら、送信元ステーションにAcknowledgement(ACK)フレームを返して、正しくデータを受信したことを通知します。

図 Wi-FiのデータはACKで確認
図 Wi-FiのデータはACKで確認
ACKフレームで確認するのは、ユニキャストフレームのみです。ブロードキャスト/マルチキャストフレームはACKフレームで確認しません。

CSMA/CAの要素

データの受信確認のためのACKフレームに加えて、CSMA/CAの制御のポイントは、「どうやってコリジョンが起こらないようにするか」ということです。そのためには、以下の要素があります。

  • 物理キャリアセンス(Physical Carrier Sense)
  • バーチャルキャリアセンス(Virtual Carrier Sense)
  • 疑似ランダムバックオフタイマ(Pseudo-random backoff timer)
  • フレーム間スペース(Inter Frame Spaces)

キャリアセンス

コリジョンを回避するために、まず、大事なのはキャリアセンスです。他のステーションがデータを送信中で電波を利用しているかどうかをチェックすることです。キャリアセンスには、物理キャリアセンスとバーチャルキャリアセンスがあります。

物理キャリアセンスは、実際に電波を聴いて他のステーションが電波を利用中かどうかチェックします。そして、バーチャルキャリアセンスは、データを送信するときにACKの受信も含めたデータの送信完了までにかかる時間を通知して、その間、電波の利用を予約します。

こうしたキャリアセンスで他のステーションが電波を利用中であることがわかれば、送信を待機することでコリジョンを回避します。

疑似ランダムバックオフタイマ

ただ、キャリアセンスだけでは確実にコリジョンを回避できるとは限りません。同時に複数のステーションがキャリアセンスで、電波が空いていると判断する可能性があるからです。そこで、さらに擬似ランダムバックオフタイマ(以下、バックオフ)を利用します。

キャリアセンスで電波が空いていると判断しても、すぐにデータの送信を開始せずに少し待機します。この待機時間がバックオフです。バックオフは、一定の範囲内のランダムな時間です。同時に複数のステーションがキャリアセンスを行って、電波が空いていると思っても、バックオフでデータ送信を開始するタイミングをずらします。これにより、コリジョンの発生を回避します。

フレーム間スペース

フレーム間スペース(Inter Frame Spaces 以下、IFS)で、連続して送信するデータ(フレーム)の間の間隔を決めています。IFSにはいろんな種類がありますが、DIFSとSIFSがメインです。IFSは次に許可されるWi-Fiフレームという側面があり、IFSによって特定のトラフィックを優先するQoS制御も可能です。

DCF(Distributed Coordination Function)

こうしたCSMA/CAの制御は、DCF(Distributed Coordination Function)として定義されています。Wi-Fiの通信では、一元的に電波の利用を管理するようなステーションは存在していません。アクセスポイントも含めて、1つのチャネルの電波を複数のステーションで分散して、なるべく公平に利用できるようにするための機能という意味です。