of the texts and illustrations are taken from the talks/lectures given by the referenced networking professors/gurus/ninjas (Credits at the end of the Slide).
run on a single PC • Runs real kernel, switch, and application code on a single machine • Command-line, UI, Python interfaces • Machine local virtual network : great dev/testing tool • Uses linux virtual network features: Cheaper than VMs • Arbitrary topologies, nodes
nodes) start up in seconds • No lengthy lab reconfiguration or rebooting required • Always-accessible network resources, in any topology, at essentially no cost • Designs that work on Mininet transfer seamlessly to hardware for full speed operation
replication of experimental and test results • Examine effects of code or network changes before testing/deploying on hardware • Allows automated system- level tests and experiments • Recreate real-world network and test cases for a variety of topologies and configurations
licensed (BSD) • Minimal hardware requirements • Accessible to novices thanks to simple CLI • Smooth learning curve thanks to walkthrough, tutorial, examples and API documentation • Strong users and support community
a simple topology with three hosts connected to a single switch: sudo mn --test pingall --topo single,3 • This setup uses a default switch controller and switch • Mininet also allows you to use custom remote controllers (and custom switches)
OpenvSwitch, three hosts and is controlled by a remote controller with IP address 192.168.56.1 sudo mn --topo single,3 -- controller remote,ip=192.168.56.1 --switch ovsk • mininet> help • mininet> dump nodes • mininet> h1 ping h2
via command line upon mininet start-up. • --switch – defines the switch to be used. By default the OVSK software switch is used. • --controller – defines the controller to be used. If unspecified default controller is used with a default hub behavior.
–topo minimal Example with 4 hosts and 4 switches sudo mn --topo linear,4 Example with 3 hosts all connected to one switch. sudo mn --topo single,3 Tree topology with defined depth and fan-out. sudo mn --topo tree,depth=2,fanout=2
that executes Python • Consider: “—topo linear, 4” from mininet.net import Mininet from mininet.topo import LinearTopo Linear = LinearTopo(k=4) net = Mininet(topo=Linear) net.start() net.pingAll() net.stop()
--switch ovsk --controller remote dpctl to communicate with switches • Switches listen on port 6634 • Can inspect flow table entries, modify flows, etc. Hub/Switch h3 h4 dpctl h2 127.0.0.1:6634
--controller remote dpctl to communicate with switches • Switches listen on port 6634 • Can inspect flow table entries, modify flows, etc. Hub/Switch h3 h4 dpctl h2 127.0.0.1:6634 POX (hub.py)
incoming frame, store • The incoming interface from which the frame arrived • The time at which that frame arrived • Delete the entry if no frames with a particular source address arrive within a certain time A B C D Switch learns how to reach A
update address/port table 2. Is transparent = False and either Ethertype is LLDP or the packet’s destination address is a Bridge Filtered address? If yes, DROP 3. Is destination multicast? If so, FLOOD. 4. Is port for destination address in our address/port table? If not, FLOOD. 5. Is output port the same as input port? If yes, DROP 6. Install flow table entry in the switch so that this flow goes out the appropriate port. Send the packet out appropriate port.
Past of Protocols • Nick McKeown, Stanford University, Many Talks/Articles • Jennifer Rexford, COS 597E, Princeton University • Mike Freedman, COS 461, Princeton University • Nick Feamster, https://www.coursera.org/course/sdn • Li Erran Li, COMS 6998-10, Univ. of Columbia • Marco Cello, SDN Talk @ CNR, Univ. Genova • Guido Appenzeller, Network Virtualization in Multi- tenant Datacenters, VMware