Этот вопрос может показаться слегка гипотетическим, но я не мог понять, как еще его задать.
Протокол OpenFlow имеет функцию, которая позволяет удалять его правила, когда с ними не совпадает трафик. Эта функция называется «тайм-аут простоя».
В статье указано, что типичное обнаружение каналов OpenFlow не масштабируется, потому что Контроллер должен взаимодействовать со многими пакетами. Поэтому я начал думать о способе непрерывного опроса ссылок без постоянного наблюдения контроллера за происходящим. Я пришел к следующей идее:
Обнаруживать все новые порты (например, каждые 5 минут или что-то в этом роде), затем устанавливать правила, которые простаивают через 2 секунды, и отправлять ровно один пакет на каждую ссылку. Правила тайм-аута простоя сделают пакетный цикл на канале связи.
Не считая возможности злоупотреблений и возможности поглощения мегабайта трафика в секунду с одним пакетом, желаемое поведение должно быть ясным:
] Если канал отключен или в нем наблюдается насыщение, то пакет будет потерян, а правила простоя будут отключены через две секунды. Это можно обнаружить с помощью контроллера, и это кажется более элегантным, чем непрерывная отправка пакетов, чтобы убедиться, что «все в порядке».
Моя проблема в том, что это все равно потребует от контроллера опроса установленных правил в соответствующей таблице, которая все еще кажется раздражающим объемом работы.
По дизайну кажется, что OpenFlow близок к тому, чтобы иметь возможность делать такие сообщения, и кажется, что по способу реализации OpenFlow тайм-ауты могут быть критически важными (хотя не все из них).
Я нашел это в спецификациях openflow 1.1 , должно быть, пропустил это:
Когда запись потока удаляется, коммутатор должен проверить флаг OFPFF_SEND_FLOW_REM записи потока . Если этот флаг установлен, коммутатор должен отправить контроллеру сообщение об удалении потока. Сообщение каждого потока удалено содержит полное описание записи потока, причину удаления (истечение срока действия или удаление), запись потока продолжительность во время удаления и статистика потока во время удаления.
Таким образом, то, что я хочу, было явно реализовано в OpenFlow (по крайней мере, с версии 1.1).
Хотя я использую OpenDaylight и Если вы не уверены, разработан ли ODL для реагирования на эти сообщения, это отлично отвечает на мой вопрос.