-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopo_mini.py
107 lines (80 loc) · 2.71 KB
/
topo_mini.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from mininet.topo import Topo
from mininet.cli import CLI
from mininet.net import Mininet
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
from mininet.link import TCLink
from mininet.node import RemoteController
import copy
import random
import sys
import time
REMOTE_CONTROLLER_IP = "127.0.0.1"
N_SERVERS = 3
N_CLIENTS = 5
N_SWITCHES = 7
bw = 0.5
class SingleTopo(Topo):
def __init__(self, **opts):
Topo.__init__(self, **opts)
ser = []
cli = []
swi = []
for i in range(1,N_SWITCHES+1):
swi.append(self.addSwitch('s'+str(i)))
for i in range(1,N_SERVERS+1):
ser.append(self.addHost('h'+str(i)))
for i in range(N_SERVERS+1,N_SERVERS+1+N_CLIENTS+1):
cli.append(self.addHost('h'+str(i)))
self.mh = self.addHost('h100')
self.addLink(self.mh,swi[0])
swi_1 = copy.deepcopy(swi)
swi_1.pop(0)
swi_2 = [swi[0]]
while swi_1:
s1 = random.choice(swi_1)
s2 = random.choice(swi_2)
swi_1.remove(s1)
swi_2.append(s1)
self.addLink(s1, s2,cls=TCLink,bw=bw)
for _ in range(5):
s1 = random.choice(swi_2)
s2 = random.choice(swi_2)
if s1==s2:
continue
self.addLink(s1, s2,cls=TCLink,bw=bw)
self.cli = cli
self.ser = ser
for es in ser:
self.addLink(es,random.choice(swi),cls=TCLink,bw=bw)
for ec in cli:
self.addLink(ec,random.choice(swi),cls=TCLink,bw=bw)
# for c in cli:
# # print("Client:",net.get(c).cmd('/home/deshiyan/miniconda3/bin/python random_requests.py & sleep 0.2'))
# print("Client:",net.get(c).cmd('./rand_req.sh & sleep 0.2'))
topos = { 'mytopo': ( lambda: SingleTopo() ) }
# from mininet.topo import Topo
# class MyTopo( Topo ):
# def build( self ):
# s = []
# h = []
# for i in range(1,5):
# h.append(self.addHost('h'+str(i)))
# for i in range(1,10):
# s.append(self.addSwitch('s'+str(i)))
# self.addLink(s[0],s[1])
# self.addLink(s[1],s[2])
# self.addLink(s[2],s[3])
# self.addLink(s[0],s[5])
# self.addLink(s[5],s[6])
# self.addLink(s[6],s[7])
# self.addLink(s[7],s[2])
# self.addLink(s[5],s[8])
# self.addLink(s[8],s[6])
# self.addLink(s[6],s[4])
# self.addLink(s[4],s[3])
# self.addLink(h[0],s[0])
# self.addLink(h[1],s[0])
# self.addLink(h[2],s[4])
# self.addLink(h[3],s[2])
# topos = { 'mytopo': ( lambda: MyTopo() ) }