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

通讯编程

开发平台:

Visual C++

  1. chapter{UDP Agents}
  2. label{sec:udpAgents}
  3. section{UDP Agents}
  4. label{sec:udpagent}
  5. UDP agents are implemented in code{udp.{cc, h}}.  A UDP agent accepts
  6. data in variable size chunks from an application, and segments the data 
  7. if needed.  UDP packets also contain a monotonically increasing sequence
  8. number and an RTP timestamp.  Although real UDP packets do not contain 
  9. sequence numbers or timestamps, this sequence number does not incur any 
  10. simulated overhead, and can be useful for tracefile analysis or for
  11. simulating UDP-based applications.
  12. The default maximum segment size (MSS) for UDP agents is 1000 byte:
  13. begin{program}
  14. Agent/UDP set packetSize_   1000              ; max segment size;
  15. end{program}
  16. This OTcl instvar is bound to the C++ agent variable code{size_}.  
  17. Applications can access UDP agents via the fcn[]{sendmsg} function in C++,
  18. or via the code{send} or code{sendmsg} methods in OTcl, as described in
  19. section ref{sec:systemcalls}.  
  20. The following is a simple example of how a UDP agent may be used in a program.  
  21. In the example, the CBR traffic generator is started at time 1.0, at which time
  22. the generator begins to periodically call the UDP agent fcn[]{sendmsg}
  23. function.
  24. begin{program}
  25.         set ns [new Simulator]
  26.         set n0 [$ns node]
  27.         set n1 [$ns node]
  28.         $ns duplex-link $n0 $n1 5Mb 2ms DropTail
  29.         set udp0 [new Agent/UDP]
  30.         $ns attach-agent $n0 $udp0
  31.         set cbr0 [new Application/Traffic/CBR]
  32.         $cbr0 attach-agent $udp0
  33.         $udp0 set packetSize_ 536 ; set MSS to 536 bytes;
  34.         set null0 [new Agent/Null]
  35.         $ns attach-agent $n1 $null0
  36.         $ns connect $udp0 $null0
  37.         $ns at 1.0 "$cbr0 start"
  38. end{program}
  39. section{Commands at a glance}
  40. label{sec:udpcommand}
  41. The following commands are used to setup UDP agents in simulation scripts:
  42. begin{flushleft}
  43. code{set udp0 [new Agent/UDP]}\
  44. This creates an instance of the UDP agent.
  45. code{$ns_ attach-agent <node> <agent>}\
  46. This is a common command used to attach any <agent> to a given <node>.
  47. code{$traffic-gen attach-agent <agent>}\
  48. This a class Application/Traffic/<traffictype> method which connects the
  49. traffic generator to the given <agent>. For example, if we want to setup
  50. a CBR traffic flow for the udp agent, udp1, we given the following commands\
  51. begin{program}
  52. set cbr1 [new Application/Traffic/CBR]
  53. $cbr1 attach-agent $udp1
  54. end{program}
  55. code{$ns_ connect <src-agent> <dst-agent>}\
  56. This command sets up an end-to-end connection between two agents (at the
  57. transport layer).
  58. begin{program}
  59. $udp set packetSize_ <pktsize>
  60. $udp set dst_addr_ <address>
  61. $udp set dst_port_ <portnum>
  62. $udp set class_ <class-type>
  63. $udp set ttl_ <time-to-live>
  64. ..... etc
  65. end{program}
  66. The above are different parameter values that may be set as shown above
  67. for udp agents. The default values can be found in 
  68. ns/tcl/lib/ns-default.tcl.
  69. For a typical example of setting up an UDP agent used in a simulation, see
  70. the above section ref{sec:udpagent}.
  71. end{flushleft}
  72. endinput