- PVSM.RU - https://www.pvsm.ru -

Глобальные последствия одной ошибки в Quagga

imageСлева вы наблюдаете аватар savannah.gnu.org [1], где лежит репозиторий Quagga. Нам показалось, что он подходит к событию.

Примерно две недели назад команда Qrator Radar столкнулась с интересным сетевым инцидентом, выяснение обстоятельств которого вылилось во внутреннее расследование-исследование, с поиском пострадавших и виновных, а также попытками исправить ситуацию. 30.09.2017 наша команда обратила внимание на необычно большое количество «мигающих» BGP-сессий.

Быстро проведенный анализ показал, что все проблемные сессии обладали рядом одинаковых симптомов: они обрывались из-за каких-то однотипных «битых» анонсов, также создавалось впечатление, что сессии рвутся не только у нас — в результате значительные перестроения маршрутизации происходят по всему миру.

Потратив некоторое время на выяснение причин данной проблемы, мы обнаружили, что битый анонс приходит для префикса 186.177.184.0/23 от AS262197 из Коста-Рики, причем по другим направлениям этот анонс приходит без каких-либо ошибок, но с препендом… 563. С одной стороны данная политика бесполезна, так как эффект от политики препенда сходит на нет уже при значениях в районе 5, с другой стороны, такой анонс остается легитимным.

Мы задали вопросы пользователям, с которыми у нас «мигали» сессии, и в большинстве случаев BGP сессия на стороне пользователя оказалась настроены с использованием Quagga или маршрутизаторов Brocade (который тоже основан на Quagga). Cобрав стенд мы убедились в том, что проблема и вправду локализована в реализации Quagga — после обработки данного маршрута, Quagga создавала анонс сразу с несколькими аномалиями: в маршруте оказывалась как неправильная длина атрибута AS_PATH, равно как и само значение атрибута AS_PATH оказывалось некорректным.

В результате, в соответствии с RFC4271 [2], подобный анонс приводил к разрыву BGP-сессии, что начало приводить к разрыву BGP-сессий по всему миру. Для операторов, вышестоящие поставщики которых используют Quagga, данная аномалия за счет постоянных разрывов BGP-сессии, была в состоянии приводить к частичной или полной недоступности сети. Мы обнаружили несколько сотен сетей пострадавших в результате этого инцидента.

Данная аномалия повторилась на прошедших выходных, но уже для другого префикса — 186.176.186.0/23. Она завершилась только вчера, 16 октября 2017 года, таким образом общая длительность инцидента составила более двух суток.

На момент конца прошлой недели реализации Quagga, в рамках релиза 1.2.2 была исправлена ошибка с длиной атрибута AS_PATH. Наша команда также прислала дополнительный патч, исправляющий и вторую проблему с самим содержимым этого атрибута. По состоянию на прошлую неделю ошибка в коде была частично исправлена в рамках релиза 1.2.2. Команда Qrator Radar предоставила дополнительный патч для Quagga исправляющий формирование некорректного значения атрибута AS_PATH, и вчера он был принят [3], но пока еще не относится к текущему релизу.

Мы настоятельно рекомендуем всем пользователям Quagga обновить свой софт до версии 1.2.2 и следить за последующими апдейтами. Также, в приложение к данной публикации, мы прикладываем патч, исправляющий обе вышеописанные проблемы с анонсами в Quagga.

Команде Quagga спасибо за скорую реакцию.

Ссылка [4] на патч.
Проверить [5], задета ли ваша AS.

Автор: Shapelez

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/setevy-e-tehnologii/265945

Ссылки в тексте:

[1] savannah.gnu.org: http://savannah.gnu.org/

[2] RFC4271: https://tools.ietf.org/html/rfc4271

[3] он был принят: http://git.savannah.gnu.org/cgit/quagga.git/commit/?h=balajig_devel

[4] Ссылка: https://radar.qrator.net/content/0001-Fix-problems-with-long-as-path.patch

[5] Проверить: https://radar.qrator.net/blog/global-consequence-of-bug-in-quagga-routing-engine

[6] Источник: https://habrahabr.ru/post/340356/