写一个mininet的拓扑代码,包含两个主机,四个路由器,每个主机与两个路由器相连,每个路由器与另一个路由器相连,路由器中配置转发规则,不使用远程控制器
from mininet.topo import Topo
from mininet.cli import CLI
from mininet.net import Mininet
from mininet.node import RemoteController, OVSKernelSwitch
class MyTopo(Topo):
"Custom topology with 2 hosts and 4 routers."
def __init__(self, **opts):
Topo.__init__(self, **opts)
# add hosts
host1 = self.addHost('h1')
host2 = self.addHost('h2')
# add routers
router1 = self.addSwitch('r1', cls=OVSKernelSwitch)
router2 = self.addSwitch('r2', cls=OVSKernelSwitch)
router3 = self.addSwitch('r3', cls=OVSKernelSwitch)
router4 = self.addSwitch('r4', cls=OVSKernelSwitch)
# add links between hosts and routers
self.addLink(host1, router1)
self.addLink(host1, router2)
self.addLink(host2, router3)
self.addLink(host2, router4)
# add links between routers
self.addLink(router1, router2)
self.addLink(router2, router3)
self.addLink(router3, router4)
self.addLink(router4, router1)
# configure routing tables
router1.cmd('route add -net 10.0.2.0/24 dev r1-eth1')
router1.cmd('route add -net 10.0.3.0/24 dev r1-eth2')
router2.cmd('route add -net 10.0.1.0/24 dev r2-eth1')
router2.cmd('route add -net 10.0.4.0/24 dev r2-eth2')
router3.cmd('route add -net 10.0.1.0/24 dev r3-eth1')
router3.cmd('route add -net 10.0.4.0/24 dev r3-eth2')
router4.cmd('route add -net 10.0.2.0/24 dev r4-eth1')
router4.cmd('route add -net 10.0.3.0/24 dev r4-eth2')
if __name__ == '__main__':
topo = MyTopo()
net = Mininet(topo=topo, controller=None)
net.start()
CLI(net)
net.stop()
该拓扑包含两个主机(h1、h2)和四个路由器(r1、r2、r3、r4)。每个主机与两个路由器相连,以便它们可以访问网络中的不同区域。每个路由器与另一个路由器相连,以实现网络通信。这些路由器已配置转发规则,以确保数据包正确路由,而不使用远程控制器。
原文地址: https://www.cveoy.top/t/topic/rG0 著作权归作者所有。请勿转载和采集!