blob: 2f9039b8e569cf27032199e11c06d0d09ad79ac7 [file] [log] [blame]
'''
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
}