コード例 #1
0
	def updateRoutes( self, lsAlgorithm, switches, linkWeights ):
		
		display.section("Adding Flow table entries...")
		log.infoln('Switch\t Protocols\t Dst-Address\t Actions')
		log.infoln('-------------------------------------------------------')
		weights = [ ( 's'+str(i[0]), 's'+str(i[1]), i[2] )
			for i in linkWeights ]
		# For each switch
		for sourceSwitch in switches:
			routes = lsAlgorithm( sourceSwitch, weights )
			# Compute the least cost route for each destination
			for route in routes:
				# Least cost paths to destinations
				dstSwitch = last(route)
				dstHost = 'h%s' % dstSwitch[1:]
				dstAddress = self.IP(dstHost)
				## Switches to the connected host flows
				srcHost = 'h%s' % sourceSwitch[1:]
				srcAddress = self.IP(srcHost)
				(iPort, oPort) = self.connectionPorts( srcHost, sourceSwitch )
				log.debugln('Source:', (sourceSwitch, srcHost, srcAddress, oPort))
				log.debugln('Destination', (dstSwitch, dstHost, dstAddress, oPort))
				self.flows.add( sourceSwitch, srcAddress, oPort )
				## Switches to switches flows
				prev = sourceSwitch
				for i in range( 1, len(route) ):
					current = route[i]
					(iPort, oPort) = self.connectionPorts( prev, current )
					self.flows.add( prev, dstAddress, iPort )
					prev = current
コード例 #2
0
 def add(self, switch, dstAddress, oPort):
     # Log example: 's1  ARP, IP  192.168.1.1  output:3'
     log.infoln('%s\t\t %s\t %s\t output:%s' %
                (switch, ', '.join(self.protocols), dstAddress, oPort))
     return [
         self.do('add-flow %s %s,nw_dst=%s,actions=output:%s' %
                 (switch, protocol.lower(), dstAddress, oPort))
         for protocol in self.protocols
     ]
コード例 #3
0
 def prepareNetwork(self, preset, **kwargs):
     log.do("Prepare TestNet from %s." % preset)
     topology = preset()
     log.infoln(topology.longDescription())
     network = Mininet(topo=topology,
                       controller=RemoteController('c0',
                                                   ip='127.0.0.1',
                                                   port=6653),
                       ipBase='10.10.0.0/16',
                       autoSetMacs=True,
                       **kwargs)
     log.infoln("Built TestNet topology from template class %s" %
                type(topology))
     log.done("Network<id%s> is ready to start." % id(network))
     return network
コード例 #4
0
	def do_weights( self, _ ):
		display.section("Weights")
		log.infoln('Link\t\tWeight')
		log.infoln('--------------------')
		for (i, j, w) in self.mn.topo._slinks:
			log.infoln('{s%s, s%s}\t%s' % (i, j, w))
コード例 #5
0
	def clean( self ):
		cleanup()
		log.infoln('Cleaned up old files')
コード例 #6
0
 def enableNetworkAddressTranslation(self, network):
     log.infoln("Adding and configuring NAT...")
     network.addNAT().configDefault()
コード例 #7
0
 def reassignAddresses(self, network):
     log.infoln('Reassigning host IP addresses.')
     for i in irange(1, len(network.switches)):
         switch = network.nameToNode[s(i)]
         host = network.nameToNode[h(i)]
         host.setIP('10.10.%s.%s' % (i, i))