Как я могу "активировать" порт, заблокированный / заблокированный STP, используя OpenFlow и контроллер Ryu, чтобы я мог пересылать пакеты через него?
Я ищу способ отправки пакетов с использованием протокола OpenFlow 1.3 в сети SDN в топологии с петлей. Мой выбор контроллера - Рю. Чтобы идентифицировать хосты, я ловлю пакеты ARP и, чтобы избежать наводнения, я использую STP.
Моя проблема в том, что, когда путь, вычисленный моим алгоритмом маршрутизации, содержит порты, которые заблокированы / отключены STP, соединение не может быть установлено (хосты не могут пропинговать друг друга).
Обдумав это, я пришел к выводу, что мне нужно "активировать" отключенные / заблокированные порты, которые находятся на моем пути маршрутизации. Но я не могу найти способ сделать это..
Итак, теперь вопрос: как я могу достичь своего решения? Есть ли способ "активировать" порты в Рю? Или, если мое решение недостижимо, есть ли другой метод, который я могу использовать для решения этой проблемы?
1 ответ
Для активации порта вы отправляете ofp_port_mod
сообщение на коммутатор.
Однако это эффективно отключит STP, так как вы открываете порты, которые могут быть частью цикла.
Я думаю, что лучший способ сделать это для вашего алгоритма маршрутизации, чтобы проверить, если порт отключен, отправив OFPMP_PORT_DESCRIPTION
сообщение на коммутатор и чтение config
поле в ответе. Затем вы можете рассматривать эти порты как отключенные и вычислять другой путь (хотя я не знаю, возможно ли это в вашем случае.)
Сказав, что, если я правильно читаю спецификации openflow (раздел 7.2.1 Port Structures), вы все равно сможете маршрутизировать через BLOCKED
порт, вы просто не можете затопить его. Это отличается от DISABLED
порт.