微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 RYU 控制器在 SDN 迷你网中无法访问目标主机

如何解决使用 RYU 控制器在 SDN 迷你网中无法访问目标主机

我使用 mininet 和 RYU 控制器创建了如下所示的 mininet 拓扑

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.log import setLogLevel
from mininet.node import OVSSwitch,Controller,RemoteController
from mininet.cli import CLI
from time import sleep

class ResearchTopo(Topo):
    def build(self):
        s1 = self.addSwitch('s1')
        s2 = self.addSwitch('s2')
        s3 = self.addSwitch('s3')
        s4 = self.addSwitch('s4')
        s5 = self.addSwitch('s5')

        h1 = self.addHost('h1')
        h2 = self.addHost('h2')
        h3 = self.addHost('h3')
        h4 = self.addHost('h4')
        h5 = self.addHost('h5')
        h6 = self.addHost('h6')
    

        self.addLink(h1,s3)
        self.addLink(h2,s3)
        self.addLink(h3,s4)
        self.addLink(h4,s4)
        self.addLink(h5,s5)
        self.addLink(h6,s5)

        self.addLink(s1,s3)     
        self.addLink(s1,s4)     
        self.addLink(s1,s5)
        self.addLink(s2,s3)     
        self.addLink(s2,s4)
        self.addLink(s2,s5)

if __name__ == '__main__':
    setLogLevel('info')
    topo = ResearchTopo()
    c1 = RemoteController('c1',ip='127.0.0.1')
    net = Mininet(topo = topo,controller = c1)
    net.start()
    CLI(net)
    net.stop()

但是如果我尝试互相 ping,它会说目标主机无法访问。如果我移除 s1 或 s2 开关,它就可以正常工作。

解决方法

您正在定义一个带有循环的网络。

在这种情况下,您需要定义生成树协议 (STP) 以构建无环路的逻辑拓扑。这里是 Ryu 控制器的 guide

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。