Краткое содержание

  • AMS-IX сообщила о двух периодах нестабильности платформы 22 и 23 ноября 2023 года. У клиентов, подключённых к пиринговой инфраструктуре Амстердама, наблюдался флаппинг сессий Link Aggregation Control Protocol (LACP) и Border Gateway Protocol (BGP). В нижней точке трафик платформы упал до 2,1 Тбит/с. AMS-IX также сообщила о снижении числа сессий IPv4 BGP с 885 до 550 и сессий IPv6 с 800 до 450.[1] Эти цифры подтверждают серьёзное событие на уровне точки обмена. Они не подтверждают, что каждая подключённая сеть, приложение или европейский пользователь вышли из строя.

  • Инициирующее условие не было описано как обычный физический обрыв линии. По данным AMS-IX, пакеты LACP, генерируемые оборудованием клиента, поступали в граничный коммутатор Juniper (provider edge) через соединение без LACP и распространялись за пределы смежного отношения, где эти пакеты имели смысл. На это реагировали группы агрегации каналов других клиентов, их сессии LACP и BGP переходили в состояние флаппинга, ресурсы и буферы испытывали нагрузку, возникали тайм-ауты RSVP, а сообщения Path Error создавали дополнительные проблемы на коммутаторах Extreme SLX.[1]

  • Подотчётность не может ограничиваться устройством, отправившим первый пакет. Клиент контролировал источник кадров. AMS-IX контролировала общую фабрику, политику портов, логику выделения ресурсов, генерацию списков ACL, мониторинг, реагирование на инциденты и публичные доказательства. Juniper и Extreme контролировали поведение своих реализаций с учётом фактов, которые пока не публичны. Подключённые сети контролировали наличие альтернативного транзита, удалённого пиринга, резервной ёмкости и полномочий на отключение сессий. Конечные пользователи не контролировали ни один из этих уровней.

  • AMS-IX объявила о нескольких исправлениях: применение ACL для LACP к линиям без LACP, улучшение создания ACL в системе выделения ресурсов, проверка поведения исходящих ACL LACP на обоих семействах коммутаторов, расследование предупреждений о BPDU Slow Protocol и пересмотр коммуникаций технического списка рассылки.[1] Эти шаги соответствуют цепочке сбоя. Они остаются заявленными мерами контроля, а не независимо проверенным доказательством того, что каждый соответствующий порт, версия ПО и состояние аварийного переключения теперь обеспечивают требуемый инвариант.

Ограниченное событие и вопрос подотчётности

Этот анализ ограничен инцидентами на платформе AMS-IX в Амстердаме 22 и 23 ноября 2023 года. Он не объединяет их с отказом точки обмена из-за петли коммутации в мае 2015 года, с несвязанными сбоями на других точках обмена интернет-трафиком или с общими спорами о том, должны ли точки обмена использовать уровень 2, MPLS или другую архитектуру. Такие сравнения могут прояснить устойчивость, но не могут заменить доказательства, относящиеся к конкретному событию.

AMS-IX отнесла первый затронутый интервал к периоду с 19:08 до 23:04 по центральноевропейскому времени 22 ноября. Второй интервал продолжался с 09:38 до 10:25 по центральноевропейскому времени 23 ноября.[1] В официальном отчёте описан активный флаппинг сессий как LACP, так и BGP. В нём зафиксировано падение трафика платформы до 2,1 Тбит/с на пике нарушения с существенным сокращением видимых сессий IPv4 и IPv6 BGP. Подключённые операторы опубликовали собственные, более узкие наблюдения.

Total Uptime сообщил, что перевёл трафик с точки обмена и позже восстановил его после наблюдения за стабильностью.[9] NFOrce сообщил, что отключил сессии прямого пиринга и серверов маршрутов, чтобы ограничить потери пакетов.[10] EDPnet сообщил о прерывистой доступности, альтернативной ёмкости и обновлениях о восстановлении.[11]

Центральный вопрос не в том, какой пакет прибыл первым. Вопрос в том, какие субъекты имели практический контроль над изоляцией, усилением, обнаружением, смягчением последствий, коммуникацией и доказательством устранения. Общая пиринговая платформа существует для того, чтобы многие сети обменивались трафиком, не рассматривая каждого участника как часть одного неконтролируемого сегмента Ethernet. Поэтому её оператор несёт конкретную операционную обязанность: кадры управления, относящиеся к одной смежности, не должны иметь возможность изменить состояние канала другого клиента лишь потому, что порты используют общую коммутационную инфраструктуру.

Эта обязанность техническая, прежде чем становиться правовой. Публичные данные не устанавливают небрежности, нарушения договора или установленной законом ответственности. Они устанавливают, что AMS-IX спроектировала и эксплуатировала границу, на которой локальное управляющее сообщение приобрело более широкий эффект. Они также устанавливают, что у оператора были правила смягчения, но эти правила не покрывали или не работали на каждом соответствующем пути. Проверка подотчётности состоит в том, существовала ли задуманная граница в работающем коде и можно ли продемонстрировать устранение, а не только описать его.

Такая постановка вопроса позволяет избежать двух противоположных ошибок. Первая — обвинять неназванного клиента во всём, потому что его оборудование сгенерировало инициирующие пакеты. Это игнорировало бы контроль точки обмена над тем, какие кадры могут пересекать общую фабрику. Вторая — рассматривать весь интернет как одну централизованно управляемую услугу, за которую только точка обмена гарантирует каждый последующий результат. Подключённые сети принимают собственные решения о маршрутизации, ёмкости и устойчивости. Событие пересекло несколько областей контроля, и ответственность следует за этими областями.

Доказательства подтверждают причинно-следственную последовательность с сохранением неопределённости. Устройство клиента отправило пакеты LACP. Эти пакеты прибыли на порт, который AMS-IX охарактеризовала как не использующий LACP. Коммутатор Juniper распространил пакеты. Другие группы агрегации отреагировали и перешли в состояние флаппинга. Сессии BGP, работавшие на затронутых каналах, также перешли в состояние флаппинга. Истощение ресурсов и переполнение буферов способствовали тайм-аутам RSVP. Сообщения Path Error от затронутых граничных устройств Juniper создали дополнительные проблемы на оборудовании Extreme SLX.

