⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.tcl

📁 这个是目前国际上比较怪异的一种长距离高带宽环境下的拥塞控制算法
💻 TCL
字号:
#helper routines for collecting statsproc finish {} {  global ns tf # close $tf  exit 0}proc printtcp {fp tcp} {  global ns   set now [format "%.1f" [$ns now]]  set now [$ns now]	puts $fp "[format %.2f [$ns now]] [$tcp set cwnd_] [$tcp set dl_Bi_]  [$tcp set srtt_]  [$tcp set dl_minrtt_] [$tcp set dl_maxrtt_]"}proc print-tcpstats {flow starttime finishtime label} {   global ns   set fp [open "tcp-$label.out" w]  for {set i 0} {[expr $starttime + ($i*0.1)] < $finishtime} {incr i} { 	set printtime [expr $i*0.1]	$ns at [expr $starttime + $printtime] "printtcp $fp $flow"  }  $ns at $finishtime "printtcp $fp $flow"}# duration of simulationset endtime 200remove-all-packet-headers       ; # removes all except commonadd-packet-header Flags IP TCP  ; # hdrs reqd for TCPset ns [new Simulator]ns-random 0Agent/TCP set ecn_ 0Agent/TCP set window_ 100000      ; # receiver's max window sizeAgent/TCP set packetSize_ 1460    ; # in bytes (does this include header ?)#setting max_ssthresh_=1 switches off slow start so that we can see convergence of #congestion avoidance more clearly - in practice this is akin to generating#a cross traffic disturbance on an established flow.Agent/TCP set max_ssthresh_ 1; # slow start threshold upper limit# -10 activates htcp with adaptive backoff; +10 is htcp without adaptive backoffAgent/TCP set windowOption_ -10# simple dumbell topology with three input/output linksset n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set n4 [$ns node]set n5 [$ns node]set n6 [$ns node]set bandwidth 20set qmax 50$ns duplex-link $n1 $n3 [expr 2*$bandwidth]Mb [expr 0]ms DropTail$ns queue-limit $n1 $n3 [expr $qmax]$ns queue-limit $n3 $n1 [expr $qmax]$ns duplex-link $n2 $n3 [expr 2*$bandwidth]Mb [expr 0]ms DropTail$ns queue-limit $n2 $n3 [expr $qmax]$ns queue-limit $n3 $n2 [expr $qmax]$ns duplex-link $n3 $n4 [expr $bandwidth]Mb [expr 50]ms DropTail$ns queue-limit $n3 $n4 [expr $qmax]$ns queue-limit $n4 $n3 [expr $qmax]$ns duplex-link $n4 $n5 [expr 2*$bandwidth]Mb [expr 1]ms DropTail$ns queue-limit $n4 $n5 [expr $qmax]$ns queue-limit $n5 $n4 [expr $qmax]$ns duplex-link $n4 $n6 [expr 2*$bandwidth]Mb [expr 1]ms DropTail$ns queue-limit $n6 $n4 [expr $qmax]$ns queue-limit $n4 $n6 [expr $qmax]#now define three flows  set regtcp0 [$ns create-connection TCP/Sack1 $n1 TCPSink/Sack1 $n5 [expr 0]]  set regftp0 [[set regtcp0] attach-app FTP]  set starttime 0.0  $ns at $starttime "[set regftp0] start"  $ns at $endtime "[set regftp0] stop"  print-tcpstats [set regtcp0] $starttime $endtime regtcp0 ; #dump cwnd to file  puts "regtcp0, starttime: $starttime"    set regtcp1 [$ns create-connection TCP/Sack1 $n2 TCPSink/Sack1 $n6 [expr 1]]  set regftp1 [[set regtcp1] attach-app FTP]  set starttime 50  $ns at $starttime "[set regftp1] start"  $ns at $endtime "[set regftp1] stop"  print-tcpstats [set regtcp1] 0 $endtime regtcp1 ; #dump cwnd to file  puts "regtcp1, starttime: $starttime"  set regtcp2 [$ns create-connection TCP/Sack1 $n1 TCPSink/Sack1 $n5 [expr 2]]  set regftp2 [[set regtcp2] attach-app FTP]  set starttime 100  $ns at $starttime "[set regftp2] start"  $ns at $endtime "[set regftp2] stop"  print-tcpstats [set regtcp2] 0 $endtime regtcp2 ; #dump cwnd to file  puts "regtcp2, starttime: $starttime"#keep track of progress ...for {set i 0} {[expr 0 + ($i*1)] < $endtime} {incr i} {	set printtime [expr $i*1]	$ns at [expr 0 + $printtime] "puts $printtime"  }$ns at [expr $endtime + 2.0] "finish"puts "Starting Simulation..."$ns run

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -