I want create a net with two routers 4 switches and many host, but my router1 coudnt ping my router 2. It only work if i use IP-adress and pingall dont work for all hosts. Can anybody give my help?
I use a example of mininet example. ((h1-h3)-s1)-((h4-h7)-s2)-r1-r2-(s3-(h8-h10))-(s4-(h11-h14)).
I dont untwerstand what my problem is I have a Link of r0 to r1 and foward is = 1.
#!/usr/bin/env python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import Node
from mininet.log import setLogLevel, info
from mininet.cli import CLI
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()
class NetworkTopo( Topo ):
"A LinuxRouter connecting three IP subnets"
# pylint: disable=arguments-differ
def build( self, **_opts ):
router1 = self.addNode( 'r0', cls=LinuxRouter, ip=None )
router2 = self.addNode( 'r1', cls=LinuxRouter, ip=None )
s1, s2, s3, s4 = [ self.addSwitch( s ) for s in ( 's1', 's2', 's3', 's4' ) ]
#add link switch to router and router to router
self.addLink( s1, router1, intfName2='r0-eth1',
params2={ 'ip' : '10.0.0.1/8' } ) # for clarity
self.addLink( s2, router1, intfName2='r0-eth2',
params2={ 'ip' : '11.0.0.1/8' } )
self.addLink( s3, router2, intfName2='r1-eth1',
params2={ 'ip' : '12.0.0.1/8' } )
self.addLink( s4, router2, intfName2='r1-eth2',
params2={ 'ip' : '13.0.0.1/8' } )
self.addLink( router1, router2,
intfName1='r0-eth3', params1={ 'ip' : '20.0.0.1/8' },
intfName2='r1-eth3', params2={ 'ip' : '20.0.0.2/8' } )
#für N1 create host
h1 = self.addHost( 'h1', ip='10.0.0.2/8',
defaultRoute='via 10.0.0.1' )
h2 = self.addHost( 'h2', ip='10.0.0.3/8',
defaultRoute='via 10.0.0.1' )
h3 = self.addHost( 'h3', ip='10.0.0.4/8',
defaultRoute='via 10.0.0.1' )
#für N2
h4 = self.addHost( 'h4', ip='11.0.0.2/8',
defaultRoute='via 11.0.0.1' )
h5 = self.addHost( 'h5', ip='11.0.0.3/8',
defaultRoute='via 11.0.0.1' )
h6 = self.addHost( 'h6', ip='11.0.0.4/8',
defaultRoute='via 11.0.0.1' )
h7 = self.addHost( 'h7', ip='11.0.0.5/8',
defaultRoute='via 11.0.0.1' )
#für N3
h8 = self.addHost( 'h8', ip='12.0.0.2/8',
defaultRoute='via 12.0.0.1' )
h9 = self.addHost( 'h9', ip='12.0.0.3/8',
defaultRoute='via 12.0.0.1' )
h10 = self.addHost( 'h10', ip='12.0.0.4/24',
defaultRoute='via 12.0.0.1' )
#Für N4
h11 = self.addHost( 'h11', ip='13.0.0.2/8',
defaultRoute='via 13.0.0.1' )
h12 = self.addHost( 'h12', ip='13.0.0.3/8',
defaultRoute='via 13.0.0.1' )
h13 = self.addHost( 'h13', ip='13.0.0.4/8',
defaultRoute='via 13.0.0.1' )
h14 = self.addHost( 'h14', ip='13.0.0.5/8',
defaultRoute='via 13.0.0.1' )
#add link switch to host
for h, s in [ (h1, s1), (h2, s1), (h3, s1),
(h4, s2), (h5, s2), (h6, s2), (h7, s2),
(h8, s3), (h9, s3), (h10, s3),
(h11, s4), (h12, s4), (h13, s4), (h14, s4)]:
self.addLink( h, s )
def run():
"Test linux router"
topo = NetworkTopo()
net = Mininet( topo=topo,
waitConnected=True ) # controller is used by s1-s3
net.start()
info( '*** Routing Table on Router:n' )
info( net[ 'r0' ].cmdPrint( 'route' ) )
info( net[ 'r1' ].cmdPrint( 'route' ) )
CLI( net )
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
run()
Ahmet Yesilöz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.