Операторы направляли трафик в обход или отключались от точки обмена, где могли. AMS-IX изолировала проблему и изменила меры контроля.[1] Точные команды, версии, перехваченные пакеты, правила ACL и записи поставщиков о первопричине не публичны.

Что доказывают цифры воздействия, а что нет

Падение трафика до 2,1 Тбит/с — самый заметный показатель инцидента. Современные технические комментарии сравнивали его с обычной мультитерабитной нагрузкой точки обмена и описывали потерю или перемещение примерно восьми терабит в секунду.[7][12] Это экстраординарное перемещение трафика. Это не автоматически эквивалентный объём потерянного пользовательского трафика.

Трафик может исчезать с графика точки обмена по нескольким причинам. Сессия BGP может прерваться и оставить трафик без пригодного пути. Сеть может намеренно отключить точку обмена и перевести трафик на транзит или удалённый пиринг. Назначение может стать недостижимым. Приложение может снизить отправку, потому что предыдущие соединения не удались. Перегрузка в другом месте может ограничить заменяющий трафик. График фиксирует, что пересекло платформу AMS-IX, а не судьбу каждого пакета, который в противном случае пересек бы её.

RIPE NCC исследовала инцидент с помощью измерений RIPE Atlas. В её анализе задавался вопрос, остались ли пары источник-назначение, которые обычно проходили через AMS-IX, соединёнными, перешли на другой путь или вышли из строя.[2] Такой подход информативнее одного агрегированного показателя точки обмена, потому что он отделяет успешную перемаршрутизацию от потери доступности. Он всё же использует выборку зондов и назначений. Он не может измерить каждый частный пиринговый путь, каждую услугу или опыт каждого пользователя.

Числа сессий BGP столь же конкретны. Падение с 885 до 550 сессий IPv4 и с 800 до 450 сессий IPv6 показывает, что многие смежности плоскости управления на платформе не были стабильны.[1] Это не означает, что 335 сетей IPv4 и 350 сетей IPv6 полностью вышли из строя. Одна сеть может поддерживать несколько сессий. Сессия может флаппинговать без полной потери клиентов, если остаётся другой путь. Сеть также может сохранять сессию установленной, испытывая потери пакетов или перегрузку.

Данные о состоянии у последующих участников придают агрегированным числам операционный смысл. Total Uptime сообщил, что перевёл трафик на альтернативных провайдеров и охарактеризовал проблему как уже не влияющую на его услугу, пока AMS-IX ещё вела расследование.[9] NFOrce отключил сессии точки обмена, чтобы предотвратить дальнейшие потери пакетов.[10] EDPnet заявил, что у него достаточно альтернативной полосы пропускания для обслуживания собственных клиентов, хотя предупредил, что скорость и стабильность интернета всё ещё могут пострадать, поскольку задействованы другие пути и сети.[11]

Эти сообщения показывают, почему отказ точки обмена имеет неравные последствия. Сеть с разнообразным транзитом, удалённым пирингом, автоматическим управлением трафиком, достаточным запасом ёмкости и правом на вызов дежурного может быстро выйти из ситуации. Сеть, сильно зависящая от одной точки обмена, имеющая мало резервной ёмкости или неспособная быстро менять маршрутизацию, может страдать дольше. Оператор точки обмена контролирует общую область сбоя. Каждая подключённая сеть контролирует, насколько её собственный сервис зависит от этой области.

Поэтому данные о воздействии следует излагать по уровням. Трафик точки обмена и число сессий показывают серьёзность на уровне платформы. RIPE Atlas показывает выборочные результаты сквозных путей. Уведомления операторов показывают конкретные меры смягчения и наблюдения клиентов. Ни один из этих источников в отдельности не измеряет общий экономический ущерб, влияние на аварийные службы, сбои предприятий или время простоя каждого пользователя. Они остаются пробелами в доказательствах, а не приглашением заполнить запись драматичным универсальным утверждением.

LACP локален по своей конструкции

Агрегация каналов объединяет несколько физических линий в одно логическое соединение. Она может повысить ёмкость и сохранить обслуживание при отказе одной линии-участника. LACP координирует, какие линии принадлежат агрегату и могут ли они передавать данные. Смысл протокола ограничен смежностью: системы на двух концах обмениваются управляющей информацией о своём общем пучке. IEEE 802.1AX является авторитетным семейством стандартов для агрегации каналов.[14]

Собственная документация AMS-IX говорит, что точка обмена поддерживает LACP на своих типах подключений, и предупреждает, что LACP может влиять на поведение при аварийном переключении. После изменения топологии порт с включённым LACP может оставаться заблокированным, пока не получит управляющий кадр, и эта задержка может вызвать флаппинг сессий BGP. AMS-IX рекомендует короткие таймеры LACP, чтобы уменьшить задержку аварийного переключения.[4] Это руководство признаёт связь между состоянием пучка уровня 2 и сессиями маршрутизации уровня 3.

Событие 2023 года выявило более фундаментальную проблему границ. По данным AMS-IX, оборудование клиента отправляло пакеты LACP через соединение без LACP. Граничный коммутатор Juniper распространял эти пакеты. Другие клиентские линии затем воспринимали просочившиеся кадры как относящиеся к их собственному состоянию агрегации.[1] Управляющее сообщение, предназначенное для одного смежного отношения, получило власть над другим.

Вот почему фраза «утечка LACP» важна. Обычные данные клиента должны пересекать точку обмена в направлении других участников в соответствии с состоянием пересылки. Кадры управления на уровне канала отличаются. Их область действия — часть их модели безопасности. Если общая фабрика пересылает их так, будто это обычный клиентский трафик, удалённые линии могут реагировать на идентичность или состояние пучка, не принадлежащие их смежности.

