basic.tex
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. % One simple example
  2. % If someone could clean up and add comments to it, it would be great...
  3. chapter{Introduction}
  4. begin{quote}
  5. Let's start at the very beginning, \
  6. a very nice place to start, \
  7. when you sing, you begin with A, B, C, \
  8. when you simulate, you begin with the topology,footnote{%
  9. with apologies to Rodgers and Hammerstein}\
  10. ldots
  11. end{quote}
  12. This document (emph{ns Notes and Documentation}) provides reference
  13.   documentation for ns.
  14. Although we begin with a simple simulation script,
  15.   resources like Marc Greis's tutorial web pages
  16.   (originally at his web site,
  17.   now at url{http://www.isi.edu/nsnam/ns/tutorial/})
  18.   or the slides from one of the ns tutorials
  19.   are problably better places to begin for the ns novice.
  20. We first begin by showing a simple simulation script.
  21. This script is also available in the sources in
  22. nsf{tcl/ex/simple.tcl}.
  23. This script defines a simple topology of four nodes,
  24. and two agents, a UDP agent with a CBR traffic generator, and a TCP agent.
  25. The simulation runs for $3s$.  The output is two trace files,
  26. code{out.tr} and code{out.nam}.
  27. When the simulation completes at the end of $3s$,
  28. it will attempt to run a nam visualisation of the simulation on your
  29. screen.
  30. begin{program}
  31. {cf # The preamble}
  32. set ns [new Simulator] ; initialise the simulation;
  33. {cf # Predefine tracing}
  34. set f [open out.tr w]
  35. $ns trace-all $f
  36. set nf [open out.nam w]
  37. $ns namtrace-all $nf
  38. clearpage
  39. {cf # so, we lied.  now, we define the topology}
  40. {cf #}
  41. {cf #}       n0
  42. {cf #}         bs
  43. {cf #}      5Mb bs
  44. {cf #}      2ms  bs
  45. {cf #}            bs
  46. {cf #}             n2 --------- n3
  47. {cf #}            /     1.5Mb
  48. {cf #}      5Mb  /       10ms
  49. {cf #}      2ms /
  50. {cf #}         /
  51. {cf #}       n1
  52. {cf #}
  53. set n0 [$ns node]
  54. set n1 [$ns node]
  55. set n2 [$ns node]
  56. set n3 [$ns node]
  57. $ns duplex-link $n0 $n2 5Mb 2ms DropTail
  58. $ns duplex-link $n1 $n2 5Mb 2ms DropTail
  59. $ns duplex-link $n2 $n3 1.5Mb 10ms DropTail
  60. {cf # Some agents.}
  61. set udp0 [new Agent/UDP] ; A UDP agent;
  62. $ns attach-agent $n0 $udp0 ; on node $n0;
  63. set cbr0 [new Application/Traffic/CBR] ; A CBR traffic generator agent;
  64. $cbr0 attach-agent $udp0 ; attached to the UDP agent;
  65. $udp0 set class_ 0 ; actually, the default, butldots;
  66. set null0 [new Agent/Null] ; Its sink;
  67. $ns attach-agent $n3 $null0 ; on node $n3;
  68. $ns connect $udp0 $null0
  69. $ns at 1.0 "$cbr0 start"
  70. puts [$cbr0 set packetSize_]
  71. puts [$cbr0 set interval_]
  72. {cf # A FTP over TCP/Tahoe from $n1 to $n3, flowid 2}
  73. set tcp [new Agent/TCP]
  74. $tcp set class_ 1
  75. $ns attach-agent $n1 $tcp
  76. set sink [new Agent/TCPSink]
  77. $ns attach-agent $n3 $sink
  78. set ftp [new Application/FTP] ; TCP does not generate its own traffic;
  79. $ftp attach-agent $tcp
  80. $ns at 1.2 "$ftp start"
  81. $ns connect $tcp $sink
  82. $ns at 1.35 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"
  83. clearpage
  84. {cf # The simulation runs for (3s).}
  85. {cf # The simulation comes to an end when the scheduler invokes the finish{} procedure below.}
  86. {cf # This procedure closes all trace files, and invokes nam visualization on one of the trace files.}
  87. $ns at 3.0 "finish"
  88. proc finish {} {
  89.         global ns f nf
  90.         $ns flush-trace
  91.         close $f
  92.         close $nf
  93.         puts "running nam..."
  94.         exec nam out.nam &
  95.         exit 0
  96. }
  97. {cf # Finally, start the simulation.}
  98. $ns run
  99. end{program}