32 lines
969 B
Python
32 lines
969 B
Python
"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
|