Самый безопасный операционный инвариант легко сформулировать: кадры Slow Protocol с одного клиентского порта не должны изменять состояние агрегации каналов другого клиента. Обеспечить его сложнее. Правило должно применяться к портам, использующим динамический LACP, статические группы агрегации и вообще без агрегации. Оно должно переживать изменения выделения ресурсов, замену коммутаторов, обновления ПО, изменения синтаксиса, различия поставщиков и аварийное переключение топологии. Оно должно работать и в направлении входа, и в направлении выхода, где этого требует архитектура.

AMS-IX сообщила, что списки ACL для смягчения существовали на линиях LACP, но источник пакетов был подключён через линию без LACP.[1] Эта деталь превращает инцидент из единичного сбоя ACL в сбой полноты. Мера контроля была привязана к конфигурации функции, где инженеры ожидали протокол. Небезопасный трафик появился на порту, где функция не ожидалась. Границы безопасности должны покрывать класс трафика, а не только метку конфигурации, которая его предсказывает.

Урок напоминает проверку входных данных на любой границе доверия. Система не должна решать, проверять ли опасное сообщение, только после предположения, что отправитель будет использовать документированный путь. Неожиданный путь — это как раз то место, где проверка важна. Для точки обмена роль порта и допустимый набор кадров должны быть явными. Выделение ресурсов должно генерировать фильтр. Независимые проверки соответствия должны считывать развернутое состояние. Пакетные тесты должны проверять, что запрещённые типы кадров не могут выйти в направлении других участников.

Это более сильное утверждение, чем сказать, что клиент должен правильно настроить своё оборудование. Настройка клиента важна. Оператор может требовать, чтобы участники отправляли только разрешённый трафик, и может отключить источник, нарушающий правила. Но общая платформа строится на предположении, что ошибка одного участника не станет автоматически инструкцией о состоянии каналов для всех участников. Контроль допуска и изоляция существуют потому, что поведение участников нельзя считать идеальным.

Порт без LACP выявил слепую зону выделения ресурсов

Официальный постмортем говорит, что генерирующее LACP оборудование клиента было подключено к линии без LACP. Он также говорит, что исходящий ACL LACP на Juniper не был полностью работоспособен.[1] Вместе эти утверждения указывают на разрыв между намеченной политикой и развернутым покрытием.

Система выделения ресурсов на основе намерений может представлять клиентский порт такими свойствами, как скорость, VLAN, режим группы агрегации, интерфейсы-участники, лимиты MAC-адресов, допустимые ethertype и операционное состояние. Если генерация ACL обусловлена условиемlacp=true, она может защищать динамические пучки, оставляя статические или обычные порты способными пропускать кадры LACP. Такая логика понятна как конфигурация функции. Она небезопасна как инвариант изоляции.

AMS-IX объявила, что улучшила создание ACL в системе выделения ресурсов, чтобы вновь создаваемые линии получали соответствующий фильтр.[1] Это важное исправление, потому что оно переносит контроль с оператора, помнящего особый случай, на систему, генерирующую базовую линию. Оно также поднимает вопросы проверки. Изменило ли обновление только вновь создаваемые линии или оно согласовало и существующие порты? Как оператор доказал покрытие по всем профилям портов Juniper и Extreme? Проверялись ли неактивные, изолированные, перенесённые состояния и состояния аварийного переключения?

Способно ли последующее обновление ПО изменить синтаксис ACL без сбоя развёртывания?

Системы выделения ресурсов могут создавать ложную уверенность, когда они фиксируют намерение, но не проверяют состояние устройства. База данных может говорить, что фильтр прикреплён. Коммутатор может отвергнуть часть синтаксиса, поместить правило в неправильном направлении, переупорядочить его после разрешающего оператора или иначе интерпретировать соответствие протокола после обновления. Контроль уровня подотчётности требует трёх форм доказательств: намеченной политики, сформированной конфигурации и наблюдаемого поведения пересылки.

Первая — декларативная запись: ни один клиентский порт не может передавать управляющие кадры LACP другому участнику. Вторая — доказательство для конкретного устройства: каждый соответствующий порт имеет действующее правило, совпадающее с требуемым MAC-адресом назначения, ethertype или семантикой Slow Protocol в правильном направлении. Третья — пакетный тест: синтетический запрещённый кадр, введённый в безопасной тестовой или карантинной среде, не появляется ни на каком другом клиентском порту.

Документация AMS-IX о карантинной VLAN уместна, потому что показывает, что оператор уже использует отдельную среду для наблюдения за новыми клиентскими портами до ввода в эксплуатацию.[4] Карантинный процесс может тестировать поведение MAC-адресов, широковещательный трафик и запрещённые протоколы. Его не следует рассматривать как единовременную сертификацию. Изменения конфигурации, переносы портов, замена коммутаторов и обновления ПО могут изменить тот же инвариант после выхода порта из карантина.

Ноябрьский инцидент также демонстрирует, почему покрытие мерами контроля следует измерять непрерывно. Служба проверки соответствия могла бы сравнивать намеченные и развернутые ACL, предупреждать об отсутствующих фильтрах Slow Protocol и выборочно проверять счётчики коммутаторов на заблокированные кадры. Отдельный путь наблюдения мог бы отслеживать BPDU Slow Protocol на пиринговой фабрике. AMS-IX сообщила, что расследует такие предупреждения.[1] Полезная метрика — не только наличие предупреждения, но и обнаружение одного просочившегося кадра до того, как отреагируют группы агрегации других клиентов.

Публичных доказательств того, существовала ли до инцидента проверка соответствия, пропустила ли она порт или ACL присутствовал, но был неэффективен, нет. Поэтому статья не может утверждать конкретный сбой процесса сверх того, что раскрыла AMS-IX. Она может указать доказательства, которые разрешили бы вопрос: снимки конфигурации, шаблоны выделения ресурсов, результаты фиксации на устройствах, историю тестов, счётчики ACL и перехваченные пакеты.

