Many people have asked me how to implement malicious drop in AODV. I have decided to write simple code for adding malicious node in AODV ( or in any routing protocol).
First you need to modify aodv.cc and aodv.h files. In aodv.h after(line 275)
1
/* The Routing Agent */
2
classAODV: publicAgent {
3
...
4
/*
5
* History management
6
*/
7
doublePerHopTime(aodv_rt_entry *rt);
8
...
add following line
1
boolmalicious;
With this variable we are trying to define if the node is malicious or not. In aodv.cc after(line 153)
The above code is needed to initialize, and all nodes are initially not malicious. Then we will write a code to catch which node is set as malicious. In aodv.cc after(line 86)
1
if(argc == 2) {
2
Tcl& tcl = Tcl::instance();
3
4
if(strncasecmp(argv[1], "id", 2) == 0) {
5
tcl.resultf("%d", index);
6
returnTCL_OK;
7
}
add following line
1
if(strcmp(argv[1], "hacker") == 0) {
2
malicious = true;
3
returnTCL_OK;
4
}
Now we will do some work in TCL to set a malicious node. Using script in my post , we add following line to set node 5 as malicious node.
1
$ns at 0.0"[$mnode_(5) set ragent_] hacker"
You may add this line after
1
for{seti 0} {$i < $val(nn)} { incr i } {
2
$ns initial_node_pos $mnode_($i) 10
3
}
4
...
Alright, we have set malicious node but we did not tell malicious node what to do. As it is known,rt_resolve(Packet *p) function is used to select next hop node when routing data packets. So, we tell malicious node just drop any packet when it receives. To do that after(line 448)
1
/*
2
Route Handling Functions
3
*/
4
void
5
AODV::rt_resolve(Packet *p) {
6
structhdr_cmn *ch = HDR_CMN(p);
7
structhdr_ip *ih = HDR_IP(p);
8
aodv_rt_entry *rt;
9
...
We add a few lines
1
// if I am malicious node
2
if(malicious == true) {
3
drop(p, DROP_RTR_ROUTE_LOOP);
4
// DROP_RTR_ROUTE_LOOP is added for no reason.
5
}
And implementing malicious node is done. I hope the post will be helpful to design your secure routing protocol.
在AODV中添加恶意节点:NS2: Adding Malicious Node to AODV修改版
Many people have asked me how to implement malicious drop in AODV. I have decided to write simple code for adding malicious node in AODV ( or in any routing protocol).First you need to modify aodv