Привет, Хабр!

BGP и OSPF — это протоколы, которые позволяют нам строить и поддерживать сети, способные справляться с огромным объемом данных и обеспечивать высокую доступность. BGP чаще всего используется для маршрутизации трафика между разными автономными системами (AS), в то время как OSPF является внутренним протоколом для построения маршрутов внутри одной AS.

Основы BGP и OSPF

Border Gateway Protocol (BGP) - это протокол маршрутизации, который используется для обмена информацией между разными автономными системами (AS). В простых словах, BGP отвечает за маршрутизацию трафика между различными доменами и провайдерами в интернете. Важно понимать, что BGP работает на уровне маршрутизации между AS и принимает решения, основанные на путях и атрибутах маршрутов.

Open Shortest Path First (OSPF) - это внутренний маршрутизационный протокол, который применяется в пределах одной автономной системы. Этот протокол оптимизирован для построения оптимальных маршрутов внутри сети, и он широко применяется в локальных и корпоративных сетях.

В отличие от BGP, OSPF ориентирован на региональные маршруты и распределение трафика внутри одной AS. Он использует алгоритм Дейкстры для нахождения наиболее кратких путей и строит топологическую карту сети.

Алгоритм Дейкстры
Алгоритм Дейкстры

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

Сравним BGP и OSPF, чтобы понять, когда стоит испльзовать каждый из них:

  1. BGP:

    • Используется для маршрутизации между различными автономными системами.

    • Оптимизирован для глобальной маршрутизации.

    • Обеспечивает гибкость в выборе маршрутов.

    • Используется провайдерами интернета и крупными организациями.

  2. OSPF:

    • Применяется внутри одной автономной системы.

    • Оптимизирован для локальных сетей.

    • Строит оптимальные маршруты внутри AS.

    • Используется в корпоративных и кампусных сетях.

Выбор между BGP и OSPF зависит от конкретных потребностей сети. В больших многоуровневых сетях часто используются оба протокола: OSPF на уровне AS и BGP для маршрутизации между AS.

Работа с BGP

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

BGP - это мощный протокол, который требует тщательной настройки, чтобы обеспечить стабильную маршрутизацию в сетях:

  1. Установка ASN и определение пиров

    Первым шагом в настройке BGP является присвоение Autonomous System Number (ASN) вашему роутеру. ASN - это уникальный идентификатор, который определяет вашу автономную систему в глобальной сети. Как профессиональный разработчик, вы должны запросить ASN у регистратора и присвоить его вашему роутеру. Пример конфигурации на Cisco-роутере:

    router bgp 65001

    Где 65001 - это ваш ASN.

    Далее, необходимо определить ваших BGP пиров (соседей). Пиры - это другие роутеры, с которыми вы будете обмениваться маршрутной информацией. Пример настройки пира:

    neighbor 203.0.113.2 remote-as 65002

    Где 203.0.113.2 - IP-адрес соседа, а 65002 - ASN этого соседа.

  2. Атрибуты BGP маршрутов

    BGP использует атрибуты маршрутов для принятия решений о наилучшем пути. Рассмотрим некоторые ключевые атрибуты и их настройку:

    • Next Hop: Этот атрибут указывает на IP-адрес следующего прыжка к маршруту. Обычно это IP-адрес BGP-пира. Пример настройки:

      neighbor 203.0.113.2 next-hop-self

      Эта команда указывает, что ваш роутер должен использовать свой собственный IP-адрес в качестве Next Hop для маршрутов, полученных от соседа с IP-адресом 203.0.113.2.

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

      neighbor 203.0.113.2 route-map SET-WH WEIGHT 100

      Эта команда устанавливает вес 100 для маршрутов, полученных от соседа 203.0.113.2 с использованием route-map SET-WH.

    • Local Preference: Этот атрибут используется внутри AS для выбора наилучшего пути. Пример:

      neighbor 203.0.113.2 route-map SET-LP LOCAL-PREF 200

      Эта команда устанавливает локальный приоритет (Local Preference) в 200 для маршрутов, полученных от соседа 203.0.113.2 с использованием route-map SET-LP.

    • Prepending: Этот метод добавляет собственный ASN к маршруту несколько раз, чтобы увеличить его "дороговизну" и, следовательно, уменьшить вероятность выбора этого маршрута. Пример настройки:

      neighbor 203.0.113.2 route-map PREPEND-ASN out

      Эта команда указывает на то, что маршруты, отправляемые соседу 203.0.113.2, должны быть подвержены AS-переписыванию (AS path prepending).

Конфигурация может быть значительно более сложной в зависимости от ваших потребностей.

