Передача информации: маршрутизация, протоколы и операторы

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

Почти про всё ниже можно сказать «ну почти»­, потому как на практике может быть и не совсем так.  Но для начала будем считать, что так.

Интернет с технической точки зрения – это огромная система по передачи информации. Пишете ли вы сообщение в мессенджере, смотрите ли видео, шлёте и получаете фото, заходите на сайты онлайн-магазинов или госорганов, делаете там запросы и заказы – все это суть есть обмен данными. Которые через ваши персональные устройства – смартфоны, компьютеры и «умную»­ технику – уходят в Сеть. И уже там каким-то образом достигают (а иногда и не достигают) адресата. Вот как это происходит и как устроена система передачи данных интернета, или маршрутизация, мы здесь и расскажем.

У маршрутизации есть очень простое определение, тут не подкачала даже «Википедия»­: 

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

Иными словами, определение лучшего пути для обмена информацией.

Вот этим всем – передачей информации в интернете – управляют специальные устройства, маршрутизаторы, они же роутеры (от англ. router). Ну, конечно, не сами, а через человеков, их настраивающих, но это самые главные и важные железки. 

Такие устройства есть разного уровня: 

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

О работе вашего домашнего роутера

Вот с домашнего роутера-маршрутизатора и начнем, – он есть почти в каждом доме.

Да, ваш домашний маршрутизатор тоже важен – иногда его даже почтительно называют «интернет-центром». Но он важен только для вас и тех, кто живёт с вами рядом (в одной квартире или доме).

Ещё не так давно домашний маршрутизатор был роскошью и позволить себе его мог далеко не каждый. Постепенно они уверенно вошли в нашу жизнь и поселились в наших домах и квартирах. В чём его прелесть? Подключая маршрутизатор к интернету, вы в свою очередь можете самостоятельно подсоединить через него десятки различных личных устройств для выхода в интернет (смартфоны, ТВ, ноутбуки и компьютеры­ и прочее) и не уведомлять об этом своего оператора. 

Маршрутизатор создаёт отдельную сеть для вас, которая полностью в вашем распоряжении. Фактически, вы становитесь таким очень упрощённым оператором связи для своих устройств­. Вашему же оператору тоже облегчение – не нужно регистрировать каждое устройство абонента в своей сети, подать связь нужно только на одно устройство – ваш маршрутизатор.

Сегодня, в конце 2022 года, обычные пользователи покупают домашние маршрутизаторы со скоростью до 1 Гбит/с, – и это максимум, что нам могут подключить наши операторы связи в качестве канала в интернет для обычного пользователя. Тем не менее, энтузиасты уже покупают себе домашних монстров типа Asus ROG Rapture GT-AXE16000 с портами на 2,5 Гбит и 10 Гбит.

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

Операторские маршрутизаторы – это мощные устройства поставщиков интернета в ваши дома, т.е. провайдеров, которые обслуживают десятки и сотни тысяч абонентов. Лучшие их представители трудятся на скоростях 200 Гбит и 400 Гбит, с ожиданием скоростей в 800 Гбит и 1600 Гбит к 2025 году. И да, эти скорости можно ещё и складывать, используя одновременно несколько портов для передачи информации.

Насколько это быстро? Какая-нибудь огромная по сегодняшним меркам игра в 100 Гб скачается у вас дома на скорости 1 Гбит за 14 минут. В то время как маршрутизатор оператора может протолкнуть через себя такую игру за 2 секунды. И сможет за 0,5 секунды к 2025 году.

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

Маршрутизация у операторов связи

Передача информации в интернете – это не просто насыпанное навалом цифровое нечто. Для корректной транспортировки данных существует определенная система, если сказать проще – свой особый язык, правила которого описаны в протоколе. Это общепринятые правила работы с маркировкой, пересылкой информации, что-то вроде посылки с товарной накладной, в которой сразу видно: что-куда-откуда-как.

Cуществует не один протокол, разработано и используется в интернете несколько. Самый популярный и распространенный в мире на конец 2022 года – IPv4. Через него идет львиная доля трафика, т.е.всего массива информации-данных, что отправляют миллиарды пользователей интернета друг другу. Ему на пятки наступает более современный IPv6, через него передаётся по разным оценкам от 20 до 40 процентов всего трафика. Чтобы не перегружать статью и не путать читателя мы будем говорить в основном о протоколе IPv4.
Он работает не в одиночку, ему помогают несколько других протоколов, который все вместе называются стеком протоколов TCP/IP.

Как работает протокол IPv4

Протокол IP отвечает за адресацию и фрагментацию данных. Т.е. он формирует подписанные конверты (пакеты), заполняя несколько важных полей – конечно, среди них отправитель (IP-адрес) и получатель (IP-адрес). И, в случае необходимости, дробит бандероль на более мелкие конверты (если бандероль предательски не лезет в почтовую щель 🤷‍♀️).

