company_banner

Из-за чего Facebook стал глобально недоступен. Технический ликбез

Автор оригинала: Tom Strickx, Celso Martinho
  • Перевод

Прим. перев.: в этой статье инженеры онлайн-сервиса Cloudflare весьма популярно объясняют, что именно (технически) произошло с недоступностью Facebook минувшим вечером (4-го октября 2021), а также затрагивают тему того, как этот сбой повлиял на более глобальные процессы в интернете.

«Разве Facebook может упасть?» — задумались мы на секунду…

Сегодня в 16:51 UTC (в 19:51 MSK — прим. перев.) у нас был открыт внутренний инцидент под названием «Facebook DNS lookup returning SERVFAIL» («DNS-поиск для Facebook возвращает SERVFAIL»). Мы решили, что это с нашим DNS-ресолвером 1.1.1.1 что-то не так. Однако к моменту размещения соответствующего обновления на публичной статус-странице стало ясно, что здесь что-то серьёзное.

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

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

Встречайте BGP

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

Интернет — это буквально сеть из сетей, связанных между собой с помощью BGP. BGP позволяет одной сети (скажем, Facebook) объявлять о своём присутствии другим сетям, которые в конечном счёте формируют весь интернет. На момент написания этой статьи Facebook не сообщал о своём присутствии, поэтому интернет-провайдеры (ISP) и другие сети не могут найти сеть Facebook — она недоступна.

У индивидуальных сетей есть свой ASN — номер автономной системы (Autonomous System Number). Автономная система (AS) — это индивидуальная сеть с унифицированной политикой внутренней маршрутизации. AS может порождать специальные префиксы (означающие, что они контролируют группу IP-адресов), а также транзитные префиксы (они знают, как добраться до определённых групп IP-адресов).

Например, ASN у Cloudflare — AS13335. Каждая ASN должна объявить интернету о своих prefix routes с помощью BGP. В ином случае никто не узнает, как к ней подключиться и где найти её.

В онлайн-центре обучения Cloudflare есть отличный обзор того, что такое BGP, ASN и как они работают.

В этой упрощённой схеме можно увидеть шесть автономных систем в интернете и два возможных маршрута, по которым один пакет может пройти от начала (Start) до конца (End). Самый быстрый маршрут — это AS1 → AS2 → AS3. Самый медленный — AS1 → AS6 → AS5 → AS4 → AS3; он используется в случаях, когда первый не срабатывает.

В 16:58 UTC мы заметили, что Facebook перестал анонсировать маршруты для своих DNS-префиксов. Это означало, что по меньшей мере DNS-серверы Facebook были недоступны. По этой причине DNS-ресолвер Cloudflare (уже упомянутый 1.1.1.1) не мог отвечать на запросы, требующие выдать IP-адрес для домена facebook.com или instagram.com.

route-views>show ip bgp 185.89.218.0/23
% Network not in table
route-views>

route-views>show ip bgp 129.134.30.0/23
% Network not in table
route-views>

Хотя другие IP-адресы Facebook и имели маршруты в то же самое время, в них не было особого смысла, потому что DNS-службы Facebook и связанных сервисов были недоступны:

