Border Gateway Protocol. Лабораторная работа

Привет, Хабр! Моя первая статья и в ней я хочу представить небольшую лабораторную работу по конфигурации протокола BGP (Border Gateway Protocol) на маршрутизаторах Cisco. Многие из вас слышали что такое BGP, но не всем довелось опробовать данный протокол на практике. Именно для них и будет интересна данная лабораторная работа.
В статье будет мало теории, поэтому для тех кто впервые слышит о BGP отправляю сначала посетить это, это или, собственно, это.

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

Цель


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



Конфигурация


И так, мы хотим, чтобы соединение между маршрутизаторами A и C было основным для входящего и исходящего трафика, а соединение между B и D было резервным и использовалось только при аварии основного.

Конфигурация интерфейсов

Интерфейсы должны быть сконфигурированы в соответствии с таблицей:



Для Serial 1/1 маршрутизатора A:

R1(config)# interface S1/1
R1(config-if)# ip address 150.0.0.1 255.255.255.252
R1(config-if)# no shutdown

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

Конфигурация BGP

Каждый маршрутизатор должен иметь номер ASN (в соответствии со схемой), который определяет к какому AS принадлежит маршрутизатор. Плюс каждый маршрутизатор будет обслуживать две сессии: одна iBGP с маршрутизатором в той же AS для работы внутри автономной системы и одна eBGP с маршрутизатором находящимся в другой AS для работы между автономными системами. Сессии должны быть сконфигурированы по обе стороны соединения.

R1(config)# router bgp 65500
R1(config-router)# neighbor 150.0.0.10 remote-as 65500
R1(config-router)# neighbor 150.0.0.2 remote-as 100

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

Следующее, что сделаем – это воспользуемся нестандартным механизмом, предлагаемым компанией Cisco, next-hop-self. Суть его в том, что он позволяет на изменения адреса Next_Hop перед анонсированием другому маршрутизатору находящемуся в той же AS. Маршрутизатор изменяет значение атрибута Next_Hop на свой собственный адрес. Благодаря чему мы не должны конфигурировать внутридоменную маршрутизацию в каждой AS. Механизм этот должен быть сконфигурирован только между маршрутизаторами в одной и той же AS.

R1(config)# router bgp 65500
R1(config-router)# neighbor 150.0.0.10 next-hop-self

Опять же конфигурация остальных маршрутизаторов – самостоятельно.

Адресное пространство использованное в AS 65500 – 110.0.0.0/24. Чтобы симулировать такую сеть, подключенную к маршрутизатору, можно сконфигурировать на маршрутизаторе B интерфейс Loopback.

R2(config)# interface loopback 0
R2(config-if)# ip address 110.0.0.1 255.255.255.0

Затем маршрутизаторы должны анонсировать подсети, к которым имеют доступ. Маршрутизатор B анонсирует сеть 110.0.0.0 с маской 255.255.255.0, которую имеет на интерфейсе Loopback 0.

R2(config)# router bgp 65500
R2(config-router)# network 110.0.0.0 mask 255.255.255.0

Маршрутизаторы C и D будут анонсировать A и B только маршрут по умолчанию (маршрут, который будет использоваться для всего исходящего трафика с AS 65500).

R3(config)# router bgp 100
R3(config-router)# neighbor 150.0.0.1 default-originate

Управление исходящим трафиком

Если мы хотим, чтобы маршрутизаторы A и B использовали исключительно основное соединение для исходящего трафика, можно воспользоваться атрибутом Local Preference. По умолчанию атрибут имеет значение равное 100. Значение Local Preference выменивается между всеми маршрутизаторами находящимися в одной AS. Чем выше значение атрибута, тем выше приоритет соединения. Изменить значение Local Preference можно с помощью Route map.
Делаем соединение между A и C основным:

R1(config)# router-map primary
R1(config-route-map)# match ip address 1
R1(config-route-map)# set local-preference 150
R1(config-route-map)# exit
R1(config)# access-list 1 permit host 0.0.0.0

Затем:

R1(config)# router bgp 65500
R1(config-router)# neighbor 150.0.0.2 route-map primary in

Чтобы изменения Local Preference вступили в силу, необходимо сбросить предыдущие настройки сессии BGP.

R1# clear ip bgp *

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

Управление входящим трафиком

Мы хотим сделать так, чтобы маршрутизаторы C и D весь свой трафик направляли через основное соединение. Для этого мы можем воспользоваться атрибутом MED. Основное соединение должно получить меньшее значение (в нашем случае MED 20), чем резерв (MED 30). Делаем это с помощью того же Route map.

R1(config)# route-map trafic_out permit 10
R1(config-route-map)# match ip address 10
R1(config-route-map)# set metric 20
R1(config-route-map)# exit
R1(config)# access-list 10 permit host 110.0.0.0

R1(config)# router bgp 65500
R1(config-router)# neighbor 150.0.0.2 route-map trafic_out out

На маршрутизаторе B делаем аналогично со значением MED 50. И не забываем сбросить настройки на маршрутизаторах ISP, чтобы могли получить новые значения метрик.

Это все.
Спасибо за внимание!

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

