免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 863 | 回复: 0
打印 上一主题 下一主题

ns中基于Agent开发步骤 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-28 10:42 |只看该作者 |倒序浏览

基于Agent其实可以做很多的事了,有的看起来不是Agent的事,例如底层的协议,都可以换一个角度用Agent来做,最典型的AODV就是这样。也就是说Agent能做的事就是:把数据包从底层拿上来,处理一下,然后或者转发出去或者直接交给本节点的应用层。
基于Agent的开发简单,开发者不必去关心底层的实现,这是最大的好处。一般来讲基于Agent开发只需要这样几个文件:yourAgent.h yourAgent.cc yourAgent.tcl,当然你可以把yourAgent.cc优化成几个文件。
以下几个步骤:
1、定义头标。ns中头标是一个宽泛的东西,不必一定是协议中的那些域,你甚至可以把你要用的内存的指针放到头标中传过去。首先在分别在yourAgent.h和yourAgent.cc中加入
struct hdr_your {
int ack; // is it ack packet?
int seq; // mm sequence number
//你需要的头标域都在这里定义
// Packet header access functions
static int offset_;
inline static int& offset() { return offset_; }
inline static hdr_your* access(const Packet* p) {
return (hdr_your*) p->access(offset_);
}
};
int hdr_your::offset_;//因为是static变量,要在这里分配空间
//Header Class
static class yourHeaderClass : public PacketHeaderClass {
public:
yourHeaderClass() : PacketHeaderClass("PacketHeader/your", sizeof(hdr_your)) {
bind_offset(&hdr_your::offset_);
}
} class_yourhdr;
//YourAgent OTcl linkage class
static class YourAgentClass : public TclClass {
public:
UdpMmAgentClass() : TclClass("Agent/YourAgent") {}
TclObject* create(int, const char*const*) {
return (new YourAgent());
}
} class_your_agent;
2、在packet.h的enum中加入PT_your;在class pinfo的构造函数中加入name_[PT_your]="your";
3、在ns-packet.tcl中的foreach prto 中加入your
4、然后你就重载Agent的函数,你的主要工作将集中在这一步;你可以做任何改变,但是不要改变target_变量,它是从Connector继承来的,指向数据包将要到达的下一个实体(是本节点的入口,不是接收者)。
5、一个成熟的仿真平台要有很好的用户接口,因此要写yourAgent.tcl文件,当然不写也可以用。写完了之后在ns-lib.tcl中加入一个source语句,相当于include你的tcl代码(注意要重新编译才生效)。
6、写仿真脚本,也是tcl的。
7、写trace文件的处理脚本,用shell。这可以后期处理,但是设计时要考虑到处理时的难度和计算量。
由 kkzhou 发表于 2005年10月02日 21:15


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/74100/showart_1094228.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP