diff --git a/examples/README b/examples/README index bb3e0c2..3193412 100644 --- a/examples/README +++ b/examples/README @@ -29,8 +29,18 @@ to an interface in the root namespace (generaly the control network already lives in the root namespace, so it does not need to be explicitly connected.) +treeping64: + +This example creates a 64-host tree network, and attempts to check full +connectivity using ping, for three different switch/datapath types. + +tree1024.py: + +This example attempts to create a 1024-host network, and then runs the +CLI on it. It may run into scalability limits, depending on available +memory and sysctl configuration (see INSTALL.) + udpbwtest.py: This example shows how to run a test across an entire network, and monitor the output of a set of hosts in real time. - diff --git a/examples/tree1024.py b/examples/tree1024.py new file mode 100755 index 0000000..42318cc --- /dev/null +++ b/examples/tree1024.py @@ -0,0 +1,26 @@ +#!/usr/bin/python + +""" +Create a 1024-host network, and run the CLI on it. +If this fails because of kernel limits, you may have +to adjust them, e.g. by adding entries to /etc/sysctl.conf +and running sysctl -p. Check util/sysctl_addon. +""" + +from mininet.cli import CLI +from mininet.log import setLogLevel +from mininet.net import init, Mininet +from mininet.node import KernelSwitch +from mininet.topolib import TreeTopo + +def TreeNet( depth=1, fanout=2, **kwargs ): + "Convenience function for creating tree networks." + topo = TreeTopo( depth, fanout ) + return Mininet( topo, **kwargs ) + +if __name__ == '__main__': + setLogLevel( 'info' ) + init() + KernelSwitch.setup() + network = TreeNet( depth=2, fanout=32, switch=KernelSwitch ) + network.run( CLI, network ) diff --git a/examples/treeping64.py b/examples/treeping64.py new file mode 100755 index 0000000..96edba3 --- /dev/null +++ b/examples/treeping64.py @@ -0,0 +1,38 @@ +#!/usr/bin/python + +"Create a 64-node tree network, and test connectivity using ping." + +from mininet.cli import CLI +from mininet.log import setLogLevel +from mininet.net import init, Mininet +from mininet.node import KernelSwitch, UserSwitch, OVSKernelSwitch +from mininet.topolib import TreeTopo + +def TreeNet( depth=1, fanout=2, **kwargs ): + "Convenience function for creating tree networks." + topo = TreeTopo( depth, fanout ) + return Mininet( topo, **kwargs ) + +def treePing64(): + results = {} + switches = { 'reference kernel': KernelSwitch, + 'reference user': UserSwitch, + 'Open vSwitch kernel': OVSKernelSwitch } + + for name in switches.keys(): + print "*** Testing", name, "datapath" + switch = switches[ name ] + network = TreeNet( depth=2, fanout=8, switch=switch ) + result = network.run( network.pingAll ) + results[ name ] = result + + print + print "*** Tree network ping results:" + for name in switches.keys(): + print "%s: %d%% packet loss" % ( name, results[ name ] ) + print + +if __name__ == '__main__': + setLogLevel( 'info' ) + init() + treePing64() \ No newline at end of file