MPLS в UDP: энтропия для нижнего уровня, правила для домена
UDP-обёртка даёт нижнему уровню IP материал для хеширования, не теряя метку сервиса. RFC 7510 также ограничивает её взаимодействующими управляемыми доменами.
Два провайдера описывают одну и ту же метку сервиса, и только один из них упоминает заголовок UDP. Разница не косметическая: размещение MPLS внутри UDP меняет то, что может видеть внешняя сеть IP, а значит, и то, что она может хешировать по параллельным каналам. Это также меняет, кому разрешено это развёртывать.
Уровни достаточно коротки, чтобы запомнить: внешний IP, затем UDP, затем стек меток MPLS, затем полезная нагрузка сервиса. Стек меток не исчезает; он по-прежнему определяет пересылку в конечной точке, которая возобновляет коммутацию меток.
Что добавляет обёртка UDP
RFC 7510 определяет эту инкапсуляцию с портом назначения UDP 6635 и использует поле порта источника для переноса энтропии потока. Инкапсулирующее устройство решает, что считать потоком и как выводить значение; стандарт намеренно не предписывает один конкретный хеш. Это оставляет простор для поведения поставщика и означает, что две реализации могут давать разные распределения для одной и той же смеси трафика. Читайте значение как подсказку, предложенную нижнему уровню, а не как решение о маршрутизации, принятое стандартом.
Выгода косвенная. Транзитная сеть, балансирующая нагрузку по внешней пятёрке, теперь имеет что хешировать, тогда как голый пакет MPLS, возможно, предлагал только верхнюю метку. Поможет ли это, зависит от платформы, выполняющей балансировку, и от того, какие поля она действительно учитывает.
Энтропия — не пропускная способность
Более равномерное распределение потоков по доступным каналам — не то же самое, что их объединение в один более быстрый путь. Один поток приложения по-прежнему идёт одним путём, и балансировка по потокам не может превысить ёмкость канала, на который он попадает. Механизм также не гарантирует равномерного распределения; он лишь даёт хеш-функции лучшие входные данные.
Держите обёртку стабильной для данного потока, если только переупорядочивание недопустимо. Если порт источника меняется от пакета к пакету, нижний уровень охотно разнесёт один разговор по нескольким путям, и повторная сборка станет проблемой приложения. Цель — согласованная энтропия на поток, а не постоянная новизна.
Граница развёртывания — часть спецификации
RFC 7510 ограничивает развёртывание сетью одного оператора или соседним набором взаимодействующих операторов, причём трафик управляется так, чтобы избегать перегрузки. Он также требует фильтрации, не позволяющей инкапсулированному трафику покидать этот домен. Это не декоративные условия; они следуют из того, что инкапсуляция не добавляет собственной безопасности. Рассматривайте их как предпосылки законного развёртывания, а не как предложения в проектной записке.
Ничто в заголовке UDP не аутентифицирует отправителя, и ничто в нём не обеспечивает конфиденциальность или целостность полезной нагрузки. Если трафику нужна защита, она приходит из отдельного механизма с собственным управлением ключами. Выбор MPLS-in-UDP не повышает модель доверия.
Следите за тем, что защита делает с нужным вам хешированием
Добавьте IPsec или другую защитную инкапсуляцию, и внешний заголовок, который хешируют транзитные устройства, может полностью изменить форму. Режим туннеля может скрыть внутренний порт источника UDP за новым внешним заголовком, а значит, тщательно предоставленная энтропия может быть не видна там, где происходит балансировка. Сначала шифрование, затем инкапсуляция — это другой дизайн, чем обратный порядок, и разница проявляется как канал, несущий гораздо больше трафика, чем соседние.
Оценивайте полный пакет таким, каким он появляется на проводе, а не только уровень, описанный стандартом. Это также момент пересмотреть MTU и ёмкость конечной точки, потому что заголовок UDP плюс любые накладные расходы безопасности уменьшают помещающуюся полезную нагрузку.
Решайте, видя весь путь
Сравните MPLS-in-UDP с альтернативами вроде GRE по критериям, важным для вашей сети: по каким полям балансирует нижний уровень, какие накладные расходы вы можете себе позволить, какая защитная обёртка требуется и можно ли обеспечить границу домена. Приписывать ему безусловное преимущество в производительности над GRE — вывод, которого стандарты не поддерживают.
Затем проверьте на реальных смесях трафика и посмотрите использование каждого канала-члена, потому что хеш, хорошо выглядящий в лаборатории, может схлопнуться на один канал, когда все потоки делят один и тот же кортеж. Честный итог: инкапсуляция раскрывает информацию, которую нижний уровень может использовать, внутри домена, согласившегося ею управлять.