1. BGP
  2. 1. Введение в BGP...
  3. Introduction to BGP

Introduction to BGP

This lesson will be interesting! BGP (Border Gateway Protocol) is the routing protocol that glues the Internet together. I’m going to explain in which situations we need BGP and how it works.

Before you continue reading I should tell you to “forget” everything you know about routing protocols like RIP, OSPF and EIGRP so far…Those three routing protocols have one thing in common: they are all IGPs (Interior Gateway Protocols). We only use them within our autonomous system but they are not scalable to use for a network as large as the Internet.

RIP, OSPF and EIGRP are all different but they have one thing in common…they want to find the shortest path to the destination. When we look at the Internet we don’t care as much as to find the shortest path, being able to manipulate traffic paths is far more important. There is only one routing protocol we currently use on the Internet which is BGP.

1. Why do we need BGP?

Let’s start by looking at some scenarios so you can understand why and when we need BGP:

В наше время практически все подключено к Интернету. На рисунке выше мы видим клиентскую сеть, подключенную к провайлеру (ISP — Internet Service Provider). Провайдер следит за тем, чтобы у нас был доступ в Интернет и выделил нам oдин публичный IP-адрес, который мы можем использовать для доступа в Интернет. Чтобы убедиться, что все пользователи нашей локальной сети на клиентской стороне могут получить доступ к Интернету, мы используем NAT/PAT(Network / Port address translation) для преобразования наших внутренних частных IP-адресов в этот единственный публичный IP-адрес. Этот сценарий отлично подходит, если у вас есть только клиенты, которым нужен доступ в Интернет. В нашей клиентской локальной сети нам нужен только маршрут по умолчанию, указывающий на шлюз провайдера, и все готово. Для этого сценария нам не нужен BGP…

Maybe the customer has a couple of servers that need to be reachable from the Internet…perhaps a mail- or webserver. We could use port forwarding and forward the correct ports to these servers so we still only need a single IP address. Another option would be to get more public IP addresses from our ISP and use these to configure the different servers. For this scenario we still don’t need BGP…

What if I want a bit more redundancy? Having a single point of failure isn’t a good idea. We could add another router at the customer side and connect it to the ISP. You can use the primary link for all traffic and have another link as the backup. We still don’t require BGP in this situation, it can be solved with default routing:

  • Advertise a default route in your IGP on the primary customer router with a low metric.
  • Advertise a default route in your IGP on the secondary customer router with a high metric.

This will make sure that your IGP sends all traffic using the primary link. Once the link fails your IGP will make sure all traffic is sent down the backup link. Let me ask you something to think about…can we do any load balancing across those two links? It’ll be difficult right?

Your IGP will send all traffic down the primary link and nothing down the backup link unless there is a failure. You could advertise a default route with the same metric but you’d still have something like a 50/50% load share. What if I wanted to send 80% of the outgoing traffic on the primary link and 20% down the backup link? That’s not going to happen here but with BGP it’s possible.

This scenario is a bit more interesting. Instead of being connected to a single ISP we now have two different ISPs. For redundancy reasons it’s important to have two different ISPs, in case one fails you will always have a backup ISP to use. What about our Customer network? We still have two servers that need to be reachable from the Internet.

In my previous examples we got public IP addresses from our ISP. Now I’m connected to two different ISPs so what public IP addresses should I use? From ISP1 or ISP2? If we use public IP addresses from ISP1 (or ISP2) then these servers will be unreachable once the ISP has connectivity issues.

