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
という構成になっていることとする。
- ダウンロードしたファイルを展開する。
展開すると
goddard-ns
というディレクトリが作成され、その中にREADME
、goddard.tar
、INSTALL
が入っている。 - さらに
goddard.tar
を展開する。 展開するとgoddard
とtcl
というディレクトリが作成される。 - 作成されたディレクトリやファイルを移動する。
以下のコマンドを実行して移動させる。
$ 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/install
のln -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のウィンドウが表示されれば成功である。
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を最初からビルドするので時間がかかる。こちらのやり方を推奨する。