ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:46.89KB ,
资源ID:11987967      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11987967.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(NS2-AODV协议添加新的数据包类型.docx)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

NS2-AODV协议添加新的数据包类型.docx

1、 2011-06-28 12:28 1289人阅读 评论(8) 收藏 举报 structaccessclasstimertclmacros 在AODV协议基础上添加一种新的控制包类型,可以模仿AODV协议本身的RREQ、RREP、HELLO等来实现。这里我要在AODV协议中添加一个ISOLATE的数据包类型。 首先在aodv_packet.h中 [cpp] view plaincopy 1. #define AODVTYPE_HELLO      0x01   2. #define AODVTYPE_RREQ       0x02   3. #define AODVTYPE_R

2、REP       0x04   4. #define AODVTYPE_RERR       0x08   5. #define AODVTYPE_RREP_ACK   0x10   6. #define AODVTYPE_ISOLATE        0x20     加入AODVTYPE_ISOLATE                           0x20 接着添加数据包申请内存空间的宏 [c-sharp] view plaincopy 1. /*  2.  * AODV Routing Protocol Header Macros  3.  */   4.

3、define HDR_AODV(p)     ((struct hdr_aodv*)hdr_aodv::access(p))   5. #define HDR_AODV_REQUEST(p)     ((struct hdr_aodv_request*)hdr_aodv::access(p))   6. #define HDR_AODV_REPLY(p)   ((struct hdr_aodv_reply*)hdr_aodv::access(p))   7. #define HDR_AODV_ERROR(p)   ((struct hdr_aodv_error*)hdr_aodv::a

4、ccess(p))   8. #define HDR_AODV_RREP_ACK(p)    ((struct hdr_aodv_rrep_ack*)hdr_aodv::access(p))   9. #define HDR_AODV_ISOLATE(p)   ((struct hdr_aodv_isolate*) hdr_aodv::access(p))    接着要具体定义新的数据包格式了。我这里定义的AODV的格式如下所示: [c-sharp] view plaincopy 1. struct hdr_aodv_isolate {   2. u_int8_t iso_type

5、  //类型编号   3. u_int8_t reserved[3]; //保留字,没用到   4. u_int8_t mal_count;   //Malicious node number        u_int32_t       iso_bcast_id;    // Broadcast ID    5. nsaddr_t malicious_node_addr[AODV_MAX_ISOLATE]; //malicious   6. double   obs[AODV_MAX_ISOLATE];   7. nsaddr_t src_addr;            //源

6、节点   8. inline int size() //计算数据包的大小   9. {   10.     int sz = 0;   11.     /*  12.      sz = sizeof(u_int8_t) //type  13.           + sizeof(nsaddr_t) //malicious_node_addr  14.           + sizeof(nsaddr_t) //src_addr  15.                      + sizeof(u_int32_t) //iso_bcast_id  16.     */

7、   17.         sz = (2*mal_count+3) *sizeof(u_int32_t);   18.         assert(sz);   19.         return sz;   20.     }      21. };     然后是在hdr_all_aodv添加hdr_aodv_isolate,如下所示: [c-sharp] view plaincopy 1. // for size calculation of header-space reservation   2. union hdr_all_aodv {   3.   

8、hdr_aodv          ah;   4.   hdr_aodv_request  rreq;   5.   hdr_aodv_reply    rrep;   6.   hdr_aodv_error    rerr;   7.   hdr_aodv_rrep_ack rrep_ack;   8.   hdr_aodv_isolate  iso_err;   9. };     添加完数据包的头部之后,接下来的主要工作则是在aodv.cc中如何进行发送和接收ISOLATE数据包的问题了。 首先在aodv.h中添加两个函数: void            send