Комментарии 9

    +1
    Хочу заметить, что часто значение MED фильтруется, поэтому метод с его изменением не является надёжным.
    Лучшим вариантом в данном случае было бы добавление AS (as-prepend) к параметру AS_PATH, тогда будет точно выбран путь с более коротким значением.

    Заменяем set metric 30 на set as-path prepend 65500 65500 65500 на роутере, канал к которому хотим сделать резервным для входящих подключений.
    На основном можно ничего не настраивать.
      +1
      Позволю не согласиться с первым Вашим утверждением. Есть опыт работы (BGP взаимодействие) с крупными и средними провайдерами. Под словом провайдер я понимаю не домосеть с BGP и 2 x /24. Так вот ни один из них не осуществляет такую процедуру, незачем. Во-первых параметр не транзитивный, а значит дальше AS провайдера не уйдет, во-вторых, суровый метод с припендом не всегда оказывается эффективен из-за того что на входящий трафик и так сложнее влиять (и поведение часто определяется вашим соседом), ну и при выборе пути до AS-PATH еще нужно дойти.

      Куда более элегантное и красивое решение — использование community. У хотя бы немного нормального провайдера присутствует политика и Вы точно можете определить что от него получаете, и что можете ему послать для влияния на те или иные процессы выбора маршрута. В конкретном случае, засылаете ему некое комьюнити говорящее установить для префиксов полученных по backup каналу lpref=50 (например), при lpref default = 100 (например).
      0
      Немного не по теме статьи, но думаю вы в курсе и сможете ответить на вопросы:
      На сколько тяжело сейчас получить AS для обычной коммерческой компании, деятельность которой не связана с ИТ напрямую? Особенно сейчас, когда все острее становится вопрос свободных ipv4 адресов. Или вся проблема в действительности надуманна?
      И еще момент вообще по архитектуре: есть ли какая-то возможность разделить блок адресов AS, например, для основного офиса и филиала? Или для филиала только если новую AS регистрировать со своим блоком адресов?
      На самом деле хоть в интернете и есть информация по BGP и вообще работе AS, реальных примеров у меня лично еще не было, очень плохо понимаю как это реально работает. Почему-то что BGP, что MPLS, у меня как-то плохо укладываются в понимание сетей :) Был бы рад, если бы посоветовали хорошую книгу по этой тематике.
        0
        Получить AS — элементарно. Получить ipv4 префиксы — практически нереально. Есть много вариантов решения проблемы, но все плохие (биржи адресов, левые аренды, в плоть до выкупа разорившихся домосетей). Ipv6 — you are welcome.

        И еще момент вообще по архитектуре: есть ли какая-то возможность разделить блок адресов AS, например, для основного офиса и филиала? Или для филиала только если новую AS регистрировать со своим блоком адресов?


        Первое что Вы должны понимать — анонсы сетей меньше /24 нормальным провайдером фильтруются. Если у Вашей организации CO и Branch, и как минимум 2х/24, то можно поиграться. Второе (хотя наверное начальное) — для чего Вам в бранче BGP? У Вас там какие-то ресурсы и их так много? Для себя мы конечно иногда такооооое придумывали...., но у нас была куча разного железа и нам было скучно ))).

        Если же все-таки привязаться к Вашей ситуации, то более рабочим является вариант анонса сетей где-то с Central Office и L2/L3 VPN для связи с регионами.

        Касательно изучения. Наверное лучшим вариантом являются хорошие курсы, где толковый инструктор закладываем Вам прочный фундамент, а дальше Вы уже сами активно впитываете знания и подкрепляете их опытом. Не все конторы готовы спонсировать в частности эти курсы (одни из недешевых). Начните с самых общих описаний и изложений, количество должно перейти в качество. И конечно практика!
          0
          То есть проблема ipv4 реально встала? ipv6, конечно, плохой выход на данный момент.

          По поводу анонса сетей, например, я получаю сеть /23, могу ли я отдать /25 для филиала не регистрируя новую AS? Ну или регистрируя, но с уже подчиненным нам блоком адресов. По поводу потребности, я ее вижу в провайдеро-независимости. ip адреса не сменятся и не исчезнут, отказоустойчивость будет нашей задачей.

          Курсы вещь понятная и, безусловно, полезная. Но по понятным причинам не всегда выполнимая. Приходится пытаться искать информацию самостоятельно.
            0
            По поводу анонса сетей, например, я получаю сеть /23, могу ли я отдать /25 для филиала не регистрируя новую AS? Ну или регистрируя, но с уже подчиненным нам блоком адресов. По поводу потребности, я ее вижу в провайдеро-независимости. ip адреса не сменятся и не исчезнут, отказоустойчивость будет нашей задачей.


            Я бы Вам рекомендовал двигаться планомерно, так как Вы пытаетесь решить задачу в лоб. Когда Вы познакомитесь с литературой — придет понимание необходимости тех или иных технологий. Дабы не заваливать эту тему шлаком, подумайте над тем что и как у Вас работает на текущий момент, какие проблемы хотите решить, выдвините требования и спросите, например, в Q&A. Я уверен что получите много дельных советов.
              0
              Соглашусь с вами.
              По этому и спросил про литературу, действительно хочется почитать про BGP в частности. Q&A пока закрыт для моей кармы.
                0
                Почитайте, например «Принципы маршрутизации в Internet. Самое полное описание протокола BGP 4.» Или другие книги от Cisco. Уверен, многие пробелы в знаниях исчезнут)
        0
        как мне кажется мало кто подключается к одному провайдеру двумя линками. А если подключатся с двум разным, то использование MED бессмысленно…
        реальный профит от as prepend и community, ну и анонс мелких сеточек если это возможно.

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

        Самое читаемое