# this is a simulator to simulate large numbers of denial-of-service agents # attacking a central server... a la dialups set ns [new Simulator] $ns set-address-format hierarchical 3 8 8 8 # set random number generator set rng [new RNG] # to prevent us from too much randomness. #$rng seed 35 ## FUNCTIONS ### ## Generated by sgb2hier-ns,sgb2hier-ns generated from sgb2ns # sgb2ns adapted from sgb2alt by Polly Huang # GRAPH (#nodes #edges id uu vv ww xx yy zz): # 200 672 transtub(0,4,0,0,{1,126,3,1.000,0.000,0.000},{8,64,3,0.800,0.000,0.000},{6,43,3,0.500,0.000,0.000}) 126 2 3 0 #Creating hierarchical topology from transit-stub graph: proc create-hier-topology {nsns node linkBW} { upvar $node n upvar $nsns ns set verbose 1 if {$verbose} { puts "Creating hierarchical nodes.." } set i 0 foreach a { 0.39.5 0.1.0 0.2.0 0.3.0 0.4.0 0.5.0 0.6.0 0.7.0 0.8.0 0.8.1 0.8.2 0.8.3 0.9.0 0.9.1 0.9.2 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.11.2 0.11.3 0.11.4 0.11.5 0.12.0 0.12.1 0.12.2 0.12.3 0.12.4 0.12.5 0.12.6 0.12.7 0.12.8 0.13.0 0.13.1 0.13.2 0.13.3 0.13.4 0.13.5 0.13.6 0.14.0 0.14.1 0.14.2 0.14.3 0.14.4 0.14.5 0.15.0 0.15.1 0.15.2 0.15.3 0.15.4 0.16.0 0.16.1 0.16.2 0.16.3 0.16.4 0.17.0 0.17.1 0.17.2 0.17.3 0.17.4 0.17.5 0.18.0 0.18.1 0.18.2 0.18.3 0.18.4 0.19.0 0.19.1 0.19.2 0.19.3 0.20.0 0.20.1 0.20.2 0.20.3 0.20.4 0.20.5 0.20.6 0.20.7 0.20.8 0.20.9 0.21.0 0.21.1 0.21.2 0.21.3 0.21.4 0.21.5 0.21.6 0.22.0 0.22.1 0.22.2 0.22.3 0.22.4 0.22.5 0.23.0 0.23.1 0.23.2 0.23.3 0.23.4 0.23.5 0.23.6 0.23.7 0.23.8 0.23.9 0.23.10 0.24.0 0.24.1 0.24.2 0.24.3 0.24.4 0.24.5 0.25.0 0.25.1 0.25.2 0.25.3 0.26.0 0.26.1 0.26.2 0.26.3 0.26.4 0.27.0 0.27.1 0.27.2 0.27.3 0.28.0 0.28.1 0.28.2 0.28.3 0.28.4 0.29.0 0.29.1 0.29.2 0.29.3 0.29.4 0.30.0 0.30.1 0.30.2 0.30.3 0.30.4 0.30.5 0.30.6 0.31.0 0.31.1 0.31.2 0.31.3 0.31.4 0.31.5 0.31.6 0.31.7 0.31.8 0.32.0 0.32.1 0.32.2 0.32.3 0.32.4 0.32.5 0.32.6 0.33.0 0.33.1 0.33.2 0.33.3 0.34.0 0.34.1 0.34.2 0.35.0 0.35.1 0.35.2 0.35.3 0.35.4 0.35.5 0.35.6 0.36.0 0.36.1 0.36.2 0.36.3 0.36.4 0.37.0 0.37.1 0.37.2 0.37.3 0.37.4 0.38.0 0.38.1 0.38.2 0.38.3 0.38.4 0.38.5 0.38.6 0.38.7 0.38.8 0.39.0 0.39.1 0.39.2 0.39.3 0.39.4 } { set n($i) [$ns node $a] incr i if {[expr $i % 100] == 0} { puts "creating node $i..." } } # Topology information : lappend domain 1 AddrParams set domain_num_ $domain lappend cluster 40 AddrParams set cluster_num_ $cluster lappend eilastlevel 1 1 1 1 1 1 1 1 4 8 3 6 9 7 6 5 5 6 5 4 10 7 6 11 6 4 5 4 5 5 7 9 7 4 3 7 5 5 9 5 AddrParams set nodes_num_ $eilastlevel # EDGES (from-node to-node length a b): if {$verbose} { puts "Creating links 0..." flush stdout } set i 0 foreach t { {0 13 330ms} {0 10 130ms} {0 1 210ms} {0 2 230ms} {0 4 110ms} {0 5 530ms} {0 7 460ms} {1 29 90ms} {1 27 320ms} {1 20 210ms} {1 2 150ms} {1 3 340ms} {1 5 350ms} {1 6 250ms} {1 7 260ms} {2 55 80ms} {2 50 160ms} {2 43 240ms} {2 3 330ms} {2 4 190ms} {2 6 230ms} {3 84 270ms} {3 75 350ms} {3 68 210ms} {3 61 410ms} {3 59 360ms} {3 4 520ms} {3 5 90ms} {3 6 550ms} {3 7 90ms} {4 132 220ms} {4 125 430ms} {4 121 420ms} {4 117 130ms} {4 115 20ms} {4 106 150ms} {4 98 160ms} {4 91 300ms} {4 5 500ms} {4 7 470ms} {5 143 270ms} {5 138 80ms} {5 6 540ms} {5 7 150ms} {6 171 210ms} {6 167 330ms} {6 163 230ms} {6 159 310ms} {6 153 400ms} {6 7 490ms} {7 196 300ms} {7 194 290ms} {7 182 320ms} {7 180 300ms} {8 9 160ms} {8 11 210ms} {9 10 290ms} {9 11 210ms} {10 11 120ms} {12 15 230ms} {12 16 310ms} {12 19 190ms} {13 14 430ms} {13 16 50ms} {13 18 340ms} {13 19 220ms} {15 16 290ms} {15 17 270ms} {15 18 40ms} {16 19 170ms} {17 18 300ms} {18 19 310ms} {20 22 150ms} {21 22 350ms} {23 24 230ms} {23 25 160ms} {23 27 250ms} {24 27 270ms} {24 28 90ms} {25 26 260ms} {26 27 110ms} {29 31 130ms} {29 32 210ms} {29 33 200ms} {29 35 220ms} {29 36 180ms} {29 37 110ms} {30 33 210ms} {30 35 80ms} {31 34 280ms} {31 36 140ms} {32 33 240ms} {32 36 40ms} {33 34 280ms} {33 35 260ms} {33 36 250ms} {33 37 310ms} {34 36 360ms} {34 37 160ms} {35 36 40ms} {35 37 290ms} {36 37 250ms} {38 39 80ms} {38 40 180ms} {38 41 140ms} {39 40 170ms} {39 41 180ms} {39 42 70ms} {39 44 200ms} {40 44 260ms} {41 42 240ms} {41 44 130ms} {42 43 190ms} {42 44 230ms} {43 44 220ms} {45 48 40ms} {46 48 90ms} {46 49 70ms} {46 50 90ms} {47 48 180ms} {47 49 30ms} {47 50 120ms} {48 50 160ms} {51 52 160ms} {51 54 270ms} {52 54 290ms} {52 55 250ms} {53 55 190ms} {56 59 290ms} {56 60 340ms} {57 59 410ms} {58 60 260ms} {59 60 80ms} {61 62 260ms} {61 64 290ms} {61 65 120ms} {61 66 250ms} {62 63 390ms} {62 64 70ms} {62 66 240ms} {63 65 390ms} {63 66 150ms} {64 66 200ms} {67 68 310ms} {67 71 360ms} {68 69 50ms} {69 70 160ms} {69 71 140ms} {72 74 50ms} {73 75 420ms} {74 75 230ms} {76 77 120ms} {76 78 230ms} {76 80 220ms} {76 82 100ms} {76 83 50ms} {77 78 130ms} {77 79 280ms} {77 82 210ms} {77 83 90ms} {77 84 80ms} {78 79 330ms} {78 80 80ms} {78 84 140ms} {78 85 180ms} {79 80 270ms} {79 81 220ms} {79 82 190ms} {79 84 210ms} {80 81 260ms} {80 82 310ms} {80 83 220ms} {80 84 120ms} {82 84 190ms} {83 85 220ms} {86 87 290ms} {86 89 300ms} {86 90 150ms} {86 92 50ms} {87 89 20ms} {87 90 140ms} {87 92 250ms} {88 89 380ms} {88 90 220ms} {88 91 250ms} {88 92 130ms} {89 90 160ms} {89 92 270ms} {90 92 130ms} {91 92 250ms} {93 95 90ms} {93 97 240ms} {94 95 200ms} {94 96 100ms} {94 97 20ms} {95 96 300ms} {95 98 200ms} {96 98 150ms} {99 100 90ms} {99 104 290ms} {99 105 60ms} {99 109 70ms} {100 102 260ms} {100 103 130ms} {100 105 80ms} {100 106 350ms} {101 102 20ms} {101 104 90ms} {101 105 280ms} {101 106 90ms} {101 107 310ms} {102 103 210ms} {102 104 90ms} {102 105 260ms} {102 106 110ms} {102 108 250ms} {103 105 200ms} {104 106 80ms} {104 108 280ms} {105 107 400ms} {106 107 300ms} {106 108 210ms} {106 109 300ms} {110 111 50ms} {110 112 290ms} {110 114 500ms} {111 112 240ms} {111 114 470ms} {111 115 310ms} {112 113 150ms} {113 115 110ms} {116 117 100ms} {116 118 240ms} {116 119 100ms} {117 118 310ms} {117 119 100ms} {120 124 340ms} {121 122 260ms} {121 124 180ms} {123 124 460ms} {125 127 170ms} {126 127 180ms} {126 128 140ms} {129 131 190ms} {129 132 120ms} {129 133 100ms} {130 131 240ms} {130 133 70ms} {134 135 30ms} {134 136 270ms} {134 138 120ms} {135 137 330ms} {136 137 200ms} {136 138 200ms} {139 140 170ms} {139 141 170ms} {139 142 90ms} {139 143 260ms} {140 141 150ms} {143 144 290ms} {143 145 210ms} {146 147 60ms} {146 148 150ms} {146 149 150ms} {146 150 140ms} {146 152 310ms} {147 154 290ms} {148 149 190ms} {148 151 170ms} {148 152 160ms} {148 154 120ms} {149 152 340ms} {150 151 70ms} {150 152 320ms} {150 154 330ms} {151 154 280ms} {152 154 140ms} {153 154 70ms} {155 158 100ms} {156 157 100ms} {156 159 190ms} {156 161 240ms} {157 160 110ms} {158 159 500ms} {158 160 280ms} {158 161 220ms} {160 161 220ms} {162 163 150ms} {162 164 150ms} {162 165 300ms} {166 167 110ms} {166 168 380ms} {169 172 110ms} {169 175 110ms} {170 171 100ms} {170 172 220ms} {170 175 200ms} {171 175 210ms} {173 174 160ms} {173 175 90ms} {174 175 250ms} {176 177 240ms} {176 178 140ms} {176 179 170ms} {177 179 150ms} {177 180 140ms} {178 180 220ms} {181 182 140ms} {181 183 460ms} {181 184 260ms} {182 183 370ms} {183 184 320ms} {183 185 490ms} {186 190 250ms} {186 191 210ms} {186 192 280ms} {186 194 250ms} {187 189 170ms} {187 191 340ms} {187 194 310ms} {188 189 210ms} {188 192 180ms} {188 193 330ms} {189 190 270ms} {190 191 410ms} {190 194 400ms} {191 192 320ms} {191 193 160ms} {192 193 320ms} {192 194 260ms} {193 194 220ms} {195 196 290ms} {195 198 100ms} {196 198 210ms} {197 198 220ms} {198 199 210ms} } { $ns duplex-link $n([lindex $t 0]) $n([lindex $t 1]) $linkBW [lindex $t 2] DropTail incr i if {[expr $i % 100] == 0} { puts "creating link $i..." } } return 200 } # end of hier topology generation proc finish {} { global ns f $ns flush-trace close $f exit 0 } proc bandtodelay {bandwidth} { # returns the proper delay value based on a particular bandwidth in bits/s return [expr (1/($bandwidth+1))*1000000000] } proc depthmultiplier {{depth 1}} { # returns the proper multiplier on which to base a decay of bandwidth # capacity for progressively-farther-out nodes set mult 500000000 return .8 } ### SIMULATION ### set f [open gridstars.nam w] $ns namtrace-all $f #$ns rtproto DV # size of core node grid, and length of edge of grid # set corenodes 9 # set coreedge 3 # depth to recurse when making a new node. # set maxrecurse 2 # number of arms to make nodes of when recursing # set maxsatellites 3 # background traffic agent number set backgrounds 300 set branch 0 set tree(0) [$ns node] set arrname {tree} # i think i need some variable settings before we go hierarchical on yo a**... set num [create-hier-topology ns tree 100Mb] $ns at 0.00000001 "finish" # next, set up all the agents to and from the various nodes... set treenodes [array size tree] puts "treenodes is $treenodes" # for {set i 0} {$i < $treenodes} {incr i} { # puts $tree([expr $i+4]) # } set rng [new RNG] set counter 0 set apps(0) sfdfsda $ns flush-trace set news [$ns create-connection TCP/Vegas $tree(0) TCPSink/DelAck $tree(80) 4] set app [$news attach-app FTP] $ns at 0.5 "$app start" $ns flush-trace $ns at 7.0 "finish" puts "basdfassdasfdsfdaad" $ns run while {$backgrounds > 0} { set testing [$rng uniform 0 1] set from [$rng integer $treenodes] set to [$rng integer $treenodes] if {$from == $to} { incr from } # set up a connection puts $counter set tcp($counter) [$ns create-connection TCP/Vegas $tree($from) \ TCPSink/DelAck $tree($to) $counter] # puts $tcp($from) if {$testing > 0.1} { # set up the application set apps($counter) [$tcp($counter) attach-app FTP] $ns at 0.5 "$apps($counter) start" } else { set apps($counter) [$tcp($counter) attach-app Traffic/Exponential] $ns at 0.5 "$apps($counter) start" } set backgrounds [expr $backgrounds-1] incr counter $ns flush-trace } # for {set i 0} {$i < $corenodes} {incr i} { # if {$i%$coreedge != 0} { # $ns duplex-link $grid($i) $grid([expr $i-1]) 100Mb 10ms DropTail # } elseif {$i/$coreedge >= 1} { # $ns duplex-link $grid($i) $grid([expr $i-$coreedge]) 100Mb 10ms DropTail # } elseif {$i%$coreedge == 0} { # set branch [newstar $arrname $grid($i) $branch 0 100Mb 45Kb] # } elseif {$i%$coreedge == $coreedge - 1} { # set branch [newstar $arrname $grid($i) $branch 0 100Mb 45Kb] # } # # } # set cbr0 [new Agent/CBR] # $ns attach-agent $grid(0) $cbr0 # set null0 [new Agent/Null] # $ns attach-agent $grid([expr $corenodes-1]) $null0 # $ns connect $cbr0 $null0 # $ns at 0.5 "$cbr0 start" $ns at 0.00005 "finish" # $ns run