首页 > 解决方案 > 如何在 RYU SDN 控制器中仅获得交换机之间的直接链接?

问题描述

我目前正在为 Ryu SDN 控制器开发一个应用程序,为此我需要获取交换机之间的链接。get_link(self, None)在不存在流的情况下使用返回正确的值。一旦我开始添加流以正确传输数据包,在实际上没有连接在一起的交换机之间就会出现虚假链接。

例如在此配置中:

Switch2 <-> Switch 1 <-> Switch3 在 Switch 2 和 Switch 3 之间没有链接,但是一旦出现流,函数就会返回这两者之间的链接。

有问题的功能如下:

def _print_links(self):
        links = get_link(self, None)
        link_port={(link.src.dpid, link.dst.dpid):link.src.port_no for link in links}
        self.info('Links: ' + str(link_port))

输出是这样的:

Links: {(2, 1): 1, (1, 2): 1, (3, 1): 1} #When no flows exist
Links: {(2, 1): 1, (1, 2): 1, (3, 2): 1, (1, 3): 2} #When flows exists the (3, 2) link appears

标签: pythonsdnmininetopenflowryu

解决方案


推荐阅读