ns-2与TCP拥塞模拟 之五 ns-2中添加核心模块-TCPAgent子类
来源:互联网 发布:java怎么搭建服务器 编辑:程序博客网 时间:2024/03/29 14:16
ns-2与TCP拥塞模拟 之五 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.cc到tcp-vegas2.cc。
cp tcp-vegas.cc tcp-vegas2.cc
(3)使用vi或者其他文字编辑软件修改tcp-vegas2.cc及tcp.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.cc、a.h);
②如果需要设定初始值的话,修改ns-default.tcl文件;
③修改Makefile文件(把a.o加到OBJ_CC内);
④重新编译;
⑤测试新模块。
各种代理模块的功能都不相同,可以参考ns-2内已有的类型的源代码文件,建议找到最相近的模块文件,然后再去修改,这样比较容易把需要的模块加入到ns-2的核心。
- ns-2与TCP拥塞模拟 之五 ns-2中添加核心模块-TCPAgent子类
- ns-2与TCP拥塞模拟 之五 ns-2中添加核心模块-TCPAgent子类
- ns-2与TCP拥塞模拟 之六 ns-2 TCP拥塞控制核心模块-变量说明
- ns-2与TCP拥塞模拟 TCP拥塞控制核心模块-变量说明
- ns-2与TCP拥塞模拟 之三 脚本语言OTcl
- ns-2与TCP拥塞模拟 之四 ns-2仿真脚本中的元素
- ns-2与TCP拥塞模拟 之七 ns-2中自带的应用Ping解读
- ns-2与TCP拥塞模拟 之二 模拟输出的封包trace文件格式
- ns-2与TCP拥塞模拟 之一 一个简单的示例说明基本要素
- 如何在NS-2中添加协议[转载]
- NS-2的离散时间模拟机制
- 在ns-3中添加自己编写的模块
- NS-2.35中添加gpsr
- DSR in ns-2
- NS-2安装心得
- NS-2三天入门
- NS应用实例2
- NS-2随机数产生器
- [root@localhost zhu]# yum install vim Loaded plugins: langpacks, presto, refresh-packagekit Adding e
- 堆排序 Heap Sort
- javascript创建对象常用方法
- AJAX学习笔记
- spring 作用域之单例模式/原型模型
- ns-2与TCP拥塞模拟 之五 ns-2中添加核心模块-TCPAgent子类
- 【笔试】55、实现吧字符串转化为数字(C的atoi函数)
- HDU 1950 Bridging signals(树状数组)
- UI 动画之CALayer+CAAnimation 之 CATransition
- 文本挖掘概念学习(一)
- UVALive 5874 - Social Holidaying(一般图匹配带花树)
- Git merge 合并分区详解
- point on C_4 语句
- HorizontalListView的应用:Listview中完美嵌套HorizontalListView