Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ns3 によるシミュレーション 愛媛大学総合情報メディアセンター 佐々木隆志 @TakashiSasaki.

Similar presentations


Presentation on theme: "Ns3 によるシミュレーション 愛媛大学総合情報メディアセンター 佐々木隆志 @TakashiSasaki."— Presentation transcript:

1 ns3 によるシミュレーション 愛媛大学総合情報メディアセンター 佐々木隆志 sasaki@cite.ehime-u.ac.jp sasaki@cite.ehime-u.ac.jp @TakashiSasaki

2 本日の内容 ns3 の概要 ソースコードの入手と初回ビルド方法 シミュレーションのサンプル シミュレーション作成上の各種テクニッ ク 独自コンポーネントの作成と組み込み – DifsWifiMac とヘルパーの作成 linux0.cc.ehime-u.ac.jp での利用 目標:新しい無線 MAC 層を実装できるように なる

3 ns-3 の概要 オブジェクト指向 – ネットワーク機器の各構成要素に対応するク ラス – C++ のソースコードで提供 – Python のラッパーも利用可 イベントドリブン型 – イベントの発生を事前にスケジュール – 事前定義したイベントが原因となりイベント 生成 – 生成されたイベントを再スケジュール http://rlv.zcache.com/c_text_t_shirt-r98ca7fa2c1de454dba3b45798f1f0b8d_804g9_512.jpg

4 主要な構成要素 チャネル ノード NetDevice MAC PHY L3 L4 アプリケーショ ン ルーティング ノード NetDevice MAC PHY L3 L4 アプリケーショ ン ルーティング

5 ns-3 を構成するクラスの例 チャネル PHY MAC キューイング デバイス インターネット層 ルーティング・プロトコル アプリケーション http://www2.engr.arizona.edu/~junseok/ns3_wifi.htm Wi-Fi 通信の L2 以下に関わる構成要素 ノー ド デバイス チャネル

6 シミュレーションの流れ シナリオ作成: C++, Eclipse, Emacs ビルドと実行: make, waf ログ解析 – 定義済みログ – ユーザー定義ログ – PCAP 出力, tcpdump 可視化 – XML ログ, NetAnim http://www.nsnam.org/docs/models/html/animation.html

7 ns-3 のソースコード入手 /home/sasaki/ns-allinone-3.17.tar.bz2 tar zxvf で展開 最新のリリースは 3.18 最新のコードは hg(mercurial) で管理されている

8 waf Python で記述されたビルドツール

9 ./waf configure

10 ./waf build

11 ./waf check テストシナリオを実行し正しい結果と照 合 中略 失敗したテストスートが無いことを確 認

12 ns3 のディレクトリ構成 サンプルコード集 既存のコンポーネントを使ったシ ミュレーションについて参考にな る。 自分で作ったシミュレーションの コードはこのディレクトリの中に 配置する。 既存のコンポーネントについての コードは全てこの中に入っている。 ビルド中にはここに一旦コードが 集められてコンパイルされる。

13 build 以下 自分で作ったコード はここに一旦コピー されてビルドされる。 ヘッダファイルは ここに集められる

14 src 以下 ns3 でモデル化された構成要素 は全て C++ のクラスとして表現 model と helper クラス AbcDef – abc-def.h クラス定義、メソッド 宣言 – abc-def.cc メソッド定義 クラス AbcDefHelper – あるコンポーネントを別のコン ポーネント群全てに次々とイン ストールするためのクラス

15 シミュレーションの実行./waf --run シナリオ名(拡張子.cc 除く) 例) examples/tcp/star.cc の実行

16 Pcap ファイルの表示 libpcap 互換、 tcpdump で表示可能 3-way ハンドシェイ ク

17 examples/tcp/star.cc

18 デバイス チャネル ヘルパー プロトコルスタックの組み 込み アドレスの割当 受信ソケット 送信アプリケーショ ン

19 神の視点からルーティン グテーブル組み込み ApplicationContainer に 8 個のアプリケーショ ンをまとめているので一括指定可能

20 dumbbell-animation NetAnim はインストール済み( NetAnim& で実 行)

21 dumbbell-animation.cc

22

23 アニメーショント用 XML ログの生成を指 定 指定したほうが見栄えが良 い。

24 grid-animation

25 自作のシナリオは scratch 下 前述のとおり../waf --run で実行

26 https://github.com/TakashiSasaki/ns3-abe

27 コールバック関数 ソケットが受信動 作をした時のコー ルバック関数 スケジューラから特定時 刻にコールバックされる ことでパケットを送信す る関数 WiFi の物理層がフレームを受信 したときのコールバック関数 WiFi の物理層がフレームを受信 失敗したときのコールバック関 数

