linuxrouter.py: changing name, printing routing table, and some more documentation
This commit is contained in:
+11
-5
@@ -16,33 +16,37 @@ The topology contains a router with three IP subnets:
|
|||||||
- h2 (IP: 172.16.0.100)
|
- h2 (IP: 172.16.0.100)
|
||||||
- h3 (IP: 10.0.0.100)
|
- h3 (IP: 10.0.0.100)
|
||||||
|
|
||||||
|
Routing entries can be added to the routing tables of the
|
||||||
|
hosts or router using the "ip route add" or "route add" command.
|
||||||
|
See the man pages for more details.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from mininet.topo import Topo
|
from mininet.topo import Topo
|
||||||
from mininet.net import Mininet
|
from mininet.net import Mininet
|
||||||
from mininet.node import Node
|
from mininet.node import Node
|
||||||
from mininet.log import setLogLevel
|
from mininet.log import setLogLevel, info
|
||||||
from mininet.cli import CLI
|
from mininet.cli import CLI
|
||||||
from mininet.util import irange
|
from mininet.util import irange
|
||||||
|
|
||||||
class Router( Node ):
|
class LinuxRouter( Node ):
|
||||||
"A Node with IP forwarding enabled."
|
"A Node with IP forwarding enabled."
|
||||||
|
|
||||||
def config( self, **params ):
|
def config( self, **params ):
|
||||||
super( Router, self).config( **params )
|
super( LinuxRouter, self).config( **params )
|
||||||
# Enable forwarding on the router
|
# Enable forwarding on the router
|
||||||
self.cmd( 'sysctl net.ipv4.ip_forward=1' )
|
self.cmd( 'sysctl net.ipv4.ip_forward=1' )
|
||||||
|
|
||||||
def terminate( self ):
|
def terminate( self ):
|
||||||
self.cmd( 'sysctl net.ipv4.ip_forward=0' )
|
self.cmd( 'sysctl net.ipv4.ip_forward=0' )
|
||||||
super( Router, self ).terminate()
|
super( LinuxRouter, self ).terminate()
|
||||||
|
|
||||||
|
|
||||||
class NetworkTopo( Topo ):
|
class NetworkTopo( Topo ):
|
||||||
"A simple topology of a router with three subnets (one host in each)."
|
"A simple topology of a router with three subnets (one host in each)."
|
||||||
|
|
||||||
def build( self, n=2, h=1, **opts ):
|
def build( self, n=2, h=1, **opts ):
|
||||||
router = self.addNode( 'r0', cls=Router, ip='192.168.1.1/24' )
|
router = self.addNode( 'r0', cls=LinuxRouter, ip='192.168.1.1/24' )
|
||||||
h1 = self.addHost( 'h1', ip='192.168.1.100/24', defaultRoute='via 192.168.1.1' )
|
h1 = self.addHost( 'h1', ip='192.168.1.100/24', defaultRoute='via 192.168.1.1' )
|
||||||
h2 = self.addHost( 'h2', ip='172.16.0.100/12', defaultRoute='via 172.16.0.1' )
|
h2 = self.addHost( 'h2', ip='172.16.0.100/12', defaultRoute='via 172.16.0.1' )
|
||||||
h3 = self.addHost( 'h3', ip='10.0.0.100/8', defaultRoute='via 10.0.0.1' )
|
h3 = self.addHost( 'h3', ip='10.0.0.100/8', defaultRoute='via 10.0.0.1' )
|
||||||
@@ -54,6 +58,8 @@ def run():
|
|||||||
topo = NetworkTopo()
|
topo = NetworkTopo()
|
||||||
net = Mininet( topo=topo, controller=None ) # no controller needed
|
net = Mininet( topo=topo, controller=None ) # no controller needed
|
||||||
net.start()
|
net.start()
|
||||||
|
info( '*** Routing Table on Router\n' )
|
||||||
|
print net[ 'r0' ].cmd( 'route' )
|
||||||
CLI( net )
|
CLI( net )
|
||||||
net.stop()
|
net.stop()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user