ns-3におけるWiFiモジュール

ns-3のWiFIモジュールはIEEE 802.11a/b/g/nに対応した無線通信のモジュールです。インフラストラクチャとアドホックネットワークの両方に対応しています。ApWifiMac、StaWifiMacを利用することでAP(アクセスポイント)とSTA(ステーション)のネットワークを構築できます。AdhocWifiMacを利用することでアドホックネットワークを構築できます。

トランスポート層のプロトコル

  • UDP (User Datagram Protocol)
  • TCP (Transmission Control Protocol)

ネットワーク層のプロトコル

  • AODV (Ad hoc On-Demand Distance Vector)
  • DSR (Dynamic Source Routing)
  • OLSR (ptimized Link State Routing)
  • DSDV (Destination Sequenced Distance Vector)

MAC層のプロトコル

アクセス制御方式

  • IEEE 802.11標準

レートコントロール

  • ARF (Automatic Rate Fallback)
  • AARF (Adaptive Automatic Rate Fallback)
  • AARF-CD (AARF-Collision Ditection)

物理層

変復調方式

  • IEEE 802.11標準

エラーモデル

  • dsss error rate model
  • nist error rate model
  • yans error rate model

Dsss Error Rate Model

Nist and Yans Error Rate Model

ns-3のWiFiモジュールのチュートリアル

wifiモジュールを用いたシミュレーションを動かすためのmain関数の作成、シミュレーションの実行方法について記載します。

公式サイトのマニュアルのStatistical Frameworkの内容を基に、シミュレーションを実行するために必要なことを説明します。 アプリケーション層のプログラムとしてJoe Kopenaさんの作成したSenderとReceiverのプログラムを利用します。

説明する内容

topology.png
図1: トポロジ


図1に説明するシミュレーションプログラムのトポロジを示します。 図1のx [m]は送信機と受信機間の距離です。 送信機と受信機間の距離を25 [m]から25 [m]刻みで175 [m]まで変化させた場合のパケットの受信率を計測する方法を説明します。

解説資料

実行方法

前提として、homeディレクトリにns-3.20をインストールしてあり、「ns-allinone-3.20」がhomeディレクトリに存在するものとします。インストール方法は↓を参考にしてください。

ns-3.20のインストール

※ sqlite3がインストールされていない場合は動作しませんのでご注意ください。

↓のURLから、「Wifi.zip」をダウンロードしてください。

ダウンロードした「Wifi.zip」フォルダをhomeディレクトリに置きます。「Wifi.zip」フォルダを解凍するために以下のコマンドを実行してください。

unzip Wifi.zip

「Wifi.zip」の解凍に成功すると、homeディレクトリに「Wifi」ディレクトリが生成されます。生成された「Wifi」ディレクトリをns-3で実行可能なディレクトリに移動するために、以下のコマンドを実行してください。

mv Wifi/ ns-allinone-3.20/ns-3.20/scratch/

「Wifi」ディレクトリに移動します。

cd ns-allinone-3.20/ns-3.20/scratch/Wifi/

をWifiディレクトリないのプログラムをビルドするために、以下のコマンドを実行します。

./waf

「./waf: 許可がありません」と表示された場合は、以下のコマンドを実行して「waf」に実行権限を与えてからもう一度、上記コマンドを試してみて下さい。

chmod 755 waf

以上でシミュレーションの実行に必要な準備が整いました。シミュレーションの実行には「waf」を用います。

./waf --run "Wifi"

とすることでデフォルトの設定(ノード間の距離が 90 [m]の場合)でシミュレーションを実行することが可能です。

Wifiディレクトリ内に「sim-script.sh」「sim-db.sh」を用意しました。「sim-script.sh」はノード間の距離とランダムシードを変えてシミュレーションを行い、その結果をSQLiteのフォーマットで「data.db」に書き込むスクリプトファイルです。ランダムシードの数は10です。「sim-db.sh」は「data.db」内に保存されたデータを距離で集約して,集約した結果を「distance.data」に書き込むためのスクリプトファイルです。下記のコマンドを実行することで、ノード間距離を変化させた場合のパケットの受信率が「distance.data」に書き込まれます。

sh sim-script.sh
sh sim-db.sh

↓の図は「sim-script.sh」と「sim-db.sh」を実行した際のコマンドラインへの出力です。 既に「data.db」が存在する場合は、「Kill data.db? (y/n)」が表示されます。data.dbを削除する場合は'y'をタイプしてエンターキーを押してください。data.dbを削除しない場合は、'n'をタイプしてエンターキーを押してください。

wifi-cmd.png

参考文献

ns-3 Tutorial

ns-3のWiFiモジュール詳細

wifiモジュールについてプログラムの中身を説明していきます。

公式サイトのWifiのマニュアルにモジュールの概要は載っておりますので、モジュールの概要は省き、wifiモジュールのプログラムを関数レベルで説明します。

物理層のクラスとしてYansWifiPhy,YansWifiChannelを用いて説明します。また、簡略化のため、QOS制御については省いて説明をします。

Yet Another Network Simulator

説明する内容

wifi_module_topology.png
図2: トポロジと設定


図2に説明するトポロジを示します。ノード0がデータをノード1に送信してノード1がノード0にACKを送信するまでの流れを関数レベルで説明します。

解説資料


添付ファイル: filewifi_module.pdf 5169件 [詳細] filewifi-cmd.png 2401件 [詳細] filewifi_module_topology.png 2559件 [詳細] filetopology.png 2472件 [詳細] filesimulation_sample_wifi.pdf 10172件 [詳細] fileWifi.zip 2368件 [詳細]

  添付編集
Last-modified: 2014-12-28 (日) 19:30:08 (3606d)