Фильтрация и манипуляция маршрутами

Фильтрация и манипуляция маршрутами позволяет тщательно контролировать, какие маршруты принимать, отклонять или изменять:

  1. Использование ACL и префиксных списков

    ACL (Access Control Lists) и префиксные списки (Prefix Lists) предоставляют простой и эффективный способ фильтрации маршрутов в BGP. Они позволяют определить, какие маршруты должны быть разрешены или запрещены на основе определенных критериев, таких как исходный IP-адрес, префикс, или маска.

    Пример использования ACL для фильтрации маршрутов:

    ip access-list extended FILTER-LIST
    permit ip 192.168.0.0 0.0.255.255 any
    deny ip any any

    В этом примере ACL FILTER-LIST разрешает все маршруты с префиксами из диапазона 192.168.0.0/16 и отклоняет все остальные маршруты.

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

    ip prefix-list PREFIX-LIST seq 10 permit 192.168.0.0/16
    ip prefix-list PREFIX-LIST seq 20 deny any

    Здесь PREFIX-LIST разрешает маршруты с префиксами 192.168.0.0/16 и отклоняет все остальные маршруты.

  2. Route Maps и Prefix Lists

    Когда требуется более сложная фильтрация и манипуляция маршрутами, разработчики обращаются к Route Maps и Prefix Lists. Route Maps предоставляют гибкий инструмент для применения различных действий к маршрутам на основе условий. Префиксные списки могут использоваться внутри Route Maps для определения условий.

    Пример использования Route Map для маршрутов с применением префиксного списка:

    route-map FILTER-MAP permit 10
    match ip address prefix-list PREFIX-LIST
    set local-preference 200
    
    router bgp 65001
    neighbor 203.0.113.2 route-map FILTER-MAP in

    В этом примере Route Map FILTER-MAP применяет маршруты, соответствующие префиксному списку PREFIX-LIST, и устанавливает локальный приоритет (Local Preference) в 200.

    При работе с более сложными сценариями маршрутизации и фильтрации, Route Maps и Prefix Lists становятся мощными инструментами, позволяющими тонко настраивать поведение BGP.

C. BGP Community и применение атрибутов сообществ

BGP Community - это мощный механизм, позволяющий разработчикам и администраторам сетей тонко управлять маршрутами и трафиком в сети. Этот аспект BGP позволяет создавать и применять "сообщества" к группам маршрутов, что обеспечивает гибкость и эффективность в управлении данными в сети. Давайте рассмотрим BGP Community и применение атрибутов сообществ более подробно.

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

  1. Маркировка маршрутов: С помощью BGP Community вы можете маркировать маршруты, чтобы обозначить их особенности или требования к маршрутизации.

  2. Управление трафиком: Вы можете использовать сообщества для указания, какой трафик должен быть направлен через конкретные маршруты или провайдеров.

  3. Группировка маршрутов: BGP Community позволяет создавать группы маршрутов с одинаковыми характеристиками, что упрощает их управление.

Пример использования BGP Community для управления трафиком:

ip bgp-community new-format
!
ip community-list expanded DENY-OUT permit no-advertise
ip community-list expanded ALLOW-IN permit 65001:100
!
route-map TRAFFIC-MANAGEMENT permit 10
 match community DENY-OUT
 set local-preference 0
!
route-map TRAFFIC-MANAGEMENT permit 20
 match community ALLOW-IN
 set local-preference 200
!
router bgp 65001
 neighbor 203.0.113.2 route-map TRAFFIC-MANAGEMENT out

В приведенном примере мы используем BGP Community для управления маршрутами, указывая, что маршруты с сообществом 65001:100 должны иметь более высокий локальный приоритет, а маршруты с сообществом no-advertise (DENY-OUT) должны иметь приоритет 0 и не должны быть распространены далее.

Агрегация маршрутов и сокращение таблиц маршрутизации

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

Пример агрегации маршрутов в BGP:

router bgp 65001
 network 203.0.113.0 mask 255.255.255.0
 aggregate-address 203.0.113.0 255.255.255.0 summary-only

В этом примере мы объединяем все подсети с маской 255.255.255.0 в один агрегированный маршрут.

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

IV. Оптимизация с BGP

В этом разделе мы рассмотрим различные методы оптимизации и настройки BGP, которые позволяют профессиональным разработчикам достичь высокой производительности и отказоустойчивости в сетях. Начнем с подсистемы мультипасинга (Multipath) и двигаемся далее к BGP Route Reflectors, сложным сценариям маршрутизации и использованию BGP Anycast.

A. Подсистема мультипасинга (Multipath)

