-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLinearRouterFlexiTopTest.py
80 lines (66 loc) · 2.42 KB
/
LinearRouterFlexiTopTest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from mininetplus.topolib import LinearLinuxRouterTopo
from mininetplus.nodelib import HTTPServer, NAT
from mininetplus.net import Mininet
from mininet.log import setLogLevel
from mininetplus.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.cli import CLI
from time import sleep
import traceback
def main():
n = 6
samples = 1000
topo = LinearLinuxRouterTopo(n=n, delays=[10+2*(i) for i in range(n-1)], lastNodeParams={'cls': NAT,
'inNamespace': False, 'subnet':'20.0/8'})
net = Mininet(topo=topo, link=TCLink)
net.start()
try:
h0, hN = net.get('h0', 'hN')
#net.iperf((h0, hN))
#net.pingAll()
CLI( net )
raise ValueError('stop')
intfs = {}
for i, router in enumerate(net.routers()):
intfs[str(router)] = [router.intfs[1]]
print('Interfaces for router %d' % (i))
print(router.intfs)
print(router.intfs[1])
print('Interfaces for h0')
print(h0.intfs[0])
#intfs[str(h0)] = [h0.intfs[0]]
print('Interfaces for hN')
print(hN.intfs[0])
#intfs[str(hN)] = [hN.intfs[0]]
for node, interfaces in intfs.iteritems():
for intf in interfaces:
print('TCPDump on %s' % intf)
net.get(node).sendCmd('tcpdump -i %s -w ./%s.pcap' % (intf, intf))
sleep(2)
print('Generating traffic')
for i in range(samples):
h0.cmd('wget %s' % (hN.IP()))
if (i % 50 == 0):
print('Iteration %d' % i)
sleep(1)
sleep(10)
print('Waiting for tcpdumps...')
for node, intf in intfs.iteritems():
net.get(node).sendInt()
print('Waiting for %s...' % node)
res = net.get(node).waitOutput()
print(res)
print('Processing pcaps...')
for node, interfaces in intfs.iteritems():
for intf in interfaces:
print('Building %s.csv' % (intf))
h0.cmd('python processPcap.py -i %s.pcap -o %s.csv' % (intf, intf))
h0.cmd('rm -rf index.html*')
h0.cmd('rm -rf wget-log*')
except Exception as e:
print('>>>> EXCEPTION <<<<')
traceback.print_exc()
net.stop()
if __name__ == '__main__':
setLogLevel('info')
main()