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

通讯编程

开发平台:

Visual C++

  1. puts "sourcing tcl/lan/vlan.tcl..."
  2. source ../lan/vlan.tcl
  3. set opt(tr) out
  4. set opt(namtr) "vlantest-hier.nam"
  5. set opt(seed) 0
  6. set opt(stop) .5
  7. set opt(node) 3
  8. set opt(qsize) 100
  9. set opt(bw) 20Mb
  10. set opt(delay) 1ms
  11. set opt(ll) LL
  12. set opt(ifq) Queue/DropTail
  13. set opt(mac) Mac/Csma/Cd
  14. set opt(chan) Channel
  15. set opt(tcp) TCP/Reno
  16. set opt(sink) TCPSink
  17. set opt(app) FTP
  18. proc finish {} {
  19. global ns opt
  20. $ns flush-trace
  21. exec nam $opt(namtr) &
  22. exit 0
  23. }
  24. proc create-trace {} {
  25. global ns opt
  26. if [file exists $opt(tr)] {
  27. catch "exec rm -f $opt(tr) $opt(tr)-bw [glob $opt(tr).*]"
  28. }
  29. set trfd [open $opt(tr) w]
  30. $ns trace-all $trfd
  31. if {$opt(namtr) != ""} {
  32. $ns namtrace-all [open $opt(namtr) w]
  33. }
  34. return $trfd
  35. }
  36. proc create-topology {} {
  37. global ns opt
  38. global lan node source node0 nodex
  39. $ns set-address-format hierarchical
  40. set num $opt(node)
  41. AddrParams set domain_num_ 1
  42. lappend cluster_num 3
  43. AddrParams set cluster_num_ $cluster_num
  44. lappend eilastlevel [expr $num + 1] 1 1
  45. AddrParams set nodes_num_ $eilastlevel
  46. for {set i 0} {$i < $num} {incr i} {
  47. set node($i) [$ns node 0.0.[expr $i + 1]]
  48. lappend nodelist $node($i)
  49. }
  50. set lan [$ns newLan $nodelist $opt(bw) 
  51. $opt(delay) -llType $opt(ll) -ifqType $opt(ifq) 
  52. -macType $opt(mac) -chanType $opt(chan) -address "0.0.0"]
  53. $lan cost 2
  54. set node0 [$ns node "0.1.0"]
  55. $ns duplex-link $node0 $node(1) 20Mb 2ms DropTail
  56. $ns duplex-link-op $node0 $node(1) orient right
  57. set nodex [$ns node "0.2.0"]
  58. $ns duplex-link $nodex $node(2) 20Mb 2ms DropTail
  59. $ns duplex-link-op $nodex $node(2) orient left
  60. }
  61. ## MAIN ##
  62. set ns [new Simulator]
  63. set trfd [create-trace]
  64. create-topology
  65. set tcp0 [$ns create-connection TCP/Reno $node0 TCPSink $nodex 0]
  66. $tcp0 set window_ 15
  67. set ftp0 [$tcp0 attach-app FTP]
  68. #set udp0 [new Agent/UDP]
  69. #$ns attach-agent $node0 $udp0
  70. #set cbr0 [new Application/Traffic/CBR]
  71. #$cbr0 attach-agent $udp0
  72. #set rcvr0 [new Agent/Null]
  73. #$ns attach-agent $nodex $rcvr0
  74. #$udp0 set dst_ [$rcvr0 set addr_]
  75. $ns at 0.0 "$ftp0 start"
  76. #$ns at 0.0 "$cbr0 start"
  77. $ns at $opt(stop) "finish"
  78. $ns run