Межвендорное поведение превратило локальную утечку в каскад

AMS-IX эксплуатировала граничные коммутаторы Juniper и оборудование Extreme SLX в затронутой фабрике. Официальный отчёт описывает различное поведение на обоих семействах. Коммутатор Juniper распространял пакеты LACP от клиентского оборудования. Исходящий ACL LACP на Juniper не был полностью работоспособен. Исходящий ACL на Extreme SLX не сработал, как ожидалось, хотя AMS-IX сообщила, что в прошлом он работал. Инженеры ещё не определили, объясняется ли различие ошибкой или изменением синтаксиса после обновления ПО SLX.[1]

Эти утверждения оправдывают пристальное внимание к межвендорному соответствию. Они не позволяют отнести весь сбой к какому-либо поставщику. Публичный отчёт не называет номера моделей, версии операционных систем, фрагменты конфигурации, идентификаторы дефектов, уведомления поставщиков или лабораторные воспроизведения. Без этих доказательств «ошибка поставщика» — гипотеза, а не вывод.

Различие важно, потому что один и тот же наблюдаемый результат может происходить из разных классов сбоев. Коммутатор может пересылать зарезервированный тип кадра по проекту при определённой конфигурации моста. ACL может не срабатывать из-за синтаксиса, направления, аппаратной разгрузки, порядка правил или ограничений платформы. Обновление ПО может изменить поведение парсера. Шаблон выделения ресурсов может сформировать правило, действительное на одном семействе и неэффективное на другом. Человек может предполагать, что ранее проверенный инвариант остался истинным после изменения.

Мультивендорный дизайн может снизить зависимость от общего режима отказа, но только если эквивалентные свойства безопасности проверяются на разных реализациях. Разнообразие само по себе не является устойчивостью. Если две платформы по-разному реагируют на один и тот же стресс плоскости управления, их взаимодействие может создать новую общую область сбоя. Постмортем AMS-IX описывает именно эту проблему: флаппинг и нагрузка на ресурсы с одной стороны вызвали поведение RSVP Path Error, которое создало дополнительные проблемы с другой.[1]

Сильная межвендорная программа проверки начинается со свойств, а не с команд. Примеры: кадры LACP не могут пересекать несвязанные клиентские границы; потеря одной линии группы агрегации не вызывает флаппинг BGP, если другая линия остаётся пригодной; полные буферы не лишают обработку плоскости управления ресурсов, необходимых для восстановления; повреждённые или повторяющиеся сообщения Path Error ограничиваются по частоте; уведомление об отказе одного устройства не может дестабилизировать всю альтернативную платформу.

Эти свойства следует проверять после обновлений ПО и изменений выделения ресурсов. Тест должен включать инъекцию отказов, а не только пересылку в установившемся режиме. Правило, работающее при нормальной нагрузке, может отказать, когда буферы полны или плоскость управления обрабатывает быстрые изменения состояния. Коммутатор, блокирующий кадр на обычном порту, может обрабатывать его иначе на статической группе агрегации, динамической группе агрегации, виртуальном шасси или пути аварийного переключения.

Ответственность поставщика зависит от доказательств, которые не публичны. Если реализация нарушила документированное поведение при поддерживаемой конфигурации, поставщик может контролировать дефект и исправление. Если оператор использовал неподдерживаемый синтаксис или не применил требуемый фильтр, операционный контроль находится в другом месте. Если документация была неоднозначной или менялась между выпусками, ответственность может быть разделена. Обоснованный вывод состоит в том, что AMS-IX как интегратор и оператор общей фабрики контролировала приёмочное испытание, которое должно было выявить эти различия до ввода в эксплуатацию.

От флаппинга групп агрегации к потере сессий BGP

LACP управляет участием физических линий в логическом агрегате. Когда членство в агрегате меняется многократно, логический интерфейс может терять непрерывность пересылки. Сессии BGP, проходящие через этот интерфейс, могут затем сбрасываться или испытывать достаточно потерь для тайм-аута. Документация AMS-IX прямо отмечает, что поведение LACP после аварийного переключения топологии может вызывать флаппинг сессий BGP.[4]

Инцидент 2023 года был серьёзнее, чем одно чистое аварийное переключение. Группы агрегации других клиентов реагировали на просочившиеся кадры, создавая повторяющиеся изменения состояния. Сессии BGP в большом количестве исчезали с платформы.[1] Каждый сброс сессии может отзывать маршруты, запускать вычисления лучшего пути, вызывать альтернативные объявления и перемещать трафик на другие межсоединения. Повторяющиеся сбросы создают churn, а не одно упорядоченное схождение.

Этот churn влияет и на точку обмена, и на её участников. Фабрика точки обмена переносит трафик между многими автономными системами. Участник, чья сессия отказала, может переместить трафик на транзит, другую точку обмена, частное межсоединение или удалённый пиринг. Альтернативный путь может иметь более высокую задержку или меньшую ёмкость. Соседи участника могут получать отзывы и замены маршрутов. Сессии приложений могут разрываться, даже если маршрутизация позже сойдётся.

RFC 4271 определяет сессию BGP и обмен маршрутной информацией.[15] Он не обещает, что у каждой сети есть альтернативный путь или достаточно ёмкости. BGP может выбрать маршрут в обход отказавшей точки обмена, когда другой маршрут существует и политика это разрешает. Поэтому операционная фраза «интернет обходит повреждения» условна. Он обходит повреждения для конкретного источника и назначения, когда топология, политика, ёмкость и схождение делают доступной пригодную альтернативу.

RIPE Atlas измеряла как успешный обход, так и сбои связности во время инцидентов AMS-IX.[2][20] Более раннее исследование отказа AMS-IX 2015 года показало, что одни пути перешли на транзит или другие точки пиринга, другие испытали сбои, а восстановление плоскости управления могло длиться дольше короткого инициирующего события.[21] Это сравнение не следует использовать для утверждения, что причины 2015 и 2023 годов были одинаковыми. Оно показывает, что восстановление точки обмена и восстановление пути — разные измерения.

