首先,我们知道在NS2 AODV协议中,希望某个节点侦听到其邻居节点间通信信息时。不能直接在AODV协议中获取邻居节点之间的数据。所以要设置成混在模式下的监听过程。下面具体介绍如何添加该过程:
1.修改aodv/aodv.h
Make AODV agent a child class of Tap (you should have a member function tap), and define the Mac variable
2.修改aodv/aodv.cc
首先定义一个TCL command “install-tap” 并实现AODV::tap()函数
3.Modify tcl/lib/ns-mobilenode.tcl
4.在tcl脚本中调用Install-tap
在你定义的节点后面添加这样两行代码:
set tapagent [$node_($i) agent 255]
$tapagent install-tap [$node_($i) set mac_(0)]
这样节点node_($i)就可以监听到其邻居节点之间的通信数据报。
下面简要介绍在Ad hoc 中添加一些IDS的过程:
根据上面提供的步骤,我们已经可以建立OADV的混杂模式(Promiscumus Mode)
首先我们得先建立一种攻击模式(如blackhole attack, greyhole attack, wormhole attack等),下一篇介绍如何添加
一个blackhole attack。
接下来我们就是要添加几个IDS监测节点。具体步骤如下(过程和上面所描述的基本一样):
1.修改aodv/aodv.h(同上)
2.修改aodv/aodv.cc
在command()函数中添加这一项:
实现AODV::tap()函数
这里面的我只监测邻居节点的件的RREQ和RREP数据包,并且对监测到的RREQ和RREP数据包之后作相应的处理
如函数Sniffer_readRREQ(p)和Sniffer_readRREP(p).这个两个函数可以根据你自己的需求来实现。这里不给出这两个函数的实现了。
这里我们也可以侦听数据报文,而不仅仅是控制报文。也就是说根据你自己的具体需求来定制。
接下来就是按照上面说的那样,定义你的IDS节点,并在你需要设置成为IDS节点的tcl脚本后面添加上
set tapagent [$node_($i) agent 255]
$tapagent install-tap [$node_($i) set mac_(0)]
$i就是你要定义的IDS节点ID。