test-lan-1.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. set opt(tr) out
  2. set opt(namtr) "test-lan-1.nam"
  3. set opt(seed) 0
  4. set opt(stop) 3
  5. set opt(node) 8
  6. set opt(qsize) 10
  7. set opt(bw)     1Mb
  8. set opt(delay) 100ms
  9. set opt(ll)     LL
  10. set opt(ifq)   Queue/DropTail
  11. set opt(mac)   Mac/802_3
  12. set opt(chan)   Channel
  13. set opt(tcp)   TCP/Reno
  14. set opt(sink)   TCPSink
  15. set opt(app)   FTP
  16. proc finish {} {
  17. global env nshome pwd
  18. global ns opt
  19. $ns flush-trace
  20. exit 0
  21. }
  22. proc create-trace {} {
  23. global ns opt
  24.   if [file exists $opt(tr)] {
  25.     catch "exec rm -f $opt(tr) $opt(tr)-bw [glob $opt(tr).*]"
  26.   }
  27.   set trfd [open $opt(tr) w]
  28.   $ns trace-all $trfd
  29. if {$opt(namtr) != ""} {
  30. $ns namtrace-all [open $opt(namtr) w]
  31. }
  32.   return $trfd
  33. }
  34. proc create-topology {} {
  35. global ns opt
  36. global lan node source node0
  37. set num $opt(node)
  38. for {set i 0} {$i < $num} {incr i} {
  39. set node($i) [$ns node]
  40. lappend nodelist $node($i)
  41. }
  42. set lan [$ns newLan $nodelist $opt(bw) $opt(delay) 
  43. -llType $opt(ll) -ifqType $opt(ifq) 
  44. -macType $opt(mac) -chanType $opt(chan)]
  45. set node0 [$ns node]
  46. $ns duplex-link $node0 $node(0) 1Mb 100ms DropTail
  47. $ns duplex-link-op $node0 $node(0) orient right
  48. }
  49. ## MAIN ##
  50. set ns [new Simulator]
  51. set trfd [create-trace]
  52. create-topology
  53. set tcp0 [$ns create-connection TCP/Reno $node0 TCPSink $node(7) 0]
  54. $tcp0 set window_ 15
  55. set ftp0 [$tcp0 attach-app FTP]
  56. ### set operations
  57. $ns at 0.0 "$ftp0 start"
  58. $ns at $opt(stop) "finish"
  59. ### take snapshots
  60. foreach i "0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 
  61. 1.2 1.5 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8" {
  62. $ns at $i "$ns snapshot"
  63. }
  64. ### take snapshot operations
  65. $ns at 2.9 "$ns terminate-nam"
  66. $ns run