| ''' |
| Copyright 2016-2023 Open Networking Foundation (ONF) and the ONF Contributors |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| ''' |
| from mininet.cli import CLI |
| from mininet.log import setLogLevel |
| from mininet.net import Mininet |
| from mininet.topo import Topo |
| from mininet.node import RemoteController, UserSwitch |
| |
| class MinimalTopo( Topo ): |
| "Minimal topology with a single switch and two hosts" |
| |
| def build( self ): |
| # Create two hosts. |
| h1 = self.addHost( 'h1' ) |
| h2 = self.addHost( 'h2' ) |
| |
| # Create a switch |
| s1 = self.addSwitch( 's1', cls=UserSwitch) |
| |
| # Add links between the switch and each host |
| self.addLink( s1, h1 ) |
| self.addLink( s1, h2 ) |
| |
| def runMinimalTopo(): |
| "Bootstrap a Mininet network using the Minimal Topology" |
| |
| # Create an instance of our topology |
| topo = MinimalTopo() |
| |
| # Create a network based on the topology using OVS and controlled by |
| # a remote controller. |
| net = Mininet( |
| topo=topo, |
| controller=lambda name: RemoteController( name, ip='127.0.0.1' ), |
| switch=UserSwitch, |
| autoSetMacs=True ) |
| |
| # Actually start the network |
| net.start() |
| |
| # Drop the user in to a CLI so user can run commands. |
| CLI( net ) |
| |
| # After the user exits the CLI, shutdown the network. |
| net.stop() |
| |
| if __name__ == '__main__': |
| # This runs if this file is executed directly |
| setLogLevel( 'info' ) |
| runMinimalTopo() |
| |
| # Allows the file to be imported using `mn --custom <filename> --topo minimal` |
| topos = { |
| 'minimal': MinimalTopo |
| } |