route-views>show ip bgp 129.134.30.0   
BGP routing table entry for 129.134.0.0/17, version 1025798334
Paths: (24 available, best #14, table default)
  Not advertised to any peer
  Refresh Epoch 2
  3303 6453 32934
    217.192.89.50 from 217.192.89.50 (138.187.128.158)
      Origin IGP, localpref 100, valid, external
      Community: 3303:1004 3303:1006 3303:3075 6453:3000 6453:3400 6453:3402
      path 7FE1408ED9C8 RPKI State not found
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 1
route-views>

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

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

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

Ещё лучше будет видно, что же произошло, если разбить этот график на анонсы маршрутов и их отзывы. Маршруты были отозваны, DNS-серверы Facebook ушли в offline, а минутой позже возникла проблема: инженеры Cloudflare сидели и недоумевали, почему 1.1.1.1 не может получить IP для facebook.com, обеспокоенные каким-то сбоем в своих системах.

После отзыва этих маршрутов Facebook и его сайты были отключены от интернета.

DNS тоже в деле

Прямым последствием этого события стала невозможность для DNS-ресолверов со всего мира получать IP для связанных с проектами доменных имён:

➜  ~ dig @1.1.1.1 facebook.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @1.1.1.1 whatsapp.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A
➜  ~ dig @8.8.8.8 facebook.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @8.8.8.8 whatsapp.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A

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

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

Опять же, в онлайн-центре обучения Cloudflare есть хорошее объяснение, как работает DNS.

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

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

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

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

Из-за того, что Facebook и его сайты так популярны, мы получили 30-кратную нагрузку на DNS-ресолверы по всему миру, а это может вызывать задержки и таймауты для других платформ.

К счастью, 1.1.1.1 был создан как бесплатный, приватный, быстрый (убедиться в этом можно в DNSPerf) и масштабируемый сервис, так что мы продолжали обслуживать своих пользователей с минимальными проблемами.

Скорость ответов на подавляющую часть DNS-запросов оставалась в диапазоне менее 10 мс. В то же время небольшая часть перцентилей p95 и p99 показали повышенное время ответов — вероятно, из-за истекших TTL при обращении к DNS-серверам Facebook и вызванных таймаутов. 10-секундный таймаут для DNS — значение, которое пользуется популярностью среди инженеров.

Влияние на другие сервисы

Люди ищут альтернатив, хотят знать и обсуждать, что происходит. Когда Facebook упал, мы увидели растущее число DNS-запросов к Twitter, Signal и другим социальным сетям и платформам для обмена сообщениями.

Также недоступность проявилась в статистике по WARP-трафику от и к автономной сети Facebook’а (ASN 32934). Эта карта показывает, как трафик изменился в интервале с 15:45 UTC до 16:45 UTC по сравнению с тремя часами до этого в каждой стране. По всему миру WARP-трафик от и к сети Facebook практически исчез.

Интернет

Сегодняшние события служат мягким напоминанием о том, что интернет — это очень сложная и взаимозависимая система из миллионов систем и протоколов, взаимодействующих друг с другом. Доверие, стандартизация и кооперация между задействованными в нём организациями — ключ к его работоспособности для почти пяти миллиардов активных пользователей со всего мира.

Обновление

Около 21:00 UTC (полночь в MSK — прим. перев.) мы увидели новую BGP-активность в сети Facebook, пик которой пришёлся на 21:17 UTC:

График ниже показывает доступность DNS-имени 'facebook.com' на DNS-ресолвере 1.1.1.1. Она пропала около 15:50 UTC и вернулась в строй в 21:20 UTC:

Несомненно, сервисам Facebook, WhatsApp и Instagram ещё понадобится некоторое время, чтобы полностью вернуться в строй, но по состоянию на 21:28 UTC Facebook уже доступен в глобальном интернете, а его DNS снова функционирует.

P.S. от переводчика

Читайте также в нашем блоге:

Флант
DevOps-as-a-Service, Kubernetes, обслуживание 24×7

Комментарии 146

    +9

    Ну встала у СММ-щиков работа ненадолго, ну какие-то бизнес-механизмы легли. А вот что будет если лягут подключенные облачно jQuery или bootstrap например. Кажется мне, больше половины сайтов перестанут работать корректно.

      +9

      Уверен, сервисы FB посещают гораздо больше людей, чем все сайты, которые получают ключевые библиотеки с одного какого-то публичного CDN. Будет повод перенести библиотеки к себе, ведь межсайтовое кэширование уже сломано и толку от единых CDN стало гораздо меньше.

        +1

        "межсайтовое кэширование уже сломано" поясните пожалуйста

          +3

          Если сайты abc.com и cba.com запрашивают одинаковые файлы cdn.com/script.js и cdn.com/style.css. То браузер будет качать эти файлы лишь однажды.

          подозреваю, что теперь эта фича кеширования изменена.

            0
            Да, теперь браузер скачает файл дважды и будет хранить две копии. Именно так работает Network Partitioning. С ростом пропускной способности каналов связи польза от общего кэша уменьшилась настолько, что лучше отказаться от него в пользу большей приватности.
            +8
            В современных браузерах кеш разделяется по доменам для того, чтобы нельзя было отследить, посещали ли вы другой сайт. Например, я могу разместить скрипт с уникальным названием на сайте А, и посмотреть, загружали ли вы этот ресурс при открытии сайта Б.
              0

              Каким образом?

                +1

                Сайт Б может своими скриптами подключить тот самый уникальный скрипт с сайта А и замерить время, сколько он будет грузиться. Если этот скрипт загрузится практически мгновенно — значит он уже был в кэше.

                  +1

                  Так и думал, спасибо.

                    0
                    Плюс к этому еще навскидку performance.now и :visited.
            0

            Толк от хранения библиотек в CDN пропал с массовым переходом на http/2.

              +3

              Но ведь CDN снижает нагрузку на собственный сайт и уменьшает время, за которое грузится ресурс, из-за того, что этот самый ресурс грузится с более близкого к конечному пользователю узла CDN. Разве нет?

                +2
                Разве нет?

                Так утверждают. Но мой опыт ясно говорит – все сайты, которые используют CDN, медленные. И наоборот, все быстрые сайты, CDN не используют.


                Да, может причина и следствие перепутаны, но я бы сказал – делайте сайты, которые в CDN не нуждаются.

                  0
                  Да-да. Если у них нет хлеба, пусть едят пирожные.
                    +1

                    В целом утверждение не совсем корректное. Взрослые быстрые сайты конечно же используют CDN, только они используют CDN как часть своей "собственной" облачной инфраструктуры, со своими собственными доменами, а не как какую-то левую публичную зависимость.
                    Cloudflare там, Google Cloud CDN, Cloudfront и иже с ними.

                      +1
                      Я думаю, тут разные сущности CDN.
                      Например, я писал сервис на Angular. В нем есть возможность деплоя на другой УРЛ. Был выбрал AWS.
                      Никто другой не будет использовать эти скрипты на своих сайтах. А вот для пользователей скорость загрузки сайта уменьшается, так как запрос идет к ближайшему для них серверу.
                      +1

                      Знали бы вы, как спасает CDN, когда твои сервера раздают hls-видео на тысячи людей

                      0

                      Это тоже влияет, но основной эффект снижения нагрузки предполагался за счет уменьшения количества запросов в веб-серверу, которые не могли выполнятся параллельно в рамках одного TCP соединения, что стало не актуальным с появлением http/2, который поддерживает мультиплексирование.

                    +1

                    Повод перенести библиотеки к себе был всегда. Именно из за ненулевой вероятности такого случая.
                    И даже частичная потеря связности для клиента (например РКН) запросто обрушит сайт при недоступности того же jquery.
                    Никогда не понимал почему оставляют внешнюю ссылку. И никогда не принимал работу с внешними ссылками на ресурсы.

                      +1

                      Помнится когда под горячую руку РКН при попытках блокировки телеграмма попали гугловские айпишники, огромное количество сайтов встало колом от того, что использовало блокирующую загрузку шрифтов с гуглового fonts.google.com. (браузер ждал таймаута и только после него загружал сайт).

                        +1
                        Не оправдывая завязку на внешние ресурсы, замечу, что по стандарту browser не должен создавать много одновременных соединений с одним доменом. А с разными — может. Поэтому, положив библиотеки на другие домены, можно добиться их параллельной загрузки. Если бы ещё и про fallback кто-нибудь думал при этом, то это было бы не худшим решением.

                        Во многих случаях, как уже заметили выше, HTTP/2 нивелирует выигрыш, при условии нормальной ширины канала между сервером и пользователем.
                          0

                          Даже если и так, никто не мешает использовать, например, домен static.yourdomain.com, который вы контролируете, для хранения зависимостей.

                            0
                            Не оправдывая завязку на внешние ресурсы, замечу, что по стандарту browser не должен создавать много одновременных соединений с одним доменом.


                            Можно чуть подробнее об этом?
                            Ссылку на стандарт? И «много» — это сколько?
                              0
                              RFC2616 §8.1.4
                              A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.

                              На практике в последние годы без прокси-сервера лимит у некоторых browser-ов можно было повысить или даже был повышен по умолчанию, с прокси-серверами было максимум 2, когда я проверял в последний раз.
                        +6

                        Уже ложилось, помню. Про быстренько перенесли к себе те, кто умел, остальные дождались поднятия, ничего особенного.

                          –1

                          Заскриню этот коммент чтобы запостить этот скрин когда уже совсем скоро эта страна будет отрезана от интернета в рамках т. н. "суверенного интернета". Ничего ведь особенного не произошло.

                          +13

                          Ага, плюс встала работа везде, где есть "Login with Facebook"

                            0
                            а эти ресурсы должны же кэшироваться браузером?
                              +1

                              Должны, только вначале же для этого их нужно откуда-то получить чтобы закэшировать уже в браузере юзера

                              0

                              У меня в последние несколько месяцев bootstrap отрыгивается на некоторых сайтах

                                0

                                Принцип Парето в отношении сайтов еще более перекошенный. Как правило это легаси недобложики в своей массе с околонулевым траффиком, сейчас любой уважающий себя июнь даже калькулятор запихивает в вебпак, а веб проекты, в которые не стыдно кидать свое резюме, используют route 53.

                                +4
                                А из-за чего двери у сотрудников заблокировались и они не могли попасть в свои офисы?
                                  +8

                                  Как вариант, система пропусков тоже использовала инфраструктуру мордокниги и не могла достучаться для проверки допуска.

                                  Грубо говоря, чтобы поднять упавшую систему надо чтобы упавшая система была не упавшей.

                                    +3

                                    Интересно, а как разблокируется в случае стихийного бедствия? Должна же быть у охраны "тревожная" кнопка.

                                      +3

                                      Возле дверей, изнутри комнат есть что то вроде пожарной кнопки, которая разблокирует дверь. Но и охрана получает сигнал, что дверь разблокирована аварийно.

                                        +8

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

                                          +2

                                          Там два блока на стене, первый "красный пожарный" - про спуск лифтов на первый этаж, разблокировку всей дверей в здании и сирену. Второй - зеленый, который аварийно разблокирует конкретную дверь.

                                          UPD. "Там" это не FB, это в нашем кампусе другой конторы

                                            0

                                            Так от замков зависит. Если замок электромагнитный - внутри помещения ставится кнопка-рубильник, через которую проходит цепь питания замка. А у электромеханики типа Аблоя - механизм механической разблокировки ригеля, который принудительно отодвигает штырек соленоида, который блокирует ригель. Сам механизм связан с наружней стороны двери с личинкой замка, с внутренней - с вращающейся кнопкой (заверткой, или как их там зовут, забыл).

                                              0

                                              Это касается пожарных выходов, а не входов и это российские правила. В других странах все по своему

                                                +2

                                                В штатах ещё строже — там выходы вообще датчиком движения оснащаются, который открывает двери при любом движении внутри.


                                                И иногда 'движение' может быть из очень неожиданных источников:
                                              +4

                                              В порядке стёба - получает через лежащую систему?

                                              +3

                                              СКД по тревоге, обычно, разблокирует проходы на выход, а не на вход)

                                                +9

                                                Сломай систему - войди через выход! )))

                                                  +5

                                                  Скорее наоборот — почини систему :D

                                            +5

                                            Например, в конфигурации устройств СКУД управляющий сервер или сервер БД был прописан не по IP, а по доменному имени... А DNS-а то нету из-за испорченного BGP, и все.

                                            Ну или просто сам сервер был внутри сети, к которой пропал доступ из-за косяка в том же BGP. Вариантов довольно много, на самом деле.

                                            +20

                                            Больше интересно, почему анонсы по BGP пропали.

                                              +5

                                              Согласен, что интересно… Для этого нужно ждать информацию от самой Facebook. Им явно придётся выдать на публику какой-то отчёт. Пока есть только такое.

                                                +2

                                                Информация от ФБ исходит из пиар-департамента, так что это или лукавство для отвода глаз, или просто прямая ложь, чаще последнее. Уверен, в этот раз будет точно так же, признаки уже есть типа заявлений ФБ в Тви, что падение затронуло «некоторых» пользователей.

                                                Так что как раз не от ФБ.

                                                  0
                                                    +3

                                                    Вероятно, подпись под постом -- "Santosh Janardhan, VP Infrastructure" -- объясняет больше, чем сам пост.

                                                      0

                                                      Да, по три that в одном предложении – это, конечно, не пиар-департамент готовил текст. Тем не менее, любой сотрудник ФБ обязан согласовывать такие штуки, это прямо сказано вот тут https://developers.facebook.com/devpolicy/, ищите «PR Guidelines» на странице.

                                                        +2

                                                        Я скорее о том, что там никаких подробностей. Пост построен по такому принципу:

                                                        1. Извините, что у нас получилась ошибочка, ведь нашими сервисами пользуются сотни миллионов.

                                                        2. Мы всё поняли, научились, такого больше не будет.

                                                        3. Нашими сервисами пользуются сотни миллионов (опять), и вам лучше не думать о плохом, ведь сотни миллионов мух не могут ошибаться.

                                                        +2
                                                        0

                                                        или лукавство для отвода глаз, или просто прямая ложь

                                                        Тошно от лжи уже. Особенно когда она такая прямая и очевидная. Они просто всех дураками выставляют

                                                      +4

                                                      У нас много ребят в FB работают. На перерыве коллега встречался с одним и вот что написал:
                                                      So a friend told me that someone did a change on TF or other automation system that changed some config on all of the routers and withdraw the routes, also like everyone knows its the same infra as all of their internal tools bu they have an emergency infra just for these cases that they can fail over all of their internal system to this infra.. apperantly 90% of the company was not familliar with this infra :sweat_smile:

                                                      So no one knew how to fail over to it and most of them did not even know it exists.

                                                        +1

                                                        Увы, время такое. Когда все всё понимают, но продолжают с похерпейсами вещать, так сказать, официальщину. Это и выборов касается: все все знают. Знают, что несут полную ахинею, знают, что эта ахинея прям вот палевная на все 100%, что вообще никто и не верит ни единому слову, но продолжают ее нести. Причем не только у нас, кстати. И не только в выборах, в корпоративщине этиой гнилью все насквозь пропитано.

                                                      +4

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

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

                                                        +4

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

                                                          +2

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

                                                            +3

                                                            Так может это не причина, а следствие. Чем проще структура, тем сложнее её поломать.


                                                            Ну и на любой замок поглядите — средневековый или наших дней. Там такие кубернетесы внутри порой бывают. А обычные человейники — это как сайты на CMS, их делают для массового потребления.

                                                              0

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

                                                                +1

                                                                В целом, программы едва ли не всегда должны быть написаны проще, но есть нюанс... как говорится.

                                                              +4
                                                              здания не перепроектируют заново по мере возведения каждого этажа. Или сроки горят: сдаём MVP без водопровода.
                                                                +1

                                                                Вспомнились фотографии со строительства под олимпиаду в Сочи)

                                                                  0

                                                                  Agile архитектура желаете?

                                                                    0

                                                                    Программы тоже не перепроектируют. Вокруг готовые библиотеки и фреймворки.

                                                                      0
                                                                      полностью не перепроектируют конечно, но например добавить пару этажей в проект к уже строящемуся дому — это вполне распространенная вещь на самом деле
                                                                    +2

                                                                    Уважаемый строитель, перенесите-ка здание на 5 метров влево. А можно ещё такое же здание, только на 50 метров дальше? Как нужны ещё ресурсы?

                                                                    +5

                                                                    В 16:58 UTC мы заметили, что Facebook перестал анонсировать маршруты для своих DNS-префиксов.

                                                                    Это происходит по той причине, что в DNS, как и во многих других системах в интернете, используется свой механизм маршрутизации.

                                                                    Автор оригинальной статьи зачем то(может для упрощения) смешал в одну кучу 7 и 4 урони модели OSI. Маршрутизация это 4, DNS 7. И связаны они в этой истории тем, что DNS сервер, как и любой другой сервер тоже находится в сети и взаимодействует в тч на 4 уронве. И в DNS нет ни маршуртизации(в строгом смысле этого слова) ни анонсирования маршрутов.

                                                                      +11

                                                                      Все таки маршрутизация это 3 уровень модели osi

                                                                        +11

                                                                        Но остальная мысль правильная нет смысла говорить о доступности dns если нет маршрутизации.

                                                                        +4

                                                                        И никакие микросервисы не спасли.

                                                                          +12

                                                                          А как микросервисы должны спасти от поломки маршрутизации? Монолит бы не сломался?

                                                                            +6

                                                                            А причем здесь микросервимы-то? Они так-то немного для другого нужны.

                                                                              +19

                                                                              Вот и не спасли! :)

                                                                                0

                                                                                Ну да, было бы большим чудом, если бы микросервисы спасали ещё от сбоев сетевого оборудования! :)

                                                                                  +3

                                                                                  Конечно это была шутка с моей стороны, но если серьезно, то микросервисы понижают устойчивость к сетевым ошибкам.

                                                                                    0

                                                                                    Рад видеть, что нашлись люди, понявшие мою шутку)

                                                                            +12

                                                                            В статье нет ответа что именно сломалось у Facebook, то что DNS серверы Facebook не отвечали, разве что.

                                                                              +1

                                                                              так вроде официального отчета от самой фб и не было, вот, вся инфа, что есть представлена

                                                                              +1

                                                                              Так все подсети (ASN) Фейсбука просто пропали из Интернета. А для юзеров это было заметно по неработающему DNS, так как первое, что мы делаем при открытии ссылок это резолвим домен.

                                                                                +1

                                                                                Там похоже не только DNS для внешних клиентов отваливался, т.к. если прописать в hosts ip facebook.com он все равно не открывался.

                                                                                Отвалились не все подсети, как минимум анонсы ipv6 были доступны (судя по ripestat). Но при этом эти сервера не отвечали на пинги и на днс запросы.

                                                                              +2

                                                                              Кто-то хорошо заработал на этом;)

                                                                              Даже если не было атаки, а всего лишь рученки влезли куда не надо...

                                                                                +2

                                                                                Каким образом заработал?

                                                                                  +1

                                                                                  Акции скинул В 16:49 UTC, например :)

                                                                              +1

                                                                              "В 16:58 UTC мы заметили, что Facebook перестал анонсировать маршруты для своих DNS-префиксов" -- вот тут мой мозг сломался. =)) DNS и BGP в одну кучу.
                                                                              Для тех кто не в курсе, в протоколе BGP есть только апдейты маршрутов соседней автономной зоны. DNS это этажом выше, и никак не пересекаются.

                                                                              Это такой перевод, или там действительно такие чапаевские птицы?

                                                                                +9

                                                                                Перевод в порядке. Вероятно, это место следует читать как "В 16:58 UTC мы заметили, что Facebook перестал анонсировать маршруты для префиксов серверов своих DNS-зон."

                                                                                –11

                                                                                Похоже, Цукерберг предал идеалы демократии и завязал все сервисы на себя лично, без резервирования...

                                                                                  +12
                                                                                  Сегодняшние события служат мягким напоминанием о том, что интернет — это очень сложная и взаимозависимая система из миллионов систем и протоколов, взаимодействующих друг с другом. Доверие, стандартизация и кооперация между задействованными в нём организациями — ключ к его работоспособности для почти пяти миллиардов активных пользователей со всего мира.

                                                                                  ...


                                                                                  В 1968 году Министерство обороны США посчитало, что на случай войны Америке нужна надёжная система передачи информации, и предложило разработать для этого компьютерную сеть.

                                                                                  А потом, что-то пошло не так.

                                                                                    +32
                                                                                    Да в общем-то всё так: несмотря на отключение куска сети, через который ходила существенная часть мирового трафика — весь остальной интернет продолжал работать.

                                                                                    Сравните это, например, с историей Evergreen весной, когда затор в одной точке поставил раком мировую логистику на пару недель.
                                                                                      +3

                                                                                      Тем не менее что-то в архитектуре явно сделано нехорошо.

                                                                                      Это же огромная контора с серверами по всему миру. Так почему он упал весь, а не для какой-то части пользователей?

                                                                                      Построили недостаточно отказоустойчивым.

                                                                                        +9

                                                                                        Есть одна древняя рекомендация - не держать все авторитативные NS в одной IP-сети класса C.

                                                                                        По хорошему, со времён внедрения CIDR она должна звучать как "не держать все авторитативные NS в одной AS".

                                                                                          +8
                                                                                          Для отказоустойчивости надо иметь DNS в разных ASN, которые должны управляться отдельно, т.е. так, чтобы такие проблемы с BGP анонсами не становились глобальными.
                                                                                            +1

                                                                                            Я так неверной строчкой в Ansible продовые сервера положил разом. Кластер, вся фигня, но не спасло от обычной ошибки в конфиге.

                                                                                              +5

                                                                                              04.10.21 в 16:58 смею предположить?

                                                                                        +9

                                                                                        >А потом, что-то пошло не так.

                                                                                        А потом все стали переходить от децентрализованной модели изначальной сети к централизованной, где есть выделенные точки управления всей сетью. Руками ходить на каждое отдельное устройство всем надоело, решили разливать изменения всякими модными зумерскими ansible'ами, использовать REST API, NET CONF и прочие централизованные вещи. И вот одно неосторожное движение и вместо единичного отказа лежит уже вся инфраструктура.

                                                                                          +4

                                                                                          netconf и rest api не имеют никакой связи с централизацией. rest api может вызываться/выставляться наружу микросервисами, конфиги по netconf тоже заливаются/принимаются микросервисами.

                                                                                          Руками никто никуда не ходит, потому что рук не хватит в энтерпрайзе и хайлоаде. Для этого используется ETSI NFV MANO. Другое дело, что внешний/внутренний периметр доступа есть в любой системе, хоть централизованной, хоть нет и если положить его весь, то может оказаться сложным удаленно его поднять обратно. Это я вам как ответственный бумер сообщаю.

                                                                                          Другое дело, что "положить его весь" не должно быть доступно одной группе людей, это факт. Проблема, похоже, действительно в централизации, но не архитектуры инфраструктуры, а ролей доступа к настройкам BGP. Возможно также частично проблема, а точнее задержки в её решении, заключаются и в децентрализованности BGP.

                                                                                            +1

                                                                                            Можно было просто разные подсети анонсить из разных ASN, да ещё и с разных точек и ДЦ. Плюс, иметь DNS-серверы в разных ДЦ, в разных подсетях.

                                                                                              +2

                                                                                              У них все так и было. Но судя по последнему отчету, они потеряли всю backbone network между дата центрами из за ошибки внесения изменений в конфигурацию роутеров (то самое централизованное управление скорее всего, про которое я писал выше). А их днс настроены так, что если теряют связь с основными сервисами, то убирают анонсы по BGP для своих адресов (считается, что данный ДЦ сломался и не надо роутить на него пользователей). И вот так получилось, что все их ДНСы во всех ДЦ потеряли связь по внутренней Backbone сети с каким то центральными сервисами и отозвали BGP анонсы.

                                                                                              В целом моя мысль подтверждается - виной всему излишняя централизация, которая смывает границы "домена проблемы". Сетевые протоколы всегда строились так, чтобы "домен проблемы" (объем затрагиваемых сервисов и устройств в случае точечного сбоя) был как можно меньше. Но централизованное управление ломает этот принцип и раздувает "домен проблемы" до максимальных значений, вопреки изначальному принципу.

                                                                                        +1

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

                                                                                          +19

                                                                                          У меня через 15 минут после падения фейсбука на время пропал проводной интернет от местечкового провайдера. Причем не просто трафик ходить перестал, а даже линки на оборудовании погасли.

                                                                                          Сначала думал, что у них какая-то завязка на сервисы фб, и только после прочтения этой статьи появилась уверенность, что админы, похоже, настолько не верили в столь масштабное падение, что не найдя у себя никаких видимых причин сбоя, просто на всякий случай ребутнули все железо в своей сети.

                                                                                            +4

                                                                                            админы, похоже, настолько не верили в столь масштабное падение

                                                                                            Чуваки из Cloudflare тоже первым делом полезли проверять со своей стороны. Правда их сервисы не так просто ребутнуть "на всякий случай".

                                                                                            Кстати, вспомнил, у меня тоже кабельный исчез на пару минут примерно в тоже время, что и лёг фейсбук

                                                                                              +2

                                                                                              Тоже самое было, отправил в ребут домашний роутер=)

                                                                                                0

                                                                                                Странное поведение, особенно провадеров))) Я если не работает какой-то ресурс - первым делом пытаюсь открыть другой)) если и тот не алле - прямо с микрота пингую 8.8.8.8. И только после этого ребутаю ролтер (гы) и звоню дудонить мозг провайдеру)

                                                                                              0

                                                                                              С 18:30 (по московскому) пропал проводной интернет с диагнозом "DNS lookup error". Перезагрузки роутера не помогали. Закончилась вся эта свистопляска где-то в 22-23 по московскому. Провайдер правда тоже так себе.

                                                                                              Место: ГДР, Дрезден.

                                                                                                +4
                                                                                                Вероятно, DNS серверы провайдера просто легли от массовых запросов от всех FB приложений его клиентов, которые ожесточённо пытались найти дорогу домой.
                                                                                                  +3

                                                                                                  На сотовых от хуавея новых тоже погас инет,так как телефоны проверяли его наличие пингуя что-то FB. Многие телефоны проверяют наличие инета пингуя 1.1.1.1. Вот если он погаснет...

                                                                                                  А он погаснет, так как Роскомнадзор уже мечтает его заблокировать.

                                                                                                    0
                                                                                                    Роскомнадзору не обязательно же блокировать пинги до 1.1.1.1, достаточно закрыть доставку tcp пакетов на 443 порт, чтобы перестал работать DoH.
                                                                                                      0
                                                                                                      Аналогичная ситуация была на телефоне huawei p30. Мобильный интернет не работал. При попытке подключиться к WiFi телефон писал что сеть якобы без доступа в интернет, хотя с другого телефона от WiFi интернет был. Так что очевидно что проверка наличия интернета как то завязана на сервисах FB.
                                                                                                    +2
                                                                                                    image
                                                                                                      0

                                                                                                      У меня провайдер локальный (довольно крупный) вообще умер на сутки! Ровненько одновременно с падением Фейсбука. По телефону - автоответчик "у нас авария, исправляем". Через час пришла смс "авария на магистральном кабеле". И только сегодня в обед кое-как заработало.

                                                                                                      Киев.

                                                                                                        0

                                                                                                        У меня тоже лежал провайдер домашний вместе с фб

                                                                                                        Екатеринбург

                                                                                                        0

                                                                                                        У меня MTS отрубился на несколько минут тоже.

                                                                                                        +19

                                                                                                        В стародавние времена, когда миллениалы ещё не пребывали в эйфории от удалёнки, а зумеры только начали появляться на свет, у бородатых сисадминов уже в ходу была такая примета: "Удалённая настройка сети - это к дальней дороге..." :)

                                                                                                        6 часов даунтайма как раз очень похожи на типичный экстренный перелёт :)

                                                                                                          +1

                                                                                                          Отличная идея! Вполне даже похоже.

                                                                                                          +1

                                                                                                          Может быть, я не понимаю, но BGP, это протокол прикладного уровня, поверх TCP. Он служит для динамического обновления маршрутов. Отсутствие BGP пакетов не должно сразу валить всю сеть.


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


                                                                                                          Или я не понимаю как работает Интернет?

                                                                                                            +2

                                                                                                            Написано: "маршруты были отозваны" (=удалены) - были сообщения обновления.

                                                                                                              +5

                                                                                                              Нет, интернет работает не так.

                                                                                                              Нет keepalive = сессия падает по hold time = всё принятое из нее удаляется. Hold time обычно секунд 180.

                                                                                                              Как сессии упадут - всем с кем есть BGP разошлются апдейты, те своим пирам разошлют и тд.

                                                                                                              Минут 10 - и префиксов фейсбука как бы и не было никогда :-)

                                                                                                                0

                                                                                                                А это всегда так работало? Потому что мне кажется, что коммуникации на нижних уровнях, как-то не должны зависеть от протокол прикладного уровня.

                                                                                                                  +5

                                                                                                                  Я так понимаю, вы сейчай про модель OSI говорите. Она концептуально-условная, служит только для для разделения "слоёв". Никаких реальных зависимостей там нет.

                                                                                                                  В реальности оказалось удобно обмениваться маршрутами через прокотокол построенный на TCP. Перенос BGP ниже - если, например, накостылять какой-нить MAC-BGP где будут только MAC-адреса в заголовках - смысла не имеет. Что так апдейты пропадут и l3 уйдёт, что так.

                                                                                                                    +2

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


                                                                                                                    Но пока этот самый демон активен — он управляет маршрутами, и может эти самые маршруты вовсе удалить. Что и делает при исчезновении партнёра, который эти маршруты передал.

                                                                                                                      –1

                                                                                                                      Ну, так гораздо понятнее. Выходит, что они себе сепуку сделали. Ведь, после падения сети, TCP тоже работать не будет. И восстановить маршруты не получится, так как BGP работает поверх TCP.

                                                                                                                        0

                                                                                                                        BGP -- не единственный способ управлять маршрутами. Достаточно задать маршрут вручную, и TCP поднимется. (Что, по-видимому, и было сделано.)

                                                                                                                          0
                                                                                                                          Нет, они именно починили BGP, а не руками загружали на магистральные маршрутизаторы партнёров статические маршруты до своих IP диапазонов.
                                                                                                                          +1
                                                                                                                          Вас не смущает, что DHCP тоже происходит до работы сети? Разумеется TCP работать будет. И они всего-то обрушили DNS. Кого-то до сих пор волнует DNS? Есть же facebookcorewwwi.onion и facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion

                                                                                                                          Все нормальные приложения тоже обязаны иметь ip fallback.
                                                                                                                            0

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


                                                                                                                            А вот что и правда у них наверняка отвалилось, это SSH и SNMP.

                                                                                                                      0

                                                                                                                      Падение BGP для внешних операторов - следствие какой-либо внутренней проблемы внутри ЦОД ФБ.

                                                                                                                      Такое часто бывает при редистрибьюции full view в IGP. Ложится вся сеть и определение первопричины занимает очень много времени (т.к. тасктрекеры тоже лежат).

                                                                                                                        +1

                                                                                                                        При редистрибьюции в igp не пропадут анонсы. С чего бы….

                                                                                                                          0

                                                                                                                          Правда?

                                                                                                                            0

                                                                                                                            Ну если только BGP роутер узнавал об этой сети из IGP, не имел интерфейсов в этой сети и не было прописано типа ip route x.x.x.x/x null 0. То да сеть пропадёт если роутеры igp отвалятся.

                                                                                                                            Я бы сделал ставку на «автоматизацию» как писали выше.

                                                                                                                              0

                                                                                                                              При случайной редистрибьюции full view в IGP (к примеру ospf) железка умирает на пересчете топологии, и все остальные - тоже. Может она, конечно, пристрелит процесс ospf - но это случается не всегда, да и маршруты из IGP перестают поступать - bingo!

                                                                                                                      0

                                                                                                                      У меня подгрузка ленты на фб перестала работать ещё за день до полного падения.

                                                                                                                        0

                                                                                                                        У меня дежавю. Такое ощущение, что буквально недавно - не больше года-двух - была статья про сбой в интернете и тоже связанный с BGP. И что-то с настройкой и обновлением роутеров. Не помню, что это было, и найти не могу.

                                                                                                                          +2

                                                                                                                          Да такое регулярно случается. То по глупости, то по умыслу и глупости (как кто-то там пытался через BGP у себя на территории блочить ютуб, в итоге заблочил его для половины мира). Все следствие того, что все эти протоколы разрабатывались давно, когда веб был уделом профессионалов и работал на доверии, в итоге корневые протоколы не содержат никаких адекватных защит от дураков и хакеров.

                                                                                                                        +1
                                                                                                                        А ведь это же гениально простая схема воздействия на рынок акций. К примеру, кое-кто заинтересованный решил закупиться по хорошей цене и пролил цену таким способом.
                                                                                                                          0

                                                                                                                          Технология стара, как сама биржа. Забыл уже, как там эти называются, которые скупают акции на нижнем пике цены.. медведи, что ли... И по головке за такое не гладят. Один из громких случаев с уголовщиной и посадками был во времена, когда Порше в начале нулевых превратился из гадкого утенка, в лебедя, акции затем перераздулись, а потом рухнули. В этом поучастввовал, а затем на этом сырал дальний родственник семьи Порше, который в то время владел фольксом, и купил порше с потрохами. Позже где-то в конце нулевых разразился скндал. Кто там сел - уже и не упомню, но случай знатный.

                                                                                                                            0
                                                                                                                            Схема потому и идеальна, что концов не найдешь! Ну пожурят ответственного инженера, «допустившего» ошибку «где вы были с 8 до 11?» (Райкин). А тот, кому надо — купит акции по хорошей цене через различные хедж-фонды и концов не найдешь.
                                                                                                                            «Мой план прост и потому гениален» (Большой Лебовски) ))
                                                                                                                              0

                                                                                                                              Ради инетерса нужно будет через несколько дней посмотреть на рынок акций и цену Facebook.

                                                                                                                          0

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

                                                                                                                            0

                                                                                                                            Норм, много кто заметил это совпадение, такие мысли современному человеку должны автоматом в голову приходить – как гипотеза. Не обязательно же в неё верить.

                                                                                                                              0
                                                                                                                              Да вряд ли это ради той девки Haugen сделали.
                                                                                                                            +1

                                                                                                                            я счастливый человек. Абсл не заметил проблем с Интернетом и сервисами FB.

                                                                                                                            Машина стояла на качке торрентов. DNS в роутерах прописан Google, Яндекс, и че то еще бесплатное, провайдерское стер от греха. FB - зареган, но не пользуюсь. WA - раз в неделю. Insta ? меня там 3 раза банили. на 4-ый раз голых котиков постить, было как не с руки, на время сбоя.

                                                                                                                            А так. Когда кто-то мне начинает грить, что Интернет невозможно откл, я тихонько посмеиваюсь, и напоминаю, что погранзона 30 км, а где то и целые районы с областями.

                                                                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                                            Самое читаемое