Подсистема мультипасинга в BGP позволяет использовать несколько путей для достижения одного и того же назначения. Это обеспечивает балансировку нагрузки и увеличение отказоустойчивости. Важно помнить, что не все реализации BGP поддерживают мультипасинг.

Пример активации мультипасинга в Cisco IOS:

router bgp 65001
 bgp bestpath as-path multipath-relax

В этом примере мы разрешаем использовать несколько путей для маршрутов с одинаковым AS path.

B. BGP Route Reflectors и Confederations

BGP Route Reflectors и BGP Confederations - это методы упрощения конфигурации BGP в крупных сетях. Они позволяют избежать полной сетевой симметрии, что характерно для традиционной настройки BGP.

Route Reflectors представляют собой специальные BGP-роутеры, которые отражают BGP-маршруты между клиентами, не требуя полной симметрии в сети. Это уменьшает нагрузку на сеть и повышает производительность.

Confederations позволяют разделить BGP сеть на небольшие группы (конфедерации), где каждая конфедерация может иметь свой AS номер. Это упрощает конфигурацию и повышает отказоустойчивость.

Пример конфигурации Route Reflector в Cisco IOS:

router bgp 65001
 bgp cluster-id 1
 neighbor 203.0.113.2 remote-as 65001
 neighbor 203.0.113.2 route-reflector-client

В этом примере мы настраиваем роутер 203.0.113.2 как клиента Route Reflector с использованием cluster-id 1.

Примеры сложных сценариев маршрутизации с BGP

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

Пример настройки политики маршрутизации с BGP:

router bgp 65001
 neighbor 203.0.113.2 route-map TRAFFIC-POLICY in
!
route-map TRAFFIC-POLICY permit 10
 match ip address prefix-list ALLOW-TRAFFIC
 set local-preference 200
!
ip prefix-list ALLOW-TRAFFIC seq 10 permit 192.168.0.0/16

В этом примере мы используем route-map для применения политики маршрутизации, которая устанавливает локальный приоритет 200 для маршрутов с префиксами из списка ALLOW-TRAFFIC.

Отказоустойчивость и использование BGP Anycast

Для обеспечения высокой отказоустойчивости, BGP Anycast может использоваться для размещения одного и того же IP-сервиса на нескольких серверах с одним и тем же IP-адресом. BGP управляет выбором наилучшего пути к ближайшему серверу, что позволяет автоматически перенаправлять трафик в случае отказа одного из серверов.

Пример использования BGP Anycast для отказоустойчивости:

router bgp 65001
 network 203.0.113.0 mask 255.255.255.0
 neighbor 203.0.113.2 remote-as 65002
 neighbor 203.0.113.3 remote-as 65002

В этом примере мы настраиваем BGP Anycast для IP-сети 203.0.113.0/24, и оба сервера (соседи) имеют один и тот же AS номер.

Мониторинг и управление трафиком

Некоторые инструменты для мониторинга сети:

  1. SNMP (Simple Network Management Protocol): SNMP позволяет собирать информацию о состоянии устройств в сети, такую как загрузка процессора, использование памяти, и другие параметры. Множество инструментов, таких как Nagios, Zabbix и Cacti, поддерживают SNMP для мониторинга сети.

  2. Flow-анализаторы: Flow-анализаторы, такие как NetFlow или sFlow, позволяют собирать данные о трафике в сети. Они могут использоваться для анализа и мониторинга трафика, а также для выявления проблем в сети.

  3. BGP мониторинг: Специальные инструменты мониторинга BGP, такие как Looking Glass серверы, могут предоставить информацию о маршрутах, атрибутах BGP и статусе соседей.

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

BGP Communities - это механизм, который позволяет администраторам сетей маркировать и управлять трафиком в BGP сети. Это особенно полезно, когда требуется направлять трафик через определенные пути или провайдеров.

Пример использования BGP Communities для управления трафиком:

ip bgp-community new-format
!
ip community-list expanded PREFER-PROVIDER permit 65001:100
ip community-list expanded NO-TRAFFIC-THROUGH permit 65002:200
!
route-map TRAFFIC-MANAGEMENT permit 10
 match community PREFER-PROVIDER
 set local-preference 200
!
route-map TRAFFIC-MANAGEMENT permit 20
 match community NO-TRAFFIC-THROUGH
 set local-preference 0
!
router bgp 65001
 neighbor 203.0.113.2 route-map TRAFFIC-MANAGEMENT out

В этом примере мы используем BGP Communities PREFER-PROVIDER и NO-TRAFFIC-THROUGH для управления трафиком, устанавливая локальный приоритет (local preference) для соответствующих маршрутов.

