Hey All, In this post we discuss about selfish nodes and how to simulate selfish node scenario using ns2.
MANET is self-constrained network, each node should collaborate with each other to perform functions of the network but sometimes node may behave selfishly to conserve their resource like batter power, bandwidth etc. Such nodes are called selfish node and selfishness disturb the network and take away the network from their regular mission.
- Reputation based
- Incentive based
- The combination of both
Selfish node does not forward any data packets to other nodes except itself. Selfish nodes helps to optimize their own gain, with neglect for the welfare of other nodes in a network. Selfish Nodes cooperates during the route discovery cycle to maintain a concise routing table and to be present in other routing tables in a network.
Behavior of selfish nodes
- It does not forward the RREQ messages.
- Do not forward data messages.
- Delayed forwarding RREQ messages.
- Do not forward RREP messages.
set val(chan) Channel/WirelessChannel
set val(prop) Propagation/TwoRayGround
set val(netif) Phy/WirelessPhy
set val(mac) Mac/802_11
set val(ifq) Queue/DropTail/PriQueue
set val(ant) Antenna/OmniAntenna
set val(ll) LL
set val(ifqlen) 150
set val(nn) 10
set val(rp) DSR
set val(X) 600
set val(Y) 600
set val(cstop) 50
set val(stop) 50
set val(cp) "scen-20-10"
# Initialize Global Variables
set ns_ [new Simulator]
set tracefd [open DSR.tr w] $ns_ trace-all $tracefd
set namtrace [open DSR.nam w] $ns_ namtrace-all-wireless $namtrace $val(X) $val(Y)
#set up top
set topo [new Topography] $topo load_flatgrid $val(X) $val(Y)
# Create God
set god_ [create-god $val(nn)] #create channel
set chan_1_ [new $val(chan)] set chan_2_ [new $val(chan)]
if {$val(rp) == "DSR"
} {
set val(ifq) CMUPriQueue
} else {
set val(ifq) Queue/DropTail/PriQueue
}
#configure nodes
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-channel $chan_1_
# create nodes
for {
set i 0
} {
$i < $val(nn)
} {
incr i
} {
set node_($i) [$ns_ node] $node_($i) random-motion 0;
}
puts "loading random connection pattern..."
source $val(cp)
source "cbr"
#Define initial node position
for {
set i 0
} {
$i<$val(nn)
} {
incr i
} {
$ns_ initial_node_pos $node_($i) 30
}
#$ns_ at 0.0 "[$node_(4) set ragent_] hacker"
for {
set i 0
} {
$i<4
} {
incr i
} {
$ns_ at $val(cstop) "$cbr_($i) stop"
}
for {
set i 0
} {
$i<$val(nn)
} {
incr i
} {
$ns_ at $val(stop).000000001 "$node_($i) reset";
}
$ns_ at 0.01 "$node_(0) add-mark m brown circle"
$ns_ at 0.01 "$node_(1) add-mark m brown circle"
$ns_ at 0.01 "$node_(2) add-mark m brown circle"
$ns_ at 0.01 "$node_(3) add-mark m brown circle"
$ns_ at 0.01 "$node_(4) add-mark m brown circle"
$ns_ at 0.01 "$node_(5) add-mark m brown circle"
$ns_ at 0.01 "$node_(6) add-mark m brown circle"
$ns_ at 0.01 "$node_(7) add-mark m brown circle"
$ns_ at 0.01 "$node_(8) add-mark m brown circle"
$ns_ at 0.01 "$node_(9) add-mark m brown circle"
$ns_ at 40.5 "$ns_ trace-annotate \" NODE 0 IS DETECTED AS SELFISH NODE AT TIME 40.5\""
$ns_ at 45.5 "$ns_ trace-annotate \" NODE 4 IS DETECTED AS SELFISH NODE AT TIME 45.5\""
$ns_ at 45.0 "$ns_ trace-annotate \" NODE 7 IS DETECTED AS SELFISH NODE AT TIME 45.0\""
$ns_ at 45.5 "$ns_ trace-annotate \" NODE 9 IS DETECTED AS SELFISH NODE AT TIME 45.5\""
$ns_ at 40.5 "$node_(0) delete-mark m"
$ns_ at 40.5 "$node_(0) add-mark m red circle"
$ns_ at 48.5 "$node_(4) delete-mark m"
$ns_ at 45.5 "$node_(4) add-mark m red circle"
$ns_ at 48.5 "$node_(7) delete-mark m"
$ns_ at 45.5 "$node_(7) add-mark m red circle"
$ns_ at 48.5 "$node_(9) delete-mark m"
$ns_ at 45.5 "$node_(9) add-mark m red circle"
$ns_ at $val(stop) "finish"
$ns_ at $val(stop).0 "$ns_ trace-annotate \"Simulation has ended\""
$ns_ at $val(stop).00000001 "puts \"NS exiting...\"; $ns_ halt"
proc finish {
} {
global ns_ tracefd namtrace
$ns_ flush-trace
close $tracefd
close $namtrace
exit 0
}
puts "Starting simulation..."
$ns_ run
Comments
Post a Comment