2015-06-03 6 views
1

Я ищу способ отправки пакетов с использованием протокола OpenFlow 1.3 в SDN-сети в топологии с циклом. Мой выбор контроллера - Рю. Чтобы определить хосты, я поймаю ARP-пакеты и, чтобы избежать наводнений, я использую STP.
Как я могу «активировать» порт, отключенный/заблокированный STP с помощью контроллера OpenFlow и Ryu, чтобы я мог пересылать через него пакеты?

Моя проблема заключается в том, что, когда путь, вычисленный моим алгоритмом маршрутизации, содержит порты, которые заблокированы/отключены STP, соединение не может быть выполнено (хосты не могут пинговать друг друга).

Подумав об этом, я пришел к выводу, что мне нужно «активировать» заблокированные/заблокированные порты, которые находятся на моем маршруте. Но я не могу найти никакого способа сделать это.

Так что теперь вопрос: как я могу достичь своего решения? Есть ли способ «активировать» порты в Рю? Или если мое решение недостижимо, есть ли какой-либо другой метод, который я могу использовать для решения этой проблемы?

ответ

2

Для активации порта вы отправляете переключатель ofp_port_modmessage.

Однако это будет эффективно отключать STP, поскольку вы открываете порты, которые могут быть частью цикла.

Я думаю, что лучший способ сделать это может быть для вашего алгоритма маршрутизации, чтобы проверить, если порт отключен, путем отправки OFPMP_PORT_DESCRIPTIONmessage к выключателю и чтению config поля в ответном сообщении. Затем вы можете обрабатывать эти порты как вниз и вычислять другой путь (хотя я не знаю, возможно ли это в вашем случае.)

Сказав это, если я читаю спецификации открытого потока (раздел 7.2.1 Port Structures) правильно, вы все равно сможете маршрутизировать через порт BLOCKED, вы просто не можете пропустить его. Это отличается от порта DISABLED.

+0

Хороший ответ (проголосовать). Интересно, уверены ли вы, что вы можете отправлять сообщения без потопа через заблокированные порты? Не возражаете ли вы предоставить версию openflow, которую вы читали? –

+0

Я думаю, что это тоже хороший ответ. Но, к сожалению, это было невозможно в моем случае. Поэтому я решил не использовать STP в своем контроллере, но вместо этого использовал другой подход. Хороший ответ, тем не менее, так что проголосуйте. – Jacu629

+0

Я смотрел на openflow 1.3, как изложил оригинальный вопрос. – nik