エンジニアになりたい

社会人1年目です

Goddard Streamingを使用する方法

Goddard Streamingを使用する

Goddard Streamingとは

Goddard StreamingはNS-2シミュレータで使われるストリーミングシステム(クライアントとサーバ)である。

Streaming Media System for NS-2: http://ns-2.blogspot.jp/2007/05/streaming-media-system-for-ns-2.html

Goddard Streamingをダウンロードする

以下からGoddard Streamingの最新版をダウンロードする。

http://perform.wpi.edu/downloads/goddard/goddard-ns.tgz

Goddard Streamingをインストールする

Goddard Streamingをインストールする手順を以下に示す。

※NS-2は~/ns2/ns-allinone-2.35という構成になっていることとする。

  1. ダウンロードしたファイルを展開する。 展開するとgoddard-nsというディレクトリが作成され、その中にREADMEgoddard.tarINSTALLが入っている。
  2. さらにgoddard.tarを展開する。 展開するとgoddardtclというディレクトリが作成される。
  3. 作成されたディレクトリやファイルを移動する。
    以下のコマンドを実行して移動させる。
$ cp -r goddard-ns/goddard ~/ns2//ns-allinone-2.35/ns-2.35/

 

$ cp -r goddard-ns/tcl/goddard ~/ns2/ns-allinone-2.35/ns-2.35/tcl/

 
4. アプリケーションクラスに2つのpublic methodsを追加する。

  • ~/ns2/ns-allinone-2.35/ns-2.35/apps/app.hの54行目当たりに以下のように追加する。

追加前

class Application : public Process {
public:
        Application();
        virtual void send(int nbytes);
        virtual void recv(int nbytes);
        virtual void resume();

追加後

public:
        Application();
        virtual void send(int nbytes);
        virtual void recv(int nbytes);
        virtual void resume();

        /* For Goddard Streaming Application */
        inline virtual void send(int nbytes, AppData* data) { send(nbytes); }
        inline Agent* get_agent() { return agent_; }

 
5. ~/ns2/ns-allinone-2.35/ns-2.35/tcl/lib/ns-lib.tclに、source ns-default.tclの前の285行目当たりに以下を追加する。

追加前

# MPLS
source ../mpls/ns-mpls-simulator.tcl
source ../mpls/ns-mpls-node.tcl
source ../mpls/ns-mpls-ldpagent.tcl
source ../mpls/ns-mpls-classifier.tcl

source ns-default.tcl

追加後

# MPLS
source ../mpls/ns-mpls-simulator.tcl
source ../mpls/ns-mpls-node.tcl
source ../mpls/ns-mpls-ldpagent.tcl
source ../mpls/ns-mpls-classifier.tcl

# Goddard Streaming Application
source ../goddard/goddard-class.tcl
source ../goddard/goddard-default.tcl

source ns-default.tcl

 
6. ~/ns2/ns-allinone-2.35/ns-2.35/Makefile.inに以下を記述する。

  • OBJ_CCリストの336行目当たりに以下を追加する。

追加前

xcp/xcpq.o xcp/xcp.o xcp/xcp-end-sys.o \
wpan/p802_15_4csmaca.o wpan/p802_15_4fail.o \
wpan/p802_15_4hlist.o wpan/p802_15_4mac.o \
wpan/p802_15_4nam.o wpan/p802_15_4phy.o \
wpan/p802_15_4sscs.o wpan/p802_15_4timer.o \
wpan/p802_15_4trace.o wpan/p802_15_4transac.o \
apps/pbc.o \
@V_STLOBJ@

追加後

xcp/xcpq.o xcp/xcp.o xcp/xcp-end-sys.o \
wpan/p802_15_4csmaca.o wpan/p802_15_4fail.o \
wpan/p802_15_4hlist.o wpan/p802_15_4mac.o \
wpan/p802_15_4nam.o wpan/p802_15_4phy.o \
wpan/p802_15_4sscs.o wpan/p802_15_4timer.o \
wpan/p802_15_4trace.o wpan/p802_15_4transac.o \
apps/pbc.o \
goddard/udpapp.o goddard/mchannel_proc.o \
goddard/gframe_queue.o goddard/goddard.o goddard/gplayer.o \
@V_STLOBJ@
  • NS_TCL_LIBリストの529行目当たりに以下を追加する。

追加前

tcl/mpls/ns-mpls-node.tcl \
tcl/mpls/ns-mpls-simulator.tcl \
tcl/lib/ns-pushback.tcl \
tcl/lib/ns-srcrt.tcl \
tcl/mcast/ns-lms.tcl \
tcl/lib/ns-qsnode.tcl \
@V_NS_TCL_LIB_STL@

追加後

tcl/mpls/ns-mpls-node.tcl \
tcl/mpls/ns-mpls-simulator.tcl \
tcl/lib/ns-pushback.tcl \
tcl/lib/ns-srcrt.tcl \
tcl/mcast/ns-lms.tcl \
tcl/lib/ns-qsnode.tcl \
tcl/goddard/goddard-class.tcl \
tcl/goddard/goddard-default.tcl \
@V_NS_TCL_LIB_STL@

 
7. Makefileを作成してmakeする。(なぜかこの後の7、8の手順をやらずに出来てしまった。10を参照)

以下を実行すると出来るとGoddard StreamingのINSTALLには書いてあったが私は出来なかった。

$ ~/ns2/ns-allinone-2.35/ns-2.35/configure
$ ~/ns2/ns-allinone-2.35/ns-2.35/make

※私の環境ではMakefile:93: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.と出てmake出来なかったので、Makefileを開き、すべての空白8つをtabに置換した。しかし結局この方法では出来ないので意味はない。
 
8. NS-2自体をビルドする。

~/ns2/ns-allinone-2.35/ns-2.35/下のMakefileを作成してmakeしたところでGoddard Streamingがインストールされることはなかった。

少し力技ではあるが、NS-2自体を再度ビルドしてしまうことにする。

また、再度ビルドしようとするとnsやらnamという実行ファイルのシンボリックリンクを作成しようとするのであるが、すでにファイルがある場合はシンボリックリンクを作成しないので、~/ns2/ns-allinone-2.35/installln -sとなっているところをすべてln -sfとしてしまう。

さらに、nsと打って実行される、実行ファイルである/usr/local/bin/nsへのシンボリックリンクも621行目辺りの

ln -sf $CUR_PATH/ns-$NSVER/ns${EXE} ns${EXE}

の次に

ln -sf ns${EXE} /usr/local/bin/ns

と書いて張ってしまう。

その後は以下のようにする。

$ cd `~/ns2/ns-allinone-2.35`
$ sudo ./install

 
9. exampleファイルを実行してテストする。

以下のようにして、実行できるかテストする。

$ cd `~/ns2/ns-allinone-2.35/ns-2.35/tcl/goddard/ex/`
$ ns test-goddard.tcl

実行して、xgraphのウィンドウが表示されれば成功である。

f:id:pro_shunsuke:20141015200232p:plain

 
10. Makefileを作成してmakeする

7、8のやり方でなくても出来た。出来た要因は定かではないが記述する。

/usr/local/bin/nsシンボリックリンクを張る。

$ ln -sf ~/ns2/ns-allinone-2.35/ns-2.35/ns /usr/local/bin/ns

その後以下のようにしてmakeする

$ cd ~/ns2/ns-allinone-2.35/ns-2.35/
$ sudo ./configure
$ sudo make all

あとは9を実行してテストする。

8の方法だと、NS-2を最初からビルドするので時間がかかる。こちらのやり方を推奨する。