1
Help us understand the problem. What are the problem?

posted at

updated at

ns-3.34 をwindows上にてDocker+WSL2経由で動かす

はじめに

ns-3 はネットワークシミュレータであり,研究などでよく用いられます.
環境構築が少し面倒ということもあり,下記の記事のようにDockerでの環境構築が紹介されています.
ns-3.30用にDockerコンテナを立てた話

しかし,Windows用いた環境構築方法の記事は少なく,せっかくDockerで利用できるようにしている方がいるならWindows上で利用したいものです.
今回はこのようにWindows上でVisualizerによる表示ができるようにするところまでをご紹介します.
image.png

なお,この記事によって起きた損害等の責任は一切負いませんので,自己判断にて参考にしてください.

前提条件

以下のものをインストール・セットアップしている必要があります.
1. Docker Desktop
2. WSL2上で動作するUbuntu

(つまり,WSL2上でdockerコマンドが使えるようになっている必要があります.)

インストール手順

今回利用するDockerFile等のソースコードは以下の記事にて紹介されているレポジトリをフォークし,記事作成時の最新バージョン(ns-3.34)用に書き換えたものになっています.そのため,DockerFile等の詳細については以下の記事を参照いただき,自己責任にてご利用ください.
なお,ns-3.30でよい方は下の記事の手順でDocker イメージを作成する手順まで行い,当記事の「WindowsにVcXsrvをインストール」の部分から作業してください.
ns-3.30用にDockerコンテナを立てた話

以下ns3.34を利用する方向けです.

ns-3.34のDocker イメージの作成

WSL2上のUbuntuの任意のディレクトリにて,以下を実行してレポジトリをクローンします.その後,v3.34ブランチを利用します.

$ git clone https://github.com/takonasu/ns3-docker.git
$ cd ns3-docker
$ git checkout v3.34

その後,Docker イメージをビルドをするため, makeコマンドを利用します.
PCのスペックによりますが,30-60分程度かかります.

$ cd ns3-docker-34
$ make

WindowsにVcXsrvをインストール

sourceforge.net より,VcXsrvをインストールします.
インストールの詳細は以下の記事が参考になります.この記事を参考にWindowsにVcXsrvをインストールしてください.
Windows10のWSLでX11アプリケーションを実行してみた
インストール後,Xlaunchを起動しておきます.

Docker イメージの実行

WSL2上で,makefileファイルがあるディレクトリ(ns3-docker-34)に移動後,

$ make run

を実行することで,Dockerコンテナを起動し中に入ることができます.
Dockerコンテナ内で以下のコマンドを実行し,環境変数にホスト(Windows)のIPアドレスを設定します.
以下のコマンドのIPアドレスは適宜書き換えてください.

# export DISPLAY=192.168.10.11:0.0

その後,ns-3のwafファイルがあるディレクトリに移動してサンプルコードを実行します.

# cd /usr/ns-allinone-3.34/ns-3.34
# ./waf --pyrun src/flow-monitor/examples/wifi-olsr-flowmon.py --vis 

以下のようにVisualizerが起動すればひとまず成功です.お疲れさまでした.
モジュール等のエラーは各自修正してみてください.
image.png

参考文献

あとがき

Ubuntu 20.04のDocker イメージを使うとVisualizerの依存関係にあるライブラリがすんなり入ってくれないので18.04のサポート期間中はおとなしく18.04使ったほうが楽です.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?