Диапазон всех возможных адресов IPv4 начинается от 0.0.0.0 и заканчивается 255.255.255.255 включительно. Что дает нам 256^4=4,3 миллиарда адресов.

Итак, представьте, что вы – директор всей почты мира. У вас 4,3 миллиарда жителей и вам нужно сделать так, чтобы каждый из жителей мог общаться между собой.Если бы вы захотели сделать единый адресный справочник с таким количеством адресатов, то он бы получился книгой толщиной 4 километра. Искать в такой книге адрес каждого адресата занимало бы месяцы и годы. Понятно, что можно сделать оглавление, индексацию и как-то улучшить. Но ведь буквально такой объём ещё надо где то хранить, добавлять и убирать записи. Более того, такой справочник нужно держать в каждом почтовом отделении, и держать его актуальным.

Как решить эту проблему? Очевидно, что не пытаться делать единый справочник. Нужно лишь знать направление (страну, индекс), куда отправить письмо. А там местная почта сама разберется.

IPv4 и маршрутизация

По схожему принципу работает и маршрутизация в интернете. Только вместо стран и индексов используются 

  • адреса сетей (префиксы) и 
  • номера автономных систем (АС).

Соответственно, начальный адрес сети – это минимальный IP-адрес сети, её размер – количество IP-адресов.

При этом адрес начала сети плюс её размер называется префиксом

Выглядит префикс например вот так 17.0.0.0/8

где 17.0.0.0 это адрес начала, а 8 – её размер.

Количество адресов такой сети определяется очень просто, но по-айтишному: нужно 2 возвести в степень «32 минус 8»­ (та самая цифра 8 после «/»­ в нашем примере). Получится 2*24 = 16777216 адресов. Это очень большая сеть, 0,04% от всех адресов IPv4. Большое богатство по нынешним временам.

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

Маршрутизатору оператора в интернете важно знать только одно: куда отправить данные, чтобы они дошли до адресата. Маршрутизатор ориентируется только на адрес получателя данных. Адресов в Интернете много (и всё равно уже давно не хватает), и эти адреса, для экономии размера таблицы маршрутизации, объединяются в сети. 

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

Для этого в маршрутизаторе есть специальная таблица соответствия или таблица маршрутизации, которая содержит такую информацию: 

  • cеть с маской, которая говорит о размере сети 
  • куда выбросить пакет с адресом получателя в этой сети (адрес шлюза);

Маска сети – это часть более длинной формы записи префикса. 

Например, префикс 17.0.0.0/8 можно записать как 17.0.0.0  255.0.0.0, где 255.0.0.0 называется маской подсети, а 17.0.0.0 начальный её адрес. Маска 255.0.0.0 тоже показывает нам размер сети. Диапазон от 17.0.0.0 до 17.255.255.255 даёт нам те же 16777216 адресов, сколько а нас получилось выше – 256^3. 

Шлюз же – маршрутизатор, после которого начинается другая сеть.

Таблицы маршрутизации – «адресная книга»­

Таблица маршрутизации отсортирована по увеличению размера сети. Это значит,
что маршрутизатор выбирает, куда отправить информацию (пакет с ней) делает так: 

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

Находит совпадение – отправляет пакет в соответствующую сторону.

Не находит совпадения – проверяет следующую строчку из таблицы маршрутизации.

Если таблица уже кончилась, а путь так и не найден – выбрасывает пакет .

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

Если русский язык принять за протокол TCP/IP, то процесс выяснения «как пройти до адреса»­ у прохожего можно обозвать протоколом BGP.

Очень удобно. При этом, конечно, администраторы всё равно от скуки лезут править таблицы маршрутизации руками для того, чтобы всё работало ещё лучше. Впрочем, иногда такие руки приводят и к беде: неправильная запись в таблице маршрутизации может оставить без связи множество абонентов.

Происходит обмен маршрутной информацией, конечно, не сам по себе. Администраторы маршрутизаторов должны предварительно договориться между собой и установить соединение между маршрутизаторами, как ещё говорят, «поднять BGP сессию»­ ☝️

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

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

Кстати, присылаемая информация не обязана быть правдивой, и принимающий маршрутизатор не обязан использовать её «как есть»­ в своей таблице маршрутизации. Иногда возникают ошибки при настройке маршрутизатора, и он начинает присылать другим маршрутизаторам всякую чушь, что может вызвать сбои в связи. Редко, но бывают и специальные атаки такого характера, когда неправильные маршруты присылаются с целью саботажа определённых сетей. Поэтому защита «от дурака»­ тоже есть. Совсем правильные и педантичные админы фильтруют принимаемые маршруты, согласно указанной информации в базе данных одной из организаций, которая выдаёт IP, – RIPE (у них в свободном доступе информация о том, кому какие сети розданы). Т.е. если оператор вдруг решит анонсировать не свои префиксы, таки маршруты приняты не будут.

Иными словами: вот вам какие IP выдали, вы такие и анонсируете, и без самодеятельности!

