diff --git a/mininet/topolib.py b/mininet/topolib.py new file mode 100644 index 0000000000000000000000000000000000000000..ad012670098e57d1a8e2fec429ba508faf606367 --- /dev/null +++ b/mininet/topolib.py @@ -0,0 +1,31 @@ +"Library of potentially useful topologies for Mininet" + +from mininet.topo import Topo, Node + +class TreeTopo( Topo ): + "Topology for a tree network with a given depth and fanout." + + def __init__( self, depth=1, fanout=2 ): + super( TreeTopo, self ).__init__() + # Build topology + self.addTree( 1, depth, fanout ) + # Consider all switches and hosts 'on' + self.enable_all() + + # It is OK that i is "unused" in the for loop. + # pylint: disable-msg=W0612 + + def addTree( self, n, depth, fanout ): + """Add a subtree starting with node n. + returns: last node added""" + me = n + isSwitch = depth > 0 + self._add_node( me, Node( is_switch=isSwitch ) ) + if isSwitch: + for i in range( 0, fanout ): + child = n + 1 + self._add_edge( me, child ) + n = self.addTree( child, depth-1, fanout ) + return n + + # pylint: enable-msg=W0612