python - 如何在 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
解决方案
推荐阅读
- asp.net - 如何运行预编译或已发布的 ASP.net MVC 项目并向其中添加文件并再次发布?
- javascript - 如何在谷歌脚本中格式化从扫描仪收到的数据?
- python - 为什么我收到 pylint 错误:值“self.body”不可订阅?
- webpack - Webpack4 - 模块解析失败:意外字符'@'
- android - 在 Firebase Android 中查询 Firestore
- php - 在 php curl 请求中从 xml 获取正文内容
- sql - 如何管理 postgresql 外键?
- c# - ASP.NET Core 禁用响应缓冲
- flutter - Flutter 状态和流
- react-native - React Native 中的持久化状态钩子