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

通讯编程

开发平台:

Visual C++

  1. # db-fulltcp.tcl 
  2. #
  3. # Demonstrates a simple Full-TCP file transfer with DelayBox
  4. # setup ns
  5. remove-all-packet-headers;            # removes all packet headers
  6. add-packet-header IP TCP;             # adds TCP/IP headers
  7. set ns [new Simulator];               # instantiate the simulator
  8. global defaultRNG
  9. $defaultRNG seed 999
  10. # create nodes
  11. set n_src [$ns node]
  12. set db(0) [$ns DelayBox]
  13. set db(1) [$ns DelayBox]
  14. set n_sink [$ns node]
  15. # setup links
  16. $ns duplex-link $db(0) $db(1) 100Mb 1ms DropTail
  17. $ns duplex-link $n_src $db(0) 100Mb 1ms DropTail
  18. $ns duplex-link $n_sink $db(1) 100Mb 1ms DropTail
  19. # trace queues
  20. Trace set show_tcphdr_ 1
  21. set qmonf [open "db-fulltcp.trq" w]
  22. $ns trace-queue $db(0) $db(1) $qmonf
  23. $ns trace-queue $db(1) $db(0) $qmonf
  24. set src [new Agent/TCP/FullTcp]
  25. set sink [new Agent/TCP/FullTcp]
  26. $src set fid_ 1
  27. $sink set fid_ 1
  28. # attach agents to nodes
  29. $ns attach-agent $n_src $src
  30. $ns attach-agent $n_sink $sink
  31. # make the connection
  32. $ns connect $src $sink
  33. $sink listen
  34. # create random variables
  35. set recvr_delay [new RandomVariable/Uniform];     # delay 1-20 ms
  36. $recvr_delay set min_ 1 
  37. $recvr_delay set max_ 20
  38. set sender_delay [new RandomVariable/Uniform];    # delay 20-100 ms
  39. $sender_delay set min_ 20
  40. $sender_delay set max_ 100
  41. set recvr_bw [new RandomVariable/Constant];       # bw 100 Mbps
  42. $recvr_bw set val_ 100
  43. set sender_bw [new RandomVariable/Uniform];       # bw 1-20 Mbps
  44. $sender_bw set min_ 1
  45. $sender_bw set max_ 20
  46. set loss_rate [new RandomVariable/Uniform];       # loss 0-1% loss
  47. $loss_rate set min_ 0
  48. $loss_rate set max_ 0.01
  49. # setup rules for DelayBoxes 
  50. $db(0) add-rule [$n_src id] [$n_sink id] $recvr_delay $loss_rate $recvr_bw
  51. $db(1) add-rule [$n_src id] [$n_sink id] $sender_delay $loss_rate $sender_bw
  52. # output delays to files
  53. $db(0) set-delay-file "db-fulltcp-db0.out"
  54. $db(1) set-delay-file "db-fulltcp-db1.out"
  55. # schedule traffic
  56. $ns at 0.5 "$src advance 10000"
  57. $ns at 1000.0 "$db(0) close-delay-file; $db(1) close-delay-file; exit 0"
  58. # start the simulation
  59. $ns run