Кратко
- Flow Label — 20-битное поле в фиксированном заголовке IPv6; вместе с адресами источника и назначения оно может стать ключом классификации без поиска транспортных портов.
- Значение должно сохраняться в пределах потока и хорошо распределяться между потоками, но совпадения допустимы, а само поле не защищено.
- RFC 6437 пересмотрела прежнюю модель; RFC 6438 и RFC 7098 описали ограниченное применение для туннелей, ECMP/LAG и серверных ферм.
Ключ, который не знает о новом сеансе
RFC 7098 рассматривает балансировщики уровня 3/4. В качестве ключа они могут взять адрес источника и Flow Label либо адрес назначения, адрес источника и Flow Label. Устройство без состояния хеширует такой ключ, чтобы пакеты потока попадали на один сервер. Устройство с состоянием сохраняет соответствие ключа выбранному серверу. Для нулевой метки остаётся обычный путь с разбором транспортного заголовка.
Сохранённое соответствие не превращает ключ в идентификатор сеанса. Если источник повторно использует ту же метку при тех же адресах для нового транспортного соединения, по этим полям нельзя понять, что начался новый сеанс. Механизм поддерживает привязку в своей области действия, но не отслеживает жизненный цикл приложения.
Эта граница следует из самого определения потока. В IPv6 поток не обязан совпадать один к одному с транспортным соединением. RFC 6437 всё же рекомендует обычно относить несвязанные соединения или потоки приложений к разным потокам. Рекомендация улучшает разделение, но не обещает уникальности.
Двадцать бит и неизбежность совпадений
Ноль означает пакет без метки. Для одного потока источник должен ставить во все пакеты одинаковое ненулевое значение. Между множеством потоков значения должны приближаться к дискретному равномерному распределению и плохо поддаваться предсказанию.
Способ назначения не закреплён. Можно хешировать пятёрку полей в двадцать бит или выбирать псевдослучайное значение, сохраняя у источника минимум состояния. Это примеры, а не обязательные алгоритмы. Последовательная нумерация не рекомендуется.
Пространство меток конечно, поэтому совпадения возможны. Два одновременных потока между одинаковыми адресами могут получить одно значение и одну обработку. Flow Label не называет поток глобально и не даёт исключительного права на путь или сервер.
После назначения ненулевая метка должна дойти без изменений. Промежуточное устройство может заполнить ноль от имени источника, но такая функция должна настраиваться и быть выключена по умолчанию. Предпочтение остаётся за источником.
Когда фиксированное положение важнее портов
Транспортные порты часто входят в хеш распределения. Но в IPv6 они могут отсутствовать в непервом фрагменте, находиться после цепочки расширений или быть недоступны из-за шифрования. Flow Label всегда лежит в известной позиции фиксированного заголовка. Он не раскрывает скрытый порт или содержимое; он даёт другой материал для классификации.
RFC 6438 переносит эту идею на IP-в-IPv6-туннель. Много внутренних потоков могут иметь одну пару внешних адресов. Если ECMP или агрегирование каналов использует только эту пару, трафик способен поляризоваться на одном пути.
Передающий конец туннеля может вывести внешнюю метку из внутренней пары или пятёрки полей и удерживать её в течение внутреннего потока. Разным потокам достаются распределённые значения, а промежуточному маршрутизатору не требуется разбирать внутренний сеанс. Случайное совпадение остаётся приемлемым: два пользовательских потока разделят обработку, а не идентичность.
Пересмотр ранней модели
RFC 6437 заменила RFC 3697. Она стала поощрять ненулевые метки, равномерное распределение и модель без состояния, сохранив запрет на изменение ненулевого значения в пути. Контролируемое заполнение нуля стало ограниченным исключением.
Исторически это можно понимать как отказ от избыточной семантики. Источник поставляет стабильный распределённый вход, а сеть использует его как часть хеша, не пытаясь знать приложение. Это редакционный вывод из опубликованного механизма, а не данные о современном внедрении.
В трёх источниках нет текущей статистики использования, сравнений производителей или замеров производительности. Они не позволяют утверждать, что ненулевые метки распространены повсеместно либо что конкретная сеть обязательно получает измеримый выигрыш.
Источники
- RFC 6437, IPv6 Flow Label Specification: https://www.rfc-editor.org/rfc/rfc6437.html
- RFC 6438, Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels: https://www.rfc-editor.org/rfc/rfc6438.html
- RFC 7098, Using the IPv6 Flow Label for Load Balancing in Server Farms: https://www.rfc-editor.org/rfc/rfc7098.html
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
