创建多路由迷你网拓扑

问题描述 投票:0回答:2

我正在开发 mininet,并尝试创建一个拓扑以允许任意两个主机之间存在多个路径。特别是,我正在使用以下拓扑:

class SimpleTopo(Topo):
    def build(self):
        h1 = self.addHost('h1')
        h2 = self.addHost('h2')
        h3 = self.addHost('h3')

        s1 = self.addSwitch('s1')
        s2 = self.addSwitch('s2')
        s3 = self.addSwitch('s3')

        sc1 = self.addSwitch('s4')
        sc2 = self.addSwitch('s5')

        self.addLink(h1, s1)
        self.addLink(h2, s2)
        self.addLink(h3, s3)
        self.addLink(s1, sc1)
        self.addLink(s1, sc2)
        self.addLink(s2, sc1)
        self.addLink(s2, sc2)
        self.addLink(s3, sc1)
        self.addLink(s3, sc2)

但是当我尝试 ping 所有连接时,所有主机都无法相互访问。我不确定我到底缺少什么,如果有帮助,我们将不胜感激!

python-3.x mininet multipath
2个回答
1
投票

您能否详细说明您为何尝试这样做?

交换机很棘手,因为它们在技术上并没有实现完整的堆栈。我认为正在发生的情况是,在您尝试添加一些链接后,转发表会变得混乱。我已经确认,如果您删除一些链接,连接仍然存在。

但是,如果您只是想获得多路径示例,您可以按如下方式更改拓扑:

class SimpleTopo(Topo):
    def build(self):
        h1 = self.addHost('h1')
        h2 = self.addHost('h2')

        s1 = self.addSwitch('s1')
        s2 = self.addSwitch('s2')

        sc1 = self.addSwitch('s3')
        sc2 = self.addSwitch('s4')
        sc3 = self.addSwitch('s5')

        self.addLink(h1, s1)
        self.addLink(h2, s2)
        self.addLink(s1, s2)

        self.addLink(h1, sc1)
        self.addLink(sc1, sc2)
        self.addLink(sc2, sc3)
        self.addLink(sc3, h2)

注意,我这里只有 2 个主机,但您没有理由不能添加第三个主机。这样就创建了 h1 和 h2 之间的两条不同的路径,即:

  1. h1 - s1 - s2 - h2
  2. h1 - sc1 - sc2 - sc3 - h2

您可以通过删除其中一条路径来验证两者是否有效,并且您会看到连接仍然存在。


0
投票

我按照你说的做了,它可以工作,但是当我使链接 s1-s2 向下时,流量应该通过另一条路径,但这没有发生,并且 pingall 不起作用! 有什么建议吗?

© www.soinside.com 2019 - 2024. All rights reserved.