Added "from scratch" examples, to show how to create a network using
low-level primitives. The "nox.py" example attempts to use nox as a controller rather than controller(8). More edits for INSTALL and README, and refinements for sshd and xterm examples.
This commit is contained in:
Executable
+39
@@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
"Create a network from scratch and use NOX as the controller."
|
||||||
|
|
||||||
|
from mininet import init, Controller, Switch, Host, createLink
|
||||||
|
|
||||||
|
def scratchNet( cname='controller', cargs='ptcp:'):
|
||||||
|
# Create Network
|
||||||
|
controller = Node( 'c0', inNamespace=False )
|
||||||
|
switch = Node( 's0', inNamespace=False )
|
||||||
|
h0 = Node( 'h0' )
|
||||||
|
h1 = Node( 'h1' )
|
||||||
|
createLink( h0, switch )
|
||||||
|
createLink( h1, switch )
|
||||||
|
# Configure hosts
|
||||||
|
h0.setIP( h0.intfs[ 0 ], '192.168.123.1', '/24' )
|
||||||
|
h1.setIP( h1.intfs[ 0 ], '192.168.123.2', '/24' )
|
||||||
|
# Start network using kernel datapath
|
||||||
|
controller.cmdPrint( cname + ' ' + cargs + '&' )
|
||||||
|
switch.cmdPrint( 'dpctl deldp nl:0' )
|
||||||
|
switch.cmdPrint( 'dpctl adddp nl:0' )
|
||||||
|
for intf in switch.intfs:
|
||||||
|
switch.cmdPrint( 'dpctl addif nl:0 ' + intf )
|
||||||
|
switch.cmdPrint( 'ofprotocol nl:0 tcp:localhost &')
|
||||||
|
# Run test
|
||||||
|
h0.cmdPrint( 'ping -c1 ' + h1.IP() )
|
||||||
|
# Stop network
|
||||||
|
controller.cmdPrint( 'kill %' + cname)
|
||||||
|
switch.cmdPrint( 'dpctl deldp nl:0' )
|
||||||
|
switch.cmdPrint( 'kill %ofprotocol' )
|
||||||
|
switch.stop()
|
||||||
|
controller.stop()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
init()
|
||||||
|
scratchNet( cname='nox_core', cargs='-i ptcp:' )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Executable
+40
@@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
"""
|
||||||
|
Build a simple network from scratch, using mininet primitives.
|
||||||
|
This is more complicated than using the higher-level classes,
|
||||||
|
but it exposes the configuration details and allows cusomization.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from mininet import init, Node, createLink
|
||||||
|
|
||||||
|
def scratchNet( cname='controller', cargs='ptcp:'):
|
||||||
|
# Create Network
|
||||||
|
controller = Node( 'c0', inNamespace=False )
|
||||||
|
switch = Node( 's0', inNamespace=False )
|
||||||
|
h0 = Node( 'h0' )
|
||||||
|
h1 = Node( 'h1' )
|
||||||
|
createLink( h0, switch )
|
||||||
|
createLink( h1, switch )
|
||||||
|
# Configure hosts
|
||||||
|
h0.setIP( h0.intfs[ 0 ], '192.168.123.1', '/24' )
|
||||||
|
h1.setIP( h1.intfs[ 0 ], '192.168.123.2', '/24' )
|
||||||
|
# Start network using kernel datapath
|
||||||
|
controller.cmdPrint( cname + ' ' + cargs + '&' )
|
||||||
|
switch.cmdPrint( 'dpctl deldp nl:0' )
|
||||||
|
switch.cmdPrint( 'dpctl adddp nl:0' )
|
||||||
|
for intf in switch.intfs:
|
||||||
|
switch.cmdPrint( 'dpctl addif nl:0 ' + intf )
|
||||||
|
switch.cmdPrint( 'ofprotocol nl:0 tcp:localhost &')
|
||||||
|
# Run test
|
||||||
|
h0.cmdPrint( 'ping -c1 ' + h1.IP() )
|
||||||
|
# Stop network
|
||||||
|
controller.cmdPrint( 'kill %' + cname)
|
||||||
|
switch.cmdPrint( 'dpctl deldp nl:0' )
|
||||||
|
switch.cmdPrint( 'kill %ofprotocol' )
|
||||||
|
switch.stop()
|
||||||
|
controller.stop()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
init()
|
||||||
|
scratchNet()
|
||||||
Reference in New Issue
Block a user