已经安装了mininet,写一个mininet只包含四个路由器,两个主机,每个主机都与两个路由器相连,创建拓扑时在路由器中配置转发表,不使用远程控制器,可以使用CLI命令操作网络
可以使用以下代码创建这样一个拓扑:
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController
class MyTopo(Topo):
def build(self):
# Add routers
r1 = self.addSwitch('r1')
r2 = self.addSwitch('r2')
r3 = self.addSwitch('r3')
r4 = self.addSwitch('r4')
# Add hosts
h1 = self.addHost('h1')
h2 = self.addHost('h2')
# Add links
self.addLink(h1, r1)
self.addLink(h1, r2)
self.addLink(h2, r3)
self.addLink(h2, r4)
self.addLink(r1, r2)
self.addLink(r2, r3)
self.addLink(r3, r4)
self.addLink(r4, r1)
# Configure forwarding tables
r1.cmd('route add -net 10.0.2.0/24 dev r1-eth0')
r1.cmd('route add -net 10.0.3.0/24 dev r1-eth1')
r1.cmd('route add -net 10.0.4.0/24 via 10.0.1.2')
r1.cmd('route add -net 10.0.5.0/24 via 10.0.1.2')
r2.cmd('route add -net 10.0.1.0/24 via 10.0.4.2')
r2.cmd('route add -net 10.0.3.0/24 dev r2-eth1')
r2.cmd('route add -net 10.0.5.0/24 via 10.0.4.2')
r2.cmd('route add -net 10.0.2.0/24 dev r2-eth0')
r3.cmd('route add -net 10.0.1.0/24 via 10.0.5.2')
r3.cmd('route add -net 10.0.2.0/24 via 10.0.5.2')
r3.cmd('route add -net 10.0.4.0/24 via 10.0.3.2')
r3.cmd('route add -net 10.0.5.0/24 dev r3-eth1')
r4.cmd('route add -net 10.0.1.0/24 via 10.0.2.2')
r4.cmd('route add -net 10.0.2.0/24 dev r4-eth0')
r4.cmd('route add -net 10.0.3.0/24 via 10.0.2.2')
r4.cmd('route add -net 10.0.5.0/24 dev r4-eth1')
if __name__ == '__main__':
topo = MyTopo()
net = Mininet(topo=topo, controller=None)
net.start()
net.pingAll()
net.interact()
net.stop()
在这个拓扑中,我们添加了四个路由器和两个主机,使用 addLink() 添加连接。在路由器上使用 route add 命令配置转发表。在最后,使用 net.interact() 命令启动 CLI 命令行界面,可以在命令行中操作网络。
原文地址: https://www.cveoy.top/t/topic/nDp 著作权归作者所有。请勿转载和采集!