hi to all
i am new to ns2, i am using ns-2.33, here i like to simulate the pushback
in this i like to do push incoming packets sender address to up stream
router.. for this scenario
i got some code it is like this
*
*
*
*
*
Node instproc add-pushback-agent {} {
$self instvar pushback_
set pushback_ [new Agent/Pushback]
[Simulator instance] attach-agent $self $pushback_
# puts "Pushback Agent = $pushback_"
$pushback_ initialize $self [[Simulator instance] get-routelogic]
return $pushback_
}
Node instproc get-pushback-agent {} {
$self instvar pushback_
if [info exists pushback_] {
return $pushback_
} else {
return -1
}
}
Simulator instproc pushback-duplex-link {n1 n2 bw delay} {
$self pushback-simplex-link $n1 $n2 $bw $delay
$self pushback-simplex-link $n2 $n1 $bw $delay
}
Simulator instproc pushback-simplex-link {n1 n2 bw delay} {
set pba [$n1 get-pushback-agent]
if {$pba == -1} {
puts "Node does not have a pushback agent"
exit
}
$self simplex-link $n1 $n2 $bw $delay RED/Pushback $pba
set link [$self link $n1 $n2]
set qmon [new QueueMonitor/ED]
$link attach-monitors [new SnoopQueue/In] [new SnoopQueue/Out] [new
SnoopQueue/Drop] $qmon
set queue [$link queue]
$queue set pushbackID_ [$pba add-queue $queue]
$queue set-monitor $qmon
$queue set-src-dst [$n1 set id_] [$n2 set id_]
}
Agent/Pushback instproc get-pba-port {nodeid} {
set node [[Simulator instance] set Node_($nodeid)]
set pba [$node get-pushback-agent]
if {$pba == -1} {
return -1
} else {
return [$pba set agent_port_]
}
}
Agent/Pushback instproc check-queue { src dst qToCheck } {
set link [[Simulator instance] set link_($src:$dst)]
set queue [$link queue]
if {$qToCheck == $queue} {
return 1
} else {
return 0
}
}
Queue/RED/Pushback set pushbackID_ -1
Queue/RED/Pushback set rate_limiting_ 1
Agent/Pushback set last_index_ 0
Agent/Pushback set intResult_ -1
Agent/Pushback set enable_pushback_ 1
Agent/Pushback set verbose_ false
#
# Added to be able to trace the drops in rate-limiter
#
Queue/RED/Pushback instproc attach-traces {src dst file {op ""}} {
$self next $src $dst $file $op
set ns [Simulator instance]
#set this up late if you want.
# set type [$self mon-trace-type]
#nam does not understand anything else yet
# if {$op == "nam"} {
# set type "Drop"
# }
set type "Drop"
set rldrop_trace [$ns create-trace $type $file $src $dst
$op]
set oldTrace [$self rldrop-trace]
if {$oldTrace!=0} {
puts "exists"
$rldrop_trace target $oldTrace
} else {
# puts "Does not exist"
$rldrop_trace target [$ns set nullAgent_]
}
$self rldrop-trace $rldrop_trace
}
*
*
*
*
help me in how to use this code for that scenario.. i much awaitng for this
your help.. and asking about pushback in the forum for many days i am
getting no response.. please help me
*my mail id* : [email protected]