Прим. перев.: в этой статье инженеры онлайн-сервиса 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. от переводчика

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

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


  1. idelgujin
    05.10.2021 08:15
    +9

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


    1. esc
      05.10.2021 08:31
      +9

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


      1. ivanezko
        05.10.2021 15:46
        +1

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


        1. willyd
          05.10.2021 15:57
          +3

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

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


          1. dartraiden
            07.10.2021 02:07

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


        1. NikitchenkoSergey
          05.10.2021 17:29
          +8

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


          1. bolk
            05.10.2021 21:34

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


            1. matshch
              05.10.2021 21:50
              +2

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


              1. bolk
                05.10.2021 22:40
                +1

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


                1. rafuck
                  05.10.2021 23:16

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


              1. x512
                07.10.2021 16:12
                -1

                А почему нельзя сохранить время загрузки этого скрипта с сайта А и отдавать сайту Б с такой же задержкой?


                1. matshch
                  08.10.2021 11:29

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


      1. Semen55338
        05.10.2021 17:07

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


        1. izogfif
          05.10.2021 18:06
          +4

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


          1. johnfound
            05.10.2021 18:37
            +2

            Разве нет?

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


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


            1. hiewpoint
              05.10.2021 21:46

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


            1. Gugic
              05.10.2021 22:42
              +1

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


              1. khegay
                06.10.2021 10:44
                +1

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


            1. Wendor
              06.10.2021 15:16
              +1

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


          1. Semen55338
            06.10.2021 11:17

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


      1. select26
        05.10.2021 18:17
        +1

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


        1. Gugic
          05.10.2021 22:46
          +1

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


        1. VitalKoshalew
          06.10.2021 04:41
          +1

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

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


          1. select26
            06.10.2021 10:31

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


          1. kost
            06.10.2021 19:09

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


            Можно чуть подробнее об этом?
            Ссылку на стандарт? И «много» — это сколько?


            1. VitalKoshalew
              07.10.2021 02:24
              +1

              RFC2616 §8.1.4

              A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.

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


              1. johnfound
                07.10.2021 15:36
                -2

                RFC-2119:


                SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that
                there may exist valid reasons in particular circumstances when the
                particular behavior is acceptable or even useful, but the full
                implications should be understood and the case carefully weighed
                before implementing any behavior described with this label.

                Если очень хочется, то можно.


    1. Akuma
      05.10.2021 09:19
      +6

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


      1. Acuna
        05.10.2021 23:15
        -4

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


        1. grumbler66rus
          12.10.2021 11:19

          В описываемом вами сценарии все сайты, размещённые на зарубежных хостингах, будут недоступны


          1. Acuna
            12.10.2021 16:51
            -3

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


    1. Ansud
      05.10.2021 10:18
      +13

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


    1. fishHook
      05.10.2021 14:12

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


      1. Acuna
        05.10.2021 23:16
        +1

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


    1. susnake
      06.10.2021 11:05

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


    1. pavelsc
      06.10.2021 13:45

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


  1. major-general_Kusanagi
    05.10.2021 08:38
    +4

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


    1. Djeux
      05.10.2021 08:48
      +9

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

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


      1. Rohan66
        05.10.2021 09:48
        +3

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


        1. khabib
          05.10.2021 10:07
          +3

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


          1. andreishe
            05.10.2021 10:18
            +8

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


            1. khabib
              05.10.2021 10:44
              +2

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

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


            1. vtitans
              06.10.2021 04:27

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


              1. cepera_ang
                06.10.2021 08:19
                +3

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


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


          1. slarionoff
            05.10.2021 10:24
            +4

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


        1. mehos
          05.10.2021 10:45
          +3

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


          1. Rohan66
            05.10.2021 10:50
            +9

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


            1. morijndael
              05.10.2021 16:59
              +5

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


            1. mehos
              01.11.2021 11:31

              Хотел бы я на это посмотреть, в случае с ростовым турникетом:)


  1. anonymous
    00.00.0000 00:00


    1. F0iL
      05.10.2021 09:26
      +5

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

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


  1. Maksmsk
    05.10.2021 08:44
    +20

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


    1. shurup Автор
      05.10.2021 08:46
      +5

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


      1. ermouth
        05.10.2021 09:16
        +1

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

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


        1. Revertis
          05.10.2021 16:11

          1. tyomitch
            05.10.2021 16:36
            +2

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


          1. ermouth
            05.10.2021 16:48

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


            1. Revertis
              05.10.2021 19:12
              +1

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

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

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

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



        1. Aleksandr-JS-Developer
          05.10.2021 18:27
          -1

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

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


    1. select26
      05.10.2021 18:24
      +3

      У нас много ребят в 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. anonymous
    00.00.0000 00:00


  1. v1000
    05.10.2021 09:05
    +4

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

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


    1. HenryPootle
      05.10.2021 18:26
      +4

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


    1. bolk
      05.10.2021 21:37
      +2

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


      1. gudvinr
        05.10.2021 22:31
        +3

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


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


        1. bolk
          05.10.2021 22:43

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


          1. dissable
            06.10.2021 04:28
            +2

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


      1. Muzzy0
        05.10.2021 23:00
        +4

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


        1. mrBarabas
          06.10.2021 01:32
          +1

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


        1. johnfound
          06.10.2021 01:42

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


        1. bolk
          06.10.2021 07:22

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


        1. DonAgosto
          06.10.2021 09:56

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


          1. Muzzy0
            10.10.2021 10:33

            добавить пару этажей в проект к уже строящемуся дому
            А как насчёт несущие конструкции подвинуть, чтобы планировку изменить? ;)


    1. gavk
      06.10.2021 06:00
      +3

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


  1. rumatavz
    05.10.2021 09:08
    +7

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

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

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


    1. Maksmsk
      05.10.2021 09:16
      +11

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


    1. Maksmsk
      05.10.2021 09:18
      +11

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


  1. chilicoder
    05.10.2021 09:13
    +4

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


    1. ekrokhin
      05.10.2021 12:18
      +13

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


    1. F0iL
      05.10.2021 12:42
      +6

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


      1. evgenyk
        05.10.2021 14:01
        +19

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


        1. F0iL
          05.10.2021 14:24

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


          1. evgenyk
            05.10.2021 15:51
            +3

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


            1. chilicoder
              05.10.2021 16:53

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


  1. bulatsir
    05.10.2021 09:18
    +12

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


    1. FedorovDimulya
      05.10.2021 15:49
      +1

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


      1. shurup Автор
        05.10.2021 15:54

        Вот тут теперь что-то появилось.


    1. Revertis
      05.10.2021 16:15
      +2

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


      1. myz0ne
        05.10.2021 16:33
        +1

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

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


        1. Calc
          11.10.2021 23:01

          Ну так автономная система отвалилась, а IP у них в собственности. Вот и привет


          1. myz0ne
            12.10.2021 18:55

            Что вы подразумеваете под "автономная система отвалилась"? Изначально подразумевалось что связанность роутеров с миром осталась, просто пропала часть анонсов.

            В подтверждение: их static.xx.fbcdn.net (сервера, обслуживающие этот ип) оставался доступен и вполне отдавал статику для клиентов у кого не протух кеш днс (или есть запись в hosts).

            AS у серверов статики (31.13.84.0/24 is announced by AS32934) и у ДНС (129.134.30.0/24 is announced by AS32934) одинаковые, т.е. получается что роутеры связанность имели. Как минимум в части ДЦ. И соответственно возник вопрос - почему анонс по ipv6 для серверов обслуживающих ДНС был, но при этом сами сервера не отвечали.


  1. MartiniStar
    05.10.2021 09:22

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

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


    1. DarkGenius
      05.10.2021 09:28
      +2

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


      1. u007
        05.10.2021 09:35
        +1

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


        1. verydrinkingman
          05.10.2021 10:15
          +2

          или купил...)


  1. mi76554
    05.10.2021 10:07
    +1

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

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


    1. tyomitch
      05.10.2021 10:20
      +9

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


    1. Calc
      11.10.2021 23:03

      Ну автономная система анонсирует айпишники в глобальную сеть. Днс сервера у них свои и на своих айпишниках (странно что нет резерва в другой AS). Ну а дальше просто каскад. Нет ИП, нет ДНС, нет КЭША, нет данных


  1. askv
    05.10.2021 10:13
    -13

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


  1. johnfound
    05.10.2021 10:27
    +13

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

    ...


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

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


    1. tyomitch
      05.10.2021 10:40
      +35

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

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


      1. Kvakosavrus
        05.10.2021 13:39
        +4

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

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

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


        1. up40k
          05.10.2021 14:38
          +9

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

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


        1. hiewpoint
          05.10.2021 15:56
          +8

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


          1. 1A1A1
            05.10.2021 17:32
            +1

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


            1. mishutka_ua
              06.10.2021 02:30
              +6

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


    1. xeonz
      05.10.2021 12:03
      +9

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

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


      1. booyakacrew
        05.10.2021 14:29
        +5

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

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

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


        1. Revertis
          05.10.2021 16:20
          +1

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


          1. xeonz
            06.10.2021 11:32
            +2

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

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


  1. FlashHaos
    05.10.2021 11:19

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


  1. quwy
    05.10.2021 14:26
    +20

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

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


    1. Aleksandr-JS-Developer
      05.10.2021 17:15
      +4

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

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

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


      1. Tab10id
        05.10.2021 20:55
        +2

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


  1. anonymous
    00.00.0000 00:00


    1. Krasnoarmeec
      05.10.2021 19:14

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

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


      1. hiewpoint
        05.10.2021 20:35
        +4

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


      1. Sap_ru
        06.10.2021 00:24
        +3

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

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


        1. hiewpoint
          06.10.2021 13:45

          Роскомнадзору не обязательно же блокировать пинги до 1.1.1.1, достаточно закрыть доставку tcp пакетов на 443 порт, чтобы перестал работать DoH.


        1. ermak0ff
          06.10.2021 15:34

          Аналогичная ситуация была на телефоне huawei p30. Мобильный интернет не работал. При попытке подключиться к WiFi телефон писал что сеть якобы без доступа в интернет, хотя с другого телефона от WiFi интернет был. Так что очевидно что проверка наличия интернета как то завязана на сервисах FB.


    1. tuxi
      06.10.2021 01:42
      +2

      image


    1. Teokar
      06.10.2021 04:29

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

      Киев.


      1. debagger
        06.10.2021 12:32

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

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


    1. Meklon
      06.10.2021 09:31

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


  1. saaivs
    05.10.2021 14:38
    +21

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

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


    1. Zhurikello
      05.10.2021 16:31
      +1

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


  1. johnfound
    05.10.2021 14:40
    +1

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


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


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


    1. Elsajalee
      05.10.2021 14:51
      +2

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


    1. YaDr
      05.10.2021 16:32
      +5

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

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

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

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


      1. johnfound
        05.10.2021 17:34

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


        1. YaDr
          05.10.2021 18:07
          +5

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

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


        1. mayorovp
          05.10.2021 22:56
          +2

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


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


          1. johnfound
            06.10.2021 01:38
            -1

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


            1. tyomitch
              06.10.2021 09:06

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


              1. hiewpoint
                06.10.2021 13:49

                Нет, они именно починили BGP, а не руками загружали на магистральные маршрутизаторы партнёров статические маршруты до своих IP диапазонов.


            1. Balling
              06.10.2021 09:13
              +1

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

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


            1. mayorovp
              06.10.2021 10:13

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


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


        1. Calc
          11.10.2021 23:07
          +1

          Вот вы пошли в IANA и купили айпишники. Вам надо сообщить миру о том, что они у вас есть. Тут включается AS + BGP. Вот кто то что то сделал и по таймауту эти связи ушли + спецы не могли достучаться до серверов (через интернет ходят?).
          Тут либо надо было находиться внутри сети L2/L3 с наличием IP, либо топать в офис пешком


    1. yushkin
      05.10.2021 16:38

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

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


      1. Maksmsk
        05.10.2021 19:59
        +1

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


        1. yushkin
          05.10.2021 21:19

          Правда?


          1. Maksmsk
            06.10.2021 10:06

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

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


            1. yushkin
              06.10.2021 13:01

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


    1. Calc
      11.10.2021 23:05

      Автономная сеть перестала анонсировать себя в глобальной сети, пул айпишников выпал по таймауту.


  1. yesasha
    05.10.2021 22:39

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


  1. lamer84
    05.10.2021 23:05

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


    1. JediPhilosopher
      05.10.2021 23:38
      +2

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


      1. DevAdv
        06.10.2021 00:49
        +3

        Год назад сам Cloudflare частично лежал из-за неправильного обновления BGP:
        https://blog.cloudflare.com/cloudflare-outage-on-july-17-2020/


        1. lamer84
          07.10.2021 11:34

          Точно, это был Cloudflare в прошлом году! Спасибо!


      1. Balling
        06.10.2021 09:16

        Содержит. См. RPKI.


      1. Diamos
        06.10.2021 10:56

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


        1. Maxim_Q
          06.10.2021 19:52

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


      1. vvzvlad
        10.10.2021 20:00
        +1

        Путаете стиль(медведи) и инсайдеров


  1. Diamos
    06.10.2021 01:00
    +1

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


  1. anonymous
    00.00.0000 00:00


  1. ncr
    06.10.2021 01:18

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


    1. ermouth
      06.10.2021 01:51

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


      1. Balling
        06.10.2021 09:18

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


  1. TakashiNord
    06.10.2021 07:09
    +1

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

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

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