linuxrouter.py: changing name, printing routing table, and some more documentation

This commit is contained in:
Brian O'Connor
2014-08-27 22:43:04 -07:00
parent aa4dfda44c
commit 2c76ab718b
+11 -5
View File
@@ -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()