码迷,mamicode.com
首页 > 其他好文 > 详细

在 NS 2-35 中安装 UMTS 和 WiMax 补丁

时间:2016-05-13 20:43:48      阅读:1104      评论:0      收藏:0      [点我收藏+]

标签:

我的操作系统是 Linux Mint Debian Mate Edition,201403版,内核版本 3.11-2-amd64,gcc version 4.8.2。

一、安装 NS-2.35

截至2014年10月,这是NS2最新的版本了。

首先安装几个包:“ sudo apt-get install build-essential libxmu-dev ”,依赖的几个包也要装上。

然后下载 ns-allinone-2.35,解压,复制 ns-allinone-2.35 文件夹到主目录下,我改名为.ns-allinone-2.35,方便隐藏;

在 /.ns-allinone-2.35/ns-2.35/linkstate/ls.h 的第137行,“ erase(baseMap::begin()”前添加“ this-> ”,改为

" void eraseAll() {this->erase(baseMap::begin(), baseMap::end()); } ";

然后在 .ns-allinone-2.35文件夹下运行 ./install 即可安装。

安装完成,需要在主目录下的 .bashrc 文件中加入下面的文字:

# enable Network Simulator 2
export PATH="$PATH:/home/suyangts/.ns-allinone-2.35/bin:/home/suyangts/.ns-allinone-2.35/tcl8.5.10/unix:/home/suyangts/.ns-allinone-2.35/tk8.5.10/unix"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/suyangts/.ns-allinone-2.35/otcl-1.14, /home/suyangts/.ns-allinone-2.35/lib" 
export TCL_LIBRARY="$TCL_LIBRARY:/home/suyangts/.ns-allinone-2.35/tcl8.5.10/library "

其中 /home/suyangts 是我的主目录。

打开终端,运行“ ns  ./.ns-allinone-2.35/ns-2.35/tcl/ex/simple.tcl ”,将会测试一个简单的例子。

注意,文章末尾补充了在 Debian 7 下面,把NS-2.35安装到/opt目录下的方法。在 Debian 7 下面,.bashrc 的内容不能按照上面提到的内容添加。此外,也可以在为UMTS、LTE和WiMax模块修改完所有文件后在执行上一步安装ns-2.35的步骤。

----------

截至2015年4月,下述两个补丁的下载位置很难在网络上找到了。所以,我使用百度网盘分享了它们的备份:http://pan.baidu.com/s/1eQEknsQ   提取码3xsv

----------

二、安装 UMTS 补丁

感谢 yotrew.blogspot.com 的博文《Patch NS2 to Support UMTS》,文中给出了补丁文件 ns-2.35_eurane-1.12.diff 的链接,并且详细说明了安装方法以及出现错误的解决方法。搬运如下:

1、下载 ns-2.35_eurane-1.12.diff 文件,放到 /.ns-allinone-2.35/ns-2.35/ 目录下;

2、修改该目录下的 Makefile.in :

(1)将第56行的“CCOPT= @V_CCOPT@ ”改为“CCOPT= -Wall @V_CCOPT@ ”;

(2)搜索“apps/pbc.o”,找到大概在第336行的“apps/pbc.o \”,在下面添加

umts/am.o umts/classifier-sport.o umts/demuxer.o umts/demuxerRtModule.o umts/networkInterface.o umts/nif-classifier.o umts/tcs.o umts/um.o umts/umtslink.o umts/umtstrace.o umts/hsdpalink.o umts/um-hs.o umts/umts-timers.o umts/virtual_umtsmac.o umts/am-hs.o umts/umts-queue.o umts/dummy_drop_tail.o umts/error_model.o tools/coot.o \

(3)搜索“@V_NS_TCL_LIB_STL@”,大概在570行,在上面另起一行添加

tcl/lib/ns-umts.tcl \

3、修改该目录下文件夹 common 中的 packet.h 文件:

(1)找到大概在200行的“ static packet_t       PT_NTYPE = 73; // This MUST be the LAST one”,用“ // ”将其注释掉;

(2)在其下另起一行,插入

// UMTS - used by hdr_cmn class for tracing purpose

static const packet_t PT_UM = 73;
static const packet_t PT_AMDA = 74;
static const packet_t PT_AMPA= 75;
static const packet_t PT_AMPBPA = 76;
static const packet_t PT_AMBA= 77;
static const packet_t PT_AMPBBA= 78;

// Used for tracking HARQ transmissions (MAC-hs PDUs)

static const packet_t PT_AMDA_H1= 79;
static const packet_t PT_AMDA_H2= 80;
static const packet_t PT_AMDA_H3= 81;

// End UMTS

// COOT packet

static const packet_t PT_COOT= 82;

// insert new packet types here

static  packet_t  PT_NTYPE = 83; // This MUST be the LAST one

(3)找到大概在400行的“endif //STL”,在其下另起一行,插入

// UMTS

               name_[PT_UM] = "UM";

                name_[PT_AMDA] = "AM_Data";

                name_[PT_AMPA] = "AM_Pos_Ack";

                name_[PT_AMPBPA] = "AM_Piggyback_Ack";

                name_[PT_AMBA] = "AM_Bitmap_ack";

                name_[PT_AMPBBA] = "AM_Piggyback_Back";

               // For HARQ transmission tracking

               name_[PT_AMDA_H1] = "HARQ_1";

               name_[PT_AMDA_H2] = "HARQ_2";

               name_[PT_AMDA_H3] = "HARQ_3";

// End UMTS

// coot

               name_[PT_COOT] = "coot";

上述插入的内容一定要在“// Bell Labs (PackMime OL)”行的前面。

4、 在 ns-2.35 的目录下打开终端,运行“ patch -p1 < ns-2.35_eurane-1.12.diff ”;如果没有错误信 息,则运行“ ./configure ”;如果没有错误信息,则运行“ make clean ”,然后运行“ make ”。

三、安装 WiMax 补丁

从 nsnam.isi.edu/nsnam /index.php/Contributed_Code 中得知有 NIST 的 WiMax 补丁,下载位置为 www.nist.gov/itl /antd/emntg/ssm_tools.cfm ,在右边的“ Download Information ”栏的下方有链接。下载前需要填写一些 信息。

下载下来一个 ns-nist-wimax.tgz 压缩文档。安装这个真是个巨坑啊!如果直接解压缩到 ns-2.35 目录下并运行 patch 命令去安装,那么恭喜你,你将会被一大堆错误给弄晕。所以,老老实实修改文件吧。

解压缩这个压缩包,将会出现一个 prerelease041707.tgz 的压缩包。再解压,出现一个 src-prerelease-041707 的文件夹以及两个文件。

1、把 src-prerelease-041707 中的 wimax 文件夹复制到 ns-2.35 文件夹中。

2、在 ns-2.35/tcl 文件夹中创建一个 wimax 文件夹。

3、把 src-prerelease-041707/tcl/lib 目录下的ns-wimax.tcl 文件复制到 ns-2.35/tcl/lib 目录下。

4、把 src-prerelease-041707/mac 目录下的 mac-stats.h 文件复制到 ns-2.35/mac 目录下。

5、编辑 ns-2.35 目录下的 Makefile.in 文件:

(1)在大概第68行的“ @V_INCLUDES@ \ ”行的上面,另起一行,添加

-I./wimax \

(2)在大概第378行的“ @V_STLOBJ@ ”行的上面,另起一行,添加

wimax/ofdmphy.o wimax/mac802_16pkt.o wimax/serviceflowqos.o wimax/serviceflow.o wimax/serviceflowhandler.o wimax/connection.o wimax/connectionmanager.o wimax/peernode.o wimax/mac802_16.o wimax/mac802_16SS.o wimax/mac802_16BS.o wimax/sduclassifier.o wimax/destclassifier.o wimax/mac802_16timer.o wimax/wimaxneighborentry.o wimax/neighbordb.o wimax/scheduling/wimaxscheduler.o wimax/scheduling/bsscheduler.o wimax/scheduling/ssscheduler.o wimax/scheduling/ulsubframetimer.o wimax/scheduling/dlsubframetimer.o wimax/scheduling/burst.o wimax/scheduling/contentionslot.o wimax/scheduling/contentionrequest.o wimax/scheduling/contentiontimer.o wimax/scheduling/dlburst.o wimax/scheduling/ulburst.o wimax/scheduling/framemap.o wimax/scheduling/phypdu.o wimax/scheduling/profile.o wimax/scheduling/subframe.o wimax/scheduling/scanningstation.o wimax/scheduling/wimaxctrlagent.o \

(3)在大概第570行的“ @V_NS_TCL_LIB_STL@ ”上面,另起一行,添加

tcl/lib/ns-wimax.tcl \

6、编辑 ns-2.35/common 目录下的 packet.h 文件:

(1)在大概第202行的“ // insert new packet types here ”下,另起一行,添加

// wimax packets
static const packet_t PT_WIMAXBS = 62;

一定要在“ // static packet_t       PT_NTYPE = 73; // This MUST be the LAST one”这一行之前。其中的参数“62”不一定对......

(2)在大概第400行“ #endif //STL”部分下,第460行,“//DCCP”块下,添加

// WIMAX
name_[PT_WIMAXBS]="wimaxCtrl";

在“ name_[PT_NTYPE]= "undefined"; ”的前面。

7、编辑 ns-2.35/tcl/lib 目录下的 ns-packet.tcl 文件,找到第188行“ # Other: ”部分,在“ HDLC # High Level Data Link Control ”下,另起一行,添加

802_16   # Wimax

8、编辑 ns-2.35/tcl/lib 目录下的 ns-lib.tcl ,在大概第218行“ source ../mcast/ns-lms.tcl ”下,另起一行,添加

# Wimax
source ns-wimax.tcl

9、在 ns-2.35 目录下打开终端,运行“ ./configure ”;如果没有错误信息,运行“ make clean ”;最后运行 “ make ”。

10、测试:终端切换到 ns-2.35/tcl/wimax 目录下,运行“ ns wimax1.tcl ”。

四、在 Debian 7 Wheezy 下安装 NS-2.35 到/opt 目录

1、将解压后的 ns-allinone-2.35 整个目录通过 # cp -rf ns-allinone-2.35/ /opt/ 复制到 /opt 下;

可以对解压出来的、还没有执行安装的 ns-allinone-2.35 在完成上述二、三步修改后不执行 configure 以及 make,直接复制到 /opt 下然后一起安装。

2、# cd /opt ,然后 # chmod -R 755 ns-allinone-2.35;这样使得文件夹中的文件可读可执行;

3、# cd ./ns-allinone-2.35, # ./install ,安装;

4、编辑自己的 .bashrc ,添加下面的几行:

# enable network simulator 2
# LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/suyangts/.ns-allinone-2.35/otcl-1.14:/home/suyangts/.ns-allinone-2.35/lib
# TCL_LIBRARY
export TCL_LIBRARY=/home/suyangts/.ns-allinone-2.35/tcl8.5.10/library
# PATH
PATH=$PATH:/home/suyangts/.ns-allinone-2.35/bin:/home/suyangts/.ns-allinone-2.35/tcl8.5.10/unix:/home/suyangts/.ns-allinone-2.35/tk8.5.10/unix

5、注销或者 $source .bashrc ,输入 ns ,看看是否出现了百分号。如果出现,则 ns 可用。exit退出。

在 NS 2-35 中安装 UMTS 和 WiMax 补丁

标签:

原文地址:http://www.cnblogs.com/suyangts/p/5490938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!