4 октября 2021 года Facebook, Instagram и WhatsApp не работали больше шести часов. Доступа к одним из самых популярных сервисов не было нигде в мире, сбой был по-настоящему глобальным.
Капитализация корпорации упала в тот день на 47 с лишним миллиардов долларов. Компания теряла более 160 тысяч долларов за каждую минуту простоя, так как не могла показывать уже оплаченную рекламу, подсчитали в компании Standart Media. Прямой убыток компании, таким образом, составил около 60 миллионов долларов. Пострадала не только корпорация Facebook, но и компании, которые строили на основе ее платформы свой бизнес. Они потеряли основной канал привлечения клиентов, не могли принимать заказы и принимать оплату.
Для сторонних наблюдателей все сайты корпорации в один момент просто перестали существовать. Всё выглядело так, как будто кто-то разом перерубил все кабели от их дата-центров в мир, отключив их от интернета.
Что же произошло?
Чтобы это объяснить, вначале нужно познакомиться с аббревиатурой BGP (Border Gateway Protocol). Это «протокол граничного шлюза», система которая отвечает за обмен данными о маршрутизации между отдельными сетями. Эти сети называются автономными системами (AS). У каждой автономной системы есть свой номер (ASN) Например, ASN Facebook — 32934. BGP позволяет каждой AS объявлять о своем присутствии другим системам. И все эти системы вместе образуют единый интернет. Каждая AS регулярно объявляет специальные данные — префиксы. Они содержат информацию о том, какие адреса есть в ее сети, и к каким еще автономным системам она присоединена. Эта информация позволяет строить таблицы маршрутизации — то есть перечень способов передать сообщение от одного компьютера в одной AS к другому компьютеру в другой AS. Роутеры, которыми пользуются интернет-провайдеры, и благодаря которым и работает интернет, постоянно обновляют эти таблицы, чтобы знать, как передавать каждое сообщение от отправителя адресату. Без BGP они бы не знали, как это делается, и интернет не смог бы работать. И вот в один момент Facebook перестал заявлять о своем существовании по протоколу BGP, поэтому ваш интернет-провайдер и все другие не могли его найти.
Нарушилась передача сообщений не только из внешнего мира, но и внутри самой компании. По сообщениям New York Times, из строя вышла система, которая отвечает за пропуск персонала в дата-центры, и внутренние инструменты, которые используют инженеры Facebook для настройки своих серверов.
Что же случилось внутри самой компании, доподлинно сложно сказать. Можно ориентироваться только на пресс-релиз, составленный вице-президентом по инфраструктуре Facebook Сантошем Джанардханом.
По его словам, инженеры хотели отключить один дата-центр от общей сети корпорации, чтобы провести там профилактические работы. Но они отдали не ту команду: вместо того, чтобы проверить доступность сегментов сети, они отключили все связи между дата-центрами. Обычно такие опасные команды перехватывает специальная программа аудита, но в этот раз она дала сбой. Ошибочная команда привела к тому, что внутренние дата-центры потеряли связь с серверами, которые связывали автономную сеть корпорации с внешним миром. А это, в свою очередь, вызвало вторую проблему.
Внешние серверы компании отвечают на DNS (Domain name service) запросы. Запросы службы доменных имен, по сути, адресная книга интернета. Эта служба преобразовывает имена серверов, которые мы вводим в адресную строку браузера, в конкретные IP-адреса. Ответы на эти запросы обрабатывают специальные серверы, которые сами по себе занимают широко известные IP-адреса. Например, 1.1.1.1 (DNS-служба Cloudfare) или 8.8.8.8 (DNS-служба Google). Эти IP-адреса корпорация транслировала в мир с помощью BGP протокола.
DNS сервера Facebook настроены таким образом, чтобы отфильтровывать те объявления по протоколу BGP, если в результате их выполнения нельзя будет связаться с центральными дата-серверами. А так как все центральные дата-серверы были отключены, то и DNS-сервера перестали объявлять себя в BGP запросах, хоть и сохраняли работоспособность. И в результате их интернета пропали и DNS-сервера Facebook. В итоге инженеры корпорации утратили доступ к внутренним инструментам, так как они были доступны только через DNS-сервера Facebook.
В результате сотрудникам пришлось ехать непосредственно в дата-центры, но попасть в них оказалась непросто: ими управляет сторонняя компания, которая придерживается очень строгих правил допуска людей в машинный зал. Кроме того, сами роутеры спроектированы так, чтобы их было сложно перепрограммировать, даже если у вас есть к ним физический доступ. Потребовалось дополнительное время, чтобы вернуть дата-центры к работе.
Возвращать их одномоментно тоже было нельзя. Некоторые дата-центры потребляли десятки мегаватт мощности, и если включить их резко на полную силу, то можно было спровоцировать новую волну отключений. В этот раз из-за резко возросшей нагрузки на энергетическую инфраструктуру. Поэтому обратный запуск пришлось сделать плавным, что дополнительно замедлило полное восстановление всей системы.
Эта авария стала одной из самых серьезных у Facebook с марта 2019 года. Тогда Facebook, Instagram, WhatsApp и другие сервисы компании работали с перебоями более суток. Но в прошлый раз сбои носили более локальный характер: затронутыми оказались, преимущественно, пользователи из США и Европы.
Проблемы с настройкой BGP возникают постоянно. Только с начала этого года произошло более 7 тысяч инцидентов, связанных с работой этого протокола, разработанного и принятого в качестве стандарта в середине 80-х годов прошлого века. Так как любая автономная сеть в теории может объявить любой набор префиксов своим и перенаправить трафик для любого количества IP-адресов на себя. Чаще всего, это просто результат ошибки. Например, 26 апреля 2017 года Ростелеком в течение 7 минут перенаправлял на себя трафик, которых предназначался серверам платежных систем MasterCard, Visa и банков Fortis, HSBC, UBS и другим финансовым учреждениям. Но иногда этим пользуются и злоумышленники, чтобы замедлить доступ или пристально анализировать трафик конкурентов.