创建多路由 mininet 拓扑

Posted

技术标签:

【中文标题】创建多路由 mininet 拓扑【英文标题】:create a multi-route mininet topology 【发布时间】:2021-12-09 18:14:24 【问题描述】:

我正在研究 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)

但是当我尝试 pingall 连接时,所有主机都无法相互访问。我不确定我到底错过了什么,不胜感激!

【问题讨论】:

【参考方案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 之间创建了两条不同的路径,即:

    h1 - s1 - s2 - h2 h1-sc1-sc2-sc3-h2

您可以通过删除其中一条路径来验证两者是否正常工作,您会看到连接仍然存在。

【讨论】:

以上是关于创建多路由 mininet 拓扑的主要内容,如果未能解决你的问题,请参考以下文章

怎样在mininet的拓扑中修改控制器

mininet下建立拓扑时关于远程控制器的一个小问题

SDN架构:mininet的基础命令和四种基础拓扑创建

1 mininet 简介

如何在 Mininet 自定义拓扑上设置带宽?

SDN的Mininet使用