В моем понимании, правила потока остаются в силе. Моя проблема связана с правилами, которые направляют пакет на контроллер. Если, например, приходит новый поток, а контроллер не работает, будет ли этот новый пакет просто отброшен?
Что происходит с правилами потока, когда OVS теряет соединение с контроллером?
Ответы (2)
будет ли этот новый пакет просто отброшен?
В яблочко!
Это зависит от конфигурации, будут ли потоки представлены или нет. Вот объяснение из Документация Openflow 1.3:
Записи потока удаляются из таблиц потоков двумя способами: либо по запросу контроллера, либо с помощью механизма истечения срока действия переключения потока. Механизм истечения срока действия коммутатора, который запускается коммутатором независимо от контроллера и основан на состоянии и конфигурации записей потока. Каждая запись потока имеет связанные с ней idle_timeout и hard_timeout. Если какое-либо значение не равно нулю, коммутатор должен отметить время поступления записи о потоке, так как позже может потребоваться вытеснить запись. Ненулевое поле hard_timeout приводит к тому, что запись потока будет удалена через заданное количество секунд, независимо от того, сколько пакетов она совпала. Ненулевое поле idle_timeout приводит к удалению записи потока, если в течение заданного количества секунд в нем не было найдено ни одного пакета. Коммутатор должен реализовывать истечение срока действия потока и удалять записи потока из таблицы потоков по истечении одного из их тайм-аутов.
Если и idle_timeout, и hard_timeout равны нулю, запись считается постоянной и никогда не истечет время ожидания:
Если задан параметр idle_timeout, а параметр hard_timeout равен нулю, срок действия записи должен истечь через idle_timeout секунд без получения трафика. Если idle_timeout равен нулю, а hard_timeout установлен, запись должна истечь через hard_timeout секунд, независимо от того, попадают ли пакеты в запись. Если установлены и idle_timeout, и hard_timeout, время ожидания записи потока истечет после idle_timeout секунд без трафика или через hard_timeout секунд, в зависимости от того, что наступит раньше. Если и idle_timeout, и hard_timeout равны нулю, запись считается постоянной и никогда не истечет время ожидания. Его все еще можно удалить с помощью сообщения flow_mod типа OFPFC_DELETE.