Кратко

  • Доклад на NANOG 98 описывает поэтапный перенос TCP-портов в облако, пока старая площадка продолжала анонсировать IP сервиса.
  • Докладчик сообщил о 3 000 перенесённых за полгода портах, двух откатах из-за приложения и нулевых потерях транзакций; RFC 8955 не стандартизирует показанное действие redirect-nh.

В плане миграции может стоять слово «постепенно», но платёжной сессии важно лишь то, дойдёт ли следующий пакет до того же сервиса. На NANOG 98 архитектор инфраструктуры Эрве Хильденбранд описал сервис, клиенты которого использовали жёстко заданный IP и прямой TCP. DNS-запись было некуда переключать, прокси добавлял недопустимый для приложения узел, а прошивку клиентов изменить было нельзя. Перенос всего /32 одним шагом затронул бы сразу более 3 000 TCP-портов; одновременный анонс с двух площадок мог разорвать активные сессии.

Решение, описанное на странице доклада NANOG, сохраняло обычный трафик на старой площадке и перенаправляло лишь выбранные сочетания адреса назначения, протокола и порта. На слайдах правила BGP FlowSpec меняют следующий узел на Anycast-якорь в новом облаке, а между площадками трафик идёт по MPLS. Готов порт — переносится он; остальное остаётся на месте. В финале новая граничная площадка анонсирует /32, старая снимает анонс, после чего удаляются правила FlowSpec-перенаправления.

Это изобретательное применение механизма, который чаще используют для фильтрации трафика. Но FlowSpec — это описание условий совпадения и их распространение через BGP, а не универсальная команда маршрутизации. RFC 8955 допускает условия по префиксу назначения, протоколу и портам. При этом RFC требует игнорировать адрес следующего узла в NLRI FlowSpec. Стандартизованное перенаправление отправляет совпавший трафик в VRF, выбранную по route target. На слайдах Хильденбранда показано другое действие — redirect-nh к Anycast-адресу. RFC разрешает определить дополнительные действия отдельным стандартом или оставить их специфичными для реализации, но одно лишь применение FlowSpec не делает такое изменение next-hop переносимым между системами. Доклад не называет реализацию и не показывает кодирование действия на линии.

Защитные меры — часть этого случая. В презентации правила описаны через Git/Terraform, CI/CD проверяет адреса назначения, диапазоны портов и разрешённые следующие узлы, а фильтры на маршрутизаторах отбрасывают неразрешённые цели. Ошибочное правило может воздействовать на трафик со скоростью пересылки пакетов. Проверка до внедрения и жёсткий фильтр на устройстве сдерживают риск, что точечная миграция превратится в проблему всего backbone.

В слайдах сообщается о 3 000 перенесённых TCP-портах за шесть месяцев, сходимости менее секунды, двух откатах из-за проблем приложения и нулевых потерях транзакций. Это цифры из кейса докладчика, а не независимо проверенный журнал сервиса. Адрес 192.0.2.50 на схемах входит в TEST-NET-1 для документации по RFC 5737; 10.100.0.254 — частное адресное пространство RFC 1918. Клиент и действительные адреса не раскрыты.

Полезный вывод не в том, что FlowSpec переносит сервис. Команда разложила одну общую идентичность — IP-адрес — на небольшие операционные решения, каждое с точным условием, разрешённой целью и обратимым изменением. Это позволило разбирать проблемы приложения по одной, не переключая всю сеть при каждой ошибке. Подробности кейса приведены в слайдах Эрве Хильденбранда на NANOG 98.