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)。每个主机与两个路由器相连,以便它们可以访问网络中的不同区域。每个路由器与另一个路由器相连,以实现网络通信。这些路由器已配置转发规则,以确保数据包正确路由,而不使用远程控制器。

写一个mininet的拓扑代码,包含两个主机,四个路由器,每个主机与两个路由器相连,每个路由器与另一个路由器相连,路由器中配置转发规则,不使用远程控制器

原文地址: https://www.cveoy.top/t/topic/rG0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录