mirror of
				https://github.com/opennetworkinglab/onos.git
				synced 2025-11-04 02:01:11 +01: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()
 |