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

通讯编程

开发平台:

Visual C++

  1. chapter{Asim: approximate analytical simulation}
  2. label{chap:asim}
  3. begin{figure}
  4. % hrule
  5. vspace{1em}
  6. centerline{includegraphics[angle=0,width=5in]{struct.eps}}
  7. vspace{1em}
  8. % hrule
  9. caption{The structure of Asim}
  10. label{fig:struct}
  11. end{figure}
  12. This chapter describes a fast approximate network simulator, Asim. 
  13. Asim solves the steady state of the network using 
  14. approximate fixed points. The overall structure is shown in 
  15. Figure ref{fig:struct}.
  16. The user feeds a regular ns script 
  17. and turns on the asim flag.
  18. Asim would do a fast approximate simulation of the 
  19. network scenario and would present to the user the drop probabilities
  20. of the routers, 
  21. the delays and the approximate aggregate throughput 
  22. of the links and the flows.
  23. In particular, we the following links/traffic are supported:
  24. begin{itemize}
  25. item Drop Tail Queues
  26. item RED Queues
  27. item Bulk TCP flows with FTP traffic
  28. item Short lived TCP flows 
  29. end{itemize} 
  30. The data structures of Asim 
  31. are populated by a module within the Tcl space of ns from the 
  32. user supplied script. Upon executing Asim, the results can 
  33. be accessed using Tcl routines. 
  34. To use the Asim within a script the user has to use 
  35. noindent Simulator set useasim_ 1
  36. noindent By default, this flag is set to 0
  37. A simple script is given below
  38. begin{verbatim}
  39. proc addsrc { s } {
  40.     global ns
  41.     set t [$ns set src_]
  42.     lappend t $s
  43.     $ns set src_ $t
  44. }
  45. proc adddst { src } {
  46.     global ns
  47.     set t [$ns set dst_]
  48.     lappend t $src
  49.     $ns set dst_ $t
  50. }
  51. proc finish {} {
  52.     
  53.     global ns fmon
  54.     set drops  [$fmon set pdrops_]
  55.     set pkts   [$fmon set parrivals_]
  56.     set notDroped [$fmon set pdepartures_]
  57.     set overflow_prob [expr 1.0 * $drops / $pkts]
  58.     puts [format "tdrops $drops tpkts $pkts o_prob. %7.4f" $overflow_prob]
  59.     exit 0
  60. }
  61. set N_ 100000
  62. set arrival 0
  63. set available $N_
  64. set endTime_ 200
  65. set ns [new Simulator]
  66. $ns set useasim_ 1
  67. $ns at $endTime_ "finish"
  68. set src_ ""
  69. set dst_ ""
  70. $ns set src_ $src_
  71. $ns set dst_ $dst_
  72. set n(0) [$ns node]
  73. set n(1) [$ns node]
  74. set link(0:1) [$ns duplex-link $n(0) $n(1)  1Mbps  50ms RED]
  75. for {set i 0} { $i < 4} {incr i} {
  76. set ltcp($i) [new Agent/TCP]
  77. set ltcpsink($i) [new Agent/TCPSink]
  78. $ns attach-agent $n(0) $ltcp($i)
  79. $ns attach-agent $n(1) $ltcpsink($i)
  80. $ns connect  $ltcp($i) $ltcpsink($i)
  81. set lftp($i) [new Application/FTP]
  82. $lftp($i) attach-agent $ltcp($i)
  83. $ns at 0 "$lftp($i) start"
  84. }
  85. # Short term flows
  86. addsrc 1
  87. adddst 0
  88. set pool [new PagePool/WebTraf]
  89. # Set up server and client nodes
  90. $pool set-num-client [llength [$ns set src_]]
  91. $pool set-num-server [llength [$ns set dst_]]
  92. global n
  93. set i 0
  94. foreach s [$ns set src_] {
  95.         $pool set-client $i $n($s)
  96.         incr i
  97. }
  98. set i 0
  99. foreach s [$ns set dst_] {
  100.         $pool set-server $i $n($s)
  101.         incr i
  102. }
  103. # Number of Pages per Session
  104. set numPage 100000
  105. $pool set-num-session 1
  106. set interPage [new RandomVariable/Exponential]
  107. $interPage set avg_ 0.5
  108. set pageSize [new RandomVariable/Constant]
  109. $pageSize set val_ 1
  110. set interObj [new RandomVariable/Exponential]
  111. $interObj set avg_ 1
  112. set objSize [new RandomVariable/Constant]
  113. $objSize set val_ 20
  114. # This is needed
  115. $pool use-asim
  116. $pool create-session 0 $numPage 0 $interPage $pageSize $interObj $objSize
  117. # Dumps internal data structures to this dumpfile
  118. $ns asim-dump dumpfile
  119. # Calls asim-run 
  120. $ns asim-run
  121. # Access asim statistics
  122. set l [$ns link $n(0) $n(1)]
  123. puts "after asim run, link bw = [$ns asim-getLinkTput $l] packets"
  124. puts "after asim run, flow bw = [$ns asim-getFlowTput $ltcp(0)] packets"
  125. end{verbatim}