mininet / mininet / topolib.py @ 896c4cbc
History  View  Annotate  Download (1.12 KB)
1 
"Library of potentially useful topologies for Mininet"


2  
3 
from mininet.topo import Topo 
4 
from mininet.net import Mininet 
5  
6 
class TreeTopo( Topo ): 
7 
"Topology for a tree network with a given depth and fanout."

8  
9 
def __init__( self, depth=1, fanout=2 ): 
10 
super( TreeTopo, self ).__init__() 
11 
# Numbering: h1..N, s1..M

12 
self.hostNum = 1 
13 
self.switchNum = 1 
14 
# Build topology

15 
self.addTree( depth, fanout )

16  
17 
def addTree( self, depth, fanout ): 
18 
"""Add a subtree starting with node n.

19 
returns: last node added"""

20 
isSwitch = depth > 0

21 
if isSwitch:

22 
node = self.addSwitch( 's%s' % self.switchNum ) 
23 
self.switchNum += 1 
24 
for _ in range( fanout ): 
25 
child = self.addTree( depth  1, fanout ) 
26 
self.addLink( node, child )

27 
else:

28 
node = self.addHost( 'h%s' % self.hostNum ) 
29 
self.hostNum += 1 
30 
return node

31  
32  
33 
def TreeNet( depth=1, fanout=2, **kwargs ): 
34 
"Convenience function for creating tree networks."

35 
topo = TreeTopo( depth, fanout ) 
36 
return Mininet( topo, **kwargs )
