View difference between Paste ID: VXKrqbQL and 5R0uxHYH
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