ソフトウェア無線の実験系でIPパケットを通す方法とは?
Table of Contents
ドルフィンシステムのIP-SDRソフトウェアを使用すれば、
- USRPなどのソフトウェア無線機で、
- バイナリ送信もしくは送受信が出来ている環境の上に、
- ドルフィンシステム製IP-SDRソフトウェアを追加してインストールすることで、
- 簡単にIPパケットの送受信環境を構築すること
が出来ます。
今計画している実験系にちょっと味付けすればデモ効果抜群のシステムが出来上がるかもしれません。
※ ソフトウェア無線機で構築した無線通信上にイーサネットフレームを転送することでIPネットワークを構築する技術をEthernet over SDRと呼んでおり、このページでは”Ethernet over SDR”を実現するドルフィンシステム製IP-SDRソフトウェアを紹介しています。
IP-SDRソフトウェアで実現可能なこと
→双方向通信可能な通信実験系でIPパケットを流すことが出来ます。
SDRを通信路としてIPパケットを流すことが出来ますので、アプリケーションは問いません。Youtubeなども視聴可能です。
→片方向だけの通信系なら、UDPを通すことが出来ます。
片方向でもWebカメラとVLCメディアプレーヤーを使えば、H.264動画を流すことが出来ます
→もちろん一般的なスピードテストアプリやサイトを使用することも可能。
→「通信実験系の上でAndroidスマホを使用したセンサーアプリケーションを動かし、双方向にデータ収集と指示を送りたい」というようなややこしい案件もレイヤを分けて開発できるので面倒が起こりません。
以上のようにSDRを使用した通信の幅が広がります。
ではどういうものか、早速見てみましょう。
IP-SDRの構成例
適用前の実験系
例えば、既に下図のような片方向の無線通信が出来る実験系が実現しているものとします。
送信側PCは、バイナリファイルや生成したPNを変調してUSRPで送信しているとします。
受信側PCは、USRPが復調したデータを受信し、PN信号からBER計測をしたりバイナリデータをファイルに保存しているとします。
IP-SDR適用前のSDR実験系
ここまで出来ている実験系であれば、IP-SDRソフトウェアを適用できます。
IP-SDRソフトウェアを適用する
まず下図のように送信側のPCソフトを改造します。
現在のUSRP制御用ソフトは、バイナリファイルを読み込むかPNを生成して送信していますが、送信データを外部から入力できるように改造します。
具体的には、UDPポートを開きUDPで来たデータを変調しUSRPで送信するようにします。
次に、受信側のソフトも改造します。受信し復調したデータをUDPで指定したアドレスに送信するように改造します。
Ethernet over SDRを適用する
IP-SDRソフトウェアを稼働させる
改造が完了したら、送信側PCと受信側PCにIP-SDRソフトウェアをインストールし実行します。
IP-SDRソフトウェアは、Ethernet over SDRを実現するWindows上で動作するソフトウェアです。
送信側PC
IP-SDRソフトウェアはネットワーク上に流れているイーサネットフレームをキャプチャし、そのデータを送信側PCのUSRP制御ソフトにUDPで送信します。
送信側PCのUSRP制御ソフトは、受信したデータをUSRPに送信します。
受信側PC
受信側のPCのUSRP制御用ソフトは、USRPが復調したバイナリデータをUDPでIP-SDRソフトウェアに送信します。すると受信側のIP-SDRソフトウェアがUDPで受信したデータをネットワークに流します。
送信側のネットワークのイーサネットフレームが受信側に転送され、あたかもイーサネットハブで接続されたかのような透過的なネットワークが構成できます。
IP-SDRソフトウェアで実現可能な事と動作原理
片方向?双方向?
上記のように片方向の無線通信であれば、片方向のUDP接続が実現できます。
双方向の無線通信であれば、双方向のTCP/IP接続が実現できます。
対応プロトコルは?
IP-SDRは、L2(イーサネットフレーム)を転送するため、上位レイヤのプロトコルはすべて転送されます。
つまりTCP/IP、ping、iperf、ネットワーク共有などすべてです。
転送するイーサネットフレーム(最大1500バイト)
TCP/IPパケットやUDPパケットに変換して転送しているということでしょうか?
通常のネットワークプログラミングはTCP/IPやUDPのポートを開いて待機するというソケット通信プログラミングになるのですが、こうなると対応できるプロトコルがTCPやUDPに限定されてしまいます。
また事前に使用するアプリケーション毎にポートを開いて待機するなど個々のアプリケーション毎の対応が必要になります。
これらすべての面倒事を省略するためにIP-SDRソフトウェアはソケット通信はせずに、イーサネットデバイスを直接開いて生のデータを送受信しています。
生のデータというのはイーサネットフレームです。
イーサネットデバイスを開いて受信を開始すると、ネットワーク上を行き来しているイーサネットフレームのバイナリを受信することが出来ます。
これをそのままUSRPで相手側に転送し、相手側のIP-SDRソフトウェアがイーサネットデバイスに直接送信すると、相手側ネットワークにイーサネットフレームがそのまま転送されます。
イーサネットフレームをそのまま転送するのでイーサネット上で通信が行われているTCP/IPやUDPもすべてが転送されます。
という訳でファイル共有でもなんでもかんでもイーサネット上を流れているデータであれば「通す」事が出来ます。
Windowsファイル共有も出来ますし、ネットワークのノードはAndroidでもiPhoneでも何でも良いのです。
IP-SDRソフトウェア-USRP-無線区間-USRP-IP-SDRソフトウェア
という接続が、あたかもイーサネットハブのごとく振る舞います。
OSに制限はある?
接続されているノードのOSを問わないのも特徴の一つです。(Win, MacOS, Linux, Android…)
再送制御はするの?
IP-SDRソフトウェア自体で再送制御は行いません。ノードがTCP/IP接続を行えば、再送制御はTCPで行われます。
pingは通る?
はい、通ります。
IP-SDRソフトウェアは、ネットワーク上に流れているイーサネット上のARPコマンドをキャプチャし、どのネットワークにどの端末(MACアドレス)が存在しているか認識します。このMACアドレスを識別してイーサネットフレームの転送先ネットワークを決定しますので、pingも通ります。
また、この動作原理のため無関係なネットワークに不必要なデータが流れることはありません。
無線の方式に制限はある?
特に制限はありません。
USRPでなくても、ソフトウェア無線機ではなくても動作します。
原則的には、
- 双方向通信(TCP/IP)
- 片方向通信(UDP/IP)
- バイナリ送受信
が出来る通信方式であれば動作します。
ただし極端にスループットが遅い方式の場合、TCP等の上位レイヤーで際限無く再送制御が行われ実質的に通信路が確立できない恐れはあります。
IP-SDRソフトウェアの動作イメージ
Windows上で動作するWin32コマンドラインアプリ。
Windows7, Windows10で動作確認済。
ネットワーク構成例
IP-SDRソフトウェアはネットワーク間の接続も柔軟に構成することが出来ます。
1対1接続
無線通信部にて双方向にバイナリデータの通信が出来れば
Ethernet over SDRが実現可能
1対多接続
無線通信部が複数ユーザと双方向通信が出来れば、
複数ネットワークの接続が可能。
柔軟なネットワーク間の転送設定
ネットワーク間の接続構成を変更することが出来る。
IP-SDRソフトウェアの動作実績はあるの?
ございます。
周波数共用プロジェクトや海中無線プロジェクトで稼働いたしました。
販売しているの?
IP-SDRソフトウェア単体で販売しておりますが、下位レイヤー(USRPの通信路部分)との調整が必要になります。
そのためお客様の実験系の実装方法についてお話をお伺いながら導入までのお手伝いをしたいと思います。
以下のページからお問い合わせ下さい。