Major Project
unknown
python
3 years ago
2.5 kB
6
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...