- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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(
您可能关注的文档
- Ford-8- D课件.ppt
- Fortran-实用编程课件.ppt
- Free仓储管理系统安装及使用手册课件.doc
- Fundamental-of- Electronic- Technology课件.ppt
- G- E- N- O- V- A- T- E- B- I- O- T- E- C- H- N- O- L- O- G- Y- C- O,- L- T- D健亚生物科技股份课件.ppt
- G- E- O- S–5-vs- G- E- O- S–4precipitation-fields课件.ppt
- G- N- S- S- R- T- K测量技术在湖北省山洪灾害调查测量中的应用课件.ppt
- G- U- I-实现的自助操作系统课件.ppt
- Gale-人物传记资源中心(- Gale- Biography-in- Context)课件.ppt
- Gilbert- S- Omenn-医学博士,理学博士密歇根大学医学事务执行副主席课件.ppt
- New-college- English课件.ppt
- New-trends-in-international-student-mobility国际学生流动的新课件.ppt
- Non-- Linear- Models课件.ppt
- Note- Express进阶课件.ppt
- O- A系统用户培训课件.ppt
- O- M- S商家操作培训课件.ppt
- omprehensiveontrol-by- F- P2- F- P2综合应用事例课件.ppt
- On-the-role-of- Scenario's-for- Defence-(and- Security)- Planning课件.ppt
- One- Petro数据库检索方法课件.ppt
- Overview-of- Extra- Dimension-studies-at- L- H- C课件.ppt
文档评论(0)