mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-15 17:31:31 +02:00
56 lines
1.4 KiB
Python
Executable File
56 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from mininet.topo import Topo
|
|
from mininet.cli import CLI
|
|
from mininet.net import Mininet
|
|
from mininet.node import RemoteController, OVSKernelSwitch
|
|
from mininet.log import setLogLevel
|
|
|
|
|
|
class TowerTopo( Topo ):
|
|
"""Create a tower topology"""
|
|
|
|
def build( self, k=4, h=6 ):
|
|
spines = []
|
|
leaves = []
|
|
hosts = []
|
|
|
|
# Create the two spine switches
|
|
spines.append(self.addSwitch('s1'))
|
|
spines.append(self.addSwitch('s2'))
|
|
|
|
# Create two links between the spine switches
|
|
self.addLink(spines[0], spines[1])
|
|
#TODO add second link between spines when multi-link topos are supported
|
|
#self.addLink(spines[0], spines[1])
|
|
|
|
# Now create the leaf switches, their hosts and connect them together
|
|
i = 1
|
|
c = 0
|
|
while i <= k:
|
|
leaves.append(self.addSwitch('s1%d' % i))
|
|
for spine in spines:
|
|
self.addLink(leaves[i-1], spine)
|
|
|
|
j = 1
|
|
while j <= h:
|
|
hosts.append(self.addHost('h%d%d' % (i, j)))
|
|
self.addLink(hosts[c], leaves[i-1])
|
|
j+=1
|
|
c+=1
|
|
|
|
i+=1
|
|
|
|
topos = { 'tower': TowerTopo }
|
|
|
|
def run():
|
|
topo = TowerTopo()
|
|
net = Mininet( topo=topo, controller=RemoteController, autoSetMacs=True )
|
|
net.start()
|
|
CLI( net )
|
|
net.stop()
|
|
|
|
if __name__ == '__main__':
|
|
setLogLevel( 'info' )
|
|
run()
|