Monday, 25 May 2015

HYBLA using NS2

Code


  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 hybla.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]
  $n0 label "sender"
               $n4 label "receiver"

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

  $ns duplex-link $n2 $n3 1.0Gb 200ms DropTail
 
  $ns duplex-link $n3 $n4 2.0Gb 40ms DropTail
 

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

# Give node position (for NAM)
  $ns duplex-link-op  $n0 $n2 orient right-down
 
  $ns simplex-link-op $n2 $n3 orient right
  $ns simplex-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 hybla"
  $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 140.0 "finish"

  $ns run
The xgraph for the above code


1 comment: