summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/tools/test/topos/optical2.py
blob: 36cdbadd26809e69f6d6f7d82fb217c0be0834c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env python

''' file: custom/optical.py '''

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import Intf, Link
from mininet.node import RemoteController

class NullIntf( Intf ):
    "A dummy interface with a blank name that doesn't do any configuration"
    def __init__( self, name, **params ):
        self.name = ''

class NullLink( Link ):
    "A dummy link that doesn't touch either interface"
    def makeIntfPair( cls, intf1, intf2, *args, **kwargs ):
        pass
    def delete( self ):
        pass

class OpticalTopo(Topo):
    def addIntf( self, switch, intfName ):
        "Add intf intfName to switch"
        self.addLink( switch, switch, cls=NullLink,
                      intfName1=intfName, cls2=NullIntf )
    def __init__(self):

        # Initialize topology
        Topo.__init__(self)

        # Add hosts and switches
        h1 = self.addHost('h1')
        h2 = self.addHost('h2')
        h3 = self.addHost('h3')
        h4 = self.addHost('h4')
        h5 = self.addHost('h5')
        h6 = self.addHost('h6')

        s1 = self.addSwitch('s1', dpid="0000ffffffff0001")
        s2 = self.addSwitch('s2', dpid="0000ffffffff0002")
        s3 = self.addSwitch('s3', dpid="0000ffffffff0003")
        s4 = self.addSwitch('s4', dpid="0000ffffffff0004")
        s5 = self.addSwitch('s5', dpid="0000ffffffff0005")
        s6 = self.addSwitch('s6', dpid="0000ffffffff0006")


        # Add links from hosts to OVS
        self.addLink(s1, h1)
        self.addLink(s2, h2)
        self.addLink(s3, h3)
        self.addLink(s4, h4)
        self.addLink(s5, h5)
        self.addLink(s6, h6)

        # add links from ovs to linc-oe
        # sorry about the syntax :(
        self.addIntf(s1,'tap29')
        self.addIntf(s2,'tap30')
        self.addIntf(s3,'tap31')
        self.addIntf(s4,'tap32')
        self.addIntf(s5,'tap33')
        self.addIntf(s6,'tap34')

        # if you use, sudo mn --custom custom/optical.py, then register the topo:
topos = {'optical': ( lambda: OpticalTopo() )}


def run():
    c = RemoteController('c','127.0.0.1',6633)
    net = Mininet( topo=OpticalTopo(),controller=None,autoSetMacs=True)
    net.addController(c)
    net.start()

    #installStaticFlows( net )
    CLI( net )
    net.stop()

# if the script is run directly (sudo custom/optical.py):
if __name__ == '__main__':
    setLogLevel('info')
    run()