Соответствующее разделение ответственности практично. AMS-IX контролировала стабильность общей пиринговой платформы. Участники контролировали наличие альтернативных путей и реакцию на нестабильность сессий. Провайдеры транзита контролировали ёмкость и политику путей обхода. Ни одна сторона не контролировала весь сквозной маршрут, но каждая контролировала точку, где вред можно было ограничить.

Это делает число сессий BGP полезной, но неполной метрикой восстановления. AMS-IX должна быть способна показать, когда стабилизировалось состояние LACP, когда прекратился флаппинг сессий BGP, когда вернулось число сессий и когда нормализовался трафик платформы. Участники должны быть способны показать, когда их альтернативные пути стали активными, перегружались ли они и когда они восстановили сессии точки обмена. Независимые измерения должны проверять, вернулись ли сквозная доступность и задержка, а не предполагать это по графику точки обмена.

Ошибки RSVP были усилителем, а не триггером

AMS-IX сообщила, что флаппинг LACP и BGP привёл к истощению ресурсов и переполнению буферов. Затем наблюдались ошибки тайм-аута RSVP. Затронутые граничные устройства Juniper агрессивно отправляли сообщения RSVP Path Error, что создало дополнительные проблемы на коммутаторах Extreme SLX.[1] Эта часть последовательности важна, потому что показывает сбой, пересекающий уровни протоколов и границы поставщиков.

RSVP-TE используется для сигнализации путей с управлением трафиком в сетях MPLS. RFC 3209 определяет расширения RSVP для установления и поддержания коммутируемых по меткам путей, включая обработку Path и ошибок.[16] RFC 4090 описывает механизмы быстрой перемаршрутизации, предназначенные для защиты туннелей MPLS с управлением трафиком от отказов линий и узлов.[17] Эти протоколы — инструменты восстановления и управления путями. Под давлением ресурсов их сообщения и переходы состояний сами могут стать частью цикла усиления.

Публичный отчёт не говорит, что инцидент инициировал RSVP. Сначала произошли утечка LACP и вызванный ею флаппинг. Он также не устанавливает, что каждая реализация RSVP ведёт себя одинаково или что архитектура MPLS/VPLS по своей сути небезопасна. RFC 4761 и связанные стандарты дают контекст для VPLS с сигнализацией BGP и туннелей provider edge.[18][19] Вывод, относящийся к конкретному событию, уже: развёрнутое взаимодействие между флаппингом, буферами, поведением Path Error на Juniper и обработкой на Extreme SLX расширило нарушение.

Истощение ресурсов может изменить поведение мер контроля, которые кажутся независимыми при нормальной нагрузке. Маршрутизатору нужны ресурсы CPU и буферов для обработки keepalive, событий состояния линий, сообщений RSVP, обновлений BGP, управляющего трафика и телеметрии. Если повторяющиеся изменения состояния групп агрегации порождают шторм работы, плоскость управления может задержать именно те сообщения, которые нужны для восстановления стабильности. Полные буферы могут вызывать потери, повторные попытки и дополнительную сигнализацию ошибок.

Постмортем уровня подотчётности количественно оценил бы этот каскад. Сколько переходов состояния LACP произошло? Сколько сессий BGP сбросилось и как часто? Какие буферы заполнились? Какой таймер RSVP истёк первым? Сколько сообщений Path Error было отправлено, с какой скоростью и каким устройствам? Существовали ли ограничения частоты? Какие ресурсы Extreme стали ограниченными? Какое изменение остановило цикл?

Публичное резюме AMS-IX даёт последовательность, но не эти измерения. Этого достаточно, чтобы определить области контроля, но недостаточно, чтобы реконструировать каждый пакет. Обвинения поставщиков должны оставаться ограниченными, пока не станут доступны конфигурации, версии, перехваты и выводы о дефектах.

Следствие для исправления — тестирование на разных уровнях. Тест, доказывающий, что ACL блокирует один пакет в установившемся режиме, не доказывает, что фабрика переживает всплеск запрещённых кадров, повторяющиеся переходы групп агрегации, churn BGP, давление на буферы и ошибки RSVP. Инвариант следует проверять под нагрузкой, с телеметрией, показывающей, что очереди плоскости управления остаются доступны, а сообщения об ошибках не могут стать новым механизмом отказа в обслуживании.

Альтернативные пути ограничили вред, но перенесли нагрузку

Несколько подключённых сетей отреагировали, уведя трафик с AMS-IX. Это было рациональным сдерживанием. Это также перенесло нагрузку на другие межсоединения. Устойчивость зависит от того, действительно ли эти альтернативы независимы и достаточно ли обеспечены ёмкостью.

Total Uptime сообщил, что перевёл трафик на альтернативных провайдеров и позже восстановил обслуживание через AMS-IX после наблюдения за стабильностью.[9] NFOrce отключил сессии прямого пиринга и серверов маршрутов, чтобы предотвратить дальнейшие потери пакетов.[10] EDPnet заявил, что сохранил достаточно полосы пропускания для собственных клиентов без AMS-IX, предупредив, что более широкая скорость и стабильность интернета всё ещё могут пострадать.[11] Эти утверждения иллюстрируют три меры контроля: разнообразие путей, запас ёмкости и операционные полномочия менять маршрутизацию.

Разнообразие путей на бумаге недостаточно. Две логические услуги могут использовать одну и ту же точку обмена, площадку, волокно, семейство коммутаторов, сервер маршрутов или систему управления. Резервная транзитная сессия может существовать, но нести слишком мало ёмкости для аварийной нагрузки. Услуга удалённого пиринга может по-прежнему проходить через затронутую платформу. Автоматизированная политика может предпочитать флаппингующий маршрут и многократно возвращать трафик, пока инцидент не стабилизируется.

