panda's tech note

Advent Calendar 2020: ソフトウェア無線

注意LimeSDR などのソフトウェア無線は技術基準適合証明(通称,技適)を受けていないため,これらの機器を日本国内で無線機として利用することは電波法により禁じられています。無線機として使用するためには,実験試験局免許を取得するか電波暗室・シールドボックスなどの設備を使用する必要があります。または,アンテナの代わりにケーブルとアッテネータを用い有線接続をし電波を発しないようにすることで,無線通信ではなく有線通信とはなりますが実験することができます(この場合も電波が漏れないように注意してください)。このページを参照される方は,実験される国や地域の法令などを遵守するようにご注意ください。また,実験等はご自身の責任でお願いします。

Day 8: プロトコル設計(復習)

5日目から7日目にかけてBPSK変調方式を使った送受信を取り扱ってきました。今日は双方向通信を実現するための簡易的なプロトコル設計をしていきます。まずは,既存のプロトコルを復習します。

通信プロトコルは通常物理層とデータリンク層のプロトコルについて考える必要があります。データリンク層は物理層とのインターフェイスであるMAC (Media Access Control) サブレイヤーとIPなどの上位レイヤとのインターフェイスである Link Control Layer (LLC) サブレイヤーに分解できます。

リンクレイヤーのプロトコルとしては Ethernet が有名です。Ethernet (または IEEE 802.3) のフレーム構造は以下の通りです。

+-------------+-------------+-----+---...---+--------+
| Destination | Source      | Len | Data    | FCS    |
| MAC address | MAC address |     |         |        |
+-------------+-------------+-----+---...---+--------+
 6 bytes       6 bytes       2 bytes         4 bytes

先頭の宛先と送信元のMACアドレスにより,通信の端点を指定します。その後ろにフレーム長とデータ,チェックサムが続きます。Ethernet II ではフレーム長のフィールドにフレームのタイプが入り,物理レイヤの情報によりフレームの切れ目を判別していましたが,フレーム長は上位レイヤのプロトコルの処理にも有用であるため,IEEE 802.3 ではフレーム長がフレームの中に含まれるようになりました。

物理層でフレームの終了を通知するために,例えば,100BASE-T/TXでは物理層に4B/5Bエンコーディング(00001111など,シンボルの周期(クロック)の判別ができないようなパターンを除くために,4ビットのデータを5ビットで符号化する方式)を採用し,4ビットのデータ符号化に使わないビットパターンでフレームの終了信号を表しています。

Ethernet の物理層では,このフレームの前に7バイトのプリアンブルと1バイトの Start Frame Delimiter (SFD) が付与されます。また,フレーム間にフレーム間ギャップとして12バイト分の空白が付与されます。具体的には,Ethernet のプリアンブルは 10 が交互に現れるビットパターンで,SFD は 10101011 と最後のビットが 1 となります。

無線LANの規格である IEEE 802.11 では,データリンク層は以下のようにフレームの再送制御やアクセスポイントでの無線フレームの中継を行うため,Ethernet よりもヘッダに多くの情報を含みます。DurationはCSMA/CAの衝突回避に使用され,Sequence numberはデータリンク層における再送 (ARQ: Automatic Repeat Request) に使います。

+---------+----------+------------+------------+------------+----------+---...---+--------+
| Frame   | Duration | Address 1  | Address 2  | Address 3  | Sequence | Data    | FCS    |
| control |          |            |            |            | number   |         |        |
+---------+----------+------------+------------+------------+----------+---...---+--------+
 2 bytes   2 bytes    6 bytes      6 bytes      6 bytes      2 bytes              4 bytes

Address 1, 2, 3 は Ethernet における宛先.送信元MACアドレスの他に,BSSID (Basic Service Set ID) が含まれます。端末からアクセスポイント,アクセスポイントから端末の向きによって Address 1, 2, 3に入るアドレスが変わります。アクセスポイントから端末への通信の場合,それぞれ順に宛先MACアドレス(無線端末),BSSID(アクセスポイント),送信元MACアドレス(ルータや同一セグメント内の他の端末)となります。端末からアクセスポイントの場合,それぞれ順にBSSID(アクセスポイント),送信元MACアドレス(無線端末),宛先MACアドレス(ルータや同一セグメント内の他の端末)となります。つまり,Address 1には無線区間の宛先,Address 2には無線区間の送信元,Address 3には無線通信に関与しない他の端末のMACアドレスが入ります。なお,このことからもわかるとおり,有線端末から2つの無線基地局を介して他の有線端末に通信する場合は,MACアドレスがもう1つ必要になります。このような場合は Independent BSS (IBSS) モードと呼ばれ,Sequence number の後ろに4つめのアドレスが付与されます。

IEEE 802.11 の物理層は Physical Layer Convergence Protocol (PLCP) と呼ばれ,上述のデータリンク層の情報の前に PLCP プリアンブルと PLCP ヘッダが付与されます。データリンク層のフレームは物理層であるPLCPのペイロードにあたる部分であるので PLCP Service Data Unit (PSDU) とも呼ばれます。また,PLCPヘッダとPSDUと合わせたものを PLCP Protocol Data Unit (PPDU) とも呼びます。PLCPヘッダにはPSDUの変調方式やビットレートなどの情報が含まれます。

今日のまとめと明日の予定

EthernetとIEEE 802.11の物理層・データリンク層のフレーム構造を確認しました。明日は簡単なプロトコル設計を行います。