【发布时间】:2020-02-09 09:25:30
【问题描述】:
长话短说,我有一个项目需要我在 python 中从头开始创建一个控制器,并处理来自通过遵循开放流协议的 mininet 拓扑创建的交换机的请求。
有用的开放流协议资源:
- https://www.opennetworking.org/wp-content/uploads/2014/10/openflow-switch-v1.5.1.pdf
- http://flowgrammable.org/sdn/openflow/message-layer/
- http://flowgrammable.org/sdn/openflow/message-layer/statsrequest/#ofp_1_3
我的代码在 github 上可用于克隆和完全透明:
- [已于 2019 年 10 月 12 日删除,请参阅下面的答案]
我遇到的问题是我无法为端口统计描述发送多部分请求消息(在此link 上搜索PortDesc)。我不知道为什么会这样,但是当我在 Wireshark 中查看数据包数据时,出现“范围超出范围”错误。我一直无法弄清楚为什么会这样。以下是数据包数据的几张截图:
错误请求错误消息响应:
这里需要注意的是代码是OFPBRC_BAD_LEN (6),但是多部分请求中发送的字节长度是16。
一个正确发送数据包数据的同学说他们使用的打包结构和我一样,只是他们的打包结构是成功的(参见 python struct 文档)。我不知道我的问题可能是什么,而且我已经没有想法可以检查了。任何指针将不胜感激。
TL;DR:我无法发送多部分请求,即使我遵守请求规范,结果仍会返回错误代码。 Wireshark 中的错误显示“范围超出范围”,我不知道如何构建我的请求以更正此错误消息。
【问题讨论】:
标签: python lua wireshark mininet openflow