问题描述
我试图通过修改微型网络(linuxrouter.py)的创建示例来创建具有3个路由器和3个主机的拓扑。
不幸的是,当我去:
h1 ping h2
它不起作用,并告诉我“目标主机不可达”。 我想知道我在用代码做错什么,非常感谢。
这是我要记住的拓扑:
这是python中的代码:
#!/usr/bin/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):
def config(self,**params):
super(LinuxRouter,self).config(**params)
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):
def build(self,**_opts):
# Add 3 routers in three different subnets
r1 = self.addNode('r1',cls=LinuxRouter,ip='10.0.0.1/24')
r2 = self.addNode('r2',ip='10.1.0.1/24')
r3 = self.addNode('r3',ip='10.2.0.1/24')
# Adding hosts specifying the default route
h1 = self.addHost(name='h1',ip='10.0.0.251/24',defaultRoute='via 10.0.0.1')
h2 = self.addHost(name='h2',ip='10.1.0.252/24',defaultRoute='via 10.1.0.1')
h3 = self.addHost(name='h3',ip='10.2.0.253/24',defaultRoute='via 10.2.0.1')
# Add router-router link in a new subnet for the router-router connection
self.addLink(r1,r2,intfName1='r1-eth0',intfName2='r2-eth0',params1={'ip': '10.5.0.1/24'},params2={'ip': '10.5.0.100/24'})
self.addLink(r1,r3,intfName1='r1-eth1',intfName2='r3-eth0',params1={'ip': '10.6.0.253/24'},params2={'ip': '10.6.0.254/24'})
self.addLink(r2,intfName1='r2-eth1',intfName2='r3-eth1',params1={'ip': '10.7.0.1/24'},params2={'ip': '10.7.0.10/24'})
# Add host-router links
self.addLink(h1,r1,intfName1='h1-eth3',intfName2='r1-eth3')
self.addLink(h2,intfName1='h2-eth4',intfName2='r2-eth4')
self.addLink(h3,intfName1='h3-eth5',intfName2='r3-eth5')
def run():
topo = NetworkTopo()
net = Mininet(topo=topo)
# Add routing for reaching networks that aren't directly connected
info(net['r1'].cmd("route"))
info(net['r2'].cmd("route"))
info(net['r3'].cmd("route"))
net.start()
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel('info')
run()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)