Added ripcord.py, which attempts to make a FatTree using ripcord and

instantiate a mininet Network based on its topology.

Also minor cleanup of nox.py and GridNet class in mininet.py.
This commit is contained in:
Bob Lantz
2009-12-14 21:01:45 -08:00
parent 2f53491343
commit 0b084dd51a
3 changed files with 52 additions and 3 deletions
-1
View File
@@ -2,7 +2,6 @@
"Instantiate a Tree network and use NOX as the controller."
import time
from mininet import init, Controller, TreeNet, Cli
class NoxController( Controller ):
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/python
"A FatTree network, using Brandon Heller's ripcord system."
from ripcord.topo import StructuredNode, StructuredNodeSpec, FatTreeTopo, VL2T
opo
from mininet import Controller, Network, Host, pingTest
class NoxController( Controller ):
"A customized Controller that uses NOX."
def __init__( self, name, **kwargs ):
Controller.__init__( self, name,
controller='nox_core', cargs='-i ptcp pyswitch',
cdir='/usr/local/bin', **kwargs)
class FatTree( Network ):
"A customized Network that uses ripcord's FatTree."
def __init__( self, **kwargs ):
Network.__init__( self, depth, **kwargs )
def makeNetwork( self, controller ):
ft = FatTreeTopo( depth )
graph = ft.g
switches = []
hosts = []
hostnames = nameGen( 'h0' )
switchnames = nameGen( 's0' )
graphToMini = {}
miniToGraph = {}
# Create nodes
for graphNode in graph.nodes():
print "found node", graphNode
isLeaf = len( graph.neighbors( graphNode ) ) = 1
if isLeaf:
mininetNode = Node( hostnames.next() )
hosts += [ mininetNode ]
else:
mininetNode = self.Switch( switchnames.next() )
switches += [ mininetNode ]
miniToGraph[ mininetNode ] = graphNode
graphToMini[ graphNode ] = mininetNode
# Create Links
for switch in switches:
for neighbor in miniToGraph[ switches ]:
makeLink( switch, graphToMini[ neighbor ] )
if __name__ == '__main__':
init()
network = FatTree( depth=4, kernel=True, Controller=NoxController)
network.run( pingTest )