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

通讯编程

开发平台:

Visual C++

  1. # Copyright (c) 1995 The Regents of the University of California.
  2. # All rights reserved.
  3. #
  4. # Redistribution and use in source and binary forms, with or without
  5. # modification, are permitted provided that the following conditions
  6. # are met:
  7. # 1. Redistributions of source code must retain the above copyright
  8. #    notice, this list of conditions and the following disclaimer.
  9. # 2. Redistributions in binary form must reproduce the above copyright
  10. #    notice, this list of conditions and the following disclaimer in the
  11. #    documentation and/or other materials provided with the distribution.
  12. # 3. All advertising materials mentioning features or use of this software
  13. #    must display the following acknowledgement:
  14. # This product includes software developed by the Computer Systems
  15. # Engineering Group at Lawrence Berkeley Laboratory.
  16. # 4. Neither the name of the University nor of the Laboratory may be used
  17. #    to endorse or promote products derived from this software without
  18. #    specific prior written permission.
  19. #
  20. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  21. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  24. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  25. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  26. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  27. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  28. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  29. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30. # SUCH DAMAGE.
  31. #
  32. # Test with 1000 nodes in the detailed network
  33. # Create simulation topology
  34. #     DN==============AN
  35. #     1
  36. #      
  37. #        -- 0 ======= 1001
  38. #      /
  39. #     1000
  40. proc create-topo { num_node } {
  41.     global ns n an_id verbose
  42.     for {set i 0} {$i < $num_node} {incr i} {
  43. set n($i) [$ns node]
  44.     }
  45.     # setup links within detailed networks, use default routing
  46.     for {set i 1} {$i < [expr $num_node - 1]} {incr i} {
  47. $ns duplex-link $n(0) $n($i) 25Mb 10ms DropTail
  48. # default routing
  49. [$n($i) entry] defaulttarget [[$ns link $n($i) $n(0)] head]
  50. if {$verbose} { 
  51.     puts "(0 $i) 25Mb 10ms DropTail"
  52. }
  53.     }
  54.     # setup link between DN and AN
  55.     $ns duplex-link $n(0) $n($an_id) 100Mb 20ms DropTail
  56.     [$n(0) entry] defaulttarget [[$ns link $n(0) $n($an_id)] head]
  57.     if {$verbose} { 
  58. puts "(0 $an_id) 100Mb 20ms DropTail"
  59.     }
  60. }
  61. set ON 1
  62. set OFF 0
  63. # enable debugging by default
  64. set verbose ON
  65. # Initialize simulator
  66. set ns [new Simulator]
  67. set num_node 502
  68. set an_id [expr $num_node - 1]
  69. create-topo $num_node
  70. # set up simulation scenario
  71. set total_host 200000
  72. set probing_port [Application/Worm set ScanPort]
  73. # probing packet size
  74. # slammer worm UDP packets of 404 Bytes
  75. set p_size 404
  76. Application/Worm set ScanPacketSize $p_size
  77. Agent/MessagePassing set packetSize_ $p_size
  78. # Application/Worm set ScanRate 1
  79. # 1.config the detailed network
  80. for {set i 0} {$i < $num_node - 1} {incr i} {
  81.     set a($i) [new Agent/MessagePassing]
  82.     $n($i) attach $a($i) $probing_port
  83.     set w($i) [new Application/Worm/Dnh]
  84.     $w($i) attach-agent $a($i)
  85.     $w($i) addr-range 0 [expr $num_node - 2]
  86. }
  87. # 2. set up abstract network
  88. set a($an_id) [new Agent/MessagePassing]
  89. $n($an_id) attach $a($an_id) $probing_port
  90. set w($an_id) [new Application/Worm/An]
  91. $w($an_id) attach-agent $a($an_id)
  92. $w($an_id) addr-range $an_id $total_host
  93. $w($an_id) dn-range 0 [expr $num_node - 2]
  94. $w($an_id) v_percent 0.8
  95. # recv all packets coming in
  96. set p [$n($an_id) set dmux_]
  97. $p defaulttarget $a($an_id)
  98. [$n($an_id) entry] defaulttarget $p
  99. # now starts infection
  100. $ns at 1.0 "$w($an_id) start"
  101. proc finish {} {
  102.     exit 0
  103. }
  104. $ns at 65.0 "finish"
  105. $ns run