Вместо того чтобы использовать IP-адреса провайдера, мы получим собственные публичные IP-адреса. Учёт белых публичных IP-адресов поддерживается IANA (Internet Assigned Numbers Authority — http://www.iana.org/ ). IANA распределяет публичные IP-адреса между несколькими крупными региональными регистрирующими компаниями, такими как RIPE или ARIN. Каждый из них выделяет IP-адреса провайдерам или крупным организациям.

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

Если вам интересно, вот обзор адресного пространства IPv4, которое было выделено IANA:

IANA IPv4 address space

2. Автономные системы

Помимо получения публичного адресного пространства, мы должны подумать об собственной AS (Autonomous System):

AS — это коллекция сетей в одном административном домене, иными словами сети под единым управлением организации. Интернет — это не что иное, как совокупность автономных систем соединённых между собой. Внутри автономной системы мы используем IGP, например OSPF или ISIS.

Для маршрутизации между автономными системами мы используем EGP (external gateway protocol). На сегодняшний день существует единственный EGP, и это BGP.

Так как же получить собственную автономную систему с номером? Точно так же как и с публичным адрессным пространством — нужно зарегестрировать её.

Номер автономной системы 16-битный, из этого следует что у нас есть всего 65535
номеров AS. Как и у IP-адресов, у AS есть частные и публичные диапазоны:

  • 1-64512 — это публичные уникальные номера AS
  • 64512-65535 — это частные номера AS

Если вам интересно, то можете попробовать найти номер AS вашего интернет-провайдера:

UltraTools AS Information Lookup

У BGP есть две разновидности:

  • External BGP: используется для маршрутизации между разными автономными системами
  • Internal BGP: используется для марщрутизации внутри автономной системы(как IGP)

3. BGP анонсы

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

CIDR Report

В Интернете есть несколько looking glass-серверов. Это маршутизаторы, которые имеют полный публичный доступ, с которых вы можете посомтреть таблицу маршрутизации Интенета. Посомтреть можно тут:

Looking glass servers

Пролистайте страницу вниз до “Category 2 – IPv4 and IPv6 BGP Route Servers by region (TELNET access)”. Там вы сможете подключиться к этим устройствам и посмотреть BGP и таблицы маршурутизации с помощью комманд show ip route / show ip bgp.

Итак, значит когда мы включаем BGP на нашем маршрутизаторе мы сразу полкчаем всю таблицу маршрутизации интернета (987 тыс. префиксов)? Ну взависимости от настроек.. Давайте рассмотрим несколько примеров:

На рисунке выше наша клиентская сеть имеет номер автономной системы (AS 1) и адрестное пространство 11.11.11.0/24. Мы подключены к двум разным провайдерам с разными автонономными системами( AS2 и AS3) и адресным пространством (30.0.0.0/24 и 20.0.0.0/24). Мы можем взаиможействовать с остальной частью интернета через обоих провайдеров.

Используя BGP мы анонсаируем наше адресное пространство провайдерам. Но что будут анонсировать провайдеры в сторону нашего клиента по BGP? Есть несколько вариантов:

  • Анонсируют только маршрут по умолчанию
  • Анонсируют маршрут по умолчанию и частичную таблицу маршрутизации
  • Анонсируют полную таблицу маршрутизации Интернета (full view)

Давайте рассмотрим все три варианта.

3.1 Маршрут по умолчанию

Получение маршрута по умолчанию требует меньше всего ресурсов на клиентских маршрутизаторах, поскольку есть только одна запись в таблице маршрутизации для связи с внешним миром. Клиентский маршрутизатор будет анонсировать в сторону обоих провадйеров всю свою сеть 11.11.11.0/24, которые в свою очредь будут анонсировать её в другие AS. Недостатком этой конфигурации является то, что наша клиентская сеть не знает, что находится за ISP1 и ISP2, связь есть за счёт маршрута по умолчанию, но это может привести к неоптимальной маршрутизации.Если у нас есть только маршруты по умолчанию, то мы будем направлять весь трафик к одному из провайдеров.

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

Наша клиентская сеть получила маршруты по умолчанию от обоих провайдеров и выбрала ISP1 для отправки всего трафика. Это означает что если нам нужно будет отправить трафик до подсети 30.0.0.0/24 (ISP2), он сначала пойдёт на ISP1, а уже потом на ISP2. Это не проблема, но это просто не оптимально.

3.2 Частичная таблица маршрутизации

Также мы можем получить частичную таблицу маршрутизации вместе с маршрутом по умолчанию. Частичная таблица маршрутизации, например, может включать в себя все IP-адреса, которые провайдеры назначили своим клиентам.
Как и в реальной жизни, чем больше вы знаете, тем лучше для вас(Поговорка «Меньше знаешь, крепче спишь» тут не подходит 🙂 ). В мире машрутизации чем больше маршрутной информации есть, тем лучше и оптимальнее будет выбор направления трафика. Ну и, что логично, будет меньше проблем с неоптимальной маршрутизацией, по сравнению с тем, когда мы получаем только маршрут по умолчанию.

3.3 Полная таблица маршрутизации Интернета

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

4. Дистанционно-векторный

У нас есть 4 автономные системы которые запустили у себя BGP, чтобы обмениваться маршрутной информацией. В AS 1 есть сеть 11.11.11.0/24 которая анонсируется в AS 2, AS 3 и AS 4.
Если мы посмотрим на таблицу BGP на роутере AS 4, то мы увидимо не тольок подсеть 11.11.11.0/24, но путь (Path) через который нужно пройти, чтобы до неё добраться:

AS4#sh ip bgp 
BGP table version is 2, local router ID is 10.10.10.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  11.11.11.0/24    10.10.1.1                              0 3 2 1 i

С помощью команды show ip bgp мы можем увидеть что роутер знает о подсети 11.11.11.0/24, next-hop для достижения маршрута это 10.10.1.1 и Path - 3 2 1 — это автономные системы, через которые мы должны пройти, чтобы попасть в эту сеть.

5. Выбор маршрута в BGP

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

BGP ползволяет нам использовать политики маршрутизации на уровне автономных систем. На рисунке выше изображены 9 автономных систем, в AS 9 у нас есть сеть 22.22.22.0/24. Если мы посмотрим на AS 1, то можем увидеть что есть большое колличество путей по которым мы сможем добравть до подсети 22.22.22.0/24.

Значит ли это, что сетевой администратор в AS 1 может выбрать путь по которому будет идти трафик? Не совсем, по следующим причинам:

  • Вы можете выбрать пути выхода трафика… AS 1 может отправялть трафик в AS 3 или AS 4, но вы не принимаете решения о маршрутизации для других автономных сиситем.
  • Каждая автономная система будет анонсировать только лучший путь к нашей автономной системе. AS 1 узнает о наилучшем пути только от AS 2 и AS 4, если только их наилучший путь не отключится(при авариии).. только тогда вы узнаете о втором лучшем пути.

BGP использует BGP-атрибуты для выбора лучшего пути, прочитать об этом можете прочитать в уроке [[BGP-атрибуты и выбор пути]].

6. Заключение

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

Если у вас возникли вопросы, не стесняйтесь оставлять комментарии!

#bgp #routing #cisco


Leave a Reply

Your email address will not be published. Required fields are marked *

How can we help?