Короче говоря, у меня есть проект, который требует от меня создания контроллера с нуля в python и обработки запросов от коммутаторов, созданных с помощью топологии mininet в соответствии с протоколом Open Flow.
Полезные ресурсы протокола Open Flow:
Мой код доступен здесь на github для клонирования и полной прозрачности:
- [удалено по состоянию на 10.12.2009, см. Мой ответ ниже]
Проблема Iя сталкиваюсь с тем, что я не могу отправить сообщение multipart-request для описания статистики порта (поиск PortDesc
по этой ссылке ). Я не знаю, почему это так, но когда я просматриваю пакетные данные в wireshark, я получаю сообщение об ошибке «Диапазон выходит за пределы». Я не смог понять, почему это так. Вот несколько снимков экрана с пакетными данными:
Захваты Wireshark:
![Full screenshot of the openflow protocol](https://i.stack.imgur.com/k68Sw.png)
Lua сообщения об ошибках:
![Lua error message part 2](https://i.stack.imgur.com/M9GAI.png)
Bad Request Ошибка Сообщение Ответ:
Здесь следует отметить, что код говорит OFPBRC_BAD_LEN (6)
, но длина байтов, отправляемых в запросе из нескольких частей, имеет размер16.
Одноклассник, который правильно отправил свои пакетные данные, сказал, что они использовали ту же структуру упаковки, что и я, за исключением того, что они успешно (см. Документацию по python struct
). Я не знаю, в чем проблема с моими, и у меня заканчиваются идеи для проверки. Будем весьма благодарны за любые указатели.
TL; DR: Я не могу отправить многокомпонентный запрос, и хотя я придерживаюсь спецификаций запроса, результаты продолжают возвращаться с кодом ошибки. Ошибка в wireshark говорит: «Диапазон выходит за пределы», и я не знаю, как еще структурировать мой запрос для исправления этого сообщения об ошибке.