Advent Calendar 2020: ソフトウェア無線
注意:LimeSDR などのソフトウェア無線は技術基準適合証明(通称,技適)を受けていないため,これらの機器を日本国内で無線機として利用することは電波法により禁じられています。無線機として使用するためには,実験試験局免許を取得するか電波暗室・シールドボックスなどの設備を使用する必要があります。または,アンテナの代わりにケーブルとアッテネータを用い有線接続をし電波を発しないようにすることで,無線通信ではなく有線通信とはなりますが実験することができます(この場合も電波が漏れないように注意してください)。このページを参照される方は,実験される国や地域の法令などを遵守するようにご注意ください。また,実験等はご自身の責任でお願いします。
Day 9: プロトコル設計(データリンク層)
今回の実験では同一の周波数を使っていますが同軸ケーブルで繋いでいるため,送受信の信号が干渉せず実質全二重となっています。また,1対1で接続しているため,多元接続(Multiple Access)についても考える必要はないのですが,プロトコル設計の勉強としてCSMA/CAを想定します。そのため,昨日復習した IEEE 802.11 を参考にします。
まずデータリンク層の設計を行います。昨日復習した IEEE 802.11 のデータリンク層のフレームは以下のようになっています。
+---------+----------+------------+------------+------------+----------+---...---+--------+
| 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
ここで,Frame controlは接続要求やビーコン,RTS/CTS,データや確認応答(ACK: Acknowledgement)に使っているので,今回設計するプロトコルでも採用します。ただ16ビット分も複雑な処理を実装しないので,8ビット(1バイト)とします。
次のフィールドの Duration ですが,CSMA/CA によりこのフレームを受信した他の端末が送信を待つ(コンテンションを防ぐ)ために,このフレームの想定長を入力します。今回設計するプロトコルではシンボル数を記述することとします。
次にMACアドレスですが,IEEE 802.11では無線APの先にルータなどの有線機器や他の無線機器が接続することを想定していたため,3つまたは4つのアドレスを持つことになっていますが,今回設計するプロトコルでは無線端末同士の通信として,宛先と送信元の2つのアドレスを持つようにします。また,MACアドレスは6バイト(48ビット)で低速通信では少々長いので,今回は4バイトずつにします。
Sequence numberは再送に必要なため,今回再送制御を実装するかは現時点ではわかりませんが念のため入れておきます。
最後にフレームのチェックサムはEthernetやIEEE 802.11と同様にCRC32の32ビット(4バイト)とします。
つまりデータリンク層のフレーム構成は以下のようになります。
+-------+---------+-------------+-------------+----------+---...---+-------+
| Frame | Symbols | Destination | Source | Sequence | Data | FCS |
| type | | address | address | number | | |
+-------+---------+-------------+-------------+----------+---...---+-------+
1 byte 2 bytes 4 bytes 4 bytes 2 bytes 4 bytes
今日のまとめと明日の予定
今日はデータリンク層のフレーム設計を行いました。明日は物理層の設計を行おうと思います。