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* :  muralikrishn...@gmail.com

Reply via email to