оператор связи

30.11.2021

Бродкастовый шторм

author-avatar

Автор:

Заместитель руководителя технического отдела

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

На днях наши абоненты могли услышать не для всех понятное словосочетание — сетевой шторм. Часто, говоря о подобном явлении, можно услышать и другие словосочетания — бродкастовый или широковещательный шторм. Тут уже появляется указание на виновника этого явления — бродкаст (broadcast), он же широковещательный, пакет. 

Начнем по порядку. Все устройства, включенные в сеть передачи данных, общаются друг с другом, обмениваясь пакетами. Оказывается эти пакеты бывают разные, и у каждого вида свои правила обращения в сети. Например, когда мы скачиваем какой-то файл из Интернета, то имеем дело с unicast, а телевидение (в том числе для наших абонентов) нередко доставляется пакетами multicast. Не буду задерживаться на этих схемах маршрутизации (отмечу лишь, что еще существует anycast и geocast), сегодня нас интересует еще один представитель — broadcast. А какая же роль досталась ему? Бродкастовые, они же широковещательные, пакеты не несут нам данные, когда мы загружаем страничку в сети, не участвуют в доставке медиаконтента. Широковещательные пакеты вообще не участвуют в том, что мы имеем в виду, говоря об обмене информацией в сети. Так что же они делают?

Broadcast выполняет важнейшую роль в самом существовании сети. Как? Обратимся к примеру. Что делает воспитанный человек, придя на встречу с незнакомыми людьми? Обычно он всех приветствует и представляется. Его визави здороваются и представляются в ответ. После этого, вновь присоединившийся собеседник, занимает предложенное ему место. Так вот, в сетях происходит нечто очень похожее. Каждый раз когда вы подключаете к сети, например, свой гаджет, он посылает в сеть сообщение, содержащее mac-адрес (фактически аналог имени). В большинстве случаев, а в домашней сети всегда, устройство сразу запрашивает параметры сети, к которой оно оказалось подключено. Получив такое сообщение, маршрутизатор в сети (в нашем примере — WiFi-роутер) в ответ направляет устройству пакет с запрашиваемыми параметрами. После этого гаджет и роутер обмениваются еще парой сообщений, в которых подтверждается получение и принятие данных. Вот на этом этапе нам и необходим broadcast. Почему именно он? Тут нужно посмотреть на то, по каким правилам работает данный  тип маршрутизации. 

 Широковещательный пакет имеет в своем заголовке лишь наименование отправителя. Коммутатор, получив такое сообщение, перенаправляет его на все порты (кроме того, с которого пакет был получен). Таким образом все устройства, включенные в сеть, гарантировано получат запрос. Среди них обязательно будет сервер, который и выдаст нужные параметры. Ответ тоже будет широковещательным, чтобы все устройства сети получили эту информацию. Тут замечу, что broadcast используется не только для выдачи сетевых параметров. Устройства регулярно отправляют в сеть служебные данные, например, в виде ARP-запросов. Таким образом заполняются таблицы и коммутатор понимает какие MAC-адреса (устройства) живут с ним в одной сети. Уверен, в последующих статьях мы еще не раз вернемся к теме применения широковещательных пакетов.

Итак, наше устройство поприветствовало всех и запросило сетевые параметры, получило ответ от сервера, было подтверждено закрепление IP-адреса за нашим гаджетом. Это произошло благодаря broadcast. ЗдОрово! Всего 4 сообщения и пользователь уже наслаждается новым видеороликом любимого блогера (если, конечно, не забыл оплатить Интернет). Но все меняется, когда появляется ОН, широковещательный шторм.

Это происходит, когда в сети образуется кольцо (или петля)

Давайте представим. PC1 посылает broadcast пакет, его получает коммутатор SW1. По правилам SW1 пересылает пакет дальше (во все порты, кроме того, с которого пакет был получен), коммутаторам SW2 и SW3. Те, в свою очередь, рассылают его соседям. И среди получателей SW3 окажется SW2 (и наоборот), при следующей итерации получателем будет снова SW1. Фактически, первый коммутатор получит свой же пакет от коммутаторов 2 и 3. Он опять вышлет каждый пакет (т.е. уже 2) всем устройствам, и круг повторится. Количество пакетов начнет расти в геометрической прогрессии. И при этом скорость нарастания лавины будет очень высокой, потому что на очередную доставку уходит несколько наносекунд. Вот так и рождается классический широковещательный шторм. Приведенная выше схема условна. Чтобы получить кольцо, не требуется большого количества оборудования. Достаточно… одного роутера и неправильно организованного подключения.

Кабель, подключенный двумя концами в один коммутатор, которым в т.ч. является и роутер, образует ту же петлю. В локальной сети пользователя начнется бродкастовый шторм. Если при этом, приходящий из внешней сети, кабель будет подключен в LAN-порт, то шторм накроет и внешнюю сеть тоже. Почти мгновенно мощность шторма достигнет нескольких десятков тысяч пакетов в секунду, это количество будет ограничено лишь возможностями процессора устройства, создавшего шторм, либо пропускной способностью порта. Как показывает практика, даже 1-2 тысяч пакетов в секунду достаточно, чтобы значительно замедлить работу сети, усложнить управление устройствами в ней. При достижении значений 10-20 тысяч (это всего лишь 3 — 6 Мбит/с) пакетов в секунду, сеть может оказаться полностью парализованной. 

Что же мы получаем в итоге. Теоретически, без multicast можно обойтись, без unicast — можно, правда смысла будет немного от такой сети. А вот без broadcast, самого опасного из трех, сеть не работает. Кто сказал, что в сетевых правилах нет места иронии? От broadcast нельзя отказаться, его нельзя запретить на портах, но защититься от него можно. Есть различные механизмы защиты от петель и штормов. Например, на портах можно ввести ограничение по пропуску именно широковещательных пакетов. 

К сожалению, в нашем случае, в субботу 20 ноября уровня защиты оказалось недостаточно. Внезапно на маршрутизаторы ГК Март полился поток broadcast. Источником был абонентский порт коммутатора в районе ул. Маршала Жукова. Счетчики на портах ядра показали уверенные 20К пакетов в секунду. В какой-то степени нам повезло, если, конечно, в такой ситуации можно говорить об удаче. Пропускная способность порта позволяла выдать большее количество пакетов (до нескольких сотен тысяч). В результате для многих абонентов Интернет оказался практически недоступен, но мы сохраняли возможность управлять сетью и проводить исследования, необходимые для локализации проблемы. Как только специалисты  добрались до порта-источника, были переписаны настройки защиты, и шторм сошел на нет так же быстро, как и появился. Выводы из ситуации были сделаны. В настоящий момент мы модернизировали оборону от штормов, сделав ее эшелонированной. Теперь защита прописана на всех портах следования пакетов: начиная от абонентских, и заканчивая портами ядра сети.  

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