CSMA/CA

 CSMA/CAは、「Carrier Sense Multiple Access with Collision Avoidance」の略で、搬送波感知多重アクセス/衝突回避方式とも呼ばれます。 無線LANの規格であるIEEE802.11a、IEEE802.11b、IEEE802.11g、 IEEE802.11nで採用されています。

 CSMA/CAは、IEEE 802.3(Ethernet)で採用されているCSMA/CD方式に類似したプロトコルです。名前だけ見ると最後の一文字が、「D」と「A」が違うだけです。

 CSMA/CD方式では、衝突を検出(Collision Detection)しますが、CSMA/CAでは、衝突を回避(Collision Avoidance)します。

それでは、CSMA/CAの仕組みを簡単に説明していきます。

 CSMA/CDと同様に、通信を開始する前に無線LANでは電波に、現在通信をしているホストがいないかどうかを確認します。これが「Carrier Sence」です。

 複数のホストが同じ伝送媒体(無線)を共有し、現在、他のホストが通信を行っていない場合に通信を開始します。これが「Multiple Access」です。

 「Carrier Sence」によって、通信できる状態と判断できても、CSMA/CAの場合、ランダムな時間を待機してからデータを送信するようになっています。

 ここが、CSMA/CDとの違いです。CSMA/CDであれば、伝送媒体(有線)に送信した信号が、他の信号と衝突すると影響を受けるので、データの衝突(Collision)を検出することができます。

しかし、無線LANでは、送信される信号が非常に弱いので、衝突の検出を行うことが困難です。

 信頼できる衝突を検出する手段がないので、データ送信の衝突確率を小さくする為に、ランダムな待ち時間(バックオフ時間)を各ホストが待機してからデータを送信するようになっています。

下の図は、「CSMA/CA with Ack」のフレームの送信手順です。

電波上で、信号が流れていないと判断するとランダムな時間を待ち、データの伝送を開始します。

 そして、アクセスポイントからホストにACKが送信されます。このACKを受け取るとランダムな時間を待機し、データを伝送します。

 無線では、フレームの衝突を検出できない為、このようにして、衝突を回避 (Carrier Avoidance) しています。 回避アルゴリズムにはいくつか種類があり、「CSMA/CA with Ack」や「CSMA/CA with RTS/CTS」などがあります。

CSMA/CA with RTS/CTS

無線LANでは、有線LANと異なり、他のホストが通信を行っていることが検知できない問題があります。

 あるホストがアクセスポイントと通信を行っている電波が他のホストに届かない場合があります。ホスト間の距離が離れている場合に発生します。

また、下の図を見て下さい。電波を通しにくい遮蔽物がある場合にもこの問題が発生します。

これが、「隠れ端末」の問題です。

 衝突検知「Carrier Sence」により他のホストが通信していることを検知することができない為、互いにフレームを送出してしまうことになります。

 その結果、フレームの衝突が発生し、スループットが低下してしまいます。この問題を回避する方法にRTS/CTSを用いる方法があります。

下の図は、「CSMA/CA with RTS/CTS」による通信制御です。

 「CSMA/CA with RTS/CTS」では、同時にデータが送信されないように、データを送信したいホストが送信の許可(RTS:Request To Send)を要求します。

要求を受け取ると、アクセスポイントは、データの送信を許可する (CTS:Clear to Send) を送信します。

RTSを要求したホストは、CTSを受信するとデータの送信を始めます。

 データ送信を要求していない他のホストは、現在、別のホストに送信権があり、ACKを受信するまで、自分が送信できないと解釈します。このやり取りは、RTS信号やCTS信号のやりとりが発生する為、「CSMA/CA with Ack」に比べてスループットが低下します。