Мониторинг маршрутов и определение узких мест

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

Пример использования BGP команды "show ip bgp" для мониторинга маршрутов:

show ip bgp

Эта команда отобразит текущие маршруты в таблице BGP. При анализе вывода этой команды можно определить, какие маршруты активны, какие атрибуты они имеют и какие проблемы могут возникнуть.

Примеры практических кейсов

Кейс 1: Балансировка нагрузки между несколькими провайдерами с BGP

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

Решение: Для балансировки нагрузки между несколькими провайдерами с BGP, вы можете настроить BGP маршруты к разным провайдерам с разными AS-путями. Вот пример конфигурации:

router bgp 65001
 neighbor 203.0.113.2 remote-as 65010
 neighbor 203.0.113.2 next-hop-self
 neighbor 203.0.113.3 remote-as 65020
 neighbor 203.0.113.3 next-hop-self
 !
 ip route 0.0.0.0 0.0.0.0 203.0.113.2
 ip route 0.0.0.0 0.0.0.0 203.0.113.3

В этой конфигурации мы настраиваем двух различных соседей BGP с разными AS-путями и используем маршруты по умолчанию (0.0.0.0/0), указывая на каждого провайдера.

Кейс 2: Построение многоуровневой сети с OSPF

Сценарий: Вам необходимо построить многоуровневую сеть с использованием OSPF для обеспечения эффективного маршрутизации внутри вашей локальной сети.

Решение: Для построения многоуровневой сети с OSPF, вы можете разделить сеть на зоны и настроить OSPF между маршрутизаторами внутри каждой зоны. Вот пример конфигурации:

router ospf 1
 network 192.168.1.0 0.0.0.255 area 0
 network 192.168.2.0 0.0.0.255 area 1
!
router ospf 2
 network 192.168.3.0 0.0.0.255 area 0
 network 192.168.4.0 0.0.0.255 area 2

В этой конфигурации мы настраиваем две отдельные зоны OSPF (area 0 и area 1) и настраиваем маршруты между ними через маршрутизаторы, которые находятся в обоих зонах.

Кейс 3: Использование BGP и OSPF для обеспечения отказоустойчивости

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

Решение: Для обеспечения отказоустойчивости вы можете использовать BGP для маршрутизации между разными провайдерами и OSPF для внутренней маршрутизации в вашей сети. В случае сбоя одного из провайдеров, BGP перенаправит трафик через другого провайдера, обеспечивая непрерывность связности.

Пример конфигурации BGP и OSPF для отказоустойчивости:

router bgp 65001
 neighbor 203.0.113.2 remote-as 65010
 neighbor 203.0.113.3 remote-as 65020
 !
 ip route 0.0.0.0 0.0.0.0 203.0.113.2
 !
router ospf 1
 network 192.168.1.0 0.0.0.255 area 0
 network 192.168.2.0 0.0.0.255 area 1

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

Заключение

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

Больше практических знаний по инфраструктуре вы можете получить в рамках онлайн-курсов от OTUS. Переходите в каталог и выбирайте интересующее вас направление.

Комментарии (5)


  1. ildar_vildanovich
    07.11.2023 11:47

    Я что-то не пойму:

    1)

    neighbor 203.0.113.2 route-map SET-LP LOCAL-PREF 200

    А здесь точно синтаксис верный?

    2)

    bgp bestpath as-path multipath-relax  

    В этом примере мы разрешаем использовать несколько путей для маршрутов с одинаковым AS path.

    А точно для одинаковых AS?

    3)

    route-map TRAFFIC-POLICY permit 10
     match ip address prefix-list ALLOW-TRAFFIC
     set local-preference 200
    !
    ip prefix-list ALLOW-TRAFFIC seq 10 permit 192.168.0.0/16

    В этом примере мы используем route-map для применения политики маршрутизации, которая устанавливает локальный приоритет 200 для маршрутов с префиксами из списка ALLOW-TRAFFIC.

    В этом примере вы запретите весь трафик кроме 192.168.0.0/16


    1. 0HenrY0
      07.11.2023 11:47

      Всё это расскажут на курсе обучения OTUS.


  1. admOS
    07.11.2023 11:47
    +1

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


    1. AntoineLarine
      07.11.2023 11:47

      Самое главное, не понятно, что и кому хотел сказать автор. От криво изложенной примитивной теории перескочил сразу к конфигам. Зачем?


  1. DaemonGloom
    07.11.2023 11:47
    +2

    BGP:

    • Используется для маршрутизации между различными автономными системами.

    iBGP с удивлением смотрит на такие утверждения.