Утечка BGP-маршрутов привела к массовому нарушению связности в интернете

Компания Cloudflare опубликовала отчёт о вчерашнем инциденте, в результате которого на протяжении трёх часов с 13:34 до 16:26 (MSK) наблюдались проблемы с доступом ко многим ресурсам в глобальной сети, включая инфраструктуру Cloudflare, Facebook, Akamai, Apple, Linode и Amazon AWS. Проблемы в инфраструктуре Cloudflare, которая предоставляет CDN для 16 млн сайтов, наблюдались с 14:02 до 16:02 (MSK). По оценке Cloudflare во время сбоя фиксировалась потеря приблизительно 15% глобального трафика.

Проблема была вызвана утечкой маршрутов через BGP, в ходе которой около 20 тысяч префиксов для 2400 сетей были некорректно перенаправлены. Источником утечки был провайдер DQE Communications, который использовал ПО BGP Optimizer для оптимизации маршрутизации. BGP Optimizer разбивает IP-префиксы на более мелкие, например, разделяет 104.20.0.0/20 на 104.20.0.0/21 и 104.20.8.0/21, и, как следствие, DQE Communications держал на своей стороне большое число специфичных маршрутов, переопределяющих более общие маршруты (т.е. вместо общих маршрутов к Cloudflare использовались более гранулированные маршруты к конкретным подсетям Cloudflare).

Данные точечные маршруты были анонсированы одному из клиентов (Allegheny Technologies, AS396531), который также имел подключение через ещё одного провайдера. Allegheny Technologies транслировал полученные маршруты другому транзитному провайдеру (Verizon, AS701). Из-за отсутствия надлежащей фильтрации BGP-анонсов и ограничения на число префиксов, Verizon подхватил данный анонс и транслировал полученные 20 тысяч префиксов для остального интернета. Некорректные префиксы из-за своей гранулированности были восприняты как более приоритетные так как конкретный маршрут имеет более высокий приоритет, чем общий.

0_1561446129.png

В итоге, трафик для многих крупных сетей стал направляться через Verizon к мелкому провайдеру DQE Communications, не способному обработать нахлынувший поток, что привело к коллапсу (эффект сравним с тем, как если бы часть нагруженной автострады заменили на просёлочную дорогу).

Для предотвращения возникновение подобных инцидентов в будущем рекомендовано использовать верификацию анонсов на основе RPKI (BGP Origin Validation, разрешает приём анонсов только от владельцев сети), ограничить максимальное число принимаемых префиксов для всех сеансов EBGP (настройка maximum-prefix помогла бы сразу отбросить передачу 20 тысяч префиксов в рамках одного сеанса), применять фильтрацию на основе реестра IRR (Internet Routing Registry, определяет AS через которые допустима маршрутизация заданных префиксов), использовать на маршрутизаторах рекомендуемые в RFC 8212 настройки для блокировки по умолчанию ('default deny') и прекратить использование оптимизаторов BGP.

0_1561446959.png

©  OpenNet