others其他
tips:
添加新的协议,其实有一个基本的死框架,我们按照框架写完后,再进行自己协议的编写。
死框架:
1、申明一个继承了Agent类的子类,实现其中的recv()方法,其他是自己实现的函数
2、利用TclClass进行C++与OTCL进行绑定
3、申明一个包类型
4、将包类型的C++与OTCL进行绑定,利用PacketHeaderClass 类来实现
5、注册包类型
以上5个步骤是一个死框架,其它我们需要的时候往里加即可;
————————————————
版权声明:本文为CSDN博主「铭记_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lwb102063/article/details/50708621
在NS中添加一个新协议的步骤
1、在ns-2.x目录下创建协议名(CTAgg)目录,此目录中包含CTAgg.h CTAgg.cc CTAgg_pkt.h CTAgg_rtable.h CTAgg_rtable.cc五个文件。
2、撰写CTAgg_pkt.h,对数据包类型进行声明(修改common/pakcet.h文件中的枚举类型packet_t和类p_info)。绑定包头到TCL接口。 TAgg_rtable.cc五个文件。
3、撰写CTAgg.h。
4、撰写CTAgg.cc。
5、撰写CTAgg_rtable.h。操作路由表函数的声明。 .h CTAgg.cc CTAgg_pk
6、撰写CTAgg_rtable.cc。操作路由表函数的实现。
7、跟踪支持,修改trace/cmu-trace.h和trace/cmu-trace.cc。 在CMUTrace类中实现void format_CTAgg(Packet *p, int offset)函数,需要加入#include 。 CTAgg)目录,此目录中包含CTAgg
8、修改TCL库,tcl/lib/ns-packet.tcl中的foreach prot{} tcl/lib/ns-default.tcl中添加Agent/Protoname set accessible_var_ true tcl/lib/ns-lib.tcl中的create-wireless-node函数中添加.h CTAgg.cc CTAgg_pk Protoname { set ragent [$self create-CTAgg-agent $node] }t.h CTAgg_rtable.h C tcl/lib/ns-lib.tcl中添加函数create-CTAgg-agent
9、修改队列优先级,修改queue/priqueue.cc中的recv()函数。
10、修改Makefile。

浙公网安备 33010602011771号