SHOW:
|
|
- or go back to the newest paste.
1 | """Custom topology script for Mininet | |
2 | ||
3 | Creates custom tree with parameters depth and fanout (count of childs per parent node) | |
4 | Use: mn --custom %PATH to script%/%script_name%.py --topo custom | |
5 | ||
6 | """ | |
7 | - | "Simple Data Center Topology" |
7 | + | |
8 | from mininet.topo import Topo | |
9 | - | "linkopts - (1:core, 2:aggregation, 3: edge) parameters" |
9 | + | |
10 | - | "fanout - number of child switch per parent switch" |
10 | + | |
11 | from mininet.log import setLogLevel | |
12 | ||
13 | class CustomTopo(Topo): | |
14 | ||
15 | # fanout - number of child switch per parent switch" | |
16 | ||
17 | def __init__(self, depth=2, fanout=2, **opts): | |
18 | # Initialize topology and default options | |
19 | Topo.__init__(self, **opts) | |
20 | ||
21 | #core_switch = self.addSwitch('c1') | |
22 | switches = {} #map {depth_level : [list of nodes]} | |
23 | hosts = [] | |
24 | parend_id = 0 | |
25 | switches[0] = list() | |
26 | switches[0].append(self.addSwitch('s1')) | |
27 | ||
28 | for s in range(1, depth): #last is host level | |
29 | switches[s] = list() #initialize list for dict | |
30 | for sw in range(0,fanout**s): | |
31 | switch_id = fanout**s+sw | |
32 | switches[s].append(self.addSwitch('s%s'%(switch_id))) | |
33 | self.addLink(switches[s][-1],switches[s-1][sw//fanout]) | |
34 | ||
35 | - | topos = { 'custom': ( lambda: CustomTopo(depth=2,fanout=2) ) } |
35 | + | |
36 | for h in range(0, fanout**depth): | |
37 | hosts.append(self.addHost('h%s'%(h+1))) | |
38 | self.addLink(hosts[-1],switches[depth-1][h//fanout]) | |
39 | ||
40 | ||
41 | topos = { 'custom': ( lambda: CustomTopo(depth=2,fanout=2) ) } # set params here |