Revision dc630c54 examples/scratchnetuser.py

View differences:

examples/scratchnetuser.py
8 8
This version uses the user datapath.
9 9
"""
10 10

  
11
from mininet.mininet import init, Node, createLink
11
from mininet.net import init
12
from mininet.node import Node
13
from mininet.util import createLink
14
from mininet.log import lg, info
12 15

  
13 16
def scratchNetUser( cname='controller', cargs='ptcp:'):
14
   # Create Network
15
   # It's not strictly necessary for the controller and switches
16
   # to be in separate namespaces. For performance, they probably
17
   # should be in the root namespace. However, it's interesting to
18
   # see how they could work even if they are in separate namespaces.
19
   controller = Node( 'c0' )
20
   switch = Node( 's0')
21
   h0 = Node( 'h0' )
22
   h1 = Node( 'h1' )
23
   createLink( controller, switch )
24
   createLink( h0, switch )
25
   createLink( h1, switch )
26
   # Configure control network
27
   controller.setIP( controller.intfs[ 0 ], '10.0.123.1', '/24' )
28
   switch.setIP( switch.intfs[ 0 ], '10.0.123.2', '/24' )
29
   # Configure hosts
30
   h0.setIP( h0.intfs[ 0 ], '192.168.123.1', '/24' )
31
   h1.setIP( h1.intfs[ 0 ], '192.168.123.2', '/24' )
32
   # Start network using user datapath
33
   controller.cmdPrint( cname + ' ' + cargs + '&' )
34
   switch.cmdPrint( 'ifconfig lo 127.0.0.1' )
35
   switch.cmdPrint( 'ofdatapath -i ' + ','.join( switch.intfs[ 1: ]) 
36
      + ' ptcp: &' )
37
   switch.cmdPrint( 'ofprotocol tcp:' + controller.IP() + ' tcp:localhost &' )
38
   # Run test
39
   h0.cmdPrint( 'ping -c1 ' + h1.IP() )
40
   # Stop network
41
   controller.cmdPrint( 'kill %' + cname)
42
   switch.cmdPrint( 'kill %ofdatapath' )
43
   switch.cmdPrint( 'kill %ofprotocol' )
17
    # Create Network
18
    # It's not strictly necessary for the controller and switches
19
    # to be in separate namespaces. For performance, they probably
20
    # should be in the root namespace. However, it's interesting to
21
    # see how they could work even if they are in separate namespaces.
22

  
23
    info( '*** Creating Network\n' )
24
    controller = Node( 'c0' )
25
    switch = Node( 's0')
26
    h0 = Node( 'h0' )
27
    h1 = Node( 'h1' )
28
    createLink( controller, 0, switch, 0 )
29
    createLink( h0, 0, switch, 1 )
30
    createLink( h1, 0, switch, 2 )
31

  
32
    info( '*** Configuring control network\n' )
33
    controller.setIP( controller.intfs[ 0 ], '10.0.123.1', '/24' )
34
    switch.setIP( switch.intfs[ 0 ], '10.0.123.2', '/24' )
35
    
36
    info( '*** Configuring hosts\n' )
37
    h0.setIP( h0.intfs[ 0 ], '192.168.123.1', '/24' )
38
    h1.setIP( h1.intfs[ 0 ], '192.168.123.2', '/24' )
39
    
40
    info( '*** Network state:\n' )
41
    for node in controller, switch, h0, h1:
42
        info( str( node ) + '\n' )
43
        
44
    info( '*** Starting controller and user datapath\n' )
45
    controller.cmd( cname + ' ' + cargs + '&' )
46
    switch.cmd( 'ifconfig lo 127.0.0.1' )
47
    intfs = [ switch.intfs[ port ] for port in (1, 2) ]
48
    switch.cmd( 'ofdatapath -i ' + ','.join( intfs ) + ' ptcp: &' )
49
    switch.cmd( 'ofprotocol tcp:' + controller.IP() + ' tcp:localhost &' )
50

  
51
    info( '*** Running test\n' )
52
    h0.cmdPrint( 'ping -c1 ' + h1.IP() )
53

  
54
    info( '*** Stopping network\n' )
55
    controller.cmd( 'kill %' + cname )
56
    switch.cmd( 'kill %ofdatapath' )
57
    switch.cmd( 'kill %ofprotocol' )
44 58
   
45 59
if __name__ == '__main__':
46
   init()   
47
   scratchNetUser()
60
    info( '*** Scratch network demo (user datapath)\n' )
61
    init()   
62
    lg.setLogLevel( 'info' )
63
    scratchNetUser()

Also available in: Unified diff