Major Project
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...