- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NS2中AODV协议混杂模式配置
分类:?网络模拟器(NS2)2013-07-05 09:00?483人阅读?评论(0)?收藏?举报NS2? ? 本文内容来自于网络上各版本的总结,在此感谢他们!? ? 在NS2的AODV协议中,如希望某个节点侦听到其邻居节点间通信信息时,不能直接在AODV协议中获取邻居节点之间的数据,因而要设置成混在模式下的监听过程。下面具体介绍如何添加该过程:? ??1.修改aodv/aodv.h[cpp]?view plaincopyprint?#include?mac.h??class?AODV:?public?Tap,?public?Agent?{??public:??void?tap(const?Packet?*p);????protected:??Mac?*mac_;????}??? ? 2.修改aodv/aodv.cc[plain]?view plaincopyprint?int??AODV::command(int?argc,?const?char*const*?argv)?{????else?if(argc?==?3)?{????else?if?(strcmp(argv[1],?install-tap)?==?0)?{??mac_?=?(Mac*)TclObject::lookup(argv[2]);??if?(mac_?==?0)?return?TCL_ERROR;??mac_-installTap(this);??return?TCL_OK;??}??}??return?Agent::command(argc,?argv);??}??void??AODV::tap(const?Packet?*p)?{??//?put?your?code?here??}??? ? 3.修改tcl/lib/ns-mobilenode.tcl[plain]?view plaincopyprint?Node/MobileNode?instproc?add-target?{?agent?port?}?{??$self?instvar?dmux_?imep_?toraDebug_?mac_????#?Special?processing?for?AODV??set?aodvonly?[string?first?AODV?[$agent?info?class]]??if?{$aodvonly?!=?-1?}?{??$agent?if-queue?[$self?set?ifq_(0)]?;?#?ifq?between?LL?and?MAC??$agent?install-tap?$mac_(0)????}??? ? 4.在tcl脚本中调用Install-tap? ? 在你定义的节点后面添加这样两行代码:[plain]?view plaincopyprint?set?tapagent?[$node_($i)?agent255]??$tapagent?install-tap?[$node_($i)set?mac_(0)]??? ? 这样节点node_($i)就可以监听到其邻居节点之间的通信数据报。? ? 下面简要介绍在Ad hoc 中添加一些IDS的过程:? ? 根据上面提供的步骤,我们已经可以建立OADV的混杂模式(Promiscumus Mode)。首先,我们得建立一种攻击模式(如blackhole attack, greyhole attack, wormholeattack等),接下来介绍如何添加一个blackhole attack。? ? 接下来我们就是要添加几个IDS监测节点。具体步骤如下(过程和上面所描述的基本一样):? ? 1.修改aodv/aodv.h(同上)? ? 2.修改aodv/aodv.cc[cpp]?view plaincopyprint?else?if?(strcmp(argv[1],install-tap)?==?0)?{??printf(执行install-tap?/n);??mac_?=(Mac*)TclObject::lookup(argv[2]);??if?(mac_?==?0)?return?TCL_ERROR;??mac_-installTap(this);??return?TCL_OK;??}??? ? 实现AODV::tap()函数[cpp]?view plaincopyprint?void??AODV::tap(const?Packet?*p)?{??struct?hdr_cmn?*ch?=?HDR_CMN(p);??struct?hdr_ip?*ih??=?HDR_IP(p);??//sendToWatchdog(p);??if(ch-ptype()?==?PT_AODV)?//为AODV?Packet?
文档评论(0)