Уже несколько раз в отчетах об инцидентах маршрутизации мы рассказывали о возможных последствиях отсутствия фильтров BGP-анонсов на стыках с клиентами. Подобная, некорректная, конфигурация большую часть времени будет работать совершенно нормально — до тех пор, пока в один прекрасный день не станет виновной в сетевой аномалии регионального или глобального масштаба. И позавчера, 25.11.2018, это случилось снова — на этот раз в России.

В 13.00 UTC (16:00 по московскому времени) небольшой российский оператор Krek Ltd (AS57494) начал анонсировать префиксы между своими провайдерами, в результате перенаправив значительную часть трафика Ростелекома на свою сеть. Аномалия затронула более 40 тысяч префиксов — выдержать такую нагрузку сеть Krek, конечно, не могла. В результате от 10 до 20% пользователей на территории РФ потеряли доступ к тысячам сервисов, включая такие популярные как Amazon, Youtube, Вконтакте и онлайн-кинотеатру IVI.RU.
image

Более чем с 5000 префиксов инцидент распространился за пределы российского интернет-сегмента, затягивая трафик других регионов в эту черную дыру.

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

Вернуть трафик любой ценой


Широко распространено мнение, что у оператора нет способа вернуть трафик из такой аномалии — чужой маршрутизатор находится вне вашего контроля. Конечно, можно начать писать письма «виновным» сторонам — это может ускорить процесс восстановления, но все равно не вернет трафик в вашу сеть мгновенно.
image
Но существует и другой способ вернуть корректную связность, эксплуатируя механизм обнаружения циклов BGP: сеть обязана автоматически сбросить маршрут в случае, если AS Path включает ее собственный номер AS. Поэтому, если вы знаете, кто является источником аномалии, вы можете добавить его AS в начало вашего пути, таким образом вынуждая его сбросить этот маршрут.
image
Подобная манипуляция AS Path может дополнить мониторинг сетевых анонсов, предоставляя гарантированный метод активной борьбы с инцидентами типа утечки маршрута (route leak). Но при использовании такой политики, вы должны быть осторожны, всегда проверяя валидность результата относительно процедуры валидации ROA.

Комментарии (5)


  1. yleo
    27.11.2018 22:16

    Может уже курсы откроете по Квагге/Зебре и сертификаты «пряморукости» будете выдавать для *.ru?


    1. lioncub
      28.11.2018 08:43

      Тут скорее дело в экономии, где специалистов априори с багажом не бывает.


    1. mitradir
      29.11.2018 01:54

      Права на вождение BGP


  1. vurd
    27.11.2018 23:06

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


    1. mitradir
      29.11.2018 01:53

      Если атака преднамеренная, то смысла «маскировать» ее под лик фактически нет. Проще тогда сделать hijack — путь будет короче, а трафика больше. С предмеренными атаками тоже можно бороться, то методы уже будут совсем другими.
      А про сброс — несколько лет назад сам тестировал разные варианты вставок на Quagga, проблем не было. В BIRD вообще в функцию prepend() передается номер АС, хочешь свою добавляй, хочешь чужую. Т.е. все работает из коробки.