Как администраторы выбирают, с кем установить соединение и начать обмениваться маршрутной информацией? 

Как правило, исходя из отношений «продавец — покупатель­ каналов связи» или обмена каналами связи (пиринг). Например, вы оператор и покупаете канал связи, или вы его продаёте другому оператору, или обмениваетесь с другим оператором каналами «ты мне – я тебе»­. Интересно, что вы, как оператор, можете подключить себе «на попробовать»­  каналы от разных операторов и BGP в автоматическом режиме определит, у кого связность лучше и направит больше трафика в этот канал.

Как применяются таблицы маршрутизации

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

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

Для префиксов из своей АС (собственного маршрутизатора) путь пустой. Это и понятно, до своих же абонентов нет никакого пути, они прямо тут – только руку протяни.

Для префиксов, отправляемых маршрутизаторам из другой автономной системы (другого маршрутизатора) ко всем отправляемым путям дописывается номер своей АС (например, у крупного российского провайдера «Вымпелком», известного нам под торговой маркой­  «Билайн»­, номер АС – 3216 ). В итоге получается такая строчка, состоящая из последовательности АС, выглядит это так: 14907 1299 3216 35168 42770. Т.е. буквально перечисляются все маршрутизаторы, которые надо пропрыгать, чтобы пакет достиг получателя.

Пример на пальцах: вот вы вдвоем абоненты «Билайна», и тогда путь трафика у вас простой. Вы можете не выходить за пределы АС 3216, провайдер маршрутизирует трафик внутри себя, вы оба целиком в его сети.

А если вы тут в «Билайне», и шлете фоточку родственникам в Новую Зеландию, то явно посылаемым данным придется уйти из АС «Билайна» и, как минимум, дойти до АС, которой владеет оператор вашего визави в Новой Зеландии. И попутно набор данных пройдет еще через АС других провайдеров, согласно наиболее короткому маршруту, заболтиво выбранному протоколом BGP.

Таким образом, чем дальше по BGP распространяется информация о каком-то префиксе, тем длиннее становится путь в соответствующих сообщениях.

Что учитывает ещё BGP-протокол?

«Длину»­ или сложность пути

Если маршрутизатор получает разные пути для одного и того же префикса, то он для добавления в свою таблицу BGP маршрутов выбирает тот, у которого путь короче. При равенстве пути – по другим параметрам. Администратор также может выбирать путь вручную, изменяя приоритет тому или иному пути. Обычно не из вредности, а для балансировки нагрузки на каналы связи.

Поддерживает актуальность «адресной базы»­ 

Когда в своей таблице маршрутизации путь изменяется, то соседям присылается сообщение с обновлением для соответствующего префикса. Таким образом происходит обновление маршрута для соседних маршрутизаторов и далее. Если префикс пропадает совсем – то рассылается сообщение с удалением маршрута. Таким образом «справочник»­ (таблица маршрутизации) поддерживается в актуальном состоянии.

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

Как ещё можно использовать BGP-протокол и что мы с ним делаем в iFreedomLab

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

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

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

iFreedomLab (IFL) берет маршрутную информацию, собранную роут-коллектором, и анализирует изменения маршрутов.

Какие можно сделать выводы из такой информации?

Например, мы смотрим, как изменяется связность российского сегмента интернета с мировым.

Для этого IFL берет пути из маршрутной информации, смотрит на АС, которые там упоминаются, и на их принадлежность к той или иной стране. Если мы видим, что после российской АС идет АС зарубежная, мы помечаем такую пару как трансграничную. Чем больше таких трансграничных пар, тем выше связность РФ с другими странами.

Пример: трафик из США в Казахстан на диапазон 208.80.153.193 идёт по пути автономных систем 14907 1299 3216 35168 42770. Красным выделена единственная российская автономная система, AS3216 PJSC «Vimpelcom». В этом пути мы дважды «проходим» границы России в интернете, и образуется две трансграничных пары:  1299 3216 и 3216 35168.

Далее, смотрим на количество вхождений АС в различные маршруты и получаем критерий важности АС в маршрутизации. Чем чаще АС упоминается в маршрутах, тем она важнее для маршрутизации всего интернета.

Каждая АС имеет владельца, конкретное юридическое лицо. Добавив информацию о юридических лицах, мы видим перечень операторов связи, от которых максимально зависит доступность интернета в РФ. Поскольку маршрутные данные накоплены за несколько лет, интересно также наблюдать в динамике, как изменялось влияние операторов на Интернет.

А ещё мы можем видеть информацию о сбоях в работе сети практически в реальном времени.

Мы получаем информацию от нашего роут-коллектора каждые пять минут. Это позволяет нам мониторить значительные изменения в маршрутной информации. Например, при авариях у крупных операторов значительно изменяется маршрутная информация – большое количество маршрутов пропадает и многие маршруты перестраиваются. Таким образом можно фиксировать сбои и отключения сети.

Эти и другие исследования доступны в разделе BGP по адресу: