BGP (Border Gateway Protocol) — это основной протокол динамической маршрутизации, который используется в Интернет.
BGP оперирует большими объемами данных (текущий размер таблицы для IPv4 порядка 450-500 тысяч маршрутов) и принципы его настройки и работы отличаются от внутренних протоколов динамической маршрутизации (IGP).
В локальных сетях наибольшее значение имеет скорость сходимости сети, время реагирования на изменения. И маршрутизаторы, которые используют внутренние протоколы динамической маршрутизации, при выборе маршрута, как правило, сравнивают какие-то технические характеристики пути, например, пропускную способность линков.
Но при выборе между каналами двух провайдеров, зачастую имеет значение не то, у какого канала лучше технические характеристики, а какие-то внутренние правила компании. Например, использование какого канала обходится компании дешевле. Поэтому в BGP выбор лучшего маршрута осуществляется на основании политик, которые настраиваются с использованием фильтров, анонсирования маршрутов, и изменения атрибутов.
Маршрутизаторы, использующие протокол BGP, обмениваются информацией о доступности сетей. Вместе с информацией о сетях передаются различные атрибуты этих сетей, с помощью которых BGP выбирает лучший маршрут и настраиваются политики маршрутизации.
Один из основных атрибутов, который передается с информацией о маршруте — это список автономных систем, через которые прошла эта информация. Это информация позволяет BGP определять где находится сеть относительно автономных систем, исключать петли маршрутизации, а также может быть использована при настройке политик.
Маршрутизация осуществляется пошагово от одной автономной системы к другой, согласно тем политикам, которые в них настроены. Все политики BGP настраиваются, в основном, по отношению к внешним/соседним автономным системам. То есть, описываются правила взаимодействия с ними.
Так как в задачи статьи не входит детальное описание принципов работы BGP, остановимся на этом кратком описании.
В конце статьи все утилиты, ресурсы и сайты со статистикой, которые использовались в статье, перечислены с кратким описанием. Там же даны пояснения некоторым терминам.
В ходе статьи, утилиты и статистическая информация, будут рассматриваться на примерах, для того чтобы было понятней в каких случаях они могут быть использованы.
Вся статистика, которая приведена в статье, актуальна на момент написания статьи и может отличаться при просмотре в последующие дни.
При изучении и настройке BGP очень полезными могут быть различные утилиты и статистические данные.
С точки зрения изучения BGP, они позволяют лучше понять, как работает протокол, как выбираются маршруты, какая текущая ситуация в Интернет с точки зрения различной статистики.
Например, первое, что, как правило, встречается при описании основ BGP, это то, что BGP работает между автономными системами.
Рисунок 1. С точки зрения BGP Интернет выглядит как множество соединенных между собой автономных систем.
На рисунке 1 изображена небольшая часть сети, относительно автономной системы 60953, которая будет использоваться в примерах (эта схема сгенерирована утилитой BGPlay).
Каждая автономная система, которая обозначена на схеме, на самом деле внутри состоит из множества маршрутизаторов (цветовые обозначениях, которые используются в схеме, будут объяснены далее).
Для того чтобы немного лучше понимать масштабы работы BGP, далее приведено немного общей статистики.
Количество префиксов и автономных систем с которыми работает BGP:
Рисунок 2. Общая статистика Интернет. Источник: http://bgp.he.net/report/netstats
На момент написания статьи, количество автономных систем было порядка 44 тысяч, а префиксов IPv4 более 500 тысяч.
Рисунок 3. Статистика по росту количества префиксов IPv4 за 500 дней. Источник: http://bgp.he.net/report/prefixes
Рисунок 4. Статистика о распределении автономных систем по странам (пятерка лидеров). Источник: http://bgp.he.net/report/world
В этом отчете можно также посмотреть более подробную информацию по каждой стране.
Например, перейдя в более подробное представление (необходимо перейти в подробный отчет в последнем столбце), можно посмотреть перечень всех автономных систем Украины, с информацией о том сколько префиксов IPv4 и IPv6 они анонсируют и какое количество соответствующих соседей у них есть.
Если присмотреться к количеству соседей различных компаний, то достаточно просто понять, что первые в списке, как правило, операторы связи.
Одна из первых вещей, которую изучает человек, решивший побольше узнать о сетях, это что такое IP-адрес, какие диапазоны адресов бывают и что есть, например, частный диапазон адресов (описан в RFС 1918). О котором говорится, что эти сети не будут маршрутизироваться в Интернет. Но, к сожалению, бывает так, что адреса частного диапазона попадают в анонсы BGP.
Можно посмотреть статистику по анонсам префиксов, которые не должны встречаться в Интернет (не только частный диапазон), но всё же анонсируются, и какая автономная система их анонсирует. Такие префиксы называются bogon (иногда термин bogon используется для описания адресов, которые не выделены официально какой-либо организации или зарезервированы, а частный диапазон адресов описывается отдельно).
Рисунок 5. Статистика по анонсам bogon. Источник: http://bgp.he.net/report/bogons#_bogons
Рисунок 6. Bogon-адреса и автономные системы, которые их анонсировали. Источник: http://bgp.he.net/report/bogons#_bogonsv4pfx
В отчете встречается сеть 192.168.1.0/24 из частного диапазона. Можно воспользоваться статистикой RIPE NCC [1] для того чтобы проверить когда этот адрес анонсировался в последний раз (информация о времени нужна для утилиты BGPlay).
Суммарная статистика по сети 192.168.1.0/24 - подробнее.
Первое, что отображает информация RIPE NCC, это то что это сеть частного диапазона адресов:
Рисунок 7. Информация о сети 192.168.1.0/24. Источник: https://stat.ripe.net/192.168.1.0/24#tabId=at-a-glance
У регистратора RIPE NCC есть проект RIS [2], который предназначен для сбора, хранения и обработки информации о маршрутизации в Интернет, и предоставления результатов всему сообществу Интернет. Информацию собирают коллекторы RIS, которые распределены по миру. Автономные системы других компаний устанавливают связь с коллекторами RIS и отправляют им всю информацию, которая им известна. За счет этого RIS предоставляет много интересной и удобной информации в виде различных утилит.
И о том, когда сеть 192.168.1.0/24 была видна на маршрутизаторах RIS:
Рисунок 8. Информация о том, когда сеть 192.168.1.0/24 была замечена последний раз маршрутизаторами RIS и какая автономная система её анонсировала. Источник: https://stat.ripe.net/192.168.1.0/24#tabId=at-a-glance
Зная информацию о времени, когда эта сеть была видна, можно воспользоваться утилитой BGPlay [3] и посмотреть как распространялась информация об этой сети.
На схеме видно, что в это время эта сеть анонсировалась двумя автономными системами (отмечены красным цветом). Подробнее об интерфейсе утилиты написано в последней части статьи.
Вы можете запустить утилиту BGPlay самостоятельно и посмотреть как эти анонсы добавлялись и удалялись в сети:
Рисунок 9. Анонс сети 192.168.1.0/24 в BGPlay
В этой части статьи использование различных утилит рассматривается на примере автономной системы 60953 (далее AS60953). Эта автономная система выполняет роль компании, которая недавно приобрела AS и свой блок адресов IPv4 и настроила подключение к двум провайдерам с использованием BGP.Для того чтобы посмотреть общую информацию о префиксе и автономной системе, можно воспользоваться утилитой whois [4]. Есть как графический вариант этих утилит, например, на сайте RIPE NCC, так и утилиты в командной строке.
Team Cymru предлагает свой вариант краткого вывода whois, который отличается компактным и удобным представлением информации.
Рисунок 10. Whois от Team Cymru
Кроме whois можно воспользоваться другими ресурсами, которые предоставляют не только регистрационную информацию как whois, но и другие статистические данные и информацию о префиксе или автономной системе.
Ресурсы, на которых можно посмотреть различную дополнительную информацию и статистику об определенной AS (на примере AS60953):
Далее примеры приведены с сайта RIPE NCC.
Рисунок 11. Общая информация об AS60953. Источник: https://stat.ripe.net/60953#tabId=routing
Рисунок 12. Информация о соседях AS60953. Источник: https://stat.ripe.net/60953#tabId=routing
AS60953 анонсирует один префикс 185.20.218.0/23 в Интернет и подключена к двум провайдерам (два соседа BGP). На рисунке 12 видно, что изначально AS60953 была подключена только к одному провайдеру, а через день-два подключилась ко второму. В конце статьи этот момент будет показан в динамике в утилите BGPlay.
Для настройки BGP характерно то, что управлять исходящим трафиком из локальной автономной системы клиента достаточно легко. И, что также важно, легко проверить, через какого провайдера идет исходящий трафик (особенно, если провайдеры используются в варианте основной/резервный).
Но когда выполняются настройки для управления входящим трафиком, то ситуация сложнее, как с точки зрения выбора правильной конфигурации, так и с точки зрения проверки корректности настроек.
Удобная и простая утилита для проверки политики для входящего трафика – looking glass (LG). Сервера LG позволяют проверить каким образом префикс виден в Интернет и через какого из провайдеров пойдет трафик идущий в эту сеть.
Как правило, на LG доступны такие команды (или часть из них):
На сайте www.bgp4.as собран перечень LG-серверов со всего мира. Все они отображают более или менее одинаковую информацию. Какие-то могут быть удобнее, но в любом случае количество их достаточно большое и можно выбрать более удобный (веб или в командной строке).
Рисунок 13. Пример приглашения LG-сервера. Источник: http://plg.netcologne.de/lg/
Рисунок 14. Пример вывода информации на LG-сервере для префикса 185.20.218.0/23. Источник: http://plg.netcologne.de/lg/
Для того чтобы посмотреть как префикс 185.20.218.0/23 видится соседями коллекторов RIS, можно воспользоваться поиском, который предоставляет информацию о том, какие маршруты используют соседи коллекторов и показывает атрибуты маршрутов.
Рисунок 15. Информация с соседей коллектора в Бразилии (RRC15, PTTMetro). Источник: http://www.ris.ripe.net/mt/rissearch.html
Один из способов управления входящим трафиком – использование AS path prepending (административное добавление автономных систем в путь, который анонсируется с префиксом BGP). Наименьшее количество автономных систем по пути к получателю – это один из основных критериев по которым BGP выбирает лучший маршрут. Поэтому, увеличив количество автономных систем, которые анонсируются вместе с префиксом соседям, можно повлиять на входящий трафик (этот метод не во всех случаях позволяет добиться необходимого результата, но является одним из самых простых и надежных). Для того чтобы это сделать, надо настроить политику работы с соседями так, чтобы префикс анонсировался провайдерам с добавленными нужное количество раз номерами локальной автономной системы.
Однако, при первом знакомстве с BGP может быть совершенно непонятно какое количество автономных систем добавлять для того чтобы добиться результата: 1, 2, 5 или, может быть, 20. Не понятно о каком порядке идет речь. И хотя LG-сервера позволяют проверить как повлияла политика и достаточное ли количество раз добавлена AS, информация о статистике может помочь сориентироваться в порядке значений.
Статистика о длине пути от коллекторов RIS к AS60953 представлена ниже.
Рисунок 16. Количество уникальных автономных систем на пути от различных коллекторов RIS до AS60953. Источник: http://www.ris.ripe.net/dashboard/60953
Рисунок 17. Фактическая длина пути в автономных системах от различных коллекторов RIS до AS60953. Источник: http://www.ris.ripe.net/dashboard/60953
В итоге, длина пути от AS60953 до коллекторов RIS в разных точка мира не превышает 11 автономных систем. Можно также посмотреть статистику по миру по длине пути через автономные системы (средние величины по миру, самые длинные пути и т.п.).
Для того, чтобы лучше разобраться в том, как в BGP происходит распространение информации о префиксах и с какой скоростью и как меняются маршруты, можно воспользоваться утилитой BGPlay.
BGPlay показывает всю информацию с точки зрения соседей коллекторов RIS. Это позволяет понять как именно входящий трафик попадает в выбранную автономную систему. Кроме того, утилита в динамике показывает как меняются пути со временем, при изменении настроек или добавлении новых подключений (который могут выполняться как с исходной AS, так и провайдерами по пути к коллекторам).
Рисунок 18. Пояснения к интерфейсу утилиты BGPlay
Для примера на рисунке выше и в следующем, используется AS60953. На схеме она обозначена красным цветом. Синим обозначены автономные системы, которые являются соседями коллекторов RIS. Коллекторы RIS собирают всё информацию от соседей, а утилита BGPlay обрабатывает её и представляет в графическом виде.
В примере выбран интервал времени, начиная с момента перед тем как AS60953 была подключена к первой автономной системе и до того момента как было настроено второе подключение. Две соседние автономные системы (AS35320 и AS61034) это провайдеры к которым подключена AS60953. Первым было настроено подключение к AS35320, а затем подключение к AS61034.
Ниже в анимированном рисунке показаны несколько изменений. Начинается показ с того, что отсутствуют подключения к другим автономным системам (как следствие, у коллекторов нет никаких маршрутов к AS60953). Затем показано как BGPlay отображает добавление нескольких путей по мере того как информация об AS60953 распространялась по сети (фактически в BGP передавался префикс, который анонсирует AS60953). Показано состояние сети перед подключением второго провайдера и после подключения второго провайдера (эти события произошли в разные дни).
Рисунок 19. Пример использования утилиты BGPlay для AS60953
Используя ссылку можно запустить утилиту BGPlay и посмотреть все эти изменения в динамике самостоятельно. Однако, расположение автономных систем будет не такое как в показанных рисунках, так как утилита сама их расставляет (вы можете самостоятельно расположить их так, как вам удобно, перемещая объекты).
Хотя BGP достаточно сложный в изучении протокол, и не всегда можно добиться желаемого результата при его настройке, использование различных утилит и статистической информации существенно облегчает задачу.
Теперь у вас в джентльменском наборе для работы с BGP:
Какие утилиты и ресурсы Вы используете для работы с BGP?
Сайты, на которых есть хорошие отчеты по BGP и различная статистика:
Ресурсы с утилитами BGP:
При подготовке статьи использовались такие материалы:
[1] RIPE NCC — один из пяти региональных интернет-регистраторов, которые отвечают за распределение интернет-ресурсов, за регистрацию и координацию деятельности, направленную на глобальную поддержку функционирования Интернета. Источник: http://ru.wikipedia.org/wiki/RIPE_NCC
[2] RIS (Routing Information Service) — проект RIPE NCC. Подробнее: http://xgu.ru/wiki/RIS
[3] BGPlay — утилита, которая отображает в графическом виде когда и как префикс или автономная система были видны соседям коллекторов RIS. Подробнее: http://xgu.ru/wiki/BGPlay
[4] Whois — утилита, с помощью которой можно получить информацию о префиксе из данных регистраторов. Подробнее: http://ru.wikipedia.org/wiki/WHOIS