ns-2与TCP拥塞模拟 之五 ns-2中添加核心模块-TCPAgent子类

来源:互联网 发布:java怎么搭建服务器 编辑:程序博客网 时间:2024/03/29 14:16


ns-2TCP拥塞模拟 之五 ns-2中添加核心模块-TCPAgent子类


这里的目标是讲解如何新增或修改ns-2的核心模块。我们先从“复制-修改”开始,复制ns-2中一个已有的模块,但改成别的名字,这样就可以轻松且很明确地知道该如何增加模块。以下以Redhat6.1下的2.35版本为例,讲述添加一个TCP发送代理模块的大致过程,大致可以分为以下6个步骤。

1)切换路径到tcp的目录下。

cd  ns-allinone-2.35/ns-2.35/tcp

2)复制tcp-vegas.cctcp-vegas2.cc

cp  tcp-vegas.cc  tcp-vegas2.cc

3)使用vi或者其他文字编辑软件修改tcp-vegas2.cctcp.h

先修改tcp.h,找到类VegasTcpAgent的定义,将这部分复制一份,并将类名改为classVegas2TcpAgent

class Vegas2TcpAgent : public virtual TcpAgent{

 public:

        Vegas2TcpAgent();

        ~Vegas2TcpAgent();

        virtualvoid recv(Packet *pkt, Handler *);

        virtualvoid timeout(int tno);

protected:

        ……

再修改tcp-vegas2.cc,把所有“Vegas”替换成“Vegas2”,另外,把“vegas”替换成“vegas2”。(文件内容略)

4)修改ns-default.tcl文件,设定初始值:

切换工作目录,cd ns-allinone-2.35/ns-2.35/tcl/lib/

使用文字编辑软件打开ns-default.tcl

使用搜寻功能找到TCP/Vegas

把每个初始设定值都再复制一份给TCP/Vegas2

 

……………………………………………..

Agent/TCP/Vegas2 setv_alpha_ 1

Agent/TCP/Vegas2 setv_beta_ 3

Agent/TCP/Vegas2 setv_gamma_ 1

Agent/TCP/Vegas2 setv_rtt_ 0

…………………………………………….. 

5修改Makefile文件,tcp-vegas2.o加到OBJ_CC并重新编译

使用文字编辑软件打开ns-allinone-2.35/ns-2.35目录下的Makefile

使用搜寻功能找到tcp-vegas.o

tcp/tcp-vegas.o后面加上tcp/tcp-vegas2.o

……………………………………………..

tcp/tcp.otcp/tcp-sink.o tcp/tcp-reno.o \

tcp/tcp-newreno.o \

tcp/tcp-vegas.otcp/tcp-vegas2.o tcp/tcp-rbp.o tcp/tcp-full.o tcp/rq.o \

……………………………………………

重新编译。

make

如果没有什么错误输出,就是编译成功了,示例如图所示。


编译结果示例

6)测试新安装的模块是否可以正常运作。可以修改上述章节中的示例1,把Agent/TCP改成Agent/TCP/Vegas2,检查运行的结果。

其他类型的代理模块在ns-2中添加的核心步骤也是类似的,大致步骤如下。

准备好模块文件(如a.cca.h);

如果需要设定初始值的话,修改ns-default.tcl文件;

修改Makefile文件(把a.o加到OBJ_CC内);

重新编译;


测试新模块。

各种代理模块的功能都不相同,可以参考ns-2内已有的类型的源代码文件,建议找到最相近的模块文件,然后再去修改,这样比较容易把需要的模块加入到ns-2的核心。

 

0 0
原创粉丝点击