Экономический компромисс виден. Резервный транзит и разнообразный пиринг стоят денег. Большую часть года они могут использоваться незначительно. Во время общего отказа точки обмена эта неиспользуемая ёмкость становится разницей между изменением маршрутизации и простоем клиента. Операторы решают, сколько устойчивости покупать, и клиенты часто не могут наблюдать это решение до отказа.

Это не означает, что каждая подключённая сеть должна проектироваться на полную потерю каждой точки обмена независимо от стоимости. Это означает, что риск должен быть явным. Сеть должна знать долю трафика, зависящую от одной пиринговой фабрики, ёмкость альтернативных путей, время, необходимое для переноса трафика, услуги, которые не переносят такой сдвиг, и владельца решения, способного отключить нестабильные сессии.

RIPE Atlas даёт внешние доказательства того, действительно ли пути переместились и остались ли назначения доступными.[2] Записи потоков, журналы BGP и графики ёмкости каждой сети дали бы более сильное локальное доказательство. Оператор, заявляющий об успешной устойчивости, должен показать не только то, что BGP выбрал другой путь, но и что потери пакетов, задержка и успешность приложений остались в определённых границах.

Общая точка обмена также заинтересована в путях обхода участников. Она не может предписывать каждую бизнес-модель, но может публиковать реалистичные сценарии сбоев, поощрять разнообразие удалённого и мультиобменного пиринга, предоставлять чистые сигналы об инцидентах и избегать коммуникаций, заставляющих сети колебаться между нестабильными и альтернативными путями. Запланированный пересмотр политики коммуникаций технического списка AMS-IX признаёт, что каденция информации сама является мерой контроля восстановления.[1]

Обнаружение и коммуникация — часть сдерживания

Официальный отчёт говорит, что AMS-IX планировала расследовать предупреждения о BPDU Slow Protocol на платформе.[1] Такое предупреждение могло бы обнаружить небезопасное условие рядом с его источником. Оно конкретнее, чем ожидание падения агрегированного трафика или флаппинга сессий BGP.

Обнаружение должно быть многоуровневым. Счётчик на уровне порта может фиксировать запрещённые кадры Slow Protocol. Наблюдатель фабрики может обнаружить один и тот же исходный управляющий кадр на несвязанных портах. Телеметрия групп агрегации может выявить синхронизированные изменения состояния у клиентов. Мониторинг сессий BGP может обнаружить коррелированное падение. Телеметрия RSVP и буферов может предупредить, что инцидент переходит в плоскость управления MPLS. Внешние зонды могут показать сквозной вред.

Каждый сигнал отвечает на свой вопрос. Первый запрещённый кадр — доказательство сбоя границы. Флаппинг групп агрегации — доказательство того, что другая система отреагировала на него. Сбросы BGP показывают последствия для маршрутизации. Перемещение трафика показывает операционную серьёзность. Внешний сбой показывает вред для клиента. Система реагирования должна сохранять временные метки, а не сжимать их в одно время начала отказа.

Владение предупреждением так же важно, как его наличие. Кто-то должен уметь определить исходный порт, применить фильтр, изолировать линию, отключить интерфейс или изолировать коммутатор. Действие должно быть безопасным в условиях неопределённости. Отключение неправильного порта или применение непроверенного глобального ACL может расширить отказ.

Коммуникация влияет на решения у последующих участников. Подключённым сетям нужно знать, стабильна ли платформа, временна ли мера смягчения и когда безопасно восстанавливать сессии. Слишком мало информации задерживает сдерживание. Преждевременное успокоение может вернуть трафик на нестабильный путь. Слишком частые неструктурированные обновления могут создавать путаницу.

AMS-IX сообщила, что пересмотрит политику коммуникаций технического списка, включая правила частоты обновлений в зависимости от серьёзности инцидента.[1] Полезная политика должна определять владельца сообщения, минимальные поля, уверенность в доказательствах, время следующего обновления и различие между смягчением, стабилизацией платформы, мониторингом и окончательным разрешением. Она также должна объяснять, должны ли клиенты держать сессии отключёнными или могут безопасно их восстановить.

Записи участников показывают, почему это важно. Операторы самостоятельно отключали сессии и наблюдали за графиком точки обмена.[9][10][11] Они принимали решения о риске на основе частичных доказательств. Общий машиночитаемый поток инцидентов со стабильными временными метками и определениями состояний мог бы уменьшить несогласованное восстановление.

Слой реальности Heng.lu: записи не обеспечили границу

Точка обмена интернет-трафиком ведёт подробные записи: идентификаторы участников, номера AS, порты, VLAN, режим агрегации каналов, местоположение коммутатора, намерение конфигурации и операционные контакты. Эти записи — необходимая инфраструктура подотчётности. Они определяют, кто контролировал каждую часть системы и какая политика должна была применяться.

Они не остановили инцидент 2023 года. Релевантной реальностью были пакет, принятый коммутатором, поведение ACL на фактическом порту, кадр, распространённый на другие линии, состояние группы агрегации, выбранное подключёнными устройствами, сессии BGP, оставшиеся установленными, и альтернативные пути, перенёсшие трафик. Это примат работающего кода в прямом случае сетевого контроля.

Доктрина не означает, что записи не важны. Без точных записей портов и участников AMS-IX не смогла бы определить исходную границу, сгенерировать политику, связаться с операторами или доказать покрытие после исправления. Смысл уже: запись о том, что порт не использует LACP, не делает пакеты LACP безвредными. На самом деле эта метка, по-видимому, способствовала пробелу в покрытии, если безопасный ACL был связан только с ожидаемым использованием LACP.

Правильная роль реестра — управлять и проверять применение мер. Источник истины должен генерировать правило запрета для небезопасных классов кадров на каждой клиентской границе. Квитанции развёртывания должны доказывать, что правило достигло устройства. Считывание должно подтверждать эффективное состояние. Пакетные тесты должны подтверждать поведение. Доказательства инцидента должны связывать отказавший порт и правило с теми же записями, не притворяясь, что база данных сама управляла проводом.

