Major Project

 avatar
unknown
python
2 years ago
2.5 kB
4
Indexable
import pdb
from mininet.topo import Topo
from mininet.node import Node

# Topology with no switches, where h1 is not reachable from h3  vice-versa


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

        H1 = self.addHost('h1', ip='11.1.1.1/24')
        H2 = self.addHost('h2', ip='11.1.2.1/24')
        H3 = self.addHost('h3', ip='11.1.3.1/24')
        self.addLink(H1, H2)
        self.addLink(H2, H3)

# Topology of switches, where each switch is connected to one host


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

        H1 = self.addHost('h1')
        S1 = self.addSwitch('s1')
        H2 = self.addHost('h2')
        S2 = self.addSwitch('s2')
        H3 = self.addHost('h3')
        S3 = self.addSwitch('s3')
        H4 = self.addHost('h4')
        S4 = self.addSwitch('s4')
        H5 = self.addHost('h5')
        S5 = self.addSwitch('s5')

        self.addLink(S1, S2)
        self.addLink(S2, S3)
        self.addLink(S2, S4)
        self.addLink(S4, S5)

        self.addLink(H1, S1)
        self.addLink(H2, S2)
        self.addLink(H3, S3)
        self.addLink(H4, S4)
        self.addLink(H5, S5)


class LinuxRouter(Node):
    "A Node with IP forwarding enabled."
    # pylint: disable=arguments-differ

    def config(self, **params):
        super(LinuxRouter, self).config(**params)
        # Enable forwarding on the router
        self.cmd('sysctl net.ipv4.ip_forward=1')

    def terminate(self):
        self.cmd('sysctl net.ipv4.ip_forward=0')
        super(LinuxRouter, self).terminate()


# Topology with routing where each host is able to do ip forwarding
class MyTopo3(Topo):
    def __init__(self):
        Topo.__init__(self)
        defaultIP = '192.168.1.1/24'  # IP address for r0-eth1
        # h1 = self.addNode('h1', cls=LinuxRouter, ip='10.0.0.0/24')
        # h2 = self.addNode('h2', cls=LinuxRouter, ip='10.0.1.0/24')
        h1 = self.addHost('h1', ip='10.0.0.0/24', defaultRoute='via 10.0.3.10')
        h2 = self.addHost('h2', ip='10.0.3.10/24', defaultRoute='via 10.0.0.0')

        # h3 = self.addNode( 'h3', cls=LinuxRouter, ip=defaultIP )
        # h4 = self.addNode( 'h4', cls=LinuxRouter, ip=defaultIP )

        self.addLink(h1, h2, intfName1='h1-h2', intfName2='h2-h1')
        h1.cmd('sysctl net.ipv4.ip_forward=1')
        h2.cmd('sysctl net.ipv4.ip_forward=1')


topos = {'mytopo': (lambda: MyTopo1()),
         'mytopo2': (lambda: MyTopo2()),
         'mytopo3': (lambda: MyTopo3())}
Editor is loading...