"Library of potentially useful topologies for Mininet" from mininet.topo import Topo from mininet.net import Mininet 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__() # Numbering: h1..N, s1..M self.hostNum = 1 self.switchNum = 1 # Build topology self.addTree( depth, fanout ) def addTree( self, depth, fanout ): """Add a subtree starting with node n. returns: last node added""" isSwitch = depth > 0 if isSwitch: node = self.addSwitch( 's%s' % self.switchNum ) self.switchNum += 1 for _ in range( fanout ): child = self.addTree( depth - 1, fanout ) self.addLink( node, child ) else: node = self.addHost( 'h%s' % self.hostNum ) self.hostNum += 1 return node def TreeNet( depth=1, fanout=2, **kwargs ): "Convenience function for creating tree networks." topo = TreeTopo( depth, fanout ) return Mininet( topo, **kwargs )