Guest User

Untitled

a guest
Apr 4th, 2012
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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]
  567.     # UDP agent for sending
  568. # $ns attach-agent $n0 $udpAgent
  569. # set udpSink [new Agent/Null]
  570.     # UDP sink for receiving
  571. # $ns attach-agent $n1 $udpSink
  572. # $ns connect $udpAgent $udpSink
  573. # set vdo [new Application/Traffic/MPEG4]
  574. # $vdo set initialSeed_0.5
  575. # $vdo set rateFactor_5
  576. # $vdo attach-agent $udpAgent
  577.  
  578. # Using applications - setting up CBR - Constant Bit Rate (VoIP)
  579. for {set i 0} {$i < 120} {incr i} {
  580.  
  581.     set udpAgent($i) [new Agent/UDP]
  582.         # UDP agent for sending
  583.     $ns attach-agent $W1 $udpAgent($i)
  584.     set udpSink($i) [new Agent/Null]
  585.         # UDP sink for receiving
  586.     $ns attach-agent $GF_Call_Centre_Client($i) $udpSink($i)
  587.     $ns connect $udpAgent($i) $udpSink($i)
  588.     set cbr($i) [new Application/Traffic/CBR]
  589.     $cbr($i) set packetSize_ 500
  590.     $cbr($i) set interval_ 0.005
  591.     $cbr($i) attach-agent $udpAgent($i)
  592. }
  593.  
  594. for {set i 1} {$i < 120} {incr i} {
  595.     $ns at 0.5 "$cbr($i) start"
  596. }
  597.  
  598.  
  599. # Link failure
  600. # Test 1
  601. $ns rtmodel-at 300.0 down $A1 $D1
  602. $ns rtmodel-at 600.0 up $A1 $D1
  603.  
  604. # Test 2
  605. $ns rtmodel-at 900.0 down $A1 $D1
  606. $ns rtmodel-at 900.0 down $D1 $R1
  607. $ns rtmodel-at 1080.0 up $A1 $D1
  608. $ns rtmodel-at 1200.0 up $D1 $R1
  609.  
  610. # Test 3
  611. $ns rtmodel-at 1500.0 down $A1 $D1
  612. $ns rtmodel-at 1680.0 down $A6 $D2
  613. $ns rtmodel-at 1800.0 up $A1 $D1
  614. $ns rtmodel-at 1800.0 up $A6 $D2
  615.  
  616. # Test 4
  617. $ns rtmodel-at 2100.0 down $D1 $R1
  618. $ns rtmodel-at 2280.0 down $D1 $R2
  619. $ns rtmodel-at 2400.0 up $D1 $R1
  620. $ns rtmodel-at 2700.0 up $D1 $R2
  621.  
  622. # Test 5
  623. $ns rtmodel-at 2760.0 down $A1 $D1
  624. $ns rtmodel-at 2820.0 down $D1 $R2
  625. $ns rtmodel-at 2880.0 down $D2 $R2
  626. $ns rtmodel-at 2940.0 down $R1 $W1
  627. $ns rtmodel-at 3120.0 up $A1 $D1
  628. $ns rtmodel-at 3180.0 up $D1 $R2
  629. $ns rtmodel-at 3240.0 up $D2 $R2
  630. $ns rtmodel-at 3300.0 up $R1 $W1
  631.  
  632.  
  633. # Stop the simulation after 3600 seconds
  634. $ns at 20.0 "finish"
  635. # Run the simulation
  636. $ns run
Advertisement
Add Comment
Please, Sign In to add comment