28 コマンドラインパラメータ シミュレーションにはコマン ドラインパラメータを与える ことができる。定義してから パース。

29 アトリビュートのデフォルト値 アトリビュートのデフォル ト値を予め設定できること もできる。

30 無線チャネル 電波の伝播はチャネル として設定。アンテナ とチャネルの関連付け。

31 オブジェクトファクトリ ns3 には C++ の静的 なクラス機構に加 えて独自の動的な クラス機構がある。 これにより動的な コンポーネントの 追加やスマートポ インタを実現して いる。通常意識す る必要はないが、 細かい使い方をす るためにはオブ ジェクトファクト リを直接使う場合 もある

32 ヘルパーを使わない方法 複数ノードや複数デバイス への MAC や PHY の組み込みに は通常はヘルパーをクラス 使うが、個別に行う方法も 知っておくとよい。

33 ノードの位置 ノードの位置の指定 L4 でのソケット。あえて TypeId からソケットを生 成する方法をとってみた。 コールバック関数の設 定

34 パケットの送信予約 特定の時刻にコール バック関数を呼び出 すことができる。

35 無線物理層へのアクセス 無線物理層に直接ビー コンなどを出すために は WifiPhy を直接使う。 ここではシミュレーションをクラスとして表現して みた。

36 無線物理層への送出

37 無線物理層からの受信

38 シミュレーションパラメータのク ラス化 シミュレーションに与 えるパラメータが多い 時にはクラス化すると 便利。

39 フロー ID の利用 フロー ID を付けてパケッ トを識別することもでき る。

40 送受信ゲイン

41 エラーモデル どの程度電波が減衰すればど のようなビットエラーがおき るかのモデルを与えることも できる

42 シミュレーションクラスの完成

43 独自の MAC 層の設計 独自の MAC 層など新コンポーネントの開 発 例 DIFS ( DCF Interframe Space )期間を任意 に設定できる MAC 層 ns3 では IEEE802.11e の AIFS として表現 – AC_VO, AC_VI, AC_BE, AC_BK or QoS 無し IEEE 802.11 準拠マルチホップ無線 LAN におけるスループット不公平性の解析 笠原 正治, 2007

44 Github で公開中

45 difs-wifi-mac.h AdhocWifiMac を継承 ns3 のクラス機構に参加さ せるにはこのメソッドが必 要 AdhocWifiMac→RegularWifiMac→WifiMac で 定義されている。大まかな設定終了後に呼 び出される仮想関数。ここでやりたい放題。

46 ns3 のクラス機構への登録 名前空間はちゃんと指定するこ と。グローバル名前空間厳禁。 ns3 のクラス機構への登録

47 新規タイプ ID の定義

48 DIFS とコンテンションウィンドウ幅の再 設定 AIFS を使わない場合は、特別なクラス AC_BE_NQOS として扱う。内部的にも QoS な しのキューに入れられる。 AIFS はスロット数として指定する。 AIFS が導入される前のデフォルト値は 2 。

49 主要な規格の EIFS など

50 主要な規格の AIFS と CW

51 DifsWifiMacHelper (1) ヘルパークラスも作って おくと既存のコンポーネ ントと簡単に交換可能。

52 DifsWifiHelper (2)

53 DifsWifiMac の使い方 AdhocWifiMac と完 全互換なので一行 の書き換えだけで 完了

54 linux0 へのログイン リモートデスクトップ SSH Chrome の Secure Shell 拡張 Cygwin, PuTTY, Tera Term アカウントは修学支援システムなどと同じく愛媛大学アカウ ント

55 リモートデスクトップによるロ グイン 愛媛大学情報基盤システム利用 アカウント申請書により申請し ていただくことでアカウントを 発行します。 http://www.cite.ehime-u.ac.jp/

56 linux0 のデスクトップ Cent OS 6.4 + gnome CentOS 6.4 + GNOME Desktop ターミナル(仮 想端末)は良く 使う。

57 linux0 のスペック RAM 70GB 24 cores

58 Eclipse によるコードの編集 ビルドツール waf を直接 Eclipse か ら容易に使うことはできないが、 CDT プロジェクトとして構成すれ ば編集やコード補完には使うこ とができる。保管のためにイン クルードパスを適切に設定する 必要がある。


Download ppt "Ns3 によるシミュレーション 愛媛大学総合情報メディアセンター 佐々木隆志 @TakashiSasaki."

Similar presentations


Ads by Google