Monday, 25 May 2015

WESTWOOD implementation in NS2

The code is modified with the below changes and the bandwidth along with the latency are so set in order to show the  congestion.


  set ns [new Simulator]

  set file1 [open out.nam w]
  $ns namtrace-all $file1
  set tf [open ui.tr w]  
  $ns trace-all $tf

  set winfile [open westwood.tr w]


  proc finish {} {
     global ns file1 tf
     $ns flush-trace
     close $tf
     close $file1
     exec nam out.nam &
     exit 0
  }


  set n0 [$ns node]
  set n2 [$ns node]
  set n3 [$ns node]
  set n4 [$ns node]


  $ns duplex-link $n0 $n2 2Gb 10ms DropTail

  $ns duplex-link $n2 $n3 600Kb 100ms DropTail
 
  $ns duplex-link $n3 $n4 2.0Gb 40ms DropTail
 

$ns duplex-link-op $n2 $n3 queuePos 0.1

  $ns duplex-link-op  $n0 $n2 orient right-down
 
  $ns duplex-link-op $n2 $n3 orient right
  $ns duplex-link-op $n3 $n2 orient left
  $ns duplex-link-op  $n3 $n4 orient right-up
 
  $ns queue-limit $n2 $n3 10


  set tcp [new Agent/TCP/Linux]
  $ns at 0 "$tcp select_ca westwood"
  $ns attach-agent $n0 $tcp

  set sink [new Agent/TCPSink/Sack1]
  $sink set ts_echo_rfc1323_ true

  $ns attach-agent $n4 $sink

  $ns connect $tcp $sink
  $tcp set fid_ 1
  $tcp set window_ 1500
  $tcp set packetSize_ 552


  set ftp [new Application/FTP]
  $ftp attach-agent $tcp
  $ftp set type_ FTP

  $ns at 0.1 "$ftp start"
  $ns at 500.0 "$ftp stop"


  proc plotWindow {tcpSource file} {
     global ns

     set time 0.1
     set now [$ns now]
     set cwnd [$tcpSource set cwnd_]
     set wnd [$tcpSource set window_]
     puts $file "$now $cwnd"
     $ns at [expr $now+$time] "plotWindow $tcpSource $file"
  }

  $ns at 0.1 "plotWindow $tcp $winfile"

  $ns at 150.0 "finish"

  $ns run
 

No comments:

Post a Comment