|
71 |
|
71 |
|
72 |
cout << "Number of CNs: " << nCN << ", LAN nodes: " << nLANClients << endl; |
72 |
cout << "Number of CNs: " << nCN << ", LAN nodes: " << nLANClients << endl; |
73 |
|
73 |
|
74 |
NodeContainer nodes_net0[nCN][3], nodes_net1[nCN][6], nodes_netLR[nCN], |
74 |
NodeContainer** nodes_net0 = new NodeContainer*[nCN]; //[nCN][3] |
75 |
nodes_net2[nCN][14], nodes_net2LAN[nCN][7][nLANClients], |
75 |
for (int i = 0; i < nCN; i++) |
76 |
nodes_net3[nCN][9], nodes_net3LAN[nCN][5][nLANClients]; |
76 |
nodes_net0[i] = new NodeContainer[3]; |
|
|
77 |
NodeContainer** nodes_net1 = new NodeContainer*[nCN]; //[nCN][6] |
78 |
for (int i = 0; i < nCN; i++) |
79 |
nodes_net1[i] = new NodeContainer[6]; |
80 |
NodeContainer* nodes_netLR = new NodeContainer[nCN]; //[nCN] |
81 |
NodeContainer** nodes_net2 = new NodeContainer*[nCN]; //[nCN][14] |
82 |
for (int i = 0; i < nCN; i++) |
83 |
nodes_net2[i] = new NodeContainer[14]; |
84 |
NodeContainer*** nodes_net2LAN = new NodeContainer**[nCN]; //[nCN][7][nLANClients] |
85 |
for (int i = 0; i < nCN; i++) |
86 |
{ |
87 |
nodes_net2LAN[i] = new NodeContainer*[7]; |
88 |
for (int j = 0; j < 7; j++) |
89 |
nodes_net2LAN[i][j] = new NodeContainer[nLANClients]; |
90 |
} |
91 |
NodeContainer** nodes_net3 = new NodeContainer*[nCN]; //[nCN][9] |
92 |
for (int i = 0; i < nCN; i++) |
93 |
nodes_net3[i] = new NodeContainer[9]; |
94 |
NodeContainer*** nodes_net3LAN = new NodeContainer**[nCN]; //[nCN][5][nLANClients] |
95 |
for (int i = 0; i < nCN; i++) |
96 |
{ |
97 |
nodes_net3LAN[i] = new NodeContainer*[5]; |
98 |
for (int j = 0; j < 5; j++) |
99 |
nodes_net3LAN[i][j] = new NodeContainer[nLANClients]; |
100 |
} |
77 |
PointToPointHelper p2p_2gb200ms, p2p_1gb5ms, p2p_100mb1ms; |
101 |
PointToPointHelper p2p_2gb200ms, p2p_1gb5ms, p2p_100mb1ms; |
78 |
InternetStackHelper stack; |
102 |
InternetStackHelper stack; |
79 |
Ipv4InterfaceContainer ifs, ifs0[nCN][3], ifs1[nCN][6], ifs2[nCN][14], |
103 |
Ipv4InterfaceContainer ifs; |
80 |
ifs3[nCN][9], ifs2LAN[nCN][7][nLANClients], |
104 |
Ipv4InterfaceContainer** ifs0 = new Ipv4InterfaceContainer*[nCN]; //[nCN][3] |
81 |
ifs3LAN[nCN][5][nLANClients]; |
105 |
for (int i = 0; i < nCN; i++) |
|
|
106 |
ifs0[i] = new Ipv4InterfaceContainer[3]; |
107 |
Ipv4InterfaceContainer** ifs1 = new Ipv4InterfaceContainer*[nCN]; //[nCN][6] |
108 |
for (int i = 0; i < nCN; i++) |
109 |
ifs1[i] = new Ipv4InterfaceContainer[6]; |
110 |
Ipv4InterfaceContainer** ifs2 = new Ipv4InterfaceContainer*[nCN]; //[nCN][[14] |
111 |
for (int i = 0; i < nCN; i++) |
112 |
ifs2[i] = new Ipv4InterfaceContainer[14]; |
113 |
Ipv4InterfaceContainer** ifs3 = new Ipv4InterfaceContainer*[nCN]; //[nCN][9] |
114 |
for (int i = 0; i < nCN; i++) |
115 |
ifs3[i] = new Ipv4InterfaceContainer[9]; |
116 |
Ipv4InterfaceContainer*** ifs2LAN = new Ipv4InterfaceContainer**[nCN]; //[nCN][7][nLANClients] |
117 |
for (int i = 0; i < nCN; i++) |
118 |
{ |
119 |
ifs2LAN[i] = new Ipv4InterfaceContainer*[7]; |
120 |
for (int j = 0; j < 7; j++) |
121 |
ifs2LAN[i][j] = new Ipv4InterfaceContainer[nLANClients]; |
122 |
} |
123 |
Ipv4InterfaceContainer*** ifs3LAN = new Ipv4InterfaceContainer**[nCN]; //[nCN][5][nLANClients] |
124 |
for (int i = 0; i < nCN; i++) |
125 |
{ |
126 |
ifs3LAN[i] = new Ipv4InterfaceContainer*[5]; |
127 |
for (int j = 0; j < 5; j++) |
128 |
ifs3LAN[i][j] = new Ipv4InterfaceContainer[nLANClients]; |
129 |
} |
130 |
|
82 |
Ipv4AddressHelper address; |
131 |
Ipv4AddressHelper address; |
83 |
std::ostringstream oss; |
132 |
std::ostringstream oss; |
84 |
p2p_1gb5ms.SetDeviceAttribute ("DataRate", StringValue ("1Gbps")); |
133 |
p2p_1gb5ms.SetDeviceAttribute ("DataRate", StringValue ("1Gbps")); |
|
177 |
{ |
226 |
{ |
178 |
ndc2[i] = p2p_1gb5ms.Install (nodes_net2[z][i]); |
227 |
ndc2[i] = p2p_1gb5ms.Install (nodes_net2[z][i]); |
179 |
} |
228 |
} |
180 |
NetDeviceContainer ndc2LAN[7][nLANClients]; |
229 |
/// NetDeviceContainer ndc2LAN[7][nLANClients]; |
|
|
230 |
NetDeviceContainer** ndc2LAN = new NetDeviceContainer*[7]; |
231 |
for (int i = 0; i < 7; i++) |
232 |
ndc2LAN[i] = new NetDeviceContainer[nLANClients]; |
233 |
|
181 |
for (int i = 0; i < 7; ++i) |
234 |
for (int i = 0; i < 7; ++i) |
182 |
{ |
235 |
{ |
183 |
oss.str (""); |
236 |
oss.str (""); |
|
213 |
{ |
266 |
{ |
214 |
ndc3[i] = p2p_1gb5ms.Install (nodes_net3[z][i]); |
267 |
ndc3[i] = p2p_1gb5ms.Install (nodes_net3[z][i]); |
215 |
} |
268 |
} |
216 |
NetDeviceContainer ndc3LAN[5][nLANClients]; |
269 |
/// NetDeviceContainer ndc3LAN[5][nLANClients]; |
|
|
270 |
NetDeviceContainer** ndc3LAN = new NetDeviceContainer*[5]; |
271 |
for (int i = 0; i < 5; i++) |
272 |
ndc3LAN[i] = new NetDeviceContainer[nLANClients]; |
273 |
|
217 |
for (int i = 0; i < 5; ++i) |
274 |
for (int i = 0; i < 5; ++i) |
218 |
{ |
275 |
{ |
219 |
oss.str (""); |
276 |
oss.str (""); |
|
317 |
address.SetBase (oss.str ().c_str (), "255.255.255.0"); |
374 |
address.SetBase (oss.str ().c_str (), "255.255.255.0"); |
318 |
ifs3[z][i] = address.Assign (ndc3[i]); |
375 |
ifs3[z][i] = address.Assign (ndc3[i]); |
319 |
} |
376 |
} |
|
|
377 |
|
378 |
for (int i = 0; i < 5; i++) |
379 |
delete[] ndc3LAN[i]; |
380 |
delete[] ndc3LAN; |
381 |
|
382 |
for (int i = 0; i < 7; i++) |
383 |
delete[] ndc2LAN[i]; |
384 |
delete[] ndc2LAN; |
320 |
} |
385 |
} |
321 |
// Create Ring Links |
386 |
// Create Ring Links |
322 |
if (nCN > 1) |
387 |
if (nCN > 1) |
323 |
{ |
388 |
{ |
324 |
cout << "Forming Ring Topology..." << endl; |
389 |
cout << "Forming Ring Topology..." << endl; |
325 |
NodeContainer nodes_ring[nCN]; |
390 |
NodeContainer* const nodes_ring = new NodeContainer[nCN]; |
326 |
for (int z = 0; z < nCN-1; ++z) |
391 |
for (int z = 0; z < nCN-1; ++z) |
327 |
{ |
392 |
{ |
328 |
nodes_ring[z].Add (nodes_net0[z][0].Get (0)); |
393 |
nodes_ring[z].Add (nodes_net0[z][0].Get (0)); |
|
330 |
} |
395 |
} |
331 |
nodes_ring[nCN-1].Add (nodes_net0[nCN-1][0].Get (0)); |
396 |
nodes_ring[nCN-1].Add (nodes_net0[nCN-1][0].Get (0)); |
332 |
nodes_ring[nCN-1].Add (nodes_net0[0][0].Get (0)); |
397 |
nodes_ring[nCN-1].Add (nodes_net0[0][0].Get (0)); |
333 |
NetDeviceContainer ndc_ring[nCN]; |
398 |
NetDeviceContainer* const ndc_ring = new NetDeviceContainer[nCN]; |
334 |
for (int z = 0; z < nCN; ++z) |
399 |
for (int z = 0; z < nCN; ++z) |
335 |
{ |
400 |
{ |
336 |
ndc_ring[z] = p2p_2gb200ms.Install (nodes_ring[z]); |
401 |
ndc_ring[z] = p2p_2gb200ms.Install (nodes_ring[z]); |
|
339 |
address.SetBase (oss.str ().c_str (), "255.255.255.0"); |
404 |
address.SetBase (oss.str ().c_str (), "255.255.255.0"); |
340 |
ifs = address.Assign (ndc_ring[z]); |
405 |
ifs = address.Assign (ndc_ring[z]); |
341 |
} |
406 |
} |
|
|
407 |
delete[] ndc_ring; |
408 |
delete[] nodes_ring; |
342 |
} |
409 |
} |
343 |
|
410 |
|
344 |
// Create Traffic Flows |
411 |
// Create Traffic Flows |
|
445 |
cout << "Simulator init time: " << d1 << endl; |
512 |
cout << "Simulator init time: " << d1 << endl; |
446 |
cout << "Simulator run time: " << d2 << endl; |
513 |
cout << "Simulator run time: " << d2 << endl; |
447 |
cout << "Total elapsed time: " << d1+d2 << endl; |
514 |
cout << "Total elapsed time: " << d1+d2 << endl; |
|
|
515 |
|
516 |
for (int i = 0; i < nCN; i++) |
517 |
{ |
518 |
for (int j = 0; j < 5; j++) |
519 |
delete[] ifs3LAN[i][j]; |
520 |
delete[] ifs3LAN[i]; |
521 |
} |
522 |
delete[] ifs3LAN; |
523 |
|
524 |
for (int i = 0; i < nCN; i++) |
525 |
{ |
526 |
for (int j = 0; j < 7; j++) |
527 |
delete[] ifs2LAN[i][j]; |
528 |
delete[] ifs2LAN[i]; |
529 |
} |
530 |
delete[] ifs2LAN; |
531 |
|
532 |
for (int i = 0; i < nCN; i++) |
533 |
delete[] ifs3[i]; |
534 |
delete[] ifs3; |
535 |
|
536 |
for (int i = 0; i < nCN; i++) |
537 |
delete[] ifs2[i]; |
538 |
delete[] ifs2; |
539 |
|
540 |
for (int i = 0; i < nCN; i++) |
541 |
delete[] ifs1[i]; |
542 |
delete[] ifs1; |
543 |
|
544 |
for (int i = 0; i < nCN; i++) |
545 |
delete[] ifs0[i]; |
546 |
delete[] ifs0; |
547 |
|
548 |
for (int i = 0; i < nCN; i++) |
549 |
{ |
550 |
for (int j = 0; j < 5; j++) |
551 |
delete[] nodes_net3LAN[i][j]; |
552 |
delete[] nodes_net3LAN[i]; |
553 |
} |
554 |
delete[] nodes_net3LAN; |
555 |
|
556 |
for (int i = 0; i < nCN; i++) |
557 |
delete[] nodes_net3[i]; |
558 |
delete[] nodes_net3; |
559 |
|
560 |
for (int i = 0; i < nCN; i++) |
561 |
{ |
562 |
for (int j = 0; j < 7; j++) |
563 |
delete[] nodes_net2LAN[i][j]; |
564 |
delete[] nodes_net2LAN[i]; |
565 |
} |
566 |
delete[] nodes_net2LAN; |
567 |
|
568 |
for (int i = 0; i < nCN; i++) |
569 |
delete[] nodes_net2[i]; |
570 |
delete[] nodes_net2; |
571 |
|
572 |
delete[] nodes_netLR; |
573 |
|
574 |
for (int i = 0; i < nCN; i++) |
575 |
delete[] nodes_net1[i]; |
576 |
delete[] nodes_net1; |
577 |
|
578 |
for (int i = 0; i < nCN; i++) |
579 |
delete[] nodes_net0[i]; |
580 |
delete[] nodes_net0; |
581 |
|
448 |
return 0; |
582 |
return 0; |
449 |
} |
583 |
} |