9、Isolate(Packet *p);  void            recvIsolate(Packet *p);   然后到aodv.cc文件中具体实现这两个函数即可。 [c-sharp] view plaincopy 1. void AODV::sendIsolate(Packet *p)   2. {   3.     //Packet *p = Packet::alloc();   4.     struct hdr_cmn *ch = HDR_CMN(p);   5.     struct hdr_ip  *ih = HDR_IP(p);   6.     

10、struct hdr_aodv_isolate * iso = HDR_AODV_ISOLATE(p);   7.    8.     iso->iso_type = AODVTYPE_ISOLATE;   9.     //iso->malicious_node_addr = malicious_addr;   10.     iso->src_addr            = index;   11.     iso->iso_bcast_id        = bid++; //骞挎挱ID   12.     //iso->reserved[0,1,2] = ....  

11、 13.    14.     ch->ptype()     = PT_AODV;   15.     ch->size()      = IP_HDR_LEN + iso->size();   16.     ch->iface()       = -2;   17.     ch->error()       = 0;   18.     ch->addr_type() = NS_AF_NONE;   19.     ch->next_hop_   = 0;   20.     ch->prev_hop_   = index;   21.     ch->directio

12、n() = hdr_cmn::DOWN; //important: change the packet's direction   22.    23.     ih->saddr() = index; //源地址   24.     ih->daddr() = IP_BROADCAST; //广播分组   25.     ih->sport() = RT_PORT; //源端口号   26.     ih->dport() = RT_PORT; //目的端口号   27.     Scheduler::instance().schedule(target_, p, 0.0);  

13、  //printf("end sendIsolate, and iso_type= %x /n", iso->iso_type);   28. }     具体问题具体分析。 注意在完成这个步骤后,执行的时候会有错误(警告)出现,在这里还要在trace/cmu-trace.cc中添加相应的文件输出格式,也就是输出到.tr文件中该数据包的输出格式。在cmu-trace.cc/format_aodv中添加就行了。   具体什么时候要发送该数据包也是因需求而定,不过你可以设置成周期性地发送该数据包。设置周期性发送的话,你只需要添加一个时钟计数器,然后在时间到达的时候发送该数据包。 添

14、加周期时钟的过程也比较简单。如下所示 首先在aodv.h中添加一个IsolateTimer友元类: [c-sharp] view plaincopy 1. //Start malicious node isolate   2. class IsolateTimer :public Handler{   3.  public:   4.   IsolateTimer(AODV *a):agent(a){}   5.                 void handle(Event*);   6.  private:   7.   AODV *agent;   8.   Ev

15、ent intr;   9. };   然后把IsolateTimer设置成aodv的友元类 friend class IsolateTimer; 如: [c-sharp] view plaincopy 1. friend class aodv_rt_entry;   2.     friend class BroadcastTimer;   3.     friend class HelloTimer;   4.     friend class NeighborTimer;   5.     friend class RouteCacheTimer;   6.    

16、 friend class LocalRepairTimer;   7.            8.          friend class IsolateTimer; //你的Timer   接着声明一个Timer: [c-sharp] view plaincopy 1. /*  2.      * Timers  3.      */   4.     BroadcastTimer  btimer;   5.     HelloTimer      htimer;   6.     NeighborTimer   ntimer;   7.     RouteCac

17、heTimer rtimer;   8.     LocalRepairTimer lrtimer;   9.     IsolateTimer     itimer; //adding isolate packet sending timer   在AODV::AODV的构造函数中初始化以下itimer [c-sharp] view plaincopy 1. AODV::AODV(nsaddr_t id) : Agent(PT_AODV),   2.         btimer(this), htimer(this), ntimer(this),   3.         r

18、timer(this), lrtimer(this), itimer(this), etimer(this), rqueue() {.............}   然后再到aodv.cc中实现IsolateTimer [c-sharp] view plaincopy 1. //Start malicious node isolate timer   2. void IsolateTimer::handle(Event *)   3. {   4.     agent->isolate_malicious_node();   5.            6.     doubl

19、e interval = MinIsolateInterval +    7.                      (MaxIsolateInterval-MinIsolateInterval)*Random::uniform();   8.     assert(interval >=0);   9.     Scheduler::instance().schedule(this, &intr, interval);   10. }   11.    12. void AODV::isolate_malicious_node(void)   13. {   14.   

20、  int flags = 0;   15.     malicious *ma = watchdog->mal_List->list;   16.     neighbour *nb =watchdog->neigs->neigs->group;   17.     if(watchdog->mal_List->howmany > 0)   18.     {   19.         Packet *p = Packet::alloc();   20.         struct hdr_aodv_isolate * iso = HDR_AODV_ISOLATE(p);  

21、 21.         iso->mal_count = 0;  //   22.         while(ma != NULL)   23.         {         24.             iso->malicious_node_addr[iso->mal_count] = ma->ip;   25.                 iso->obs[iso->mal_count] = nb->reputation->obs;   26.                27.             iso->mal_count++;   28.  

22、           watchdog->delete_malicious_node(ma);   29.             flags = 1;   30.             ma = ma->next;   31.         }   32.         if(flags==1)//瀛樺湪鏈骞挎挱鐨刴alicious node   33.              sendIsolate(p);   34.     }   35. }     接下来你调用一下itimer,我是在这里进行调用的: [c-sharp] view plaincopy

23、 1. int   2. AODV::command(int argc, const char*const* argv) {   3. ...................   4. ..................   5. ....................   6. else if (strcmp(argv[1], "install-tap") == 0) {   7.             printf("鎵цinstall-tap /n");   8.             itimer.handle((Event*) 0); //这里调用了   9

24、                             mac_ = (Mac*)TclObject::lookup(argv[2]);   10.             if (mac_ == 0) return TCL_ERROR;   11.             mac_->installTap(this);   12.             watchdog->updateMAC(mac_->addr());   13.             return TCL_OK;   14.         }   15. }    这样就可以完成了。 ps:写得有点乱...哈哈

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服