CSMA/CA(シーエスマエーシーエー)とは | 意味や読み方など丁寧でわかりやすい用語解説
CSMA/CA(シーエスマエーシーエー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
搬送波感知多重アクセス/衝突回避 (ハンソウハカンチタジュウアクセス/コウショウカイヒ)
英語表記
CSMA/CA (シーエスマエーシーエー)
用語解説
CSMA/CAは、共有媒体上で複数のデバイスが同時に通信しようとした際に発生する衝突を未然に防ぎ、データ通信を円滑に行うためのプロトコルである。主に無線LAN(Wi-Fi)などの無線通信環境で利用される。無線通信では、有線通信とは異なり、送信中に自局以外の送信による衝突を正確に検出することが物理的に困難であるため、衝突を「回避する」アプローチが採用されている。このプロトコルは、Carrier Sense Multiple Access with Collision Avoidanceの略であり、キャリア(搬送波)をセンス(検知)し、マルチプルアクセス(多重アクセス)環境でコリジョン(衝突)をアボイダンス(回避)するという意味を持つ。
無線LAN環境では、電波という共有の媒体を使って通信を行うため、複数の無線デバイスが同時にデータを送信しようとすると、電波が干渉し合い、データが破損する「衝突」が発生する可能性がある。衝突が発生すると、送信されたデータは失われ、再送が必要となるため、通信効率が著しく低下する。CSMA/CAは、このような問題を解決し、無線チャネルを複数のデバイスが公平かつ効率的に利用できるように設計されている。
CSMA/CAの動作は、複数のステップとメカニズムによって構成されている。まず、データ送信を希望するデバイスは、送信を開始する前に、必ず共有媒体であるチャネルが現在使用中であるかどうかを「キャリアセンス」によって確認する。キャリアセンスには二つの方法がある。一つは「物理キャリアセンス」で、実際に電波を検知し、チャネル上に他の信号が存在するかどうかを確認する。もう一つは「仮想キャリアセンス」で、ネットワーク上に流れる制御フレーム(例えばRTS/CTSフレームなど)に含まれる「duration(デュレーション)」フィールドの値を解析し、チャネルが将来いつまで占有されるかを予測する。この予測された占有時間は「NAV(Network Allocation Vector)」と呼ばれ、NAVが示す期間中は、他のデバイスは送信を控え、チャネルが空くのを待つ。
もしチャネルが空いていると判断されても、デバイスはすぐにデータ送信を開始するわけではない。これは、複数のデバイスが同時に「チャネルが空いた」と判断し、一斉に送信を開始することで、結果的に衝突が発生する可能性を低減するためである。この目的のために、「ランダムバックオフタイマー」が使用される。チャネルが空いたことを確認した後、各デバイスはランダムな待機時間(バックオフ時間)を設定し、その時間が経過するまで送信を控える。このランダム性により、複数のデバイスが同時に送信開始するのを避けることができる。もしバックオフ時間のカウントダウン中にチャネルが使用中になった場合、デバイスはカウントダウンを一時停止し、チャネルが再び空いたときに残りの時間からカウントダウンを再開する。
さらに、CSMA/CAでは、異なる種類のフレームに対して異なる待機時間を設定する「IFS(InterFrame Space)」という仕組みが導入されている。例えば、データフレームや管理フレームを送信する前には比較的長い「DIFS(Distributed InterFrame Space)」を待機する。一方、データ受信後の肯定応答フレーム(ACKフレーム)や、RTS/CTSフレームの応答であるCTSフレームのように、迅速な応答が求められるフレームを送信する前には、より短い「SIFS(Short InterFrame Space)」を待機する。これにより、制御フレームや応答フレームが通常のデータフレームよりも優先的に送信され、通信の効率と信頼性が向上する。
CSMA/CAの重要な機能の一つに「RTS/CTS(Request To Send / Clear To Send)」メカニズムがある。これは、主に「隠れ端末問題(Hidden Node Problem)」と呼ばれる状況を解決するために用いられる。隠れ端末問題とは、ある端末Aがアクセスポイント(AP)と通信している最中に、APの電波範囲内にある別の端末Cが、端末Aの電波範囲外にいるため端末Aの送信を感知できず、APに送信を開始してしまい、APで衝突が発生する現象である。RTS/CTSメカニズムでは、データ送信を希望する端末はまず、APに対して「RTSフレーム」を送信し、送信したいデータのサイズと占有したいチャネルの時間を通知する。APはRTSを受信すると、全ての周囲の端末に向けて「CTSフレーム」をブロードキャストする。このCTSフレームには、RTSで通知されたチャネルの占有時間が含まれており、CTSを受信したすべての端末は、その時間中はチャネルの送信を控えるようにNAVを更新する。これにより、RTSを送信した端末とは直接通信できない隠れた位置にいる端末も、APからのCTSを受信することでチャネルが占有されていることを知り、送信を抑制できるため、衝突を回避することが可能になる。ただし、RTS/CTSフレームの交換自体がオーバーヘッドとなるため、一般的には小さなデータフレームの送信時には利用されず、大きなデータフレームを送信する際に有効となるよう設定されることが多い。
データの信頼性を高めるため、CSMA/CAでは「ACK(Acknowledgement)」による肯定応答が必須である。データフレームを送信した側は、受信側からのACKフレームが一定時間内に届くことを期待する。もしACKが返ってこない場合、送信元はデータが正しく受信されなかったと判断し、データの再送を行う。このメカニズムにより、衝突によってデータが失われた場合でも、確実にデータの再送が行われ、信頼性の高い通信が保証される。
CSMA/CAは、無線LANのような共有媒体環境において、衝突の発生を最小限に抑え、限られたリソースを複数のデバイスが効率的に利用できるようにするための、非常に洗練されたプロトコルである。有線LANで用いられるCSMA/CD(Collision Detection)が衝突を「検出」してから再送するのに対し、CSMA/CAは衝突を「回避」することに重点を置く点が最大の特徴であり、無線通信の特性に合わせた設計がなされている。これらの仕組みの組み合わせにより、現代の無線LAN環境は安定した通信を提供している。