Поэтому подотчётность не следует сводить к институциональному авторитету. AMS-IX могла публиковать правила и требования к клиентам, но язык разрешений не содержал кадр. Документация поставщика могла описывать поведение, но развёрнутая межвендорная система произвела фактический каскад. Участник мог обещать правильную конфигурацию, но точке обмена всё равно требовалась изоляция.

Поэтому слой реальности задаёт конкретные вопросы. Какой порт принял кадр? Какая политика должна была его заблокировать? Какая конфигурация была сформирована? Что фактически сделало оборудование? Какие линии изменили состояние? Какие сессии BGP упали? Какие альтернативные пути перенесли трафик? Какое исправление изменило наблюдаемое поведение? На эти вопросы можно ответить с помощью журналов, конфигураций, перехватов, измерений и тестов.

Карта ответственности без спекулятивной вины

Неназванный клиент контролировал своё устройство и генерируемые им кадры LACP. У него могли быть договорные обязанности отправлять только разрешённый трафик. Публичные данные не называют клиента, устройство, конфигурацию, намерение или историю уведомлений. За пределами контроля источника кадров нельзя сделать вывод о вине или ответственности.

AMS-IX контролировала общую пиринговую фабрику и границу изоляции. Она контролировала выделение портов, генерацию ACL, интеграцию коммутаторов, мониторинг, реагирование на инциденты, коммуникации и решение о применении мер смягчения. Её публичный отчёт признаёт, что смягчение было неполным или неэффективным на соответствующих путях.[1] Это подтверждает операционную подотчётность за сдерживание и доказательство исправления.

Juniper контролировала поведение и документацию своего программного и аппаратного обеспечения в поддерживаемых конфигурациях. Extreme контролировала то же для оборудования SLX. Поставлял ли какой-либо поставщик дефектную реализацию, зависит от версий, конфигураций, документированных ожиданий, воспроизведения и выводов поставщика, которые не публичны.

Подключённые сети контролировали собственное разнообразие маршрутов, ёмкость транзита, политику сессий, мониторинг и полномочия на смягчение. Операторы, переместившие трафик, показали одну форму устойчивости. Это не доказывает, что каждый пакет или клиентский сервис остался здоровым, и не стирает отказ точки обмена.

Операторы серверов маршрутов, если они были вовлечены в конкретные сессии, контролировали доступность и политику серверов маршрутов, но не прямые сессии участников или физическое состояние групп агрегации. Официальное публичное резюме сообщает агрегированные эффекты BGP, но не приписывает инцидент политике серверов маршрутов. Статья не должна выдумывать эту связь.

Конечные пользователи и последующие организации несли последствия, не контролируя фабрику точки обмена. Они могли повторять попытки приложений или сменить провайдера доступа лишь в ограниченных случаях. Возлагать на них ответственность за предотвращение означало бы путать зависимость с контролем.

Регуляторы и договорные контрагенты могут позже изучить заявления о доступности, отчётность об инцидентах, зависимости критических услуг или обязательства поставщиков. Использованные здесь публичные источники не устанавливают правовой стандарт, нарушение, компенсируемый ущерб или правоприменительный вывод. Доказательства поддерживают карту контроля и набор запросов на проверку.

Как выглядело бы долгосрочное исправление

Объявленные действия AMS-IX логично соответствуют инциденту. Применение ACL к линиям без LACP устраняет неожиданный путь входа. Улучшение логики выделения ресурсов снижает зависимость от ручной настройки. Проверка исходящих ACL на Juniper и Extreme устраняет межвендорное применение. Предупреждения Slow Protocol улучшают обнаружение. Изменения политики коммуникаций поддерживают смягчение у участников.[1]

Долгосрочное исправление требует доказательств на нескольких уровнях.

Во-первых, определить инвариант. Кадры LACP уровня канала от одного участника не могут покинуть разрешённую смежность этого участника. Инвариант применяется к динамическим группам агрегации, статическим группам агрегации, обычным портам, карантинным портам, состояниям миграции и состояниям аварийного переключения.

Во-вторых, доказать полноту инвентаризации. Каждый клиентский порт в каждой релевантной фабрике должен соответствовать профилю политики. Неизвестные, бесхозные или настроенные вручную порты должны отказывать в закрытом режиме или создавать исключение для проверки.

В-третьих, доказать соответствие конфигурации. Система выделения ресурсов должна формировать правила для конкретного поставщика, проверять успешность фиксации, считывать эффективное состояние и сравнивать его с намерением. Обновление ПО, меняющее синтаксис, должно не пройти валидацию до ввода в эксплуатацию, а не молча ослабить фильтр.

В-четвёртых, доказать поведение. Безопасные тесты с инъекцией пакетов должны показать, что кадры LACP и другие запрещённые кадры Slow Protocol не могут пересечь границу. Тесты должны покрывать нормальную нагрузку и аварийное переключение. Счётчики должны показывать отбрасывание. Наблюдатели должны подтверждать, что ни одна копия не появляется на других клиентских портах.

В-пятых, протестировать каскад. Создать контролируемый churn групп агрегации в лабораторной реплике и измерить стабильность BGP, давление на буферы, частоту ошибок RSVP и межвендорное поведение. Подтвердить, что ограничения частоты и защита плоскости управления сохраняют ёмкость восстановления.

В-шестых, протестировать пути обхода участников. Члены точки обмена должны измерять, может ли альтернативный транзит или удалённый пиринг переносить критический трафик при реалистичной нагрузке. Они должны фиксировать полномочия решений, пороги автоматизации и критерии восстановления.

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

В-восьмых, сохранять артефакты инцидента. Перехваченные пакеты, снимки конфигурации, счётчики ACL, журналы сессий BGP, частоту сообщений RSVP, телеметрию буферов, действия операторов и временные метки коммуникаций следует объединить в одну временную шкалу. Такая запись позволяет провести последующую проверку, не полагаясь на память или один агрегированный график.

Метрика успеха — не отсутствие нового публичного инцидента в течение нескольких месяцев. Это доказательство того, что нарушенный инвариант теперь соблюдается на текущей инфраструктуре и остаётся проверенным после изменений.

