Найти тему
Личный опыт

Почему Facebook был недоступен

Оглавление

«Facebook не может "упасть", не так ли?», — подумали мы на секунду.

Сегодня в 15:51 UTC у нас произошел "внутренний инцидент" под названием "Facebook DNS lookup returning SERVFAIL" , потому что мы были обеспокоены тем, что что-то не так с нашим dns-сервером 1.1.1.1.

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

Социальные сети "горели" сообщениями об этом, а наши инженеры быстро подтвердили. Facebook и связанные с ним сервисы WhatsApp и Instagram, по сути, были недоступны. DNS-имена перестали инициализироваться, а их инфраструктурные IP-адреса были недоступны. Это было похоже на то, как если бы кто-то «вытащил кабели» из всех центров обработки данных сразу и отключил их от Интернета.

Это не было проблемой DNS само по себе, но ошибка DNS была первым симптомом, который мы видели в более крупном масштабе недоступности сервисов Facebook.

Как это вообще возможно?

Обновление от Facebook

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

Facebook опубликовал еще один пост в блоге с гораздо более подробной информацией о том, что произошло.

Теперь о том, что же мы обнаружили.

Познакомьтесь с BGP

BGP расшифровывается как Border Gateway Protocol. Это механизм обмена информацией о маршрутизации между автономными системами (AS) в Интернете. Большие маршрутизаторы, которые заставляют Интернет работать, имеют огромные, постоянно обновляемые списки возможных маршрутов, которые могут быть использованы для доставки каждого сетевого пакета в конечные пункты назначения. Без BGP интернет-маршрутизаторы не знали бы, что делать, и Интернет не работал бы.

Интернет — это буквально сеть сетей, и он связан друг с другом BGP. BGP позволяет одной сети (скажем, Facebook) афишировать свое присутствие другим сетям, которые формируют Интернет. Поскольку Facebook не афиширует свое присутствие, интернет-провайдеры и другие сети не могут найти сеть Facebook, и поэтому она недоступна.

Каждая из отдельных сетей имеет ASN: номер автономной системы. Автономная система (AS) — это индивидуальная сеть с единой внутренней политикой маршрутизации.

AS может порождать префиксы (скажем, они контролируют группу IP-адресов), а также транзитные префиксы (скажем, они знают, как достичь определенных групп IP-адресов).

Каждый ASN должен объявить свои префиксные маршруты в Интернет с помощью BGP; в противном случае никто не будет знать, как подключиться и где нас найти.

На этой упрощенной схеме вы можете увидеть шесть автономных систем в Интернете и два возможных маршрута, которые один пакет может использовать для передачи от начального к конечному. AS1 → AS2 → AS3 является самым быстрым, а AS1 → AS6 → AS5 → AS4 → AS3 является самым медленным, но это может быть использовано, если первый выйдет из строя.

Маршрутизация АS
Маршрутизация АS

В 15:58 UTC мы заметили, что Facebook перестал сообщать маршруты к своим префиксам DNS. Это означало, что, по крайней мере, DNS-серверы Facebook были недоступны. Из-за этого DNS-сопоставитель Cloudflare 1.1.1.1 больше не мог отвечать на запросы с запросами IP-адреса facebook.com.

Между тем, другие IP-адреса Facebook оставались маршрутизованными, но не были особенно полезны, поскольку без DNS Facebook и связанные с ним сервисы были фактически недоступны.

Мы отслеживаем все обновления и объявления BGP, которые мы видим в нашей глобальной сети. В нашем масштабе данных, которые мы собираем, дают нам представление о том, как и куда трафик идет траффик.

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

Но примерно в 15:40 UTC мы увидели пик изменений маршрутизации от Facebook. Вот тогда и начались проблемы.

-3
-4

DNS под ударом

Как прямое следствие этого, DNS-сопоставители во всем мире перестали инициализировать свои доменные имена.

Это происходит потому, что DNS, как и многие другие системы в Интернете, также имеет свой механизм маршрутизации. Когда кто-то вводит https://facebook.com в браузере, распознаватель DNS, отвечающий за преобразование доменных имен в фактические IP-адреса для подключения, сначала проверяет, есть ли что-то в кэше, и использует его. Если нет, он пытается получить ответ от серверов доменных имен.

Если серверы доменных имен недоступны или не отвечают по какой-либо другой причине, возвращается SERVFAIL, и браузер выдает пользователю сообщение об ошибке.

-5

Из-за того, что Facebook прекратил объявлять свои маршруты префиксов DNS через BGP, наши и все остальные DNS-сопоставители не имели возможности подключиться к своим серверам имен. Следовательно, 1.1.1.1, 8.8.8.8 и другие основные публичные DNS-устройства начали выдавать (и кэшировать) ответы SERVFAIL.

Но это не всё. Теперь срабатывают человеческое поведение и логика приложений и вызывают еще один экспоненциальный эффект. За этим следует цунами дополнительного DNS-трафика (больше запросов - больше нагрузки).

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

Это увеличение трафика (по количеству запросов), которое мы видели на 1.1.1.1:

-6

Итог

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

Источник