Untitled

 avatar
unknown
plain_text
5 months ago
3.5 kB
3
Indexable
#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.cli import CLI
from mininet.node import RemoteController

class MyTopology(Topo):
    def __init__(self):
        Topo.__init__(self)

        s1 = self.addSwitch('s1') #core switch
        s2 = self.addSwitch('s2')
        s3 = self.addSwitch('s3')
        s4 = self.addSwitch('s4')
        s5 = self.addSwitch('s5')

        #fac lan
        facultyWS = self.addHost('facultyWS', mac='00:00:00:00:10:10', ip='10.0.1.2/24', defaultRoute="facultyWS-eth1")
        printer = self.addHost('printer', mac='00:00:00:00:10:20', ip='10.0.1.3/24', defaultRoute="printer-eth1")
        facultyPC = self.addHost('facultyPC', mac='00:00:00:00:10:30', ip='10.0.1.4/24', defaultRoute="facultyPC-eth1")

        #university data center
        examServer = self.addHost('examServer', mac='00:00:00:00:20:10', ip='10.100.100.2/24', defaultRoute="examServer-eth1")
        webServer = self.addHost('webServer', mac='00:00:00:00:20:20', ip='10.100.100.20/24', defaultRoute="webServer-eth1")
        dnsServer = self.addHost('dnsServer', mac='00:00:00:00:20:30', ip='10.100.100.56/24', defaultRoute="dnsServer-eth1")

        #it dept
        itWS = self.addHost('itWS', mac='00:00:00:00:30:10', ip='10.40.3.30/24', defaultRoute="itWS-eth1")
        itPC = self.addHost('itPC', mac='00:00:00:00:30:20', ip='10.40.3.254/24', defaultRoute="itPC-eth1")

        #student housing lan
        studentPC1 = self.addHost('studentPC1', mac='00:00:00:00:40:10', ip='10.0.2.2/24', defaultRoute="studentPC1-eth1")
        labWS = self.addHost('labWS', mac='00:00:00:00:40:20', ip='10.0.2.3/24', defaultRoute="labWS-eth1")
        studentPC2 = self.addHost('studentPC2', mac='00:00:00:00:40:30', ip='10.0.2.40/24', defaultRoute="studentPC2-eth1")

        #internet/external (not a subnet technically)
        trustedPC = self.addHost('trustedPC', mac='00:00:00:00:50:10', ip='10.0.203.6/32', defaultRoute="trustedPC-eth1")
        guest1 = self.addHost('guest1', mac='00:00:00:00:50:20', ip='10.0.198.6/32', defaultRoute="guest1-eth1")
        guest2 = self.addHost('guest2', mac='00:00:00:00:50:30', ip='10.0.198.10/32', defaultRoute="guest2-eth1")

        self.addLink(s2, s1, port1=2, port2=2)  #faclan 
        self.addLink(s1, s3, port1=3, port2=3)  #student
        self.addLink(s1, s4, port1=4, port2=4)  #it
        self.addLink(s1, s5, port1=5, port2=5)  #data center

        self.addLink(s2, facultyWS, port1=3, port2=1)
        self.addLink(s2, printer, port1=4, port2=1)
        self.addLink(s2, facultyPC, port1=5, port2=1)

        self.addLink(s3, studentPC1, port1=4, port2=1)
        self.addLink(s3, studentPC2, port1=5, port2=1)
        self.addLink(s3, labWS, port1=6, port2=1)
        self.addLink(studentPC1, labWS, port1=2, port2=2)  

        self.addLink(s4, itWS, port1=5, port2=1)
        self.addLink(s4, itPC, port1=6, port2=1)

        self.addLink(s5, examServer, port1=6, port2=1)
        self.addLink(s5, webServer, port1=7, port2=1)
        self.addLink(s5, dnsServer, port1=8, port2=1)

        self.addLink(s1, trustedPC, port1=6, port2=1)
        self.addLink(s1, guest1, port1=7, port2=1)
        self.addLink(s1, guest2, port1=8, port2=1)

if __name__ == '__main__':
    topo = MyTopology()
    c0 = RemoteController(name='c0', controller=RemoteController, ip='127.0.0.1', port=6633)
    net = Mininet(topo=topo, controller=c0)
    net.start()
    CLI(net)
    net.stop()
Editor is loading...
Leave a Comment