Доказательства, которых всё ещё не хватает

Официальный отчёт необычно конкретен для инцидента в общей сети, но крупные пробелы остаются.

Клиент и устройство, сгенерировавшие пакеты LACP, не названы. Это может быть оправдано конфиденциальностью, но ограничивает независимое понимание триггера. Точный режим порта, содержимое пакетов, частота кадров и конфигурация не публичны.

Модели Juniper и Extreme, версии ПО, синтаксис ACL, порядок правил, поведение оборудования и история обновлений не публичны. AMS-IX сообщила, что ACL на SLX ранее работал и что было неясно, объясняется ли различие ошибкой или изменением синтаксиса.[1] Позднейшее уведомление поставщика или проверенное воспроизведение существенно изменили бы атрибуцию.

Публичное резюме не даёт количественной оценки переходов групп агрегации, частоты сбросов BGP, заполненности буферов, числа тайм-аутов RSVP, объёма Path Error или точного механизма воздействия на устройства Extreme. Эти измерения позволили бы различить истощение ресурсов, усиление протокола и поведение реализации.

Полное последующее воздействие неизвестно. Трафик точки обмена, сессии BGP, зонды Atlas и уведомления операторов дают сильные выборки. Они не измеряют каждого пользователя, услугу, рост задержки, период потерь пакетов или экономический ущерб.

Временная шкала обнаружения неполна. Публичные данные не говорят, сообщил ли клиент о первом симптоме, сработала ли внутренняя сигнализация платформы, обнаружило ли событие внешнее измерение или какой сигнал определил исходный порт. Они также не дают последовательности решений о смягчении.

Доказательства долгосрочного исправления неполны. AMS-IX перечислила последующие действия, но публичные источники не доказывают покрытие по каждому порту, успешные межвендорные регрессионные тесты, учения по предупреждениям или отсутствие последующего дрейфа конфигурации.

Это не причины отказываться от всех выводов. Они определяют границу выводов. Событие демонстрирует нарушенное свойство изоляции и многоуровневый каскад. На текущих публичных данных оно не доказывает конкретный дефект поставщика, неправомерное поведение клиента, небрежность, правовое нарушение или точный ущерб.

Заключение

Инциденты AMS-IX в ноябре 2023 года начались с управляющего сообщения малого масштаба и стали отказом инфраструктуры большого масштаба. Пакеты LACP, которые должны были иметь значение только для смежных систем, вышли за границу одного клиента. Другие агрегированные линии отреагировали. Сессии BGP флаппинговали. Буферы и ресурсы плоскости управления оказались под давлением. Ошибки RSVP и межвендорное поведение расширили нарушение. Подключённые сети перемещали трафик там, где у них были пригодные альтернативы.

Поэтому событие лучше понимать не как «клиент отправил плохой пакет» или «точка обмена упала», а как цепочку подотчётности. Клиент контролировал источник. AMS-IX контролировала изоляцию, выделение ресурсов, мониторинг и реагирование на инцидент. Поставщики контролировали поведение реализации в поддерживаемых конфигурациях. Участники контролировали альтернативные пути и ёмкость. Каждый уровень мог предотвратить или ограничить свою часть вреда.

Самое важное исправление — принудительно соблюдаемый инвариант: управляющие кадры уровня канала от одного участника не могут изменить состояние канала другого участника. Запись о намеченном режиме порта необходима, но работающий код должен применять правило на каждом порту. Выделение ресурсов должно его генерировать, считывание с устройства должно его подтверждать, пакетные тесты должны его доказывать, а тесты обновлений должны его сохранять.

Объявленные действия AMS-IX указывают в этом направлении. Публичная подотчётность теперь зависит от проверки. Точка обмена и её поставщики могут закрыть пробел в доказательствах, показав, что все текущие порты покрыты, межвендорное поведение проверено под нагрузкой, предупреждения обнаруживают запрещённые кадры до каскада, альтернативные пути измеряются честно, а коммуникации об инцидентах отличают смягчение от восстановления.

Более широкий урок конкретен, а не идеологичен. Точки обмена интернет-трафиком снижают стоимость и повышают доступность за счёт общей инфраструктуры. Общая инфраструктура ценна, потому что соединяет участников; она безопасна только тогда, когда также изолирует их. В ноябре 2023 года соединение работало шире, чем изоляция. Долгосрочный тест состоит в том, сможет ли исправленная платформа доказать обратное.

Источники

  1. AMS-IX, «Outage on Amsterdam peering platform»
  2. RIPE Labs, «Does the Internet Route Around Damage? - Edition 2023»
  3. Архив RIPE 87, презентация постмортема инженерной группы AMS-IX
  4. Техническая документация AMS-IX, агрегация каналов и меры контроля платформы
  5. Руководство по конфигурации AMS-IX
  6. Документация AMS-IX по безопасности портов
  7. Документация AMS-IX по MPLS/VPLS
  8. Общая статистика платформы AMS-IX
  9. Total Uptime, статус инцидента AMS-IX
  10. NFOrce NOC, статус проблем AMS-IX
  11. EDPnet, отказ AMS-IX и обновления о смягчении
  12. ipSpace.net, «AMS-IX Outage: Layer-2 Strikes Again»
  13. PAM 2024, «Following the Data Trail: An Analysis of IXP Dependencies»
  14. Стандарт IEEE 802.1AX Link Aggregation
  15. RFC 4271, A Border Gateway Protocol 4
  16. RFC 3209, RSVP-TE Extensions to RSVP for LSP Tunnels
  17. RFC 4090, Fast Reroute Extensions to RSVP-TE for LSP Tunnels
  18. RFC 4761, Virtual Private LAN Service Using BGP
  19. RFC 8614, Updated Processing of Control Flags for BGP VPLS
  20. RIPE Labs, более раннее исследование AMS-IX об обходе повреждений
  21. SIGCOMM 2017, «Detecting Peering Infrastructure Outages in the Wild»