Network- Simulation-and- Analysis-ndash;- Using- N- S2课件.pptVIP

Network- Simulation-and- Analysis-ndash;- Using- N- S2课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NS2 源代码目录 sim tk8.0 otcl Tcl tcl8.0 ns-2 nam-1 tcl ex test lib ... ... tcl code example validation test C++ code tcl code core * 。 添加协议(1) 添加别人实现的协议 为什么我安装总是出错????? 环境问题,OS, gcc版本,ns版本 解决办法 1. 修改环境,装相应的os,gcc,ns2 2. 移植到新的环境,怎么移? gdb调试,没有别的办法!!! * 。 添加新协议(2) 自己写协议 路由协议?应用层协议?MAC协议? 最好的方法就是模仿已有的协议,代表协议AODV, MAC802.11,Ping 添加路由协议,从Agent继承 添加应用层协议,从Agent(更灵活)或者Application(有些不能实现) * 。 添加新协议(3) 示例:一个泛洪协议(Mflood) 协议类型:路由层协议 1.定义包头 struct hdr_mflood { u_int32_t seq_; //根据需要定义变量,这个灵活决定 …. // 包头访问的方法,你只需要复制下来就OK了 static int offset_; // required by PacketHeaderManager inline static int offset() { return offset_; } inline static hdr_sptree* access(const Packet* p) { return (hdr_sptree*) p-access(offset_); } }; * 。 添加新协议(4) 2. 实现协议 class MFlood: public Agent { public: MFlood(); void recv(Packet *p, Handler *); int command(int, const char *const *); protected: inline int initialized() { return 1 target_; } //发送函数,其实就是调用目的节点的接受函数 inline void send(Packet *p){ target_-recv(p); } }; * 。 添加新协议(5) 3 关联tcl对象与C++对象(模板) static class MFloodclass : public TclClass { public: MFloodclass() : TclClass(Agent/MFlood) {} TclObject* create(int argc, const char*const* argv) { assert(argc == 5); return (new MFlood((nsaddr_t) atoi(argv[4]))); // PBO agrv[4] is index_} } } class_rtProtoMFlood; * 。 添加新协议(6) 4 关联tcl对象与C++对象的包头(模板) int hdr_mflood::offset_; static class MFloodHeaderClass : public PacketHeaderClass { public: MFloodHeaderClass() : PacketHeaderClass(PacketHeader/MFlood, sizeof(hdr_mflood)) { bind_offset(hdr_mflood::offset_); } } class_mfloodhdr; * 。 添加新协议(7) 目前为止,所有的代码工作都已经完成了 生下的工作就是将这个协议编译到NS2中。 需要修改一下文件 1. ns-packet.tcl (ns-allinone-2.29\ns-2.29\tcl\lib) 2. packet.h (ns-allinone-2.29\ns-2.29\common) 3 ns-lib.tcl (ns-allinone-2.29\ns-2.29\tcl\lib) 对于我们这个应用层协议不需要修改 * 。 添加新协议(8) 1. 修改ns-packet.tcl(ns-2.29/tcl/lib) foreach prot { # add by season MFlood …… } 目的:在NS启动的时候加载我们的包头。 * 。 添加新协议(9) 2.修改 packet.h(

文档评论(0)

liuxiaoyu99 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档