SHOW:
|
|
- or go back to the newest paste.
| 1 | # Creating New Simulator | |
| 2 | set ns [new Simulator] | |
| 3 | ||
| 4 | # Use distance vector routing protocol | |
| 5 | # $ns rtproto DV | |
| 6 | ||
| 7 | # Set up nodes - creating the simulation environment | |
| 8 | set D1 [$ns node] | |
| 9 | puts "D1: [$D1 id]" | |
| 10 | set A1 [$ns node] | |
| 11 | puts "A1: [$A1 id]" | |
| 12 | set A2 [$ns node] | |
| 13 | puts "A2: [$A2 id]" | |
| 14 | set A3 [$ns node] | |
| 15 | puts "A3: [$A3 id]" | |
| 16 | set A4 [$ns node] | |
| 17 | puts "A4: [$A4 id]" | |
| 18 | set A5 [$ns node] | |
| 19 | puts "A5: [$A5 id]" | |
| 20 | set A7 [$ns node] | |
| 21 | puts "A7: [$A7 id]" | |
| 22 | set D2 [$ns node] | |
| 23 | puts "D2: [$D2 id]" | |
| 24 | set D3 [$ns node] | |
| 25 | puts "D3: [$D3 id]" | |
| 26 | set A6 [$ns node] | |
| 27 | puts "A6: [$A6 id]" | |
| 28 | set A8 [$ns node] | |
| 29 | puts "A8: [$A8 id]" | |
| 30 | set A9 [$ns node] | |
| 31 | puts "A9: [$A9 id]" | |
| 32 | set A10 [$ns node] | |
| 33 | puts "A10: [$A10 id]" | |
| 34 | set A11 [$ns node] | |
| 35 | puts "A11: [$A11 id]" | |
| 36 | set A12 [$ns node] | |
| 37 | puts "A12: [$A12 id]" | |
| 38 | set A13 [$ns node] | |
| 39 | puts "A13: [$A13 id]" | |
| 40 | set R2 [$ns node] | |
| 41 | puts "R2: [$R2 id]" | |
| 42 | set R1 [$ns node] | |
| 43 | puts "R1: [$R1 id]" | |
| 44 | set W1 [$ns node] | |
| 45 | puts "W1: [$W1 id]" | |
| 46 | for {set q 0} {$q < 120 } {incr q} {
| |
| 47 | set GF_Call_Centre_node_($q) [$ns node] | |
| 48 | puts "GF_Call_Centre_node_($q): [$GF_Call_Centre_node_($q) id]" | |
| 49 | } | |
| 50 | for {set q 0} {$q < 40 } {incr q} {
| |
| 51 | set GF_IT_Office_node_($q) [$ns node] | |
| 52 | puts "GF_IT_Office_node_($q): [$GF_IT_Office_node_($q) id]" | |
| 53 | } | |
| 54 | for {set q 0} {$q < 40 } {incr q} {
| |
| 55 | set GF_Office_1_node_($q) [$ns node] | |
| 56 | puts "GF_Office_1_node_($q): [$GF_Office_1_node_($q) id]" | |
| 57 | } | |
| 58 | for {set q 0} {$q < 3 } {incr q} {
| |
| 59 | set GF_Reception_node_($q) [$ns node] | |
| 60 | puts "GF_Reception_node_($q): [$GF_Reception_node_($q) id]" | |
| 61 | } | |
| 62 | for {set q 0} {$q < 3 } {incr q} {
| |
| 63 | set GF_Tech_Office_node_($q) [$ns node] | |
| 64 | puts "GF_Tech_Office_node_($q): [$GF_Tech_Office_node_($q) id]" | |
| 65 | } | |
| 66 | for {set q 0} {$q < 80 } {incr q} {
| |
| 67 | set FF_Support_Office_node_($q) [$ns node] | |
| 68 | puts "FF_Support_Office_node_($q): [$FF_Support_Office_node_($q) id]" | |
| 69 | } | |
| 70 | for {set q 0} {$q < 3 } {incr q} {
| |
| 71 | set FF_Meeting_Rooms_node_($q) [$ns node] | |
| 72 | puts "FF_Meeting_Rooms_node_($q): [$FF_Meeting_Rooms_node_($q) id]" | |
| 73 | } | |
| 74 | for {set q 0} {$q < 15 } {incr q} {
| |
| 75 | set FF_Offices_1_node_($q) [$ns node] | |
| 76 | puts "FF_Offices_1_node_($q): [$FF_Offices_1_node_($q) id]" | |
| 77 | } | |
| 78 | for {set q 0} {$q < 8 } {incr q} {
| |
| 79 | set FF_Offices_2_node_($q) [$ns node] | |
| 80 | puts "FF_Offices_2_node_($q): [$FF_Offices_2_node_($q) id]" | |
| 81 | } | |
| 82 | for {set q 0} {$q < 30 } {incr q} {
| |
| 83 | set FF_Offices_3_node_($q) [$ns node] | |
| 84 | puts "FF_Offices_3_node_($q): [$FF_Offices_3_node_($q) id]" | |
| 85 | } | |
| 86 | for {set q 0} {$q < 5 } {incr q} {
| |
| 87 | set SF_Offices_1_node_($q) [$ns node] | |
| 88 | puts "SF_Offices_1_node_($q): [$SF_Offices_1_node_($q) id]" | |
| 89 | } | |
| 90 | for {set q 0} {$q < 4 } {incr q} {
| |
| 91 | set SF_Office_2_node_($q) [$ns node] | |
| 92 | puts "SF_Office_2_node_($q): [$SF_Office_2_node_($q) id]" | |
| 93 | } | |
| 94 | for {set q 0} {$q < 5 } {incr q} {
| |
| 95 | set SF_Meeting_Rooms_node_($q) [$ns node] | |
| 96 | puts "SF_Meeting_Rooms_node_($q): [$SF_Meeting_Rooms_node_($q) id]" | |
| 97 | } | |
| 98 | ||
| 99 | # Ground floor to D1 | |
| 100 | $ns duplex-link $A1 $D1 100Mb 0ms DropTail | |
| 101 | ||
| 102 | $ns duplex-link $A2 $D1 100Mb 0ms DropTail | |
| 103 | ||
| 104 | $ns duplex-link $A3 $D1 100Mb 0ms DropTail | |
| 105 | ||
| 106 | $ns duplex-link $A4 $D1 100Mb 0ms DropTail | |
| 107 | ||
| 108 | $ns duplex-link $A5 $D1 100Mb 0ms DropTail | |
| 109 | ||
| 110 | # Doubled up links | |
| 111 | $ns duplex-link $A1 $D2 100Mb 0ms DropTail | |
| 112 | ||
| 113 | $ns duplex-link $A5 $D2 100Mb 0ms DropTail | |
| 114 | ||
| 115 | $ns duplex-link $A6 $D3 100Mb 0ms DropTail | |
| 116 | ||
| 117 | # First floor to D2 | |
| 118 | $ns duplex-link $A6 $D2 100Mb 0ms DropTail | |
| 119 | ||
| 120 | $ns duplex-link $A7 $D2 100Mb 0ms DropTail | |
| 121 | ||
| 122 | $ns duplex-link $A8 $D2 100Mb 0ms DropTail | |
| 123 | ||
| 124 | $ns duplex-link $A9 $D2 100Mb 0ms DropTail | |
| 125 | ||
| 126 | $ns duplex-link $A10 $D2 100Mb 0ms DropTail | |
| 127 | ||
| 128 | # Second floor to D3 | |
| 129 | $ns duplex-link $A11 $D3 100Mb 0ms DropTail | |
| 130 | ||
| 131 | $ns duplex-link $A12 $D3 100Mb 0ms DropTail | |
| 132 | ||
| 133 | $ns duplex-link $A13 $D3 100Mb 0ms DropTail | |
| 134 | ||
| 135 | # Router links to W1 | |
| 136 | $ns duplex-link $R1 $W1 10Gb 0ms DropTail | |
| 137 | ||
| 138 | $ns duplex-link $R2 $W1 10Gb 0ms DropTail | |
| 139 | ||
| 140 | # Core layer to core layer | |
| 141 | $ns duplex-link $R1 $R2 10Gb 0ms DropTail | |
| 142 | ||
| 143 | # Distribution layers to core layers | |
| 144 | $ns duplex-link $D1 $R1 10Gb 0ms DropTail | |
| 145 | ||
| 146 | $ns duplex-link $D1 $R2 10Gb 0ms DropTail | |
| 147 | ||
| 148 | $ns duplex-link $D2 $R1 10Gb 0ms DropTail | |
| 149 | ||
| 150 | $ns duplex-link $D2 $R2 10Gb 0ms DropTail | |
| 151 | ||
| 152 | $ns duplex-link $D3 $R1 10Gb 0ms DropTail | |
| 153 | ||
| 154 | $ns duplex-link $D3 $R2 10Gb 0ms DropTail | |
| 155 | ||
| 156 | # Distribution layer to distribution layer | |
| 157 | $ns duplex-link $D1 $D2 10Gb 0ms DropTail | |
| 158 | ||
| 159 | $ns duplex-link $D2 $D3 10Gb 0ms DropTail | |
| 160 | ||
| 161 | ||
| 162 | # Set up links for groups | |
| 163 | for {set q 0} {$q < 120 } {incr q} {
| |
| 164 | $ns duplex-link $A1 $GF_Call_Centre_node_($q) 100Mb 0ms DropTail | |
| 165 | } | |
| 166 | ||
| 167 | for {set q 0} {$q < 40 } {incr q} {
| |
| 168 | $ns duplex-link $A2 $GF_IT_Office_node_($q) 100Mb 0ms DropTail | |
| 169 | } | |
| 170 | ||
| 171 | for {set q 0} {$q < 40 } {incr q} {
| |
| 172 | $ns duplex-link $A3 $GF_Office_1_node_($q) 100Mb 0ms DropTail | |
| 173 | } | |
| 174 | ||
| 175 | for {set q 0} {$q < 3 } {incr q} {
| |
| 176 | $ns duplex-link $A4 $GF_Reception_node_($q) 100Mb 0ms DropTail | |
| 177 | } | |
| 178 | ||
| 179 | for {set q 0} {$q < 3 } {incr q} {
| |
| 180 | $ns duplex-link $A5 $GF_Tech_Office_node_($q) 100Mb 0ms DropTail | |
| 181 | } | |
| 182 | ||
| 183 | for {set q 0} {$q < 80 } {incr q} {
| |
| 184 | $ns duplex-link $A6 $FF_Support_Office_node_($q) 100Mb 0ms DropTail | |
| 185 | } | |
| 186 | ||
| 187 | for {set q 0} {$q < 3 } {incr q} {
| |
| 188 | $ns duplex-link $A7 $FF_Meeting_Rooms_node_($q) 100Mb 0ms DropTail | |
| 189 | } | |
| 190 | ||
| 191 | for {set q 0} {$q < 15 } {incr q} {
| |
| 192 | $ns duplex-link $A8 $FF_Offices_1_node_($q) 100Mb 0ms DropTail | |
| 193 | } | |
| 194 | ||
| 195 | for {set q 0} {$q < 8 } {incr q} {
| |
| 196 | $ns duplex-link $A9 $FF_Offices_2_node_($q) 100Mb 0ms DropTail | |
| 197 | } | |
| 198 | ||
| 199 | for {set q 0} {$q < 30 } {incr q} {
| |
| 200 | $ns duplex-link $A10 $FF_Offices_3_node_($q) 100Mb 0ms DropTail | |
| 201 | } | |
| 202 | ||
| 203 | for {set q 0} {$q < 5 } {incr q} {
| |
| 204 | $ns duplex-link $A11 $SF_Offices_1_node_($q) 100Mb 0ms DropTail | |
| 205 | } | |
| 206 | ||
| 207 | for {set q 0} {$q < 4 } {incr q} {
| |
| 208 | $ns duplex-link $A12 $SF_Office_2_node_($q) 100Mb 0ms DropTail | |
| 209 | } | |
| 210 | ||
| 211 | for {set q 0} {$q < 5 } {incr q} {
| |
| 212 | $ns duplex-link $A13 $SF_Meeting_Rooms_node_($q) 100Mb 0ms DropTail | |
| 213 | } | |
| 214 | ||
| 215 | # Cache and Server nodes | |
| 216 | set WebCache [$ns node] | |
| 217 | puts "WebCache: [$WebCache id]" | |
| 218 | set Server [$ns node] | |
| 219 | puts "Server: [$Server id]" | |
| 220 | ||
| 221 | # Cache and Server service | |
| 222 | set WebService [new Http/Server $ns $Server] | |
| 223 | $ns duplex-link $Server $WebCache 10Gb 0ms DropTail | |
| 224 | ||
| 225 | set Cache [new Http/Cache $ns $WebCache] | |
| 226 | $ns duplex-link $WebCache $W1 10Gb 0ms DropTail | |
| 227 | ||
| 228 | set pgp [new PagePool/Math] | |
| 229 | set tmp [new RandomVariable/Constant] | |
| 230 | $tmp set val_ 4096 | |
| 231 | $pgp ranvar-size $tmp | |
| 232 | set tmp [new RandomVariable/Exponential] | |
| 233 | $tmp set avg_ 6 | |
| 234 | $pgp ranvar-age $tmp | |
| 235 | $WebService set-page-generator $pgp | |
| 236 | set tmp [new RandomVariable/Exponential] | |
| 237 | $tmp set avg_ 0.5 | |
| 238 | $Cache connect $WebService | |
| 239 | ||
| 240 | # Using applications - setting up HTTP Clients | |
| 241 | # Ground Floor | |
| 242 | # GF Call Centre | |
| 243 | for {set q 0} {$q < 120} {incr q} {
| |
| 244 | set GF_Call_Centre_Client($q) [new Http/Client $ns $GF_Call_Centre_node_($q)] | |
| 245 | $GF_Call_Centre_Client($q) set-interval-generator $tmp | |
| 246 | $GF_Call_Centre_Client($q) set-page-generator $pgp | |
| 247 | $GF_Call_Centre_Client($q) connect $Cache | |
| 248 | } | |
| 249 | ||
| 250 | # GF IT Office | |
| 251 | for {set q 0} {$q < 40} {incr q} {
| |
| 252 | set GF_IT_Office_Client($q) [new Http/Client $ns $GF_IT_Office_node_($q)] | |
| 253 | $GF_IT_Office_Client($q) set-interval-generator $tmp | |
| 254 | $GF_IT_Office_Client($q) set-page-generator $pgp | |
| 255 | $GF_IT_Office_Client($q) connect $Cache | |
| 256 | } | |
| 257 | ||
| 258 | # GF Office 1 | |
| 259 | for {set q 0} {$q < 40} {incr q} {
| |
| 260 | set GF_Office_1_Client($q) [new Http/Client $ns $GF_Office_1_node_($q)] | |
| 261 | $GF_Office_1_Client($q) set-interval-generator $tmp | |
| 262 | $GF_Office_1_Client($q) set-page-generator $pgp | |
| 263 | $GF_Office_1_Client($q) connect $Cache | |
| 264 | } | |
| 265 | ||
| 266 | # GF Reception | |
| 267 | for {set q 0} {$q < 3} {incr q} {
| |
| 268 | set GF_Reception_Client($q) [new Http/Client $ns $GF_Reception_node_($q)] | |
| 269 | $GF_Reception_Client($q) set-interval-generator $tmp | |
| 270 | $GF_Reception_Client($q) set-page-generator $pgp | |
| 271 | $GF_Reception_Client($q) connect $Cache | |
| 272 | } | |
| 273 | ||
| 274 | # GF Tech Office | |
| 275 | for {set q 0} {$q < 3} {incr q} {
| |
| 276 | set GF_Tech_Office_Client($q) [new Http/Client $ns $GF_Tech_Office_node_($q)] | |
| 277 | $GF_Tech_Office_Client($q) set-interval-generator $tmp | |
| 278 | $GF_Tech_Office_Client($q) set-page-generator $pgp | |
| 279 | $GF_Tech_Office_Client($q) connect $Cache | |
| 280 | } | |
| 281 | ||
| 282 | # First Floor | |
| 283 | # FF Support Office Client | |
| 284 | for {set q 0} {$q < 80} {incr q} {
| |
| 285 | set FF_Support_Office_Client($q) [new Http/Client $ns $FF_Support_Office_node_($q)] | |
| 286 | $FF_Support_Office_Client($q) set-interval-generator $tmp | |
| 287 | $FF_Support_Office_Client($q) set-page-generator $pgp | |
| 288 | $FF_Support_Office_Client($q) connect $Cache | |
| 289 | } | |
| 290 | ||
| 291 | # FF Meeting Rooms | |
| 292 | for {set q 0} {$q < 3} {incr q} {
| |
| 293 | set FF_Meeting_Rooms_Client($q) [new Http/Client $ns $FF_Meeting_Rooms_node_($q)] | |
| 294 | $FF_Meeting_Rooms_Client($q) set-interval-generator $tmp | |
| 295 | $FF_Meeting_Rooms_Client($q) set-page-generator $pgp | |
| 296 | $FF_Meeting_Rooms_Client($q) connect $Cache | |
| 297 | } | |
| 298 | ||
| 299 | # FF Offices 1 | |
| 300 | for {set q 0} {$q < 15} {incr q} {
| |
| 301 | set FF_Offices_1_Client($q) [new Http/Client $ns $FF_Offices_1_node_($q)] | |
| 302 | $FF_Offices_1_Client($q) set-interval-generator $tmp | |
| 303 | $FF_Offices_1_Client($q) set-page-generator $pgp | |
| 304 | $FF_Offices_1_Client($q) connect $Cache | |
| 305 | } | |
| 306 | ||
| 307 | # FF Offices 2 | |
| 308 | for {set q 0} {$q < 8} {incr q} {
| |
| 309 | set FF_Offices_2_Client($q) [new Http/Client $ns $FF_Offices_2_node_($q)] | |
| 310 | $FF_Offices_2_Client($q) set-interval-generator $tmp | |
| 311 | $FF_Offices_2_Client($q) set-page-generator $pgp | |
| 312 | $FF_Offices_2_Client($q) connect $Cache | |
| 313 | } | |
| 314 | ||
| 315 | # FF Offices 3 | |
| 316 | for {set q 0} {$q < 30} {incr q} {
| |
| 317 | set FF_Offices_3_Client($q) [new Http/Client $ns $FF_Offices_3_node_($q)] | |
| 318 | $FF_Offices_3_Client($q) set-interval-generator $tmp | |
| 319 | $FF_Offices_3_Client($q) set-page-generator $pgp | |
| 320 | $FF_Offices_3_Client($q) connect $Cache | |
| 321 | } | |
| 322 | ||
| 323 | # Second Floor | |
| 324 | # SF Offices 1 | |
| 325 | for {set q 0} {$q < 5} {incr q} {
| |
| 326 | set SF_Offices_1_Client($q) [new Http/Client $ns $SF_Offices_1_node_($q)] | |
| 327 | $SF_Offices_1_Client($q) set-interval-generator $tmp | |
| 328 | $SF_Offices_1_Client($q) set-page-generator $pgp | |
| 329 | $SF_Offices_1_Client($q) connect $Cache | |
| 330 | } | |
| 331 | ||
| 332 | # SF Office 2 | |
| 333 | for {set q 0} {$q < 4} {incr q} {
| |
| 334 | set SF_Office_2_Client($q) [new Http/Client $ns $SF_Office_2_node_($q)] | |
| 335 | $SF_Office_2_Client($q) set-interval-generator $tmp | |
| 336 | $SF_Office_2_Client($q) set-page-generator $pgp | |
| 337 | $SF_Office_2_Client($q) connect $Cache | |
| 338 | } | |
| 339 | ||
| 340 | # SF Meeting Rooms | |
| 341 | for {set q 0} {$q < 5} {incr q} {
| |
| 342 | set SF_Meeting_Rooms_Client($q) [new Http/Client $ns $SF_Meeting_Rooms_node_($q)] | |
| 343 | $SF_Meeting_Rooms_Client($q) set-interval-generator $tmp | |
| 344 | $SF_Meeting_Rooms_Client($q) set-page-generator $pgp | |
| 345 | $SF_Meeting_Rooms_Client($q) connect $Cache | |
| 346 | } | |
| 347 | ||
| 348 | ||
| 349 | # Keeping the data | |
| 350 | # Creates an event log (trace file) and the animation log (nam trace file) | |
| 351 | # set f [open out.tr w] | |
| 352 | set R1_to_W1 [open R1_to_W1.tr w] | |
| 353 | set R2_to_W1 [open R2_to_W1.tr w] | |
| 354 | ||
| 355 | set R1_to_R2 [open R1_to_R2.tr w] | |
| 356 | ||
| 357 | set D1_to_R1 [open D1_to_R1.tr w] | |
| 358 | set D1_to_R2 [open D1_to_R2.tr w] | |
| 359 | ||
| 360 | set D2_to_R1 [open D2_to_R1.tr w] | |
| 361 | set D2_to_R2 [open D2_to_R2.tr w] | |
| 362 | ||
| 363 | set D3_to_R1 [open D3_to_R1.tr w] | |
| 364 | set D3_to_R2 [open D3_to_R2.tr w] | |
| 365 | ||
| 366 | set D1_to_D2 [open D1_to_D2.tr w] | |
| 367 | set D2_to_D3 [open D1_to_D3.tr w] | |
| 368 | ||
| 369 | # $ns trace-all $f | |
| 370 | $ns trace-queue $R1 $W1 $R1_to_W1 | |
| 371 | $ns trace-queue $R2 $W1 $R2_to_W1 | |
| 372 | ||
| 373 | $ns trace-queue $R1 $R2 $R1_to_R2 | |
| 374 | ||
| 375 | $ns trace-queue $D1 $R1 $D1_to_R1 | |
| 376 | $ns trace-queue $D1 $R2 $D1_to_R2 | |
| 377 | ||
| 378 | $ns trace-queue $D2 $R1 $D2_to_R1 | |
| 379 | $ns trace-queue $D2 $R2 $D2_to_R2 | |
| 380 | ||
| 381 | $ns trace-queue $D3 $R1 $D3_to_R1 | |
| 382 | $ns trace-queue $D3 $R2 $D3_to_R2 | |
| 383 | ||
| 384 | $ns trace-queue $D1 $D2 $D1_to_D2 | |
| 385 | $ns trace-queue $D2 $D3 $D2_to_D3 | |
| 386 | ||
| 387 | proc finish {} {
| |
| 388 | # global ns nf f | |
| 389 | # $ns flush-trace | |
| 390 | puts "Simulation completed." | |
| 391 | # close $f | |
| 392 | exit 0 | |
| 393 | } | |
| 394 | ||
| 395 | # Introducing randomness | |
| 396 | # Randomness for 3 nodes | |
| 397 | set three [new RNG] | |
| 398 | $three seed 0 | |
| 399 | set rng_3 [new RandomVariable/Uniform] | |
| 400 | $rng_3 set min_ 0 | |
| 401 | $rng_3 set max_ 3 | |
| 402 | $rng_3 use-rng $three | |
| 403 | ||
| 404 | set value_3_1 [$rng_3 value] | |
| 405 | set value_3_2 [$rng_3 value] | |
| 406 | set value_3_3 [$rng_3 value] | |
| 407 | ||
| 408 | # Randomness for 4 nodes | |
| 409 | set four [new RNG] | |
| 410 | $four seed 0 | |
| 411 | set rng_4 [new RandomVariable/Uniform] | |
| 412 | $rng_4 set min_ 0 | |
| 413 | $rng_4 set max_ 4 | |
| 414 | $rng_4 use-rng $four | |
| 415 | ||
| 416 | set value_4_1 [$rng_4 value] | |
| 417 | ||
| 418 | # Randomness for 5 nodes | |
| 419 | set five [new RNG] | |
| 420 | $five seed 0 | |
| 421 | set rng_5 [new RandomVariable/Uniform] | |
| 422 | $rng_5 set min_ 0 | |
| 423 | $rng_5 set max_ 5 | |
| 424 | $rng_5 use-rng $five | |
| 425 | ||
| 426 | set value_5_1 [$rng_5 value] | |
| 427 | set value_5_2 [$rng_5 value] | |
| 428 | ||
| 429 | # Randomness for 8 nodes | |
| 430 | set eight [new RNG] | |
| 431 | $eight seed 0 | |
| 432 | set rng_8 [new RandomVariable/Uniform] | |
| 433 | $rng_8 set min_ 0 | |
| 434 | $rng_8 set max_ 8 | |
| 435 | $rng_8 use-rng $eight | |
| 436 | ||
| 437 | set value_8_1 [$rng_8 value] | |
| 438 | ||
| 439 | # Randomness for 15 nodes | |
| 440 | set fifteen [new RNG] | |
| 441 | $fifteen seed 0 | |
| 442 | set rng_15 [new RandomVariable/Uniform] | |
| 443 | $rng_15 set min_ 0 | |
| 444 | $rng_15 set max_ 15 | |
| 445 | $rng_15 use-rng $fifteen | |
| 446 | ||
| 447 | set value_15_1 [$rng_15 value] | |
| 448 | ||
| 449 | # Randomness for 30 nodes | |
| 450 | set thirty [new RNG] | |
| 451 | $thirty seed 0 | |
| 452 | set rng_30 [new RandomVariable/Uniform] | |
| 453 | $rng_30 set min_ 0 | |
| 454 | $rng_30 set max_ 30 | |
| 455 | $rng_30 use-rng $thirty | |
| 456 | ||
| 457 | set value_30_1 [$rng_30 value] | |
| 458 | ||
| 459 | # Randomness for 40 nodes | |
| 460 | set fourty [new RNG] | |
| 461 | $fourty seed 0 | |
| 462 | set rng_40 [new RandomVariable/Uniform] | |
| 463 | $rng_40 set min_ 0 | |
| 464 | $rng_40 set max_ 40 | |
| 465 | $rng_40 use-rng $fourty | |
| 466 | ||
| 467 | set value_40_1 [$rng_40 value] | |
| 468 | set value_40_2 [$rng_40 value] | |
| 469 | ||
| 470 | # Randomness for 80 nodes | |
| 471 | set eighty [new RNG] | |
| 472 | $eighty seed 0 | |
| 473 | set rng_80 [new RandomVariable/Uniform] | |
| 474 | $rng_80 set min_ 0 | |
| 475 | $rng_80 set max_ 80 | |
| 476 | $rng_80 use-rng $eighty | |
| 477 | ||
| 478 | set value_80_1 [$rng_80 value] | |
| 479 | ||
| 480 | # Randomness for 120 nodes | |
| 481 | set onetwenty [new RNG] | |
| 482 | $onetwenty seed 0 | |
| 483 | set rng_120 [new RandomVariable/Uniform] | |
| 484 | $rng_120 set min_ 0 | |
| 485 | $rng_120 set max_ 120 | |
| 486 | $rng_120 use-rng $onetwenty | |
| 487 | ||
| 488 | set value_120_1 [$rng_120 value] | |
| 489 | ||
| 490 | # Setting random times | |
| 491 | set seconds [new RNG] | |
| 492 | $seconds seed 0 | |
| 493 | set rng_time [new RandomVariable/Uniform] | |
| 494 | $rng_time set min_ 0.5 | |
| 495 | $rng_time set max_ 3570.0 | |
| 496 | $rng_time use-rng $seconds | |
| 497 | ||
| 498 | set value_time_1 [$rng_time value] | |
| 499 | set value_time_2 [$rng_time value] | |
| 500 | set value_time_3 [$rng_time value] | |
| 501 | set value_time_4 [$rng_time value] | |
| 502 | set value_time_5 [$rng_time value] | |
| 503 | set value_time_6 [$rng_time value] | |
| 504 | set value_time_7 [$rng_time value] | |
| 505 | set value_time_8 [$rng_time value] | |
| 506 | set value_time_9 [$rng_time value] | |
| 507 | set value_time_10 [$rng_time value] | |
| 508 | set value_time_11 [$rng_time value] | |
| 509 | set value_time_12 [$rng_time value] | |
| 510 | set value_time_13 [$rng_time value] | |
| 511 | ||
| 512 | # Making traffic run | |
| 513 | for {set q 0} {$q < $value_120_1} {incr q} {
| |
| 514 | $ns at 1 "$GF_Call_Centre_Client($q) start-session $Cache $WebService" | |
| 515 | } | |
| 516 | ||
| 517 | for {set q 0} {$q < $value_40_1} {incr q} {
| |
| 518 | $ns at 1 "$GF_IT_Office_Client($q) start-session $Cache $WebService" | |
| 519 | } | |
| 520 | ||
| 521 | for {set q 0} {$q < $value_40_2} {incr q} {
| |
| 522 | $ns at 1 "$GF_Office_1_Client($q) start-session $Cache $WebService" | |
| 523 | } | |
| 524 | ||
| 525 | for {set q 0} {$q < $value_3_1} {incr q} {
| |
| 526 | $ns at 1 "$GF_Reception_Client($q) start-session $Cache $WebService" | |
| 527 | } | |
| 528 | ||
| 529 | for {set q 0} {$q < $value_3_2} {incr q} {
| |
| 530 | $ns at 1 "$GF_Tech_Office_Client($q) start-session $Cache $WebService" | |
| 531 | } | |
| 532 | ||
| 533 | for {set q 0} {$q < $value_80_1} {incr q} {
| |
| 534 | $ns at 1 "$FF_Support_Office_Client($q) start-session $Cache $WebService" | |
| 535 | } | |
| 536 | ||
| 537 | for {set q 0} {$q < $value_3_3} {incr q} {
| |
| 538 | $ns at 1 "$FF_Meeting_Rooms_Client($q) start-session $Cache $WebService" | |
| 539 | } | |
| 540 | ||
| 541 | for {set q 0} {$q < $value_15_1} {incr q} {
| |
| 542 | $ns at 1 "$FF_Offices_1_Client($q) start-session $Cache $WebService" | |
| 543 | } | |
| 544 | ||
| 545 | for {set q 0} {$q < $value_8_1} {incr q} {
| |
| 546 | $ns at 1 "$FF_Offices_2_Client($q) start-session $Cache $WebService" | |
| 547 | } | |
| 548 | ||
| 549 | for {set q 0} {$q < $value_30_1} {incr q} {
| |
| 550 | $ns at 1 "$FF_Offices_3_Client($q) start-session $Cache $WebService" | |
| 551 | } | |
| 552 | ||
| 553 | for {set q 0} {$q < $value_5_1} {incr q} {
| |
| 554 | $ns at 1 "$SF_Offices_1_Client($q) start-session $Cache $WebService" | |
| 555 | } | |
| 556 | ||
| 557 | for {set q 0} {$q < $value_4_1} {incr q} {
| |
| 558 | $ns at 1 "$SF_Office_2_Client($q) start-session $Cache $WebService" | |
| 559 | } | |
| 560 | ||
| 561 | for {set q 0} {$q < $value_5_2} {incr q} {
| |
| 562 | $ns at 1 "$SF_Meeting_Rooms_Client($q) start-session $Cache $WebService" | |
| 563 | } | |
| 564 | ||
| 565 | # Using applications - setting up MPEG4 (video streaming) | |
| 566 | - | # set udpAgent [new Agent/UDP] |
| 566 | + | for {set i 0} {$i < 5} {incr i} {
|
| 567 | - | # UDP agent for sending |
| 567 | + | |
| 568 | - | # $ns attach-agent $n0 $udpAgent |
| 568 | + | |
| 569 | - | # set udpSink [new Agent/Null] |
| 569 | + | |
| 570 | - | # UDP sink for receiving |
| 570 | + | |
| 571 | - | # $ns attach-agent $n1 $udpSink |
| 571 | + | |
| 572 | - | # $ns connect $udpAgent $udpSink |
| 572 | + | |
| 573 | - | # set vdo [new Application/Traffic/MPEG4] |
| 573 | + | $ns attach-agent $SF_Meeting_Rooms_node_($i) $udpSink($i) |
| 574 | - | # $vdo set initialSeed_0.5 |
| 574 | + | |
| 575 | - | # $vdo set rateFactor_5 |
| 575 | + | set vdo($i) [new Application/Traffic/MPEG4] |
| 576 | - | # $vdo attach-agent $udpAgent |
| 576 | + | $vdo($i) set initialSeed_0.5 |
| 577 | $vdo($i) set rateFactor_5 | |
| 578 | $vdo($i) attach-agent $udpAgent($i) | |
| 579 | } | |
| 580 | ||
| 581 | # Using applications - setting up CBR - Constant Bit Rate (VoIP) | |
| 582 | for {set i 0} {$i < 120} {incr i} {
| |
| 583 | ||
| 584 | set udpAgent($i) [new Agent/UDP] | |
| 585 | # UDP agent for sending | |
| 586 | - | $ns attach-agent $GF_Call_Centre_Client($i) $udpSink($i) |
| 586 | + | |
| 587 | set udpSink($i) [new Agent/Null] | |
| 588 | # UDP sink for receiving | |
| 589 | $ns attach-agent $GF_Call_Centre_node_($i) $udpSink($i) | |
| 590 | $ns connect $udpAgent($i) $udpSink($i) | |
| 591 | set cbr($i) [new Application/Traffic/CBR] | |
| 592 | $cbr($i) set packetSize_ 500 | |
| 593 | $cbr($i) set interval_ 0.005 | |
| 594 | - | for {set i 1} {$i < 120} {incr i} {
|
| 594 | + | |
| 595 | } | |
| 596 | ||
| 597 | ||
| 598 | # Link failure | |
| 599 | # Test 1 | |
| 600 | $ns rtmodel-at 300.0 down $A1 $D1 | |
| 601 | $ns rtmodel-at 600.0 up $A1 $D1 | |
| 602 | ||
| 603 | # Test 2 | |
| 604 | $ns rtmodel-at 900.0 down $A1 $D1 | |
| 605 | $ns rtmodel-at 900.0 down $D1 $R1 | |
| 606 | $ns rtmodel-at 1080.0 up $A1 $D1 | |
| 607 | $ns rtmodel-at 1200.0 up $D1 $R1 | |
| 608 | ||
| 609 | # Test 3 | |
| 610 | $ns rtmodel-at 1500.0 down $A1 $D1 | |
| 611 | $ns rtmodel-at 1680.0 down $A6 $D2 | |
| 612 | $ns rtmodel-at 1800.0 up $A1 $D1 | |
| 613 | $ns rtmodel-at 1800.0 up $A6 $D2 | |
| 614 | ||
| 615 | # Test 4 | |
| 616 | $ns rtmodel-at 2100.0 down $D1 $R1 | |
| 617 | $ns rtmodel-at 2280.0 down $D1 $R2 | |
| 618 | $ns rtmodel-at 2400.0 up $D1 $R1 | |
| 619 | $ns rtmodel-at 2700.0 up $D1 $R2 | |
| 620 | ||
| 621 | # Test 5 | |
| 622 | $ns rtmodel-at 2760.0 down $A1 $D1 | |
| 623 | $ns rtmodel-at 2820.0 down $D1 $R2 | |
| 624 | $ns rtmodel-at 2880.0 down $D2 $R2 | |
| 625 | $ns rtmodel-at 2940.0 down $R1 $W1 | |
| 626 | $ns rtmodel-at 3120.0 up $A1 $D1 | |
| 627 | $ns rtmodel-at 3180.0 up $D1 $R2 | |
| 628 | $ns rtmodel-at 3240.0 up $D2 $R2 | |
| 629 | $ns rtmodel-at 3300.0 up $R1 $W1 | |
| 630 | ||
| 631 | # Start CBR for 5 SF_Meeting_Rooms | |
| 632 | for {set i 0} {$i < 5} {incr i} {
| |
| 633 | $ns at 0.5 "$vdo($i) start" | |
| 634 | } | |
| 635 | ||
| 636 | # Start CBR for 120 GF_Call_Centre | |
| 637 | for {set i 0} {$i < 120} {incr i} {
| |
| 638 | $ns at 0.5 "$cbr($i) start" | |
| 639 | } | |
| 640 | ||
| 641 | # Stop the simulation after 3600 seconds | |
| 642 | $ns at 20.0 "finish" | |
| 643 | # Run the simulation | |
| 644 | $ns run |