Использование BGP для резервирования Интернет-каналов

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

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

Автор: Наташа Самойленко
Короткий URL: BGP 2 ISP

Страница посвящена использованию BGP для резервирования Интернет-каналов.

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

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

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

Основная задача лабораторных показать какие механизмы доступны при работе с BGP для резервирования Интернет-каналов.

Все лабораторные ориентированы на то, что AS 100 это клиент подключенный к провайдерам. Во всех лабораторных, кроме первой, настройки выполняются для AS 100 и для пограничных маршрутизаторов подключенных провайдеров (AS 500 и AS 600). В первой лабораторной необходимо выполнить настройку BGP во всех AS: указать соседей и анонсировать сети.


Содержание

[править] Лабораторная 1. Настройка BGP в сети с одним пограничным маршрутизатором и двумя каналами к разным провайдерам. Базовая фильтрация маршрутов

BGP lab 1.png


[править] Задание

Все лабораторные ориентированы на то, что AS 100 это клиент подключенный к провайдерам. В этой лабораторной необходимо выполнить настройку BGP во всех AS: указать соседей и анонсировать сети.

  1. Настройка IP-адресации
    Необходимо выполнить настройку IP-адресации в сети в соответствии с топологией.
    Если не указано явно, то 4 октет IP-адреса, соответствует номеру маршрутизатора.
  2. Настройка BGP на маршрутизаторах провайдеров.
    Необходимо настроить BGP для автономных систем 500, 600. Для AS 1100 и 1200 можно воспользоваться подготовленной конфигурацией. По желанию можно также выполнить настройку BGP во всей сети.
    Это задание выполняется без настроек связи с AS 100. Они будут выполнены отдельно.
    1. Настройка автономных систем 500, 1100, 1200
      1. Для этих автономных систем необходимо настроить связь с соседями BGP через IP-адреса физических интерфейсов (кроме AS 100). Проверить связь с соседями.
      2. Анонсировать все сети автономной системы. После этого шага проверить доступность сетей.
      3. В AS 500 настроить маршрутизаторы dyn5 и qua8 так, чтобы при получении информации из других автономных систем (по eBGP), они передавали маршруты внутренним соседям (по iBGP) с атрибутом NEXT HOP равным IP-адресу маршрутизатора, который анонсирует маршрут.
    2. Настройка автономной системы 600
      1. Настроить связь с соседями BGP через IP-адреса физических интерфейсов (кроме AS 100). Проверить связь с соседями.
      2. Анонсировать все сети автономной системы в BGP.
      3. На маршрутизаторах dyn6, qua9, qua10 необходимо настроить OSPF (эта настройка выполняется для того чтобы показать принципы работы BGP с протоколами IGP). В OSPF надо анонсировать все сети автономной системы и сети с другими автономными системами. Интерфейсы ведущие к другим автономным системам необходимо сделать пассивными для того чтобы анонсы OSPF не распространялись за пределы сети.
  3. Настройка подключения AS 100
    1. Настройка BGP-соседей на dyn1, dyn5 и dyn6.
    На топологии указаны IP-адреса, которые используются для связи с AS100. Соседи BGP должны быть настроены через loopback-интерфейсы (это не является обязательным требованием в реальной жизни, и используется для того чтобы знать как настраивать связь с соседями в таком случае).
  4. Проверка работы BGP.
    1. Проверить доступность всех сетей из локальной сети AS 100.
    2. Проверить правильность анонсирования маршрутов. И убедиться, что AS100 не используется как транзитная.

[править] Пошаговая настройка

[править] Настройка IP-адресации

Необходимо выполнить настройку IP-адресации в сети в соответствии с топологией. Если не указано явно, то 4 октет IP-адреса, соответствует номеру маршрутизатора.

[править] Настройка BGP на маршрутизаторах провайдеров

Необходимо настроить BGP для автономных систем 100, 500, 600. Для AS 1100 и 1200 можно воспользоваться подготовленной конфигурацией. По желанию можно также выполнить настройку BGP во всей сети.

Это задание выполняется без настроек связи с AS 100. Они будут выполнены отдельно.

[править] Настройка автономных систем 500, 1100, 1200

Для этих автономных систем необходимо настроить связь с соседями BGP через IP-адреса физических интерфейсов (кроме AS 100).

Настройки dyn5 из AS 500:

router bgp 500
 neighbor 192.168.6.8 remote-as 500

Настройки qua8 из AS 500:

router bgp 500
 neighbor 192.168.6.5 remote-as 500
 neighbor 192.168.10.11 remote-as 1100

Настройки qua11 из AS 1100:

router bgp 1100
 neighbor 192.168.10.8 remote-as 500
 neighbor 192.168.14.12 remote-as 1200

Аналогично для AS1200. Проверить связь с соседями:

show ip bgp summary

Анонсировать все сети автономной системы.

Настройки dyn5 из AS 500:

router bgp 500
 network 192.168.1.0
 network 192.168.6.0

Так как сети 192.168.1.0/24 нет в таблице маршрутизации, то, для того чтобы BGP мог её анонсировать, необходимо создать статический маршрут в null0:

ip route 192.168.1.0 255.255.255.0 Null0

Настройки qua8 из AS 500:

router bgp 500
 network 192.168.6.0/24
 network 192.168.8.0/24
 network 192.168.10.0/24

Настройки qua11 из AS 1100:

router bgp 1100
 network 192.168.10.0/24
 network 192.168.12.0/24
 network 192.168.14.0/24

Настройки qua12 из AS 1200:

router bgp 1200
 network 192.168.11.0/24
 network 192.168.13.0/24
 network 192.168.14.0/24

После этого шага проверить доступность сетей:

sh ip route
sh ip bgp 

В AS 500 настроить маршрутизаторы dyn5 и qua8 так, чтобы при получении информации из других автономных систем (по eBGP), они передавали маршруты внутренним соседям (по iBGP) с атрибутом NEXT HOP равным IP-адресу маршрутизатора, который анонсирует маршрут.

Настройки dyn5 из AS 500:

router bgp 500
 neighbor 192.168.6.8 next-hop-self

Настройки qua8 из AS 500:

router bgp 500
 neighbor 192.168.6.5 next-hop-self

Проверить доступность всех сетей.

[править] Настройка автономной системы 600

Настроить связь с соседями BGP через IP-адреса физических интерфейсов (кроме AS 100).

dyn6:

router bgp 600
 neighbor 192.168.7.9 remote-as 600
 neighbor 192.168.9.10 remote-as 600

qua9:

router bgp 600
 neighbor 192.168.7.6 remote-as 600
 neighbor 192.168.9.10 remote-as 600
 neighbor 192.168.11.12 remote-as 1200

qua10:

router bgp 600
 neighbor 192.168.7.6 remote-as 600
 neighbor 192.168.9.9 remote-as 600

Анонсировать все сети автономной системы в BGP.

dyn6:

router bgp 600
 network 192.168.3.0
 network 192.168.7.0

Так как сети 192.168.3.0/24 нет в таблице маршрутизации, то, для того чтобы BGP мог её анонсировать, необходимо создать статический маршрут в null0:

ip route 192.168.3.0 255.255.255.0 Null0

qua9:

router bgp 600
 network 192.168.7.0/24
 network 192.168.9.0/24
 network 192.168.11.0/24
 network 192.168.16.0/24

На qua10 можно при таких настройках не анонсировать сети. Проверить связь с соседями:

show ip bgp summary

На маршрутизаторах dyn6, qua9, qua10 необходимо настроить OSPF (эта настройка выполняется для того чтобы показать принципы работы BGP с протоколами IGP). В OSPF надо анонсировать все сети автономной системы и сети с другими автономными системами. Интерфейсы ведущие к другим автономным системам необходимо сделать пассивными для того чтобы анонсы OSPF не распространялись за пределы сети.

dyn6:

router ospf 1
 passive-interface FastEthernet1/0
 network 192.168.0.0 0.0.255.255 area 0

qua9:

router ospf
 passive-interface eth2
 network 192.168.0.0/16 area 0

qua10:

router ospf
 network 192.168.0.0/16 area 0

[править] Настройка подключения AS 100

[править] Настройка BGP-соседей на dyn1, dyn5 и dyn6

На топологии указаны IP-адреса, которые используются для связи с AS100.

Соседи EBGP на dyn1 должны быть настроены через loopback-интерфейсы (это не является обязательным требованием в реальной жизни, и используется для того чтобы знать как настраивать связь с соседями в таком случае).

dyn1:

router bgp 100
 neighbor 192.168.1.1 remote-as 500
 neighbor 192.168.1.1 ebgp-multihop 2
 neighbor 192.168.1.1 update-source Loopback0
 neighbor 192.168.3.1 remote-as 600
 neighbor 192.168.3.1 ebgp-multihop 2
 neighbor 192.168.3.1 update-source Loopback0

dyn5:

router bgp 500
 neighbor 192.168.100.1 remote-as 100
 neighbor 192.168.100.1 ebgp-multihop 2

Для того чтобы BGP смог установить TCP-сессию с dyn1, необходимо прописать статический маршрут к loopback-интерфейсу dyn1:

ip route 192.168.100.1 255.255.255.255 192.168.1.2

dyn6:

router bgp 600
 neighbor 192.168.100.1 remote-as 100
 neighbor 192.168.100.1 ebgp-multihop 2

Для того чтобы BGP смог установить TCP-сессию с dyn1, необходимо прописать статический маршрут к loopback-интерфейсу dyn1:

ip route 192.168.100.1 255.255.255.255 192.168.3.2


[править] Настройка анонсирования своего диапазона адресов на dyn1

Dyn1 должен анонсировать провайдерам сеть класс С 192.168.100.0/24

dyn1:

router bgp 100
 network 192.168.100.0

Так как в таблице маршрутизации нет сети 192.168.100.0/24, то для того чтобы BGP мог её анонсировать, необходимо создать статический маршрут в null0:

ip route 192.168.100.0 255.255.255.0 Null0

[править] Проверка работы BGP

Проверить доступность всех сетей из локальной сети AS 100.

Проверить правильность анонсирования маршрутов. И убедиться, что AS100 не используется как транзитная.

[править] Лабораторная 2. Настройка базовой фильтрации маршрутов. Без изменения атрибутов.

BGP lab 1.png

[править] Задание

Лабораторная основана на предыдущей. Для того чтобы AS100 не была транзитной, необходимо настроить фильтрацию маршрутов.

  1. Настройка исходящей фильтрации маршрутов на dyn1.
    1. Для того чтобы AS100 не стала транзитной, необходимо настроить фильтрацию маршрутов. Dyn1 должен анонсировать соседним AS только свою сеть (192.168.100.0/24) и она должна быть локально анонсирована.
  2. Фильтрация входящих анонсов.
    В зависимости от политик и договоренностей с провайдером, провайдеры могут анонсировать, например:
    • только маршрут по умолчанию
    • маршрут по умолчанию и частичную таблицу маршрутизации (например, только с локальными сетями провайдера)
    • полную таблица маршрутизации
    Для лабораторной необходимо настроить вариант, когда анонсируется вся таблица (full view).

[править] Пошаговая настройка

[править] Фильтрация исходящих анонсов

Для того чтобы AS100 не стала транзитной (в нашем случае, перестала быть транзитной), необходимо настроить фильтрацию маршрутов. Dyn1 должен анонсировать соседним AS только свою сеть (192.168.100.0/24). Без настройки фильтрации AS100 становится транзитной. dyn1 анонсирует соседним маршрутизаторам все сети, которые он получил по BGP:

dyn1# sh ip bgp neighbors 192.168.1.5 advertised-routes      
BGP table version is 94, local router ID is 192.168.100.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0      192.168.1.5              0             0 500 i
*> 192.168.3.0      192.168.3.6              0             0 600 i
*> 192.168.6.0      192.168.1.5              0             0 500 i
*> 192.168.7.0      192.168.3.6              0             0 600 i
*> 192.168.8.0      192.168.1.5                            0 500 i
*> 192.168.9.0      192.168.3.6                            0 600 i
*> 192.168.10.0     192.168.1.5                            0 500 i
*> 192.168.11.0     192.168.3.6                            0 600 i
*> 192.168.12.0     192.168.1.5                            0 500 1100 i
*> 192.168.13.0     192.168.3.6                            0 600 1200 i
*> 192.168.14.0     192.168.1.5                            0 500 1100 i
*> 192.168.16.0     192.168.3.6                            0 600 i
*> 192.168.100.0    0.0.0.0                  0         32768 i

Total number of prefixes 13 

Можно настроить два варианта исходящих фильтров:

  1. Создать as-path access-list и prefix-list и применить их к соседям
  2. Создать as-path access-list и prefix-list, сослаться на них в route-map и применить к соседям

Настройка prefix-list для фильтрации исходящих анонсов. Анонсируем только суммарную сеть 192.168.100.0/24:

dyn1(config)# ip prefix-list local permit 192.168.100.0/24

Настройка as-path access-list для фильтрации исходящих анонсов. Анонсируем только локальные сети нашей AS:

dyn1(config)# ip as-path access-list 100 permit ^$

Применение фильтров к соседу dyn5 для анонсирования только локальных для AS100 сетей (сети в которых нулевой AS path):

ip as-path access-list 100 permit ^$
ip prefix-list local permit 192.168.100.0/24
!  
router bgp 100
 neighbor 192.168.1.1 prefix-list local out
 neighbor 192.168.1.1 filter-list 100 out

Применение фильтров через route-map для анонсирования только локальных для AS100 сетей (сети в которых нулевой AS path) и только своего префикса 192.168.100.0/24:

ip as-path access-list 100 permit ^$
ip prefix-list local permit 192.168.100.0/24
!  
route-map local_route permit 10
 match ip address prefix-list local
 match as-path 100

Применить route-map для исходящих обновлений с соседями dyn5 и dyn6 (фильтр нужно применять осторожно, так как, при ошибке в имени route-map, будет применен не существующий фильтр и ничего анонсироваться соседу не будет):

router bgp 100
 neighbor 192.168.3.1 route-map local_route out

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

clear ip bgp <neighbor-address>  out

[править] Фильтрация входящих анонсов

В зависимости от политик и договоренностей с провайдером, в AS могут анонсироваться:

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

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

Для лабораторной необходимо настроить вариант, когда анонсируется вся таблица (full view). В данном случае можно не фильтровать входящую информацию. Однако можно использовать фильтры для защиты от “неправильных” анонсов от провайдера. На случай, если будут анонсированы какие-то “неправильные” адреса сетей. Такие фильтры составляют и регулярно обновляют, например, на сайте http://www.team-cymru.org/

Как минимум, можно отфильтровать приватный диапазон адресов, мультикаст адреса и др:

ip prefix-list bad_net description bad networks 
ip prefix-list bad_net seq 1000 deny 0.0.0.0/8 le 32 
ip prefix-list bad_net seq 1100 deny 127.0.0.0/8 le 32 
ip prefix-list bad_net seq 1110 deny 192.168.0.0/16 le 32 
ip prefix-list bad_net seq 1120 deny 172.16.0.0/12 le 32 
ip prefix-list bad_net seq 1130 deny 10.0.0.0/8 le 32 
ip prefix-list bad_net seq 1140 deny 169.254.0.0/16 le 32 
ip prefix-list bad_net seq 1150 deny 224.0.0.0/4 le 32 
ip prefix-list bad_net seq 1160 deny 240.0.0.0/4 le 32
ip prefix-list bad_net seq 1300 permit 0.0.0.0/0 le 32

Применение фильтров к dyn5 и dyn6:

router bgp 100
 neighbor 192.168.1.1 prefix-list bad_net in
 neighbor 192.168.3.1 prefix-list bad_net in


(опционально) Настройка для получения только непосредственно присоединенных маршрутов из AS 600 и всей таблицы от AS 500.

Фильтр для получения непосредственно присоединенных сетей AS 600 (сети в которых AS path 600):

ip as-path access-list 6 permit ^600$
!
route-map from_AS_600 permit 10
 match as-path 6

Применить фильтр для входящих обновлений с соседом dyn6 (фильтр нужно применять осторожно, так как, при ошибке в имени route-map, будет применен не существующий фильтр и от соседа не будут получены маршруты):

router bgp 100 
 neighbor 192.168.3.6 route-map from_AS_600 in

Несмотря на применение фильтра всё ещё доступны все маршруты через AS 600. Надо получить заново маршруты от dyn6:

clear ip bgp 192.168.3.6 in

После этого через AS 600 доступны только её локальные маршруты.

Однако, на случай выхода из строя провайдера с AS 500, необходимо прописать маршрут по умолчанию на AS 600. Он будет использоваться только если первый провайдер недоступен.

ip route 0.0.0.0 0.0.0.0 192.168.3.1

В результате будет выполнен простой вариант распределения нагрузки между провайдерами. Более сложные настройки будут выполняться в следующих лабораторных.

[править] Лабораторная 3. Настройка BGP в сети с одним пограничным маршрутизатором и двумя каналами к разным провайдерам. Схема: основной/резервный каналы

BGP lab 1.png

[править] Задание

Лабораторная основана на предыдущей. Маршрутизатор dyn5 должен использоваться как основной провайдер и для входящего и для исходящего трафика, а dyn6 как резервный.

  1. Настройка отправки исходящего трафика через dyn5.
    1. С помощью атрибута weight
  2. Настройка отправки входящего трафика через dyn5.
    1. С помощью AS path prepend

[править] Пошаговая настройка

[править] Управление исходящим трафиком. Изменение атрибута weight

Самый простой способ настроить dyn5 в роли основного провайдера, это изменит вес всех маршрутов, которые приходят от него.

Значение атрибута weight можно привязывать непосредственно к соседу (все маршруты, которые приходят от указанного соседа, будут в таблице BGP с весом 100):

router bgp 100
 neighbor 192.168.1.1 weight 100

Для того чтобы информация обновилась, необходимо обновить маршруты:

clear ip bgp 192.168.1.1 in

Изменение атрибута weight может использоваться и для распределения нагрузки между провайдерами, поэтому ниже показан вариант изменения атрибута через route-map (так как сейчас необходимо увеличить вес для всех маршрутов от соседа, то команды match нет):

route-map dyn5 permit 10
 set weight 100

Применение к соседу:

router bgp 100
 neighbor 192.168.1.1 route-map dyn5 in

Для того чтобы информация обновилась, необходимо обновить маршруты:

clear ip bgp 192.168.1.1 in


[править] Управление входящим трафиком. Использование AS path prepend

Для того чтобы ухудшить маршруты через провайдера dyn6, будет использоваться AS path prepend:

route-map local_route permit 10
 match ip address prefix-list local
 match as-path 100
 set as-path prepend 100 100 100

Применение к соседу:

router bgp 100
 neighbor 192.168.3.1 route-map local_route out

После этого необходимо проверить маршрут в сеть 192.168.100.0/22 на dyn6 и убедиться, что он не использует dyn1 напрямую. Если необходимо, то нужно увеличить количество AS.

Для того чтобы информация обновилась, необходимо обновить маршруты:

clear ip bgp 192.168.3.1 out

[править] Лабораторная 4. Настройка BGP в сети с одним пограничным маршрутизатором и двумя каналами к разным провайдерам. Распределение и балансировка трафика между провайдерами

BGP lab 1.png


[править] Задание

Лабораторная основана на предыдущей. Необходимо удалить настройки прошлой лабораторной, для того чтобы ни у кого из провайдеров не было предпочтения. В первом задании настраивается один из механизмов фильтрации маршрутов (по AS path). А во втором используется BGP multipath для балансировки нагрузки между провайдерами. Балансировка выполняется для исходящего трафика, как с учетом пропускной способности каналов, так и без.

  1. Распределение нагрузки между каналами для исходящего трафика с указанием AS path
    Распределить нагрузку между провайдерами таким образом, чтобы трафик в AS 600 шел через dyn6, трафик в AS 500 шел через dyn5, а остальной трафик распределялся между провайдерами. В случае выхода из строя одного из провайдеров, весь трафик должен идти через него.
    С прошлой лабораторной необходимо отменить route-map и другие параметры, для того чтобы оба провайдера анонсировали полную таблицу маршрутизации и ни у кого из них не было предпочтения.
  2. Балансировка исходящего трафика с помощью BGP multipath и dmzlink-bw.
    1. Провайдеры анонсируют полную таблицу маршрутизации. Трафик в автономные системы с одинаковым размером AS path балансируется между двумя провайдерами.
    2. Провайдеры анонсируют маршрут по умолчанию и частичную таблицу маршрутизации (только с локальными сетями провайдера). Трафик в другие автономные системы балансируется между двумя провайдерами.
    3. Балансировка с учетом пропускной способности канала.
      Сохраняются настройки предыдущего пункта. Но при балансировке нагрузки учитывается пропускная способность каналов к провайдерам.
  3. Настройка разделения нагрузки между провайдерами для входящего трафика.
    1. Вариант 1. Анонсировать с пограничных маршрутизаторов сеть 192.168.100.0/22. С dyn1 сеть 192.168.101.0/24, а с dyn2 сеть 192.168.102.0/24. Засчет этого входящий трафик к одной сети будет идти через один маршрутизатор, ко второй – через второй.
    2. Вариант 2. Если предыдущий метод разделения нагрузки не подходит или не дает хороших результатов, можно использовать AS prepend. Как совместно с предыдущим методом, так и независимо.

[править] Пошаговая настройка

[править] Распределение нагрузки между каналами для исходящего трафика с указанием AS path

Распределить нагрузку между провайдерами таким образом, чтобы трафик в AS 600 шел через dyn6, трафик в AS 500 шел через dyn5, а остальной трафик распределялся между провайдерами. В случае выхода из строя одного из провайдеров, весь трафик должен идти через него.

С прошлой лабораторной необходимо отменить route-map, для того чтобы оба провайдера анонсировали полную таблицу маршрутизации.

Если необходимо настроить балансировку исходящего трафика на одном маршрутизаторе, то проще всего на это повлиять с помощью атрибута weight.

Установка приоритета для непосредственно присоединенных сетей AS 600 (сети в которых AS path равен 600):

ip as-path access-list 6 permit ^600$
!
route-map prefer_AS_600 permit 10
 match as-path 6
 set weight 100
route-map prefer_AS_600 permit 20

Применение route-map для входящих обновлений с соседом dyn6:

router bgp 100 
 neighbor 192.168.3.6 route-map prefer_AS_600 in

Несмотря на применение route-map все маршруты всё ещё доступны с метрикой по умолчанию. Надо получить заново маршруты от dyn6:

clear ip bgp 192.168.3.6 in

Установка приоритета для непосредственно присоединенных сетей AS 500 (сети в которых AS path равен 500):

ip as-path access-list 5 permit ^500$
!
route-map prefer_AS_500 permit 10
 match as-path 5
 set weight 100
route-map prefer_AS_500 permit 20

Применение route-map для входящих обновлений с соседом dyn5:

router bgp 100 
 neighbor 192.168.1.5 route-map prefer_AS_500 in

Несмотря на применение route-map все маршруты всё ещё доступны с метрикой по умолчанию. Надо получить заново маршруты от dyn5:

clear ip bgp 192.168.1.5 in


[править] Балансировка исходящего трафика с помощью BGP multipath и dmzlink-bw

[править] Провайдеры анонсируют полную таблицу маршрутизации

Провайдеры анонсируют полную таблицу маршрутизации. Трафик в автономные системы с одинаковым размером AS path балансируется между двумя провайдерами.

Эта команда позволяет BGP использовать два пути в одну сеть даже в том случае, если они с разными путями через автономные системы (но одинаковой длины). Она может быть не видна в подсказках (скрытая команда) и есть вероятность, что она будет не во всех версиях IOS (в 12.4 (22)T есть):

router bgp 100
 bgp bestpath as-path multipath-relax

Настройка балансировки нагрузки между внешними (eBGP) маршрутами:

router bgp 100
 maximum-paths 2

Хотя в таблице BGP маршрут выбирается по-прежнему только один, в таблице маршрутизации будут оба:

dyn1# sh ip bgp             
BGP table version is 33, local router ID is 192.168.100.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop          Metric LocPrf Weight Path
.....
*> 192.168.10.0     192.168.1.1                          0 500 i
*> 192.168.11.0     192.168.3.1                          0 600 i
*  192.168.12.0     192.168.3.1                          0 600 1200 1100 i
*>                  192.168.1.1                          0 500 1100 i
*> 192.168.13.0     192.168.3.1                          0 600 1200 i
*                   192.168.1.1                          0 500 1100 1200 i
*  192.168.14.0     192.168.3.1                          0 600 1200 i
*>                  192.168.1.1                          0 500 1100 i

Подробная информация о маршруте в таблице BGP:

dyn1#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 43
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Multipath: eBGP
Flag: 0x1820
  Not advertised to any peer
  500 1100
    192.168.1.1 from 192.168.1.1 (192.168.6.5)
      Origin IGP, localpref 100, valid, external, multipath
  600 1200
    192.168.3.1 from 192.168.3.1 (192.168.7.6)
      Origin IGP, localpref 100, valid, external, multipath, best


Таблица маршрутизации:

dyn1# sh ip route

Gateway of last resort is 192.168.3.1 to network 0.0.0.0

B    192.168.12.0/24 [20/0] via 192.168.1.1, 01:23:19
B    192.168.13.0/24 [20/0] via 192.168.3.1, 01:23:27
B    192.168.14.0/24 [20/0] via 192.168.3.1, 01:23:19
                     [20/0] via 192.168.1.1, 01:23:19

Подробная информация о маршруте в таблице маршрутизации:

dyn1# sh ip route 192.168.14.0
Routing entry for 192.168.14.0/24
  Known via "bgp 100", distance 20, metric 0
  Tag 600, type external
  Last update from 192.168.1.1 00:02:29 ago
  Routing Descriptor Blocks:
  * 192.168.3.1, from 192.168.3.1, 00:03:25 ago
      Route metric is 0, traffic share count is 1
      AS Hops 2
      Route tag 600
    192.168.1.1, from 192.168.1.1, 00:02:29 ago
      Route metric is 0, traffic share count is 1
      AS Hops 2
      Route tag 600

Балансировка CEF:

dyn1#sh ip cef 192.168.14.0 internal 

192.168.14.0/24, epoch 0, RIB[B], refcount 5, per-destination sharing
 ...
  output chain:
    loadinfo 67ED74D8, per-session, 2 choices, flags 0003, 5 locks
    flags: Per-session, for-rx-IPv4
    16 hash buckets
      < 0 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      < 1 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
      < 2 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      < 3 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
      < 4 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      < 5 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
      < 6 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      < 7 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
      < 8 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      < 9 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
      <10 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      <11 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
      <12 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      <13 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
      <14 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66FF04A0
      <15 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66FF0360
    Subblocks:
     None
[править] Провайдеры анонсируют маршрут по умолчанию и частичную таблицу маршрутизации

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

Настройка маршрутизаторов провайдера для анонсирования маршрута по умолчанию. dyn5:

router bgp 500
 neighbor 192.168.100.1 default-originate

dyn6:

router bgp 600
 neighbor 192.168.100.1 default-originate

На пограничном маршрутизаторе dyn1 должны быть настройки:

router bgp 100
 bgp bestpath as-path multipath-relax
 maximum-paths 2

Трафик балансируется между маршрутами по умолчанию:

B*   0.0.0.0/0 [20/0] via 192.168.3.1, 00:12:17
               [20/0] via 192.168.1.1, 00:12:17

Фильтрация маршрутов, которые анонсируют провадеры, выполняется как и фильтрация маршрутов для локальной AS 100.

[править] Балансировка с учетом пропускной способности канала

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

В остальном сохраняются настройки предыдущего пункта. Настройки связи с AS 100 на dyn5: dyn1:

router bgp 100
 neighbor 192.168.1.1 remote-as 500
 neighbor 192.168.3.1 remote-as 600

dyn5:

router bgp 500
 neighbor 192.168.1.2 remote-as 100
 neighbor 192.168.1.2 default-originate

dyn6:

router bgp 600
 neighbor 192.168.3.2 remote-as 100
 neighbor 192.168.3.2 default-originate

Проверка:

dyn1#sh ip bgp summary 
BGP router identifier 192.168.100.1, local AS number 100
....
Neighbor     V   AS MsgRcvd MsgSent  TblVer  InQ OutQ Up/Down State/PfxRcd

1.2.168.1.1  4  500      35      51    100    0    0  00:04:47        8

1.2.168.3.1  4  600      36      46    100    0    0  00:03:45        9

Настройка пропускной способности на интерфейсах dyn1:

interface FastEthernet1/0
 bandwidth 8000
!
interface FastEthernet2/0
 bandwidth 2000

До настройки балансировки с учетом пропускной способности в таблице маршрутизации два эквивалентных маршрута:

dyn1#sh ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
  Known via "bgp 100", distance 20, metric 0, candidate default path
  Tag 500, type external
  Last update from 192.168.1.1 00:13:26 ago
  Routing Descriptor Blocks:
    192.168.3.1, from 192.168.3.1, 00:13:26 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 500
  * 192.168.1.1, from 192.168.1.1, 00:13:26 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 500

Таблица BGP:

dyn1#sh ip bgp 0.0.0.0
BGP routing table entry for 0.0.0.0/0, version 100
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Multipath: eBGP
  Advertised to update-groups:
        1
  600
    192.168.3.1 from 192.168.3.1 (192.168.7.6)
     Origin IGP, metric 0, localpref 100, valid, external, multipath
  500
    192.168.1.1 from 192.168.1.1 (192.168.6.5)
     Origin IGP, metric 0, localpref 100, valid, external, multipath, best

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

router bgp 100
 bgp dmzlink-bw
 neighbor 192.168.1.1 dmzlink-bw
 neighbor 192.168.3.1 dmzlink-bw

После этой настройки необходимо чтобы соседи заново отправили обновления BGP:

clear ip bgp * soft in


Таблица маршрутизации:

dyn1#sh ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
  Known via "bgp 100", distance 20, metric 0, candidate default path
  Tag 500, type external
  Last update from 192.168.1.1 00:01:02 ago
  Routing Descriptor Blocks:
    192.168.3.1, from 192.168.3.1, 00:01:02 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 500
  * 192.168.1.1, from 192.168.1.1, 00:01:02 ago
      Route metric is 0, traffic share count is 4
      AS Hops 1
      Route tag 500

Таблица BGP:

dyn1#sh ip bgp 0.0.0.0
BGP routing table entry for 0.0.0.0/0, version 123
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Multipath: eBGP
Flag: 0x800
  Advertised to update-groups:
        1
  600
    192.168.3.1 from 192.168.3.1 (192.168.7.6)
     Origin IGP, metric 0, localpref 100, valid, external, multipath
     DMZ-Link Bw 250 kbytes
  500
    192.168.1.1 from 192.168.1.1 (192.168.6.5)
     Origin IGP, metric 0, localpref 100, valid, external, multipath, best
     DMZ-Link Bw 1000 kbytes

CEF (соблюдается соотношение 4:1):

dyn1#sh ip cef 0.0.0.0 0.0.0.0 internal
...
    15 hash buckets
     < 0 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66B02DE0
     < 1 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     < 2 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66B02DE0
     < 3 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     < 4 > IP adj out of FastEthernet2/0, addr 192.168.3.1 66B02DE0        
     < 5 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     < 6 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     < 7 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20         
     < 8 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     < 9 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     <10 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     <11 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     <12 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     <13 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20
     <14 > IP adj out of FastEthernet1/0, addr 192.168.1.1 66B02F20


[править] Настройка разделения нагрузки между провайдерами для входящего трафика

Вариант 1. Анонсировать с пограничных маршрутизаторов сеть 192.168.100.0/22. С dyn1 сеть 192.168.101.0/24, а с dyn2 сеть 192.168.102.0/24.

Засчет этого входящий трафик к одной сети будет идти через один маршрутизатор, ко второй – через второй.

Вариант 2. Если предыдущий метод разделения нагрузки не подходит или не дает хороших результатов, можно использовать AS prepend. Как совместно с предыдущим методом, так и независимо.

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

BGP lab 5.png

[править] Задание

В локальной сети есть два пограничных маршрутизатора, каждый подключен к одному провайдеру. Каналы должны использоваться как основной и резервный. Для исходящего трафика используется HSRP на dyn1 и dyn2. Для входящего используется метод AS path prepend.

  1. Настройка IP-адресации
    Необходимо выполнить настройку IP-адресации в сети в соответствии с топологией. Изменилась адресация связанная с подключением AS 100. Если не указано явно, то 4 октет IP-адреса, соответствует номеру маршрутизатора.
  2. Настройка подключения AS 100
    Настройка eBGP-соседей на dyn1, dyn2, dyn5 и dyn6.
    На топологии указаны IP-адреса, которые используются для связи с AS100. Настроить связи с eBGP-соседями через физические интерфейсы. Настроить IBGP между dyn1 и dyn2 между loopback-интерфейсами. Прописать статические маршруты к loopback.
  3. Для того чтобы AS100 не стала транзитной, необходимо настроить фильтрацию маршрутов. Маршрутизаторы dyn1 и dyn2 должны анонсировать соседним AS только свою сеть (192.168.100.0/22).
  4. От провайдера ISP2 должна приходить частичная таблица маршрутизации (сети автономной системы 600) и маршрут по умолчанию.
  5. Настройка HSRP в локальной сети AS 100 на маршрутизаторах dyn1, dyn2. Dyn1 должен быть Active, если доступен ISP1 и весь исходящий трафик, кроме трафика в AS600, должен передаваться через него.
    Виртуальный IP-адрес, должен быть настроен как шлюз по умолчанию для dyn3 и dyn4.
  6. Настройка AS path prepend для управления входящим трафиком.
    По умолчанию весь входящий трафик должен передаваться через ISP1. Если он недоступен, то должно происходить автоматическое переключение на второго провайдера.

[править] Пошаговая настройка

[править] Настройка IP-адресации

Необходимо выполнить настройку IP-адресации в сети в соответствии с топологией. Изменилась адресация связанная с подключением AS 100. Если не указано явно, то 4 октет IP-адреса, соответствует номеру маршрутизатора.

[править] Настройка подключения AS 100

Настройка eBGP-соседей на dyn1, dyn2, dyn5 и dyn6.

На топологии указаны IP-адреса, которые используются для связи с AS100. Настроить связи с eBGP-соседями через физические интерфейсы.

На dyn5 всё остается без изменений:

router bgp 500
 network 192.168.1.0
 network 192.168.6.0
 neighbor 192.168.1.2 remote-as 100
 neighbor 192.168.6.8 remote-as 500
 neighbor 192.168.6.8 next-hop-self

dyn6:

router bgp 600
 neighbor 192.168.3.6 remote-as 100

Настроить IBGP между dyn1 и dyn2 между loopback-интерфейсами. Прописать статические маршруты к loopback.

dyn1:

ip route 192.168.100.2 255.255.255.255 192.168.103.2
!
router bgp 100
 neighbor 192.168.100.2 remote-as 100
 neighbor 192.168.100.2 update-source Loopback0

На dyn2, кроме соседей, необходимо настроить анонсирование сети 192.168.100.0/22:

ip route 192.168.100.0 255.255.252.0 Null0
ip route 192.168.100.1 255.255.255.255 192.168.103.1
!     
router bgp 100
 network 192.168.100.0 mask 255.255.252.0
 neighbor 192.168.3.5 remote-as 600
 neighbor 192.168.100.1 remote-as 100
 neighbor 192.168.100.1 update-source Loopback0


[править] Настройка фильтрации исходящих маршрутов

Для того чтобы AS100 не стала транзитной, необходимо настроить фильтрацию маршрутов. Маршрутизаторы dyn1 и dyn2 должны анонсировать соседним AS только свою сеть (192.168.100.0/22).

Используется тот же фильтр, что и в прошлых лабораторных. Он должен быть применен на dyn1 и dyn2:

ip as-path access-list 100 permit ^$
!  
route-map local_route permit 10
 match as-path 100

На dyn1:

router bgp 100
 neighbor 192.168.1.1 route-map local_route out

На dyn2:

router bgp 100
 neighbor 192.168.3.5 route-map local_route out


[править] Настройка фильтрации входящих маршрутов

От провайдера ISP2 должна приходить частичная таблица маршрутизации (сети автономной системы 600) и маршрут по умолчанию.

Это должно быть настроено со стороны провайдера, однако фильтрация на dyn2 нужна на случай ошибок провайдера:

ip as-path access-list 6 permit ^600$
!
route-map only_AS_600 permit 10
 match as-path 6

Применение route-map для входящих обновлений с соседом dyn6:

router bgp 100 
 neighbor 192.168.3.5 route-map only_AS_600 in


[править] Настройка HSRP на маршрутизаторах dyn1, dyn2.

Настройка HSRP в локальной сети AS 100 на маршрутизаторах dyn1, dyn2. Dyn1 должен быть Active, если доступен провайдер с AS500 и исходящий трафик должен передаваться через него.

Настройки HSRP на dyn1:

interface FastEthernet0/0
 standby version 2
 standby 1 ip 192.168.103.100
 standby 1 priority 110
 standby 1 preempt delay minimum 60

Настройки HSRP на dyn2:

interface FastEthernet0/0
 standby version 2
 standby 1 ip 192.168.103.100
 standby 1 preempt


Настройка теста IP SLA на dyn1, который будет отслеживать доступность доступность провайдера ISP1 (AS 500):

ip sla 1
 icmp-echo 192.168.6.8 source-interface FastEthernet1/0
 timeout 500
 frequency 3
ip sla schedule 1 life forever start-time now

Если для проверки доступности выбран какой-то ресурс в сети провайдера, а не пограничный маршрутизатор, то лучше прописать к нему статический маршрут:

ip route 192.168.6.8 255.255.255.255 192.168.1.1 

Настройка track для мониторинга доступности ISP1.

track 1 ip sla 1 reachability

Настройка в track задержки на переход в состояния UP и DOWN:

track 1 ip sla 1 reachability
 delay down 10 up 5

Привязка track к HSRP. Если track в состоянии DOWN, приоритет маршрутизатора уменьшится на 20:

interface FastEthernet0/0
 standby 1 track 1 decrement 20

Виртуальный IP-адрес, должен быть настроен как шлюз по умолчанию для dyn3 и dyn4.

ip route 0.0.0.0 0.0.0.0 192.168.103.100


[править] Настройка AS path prepend для управления входящим трафиком

Необходимо добавить в существующую route-map настройки AS path prepend:

route-map local_route permit 10
 match as-path 100
 set as-path prepend 100 100 100

[править] Лабораторная 6. Настройка BGP в сети с двумя пограничными маршрутизаторами и двумя каналами к разным провайдерам. Управление входящим и исходящим трафиком

BGP lab enterprise.png


[править] Задание

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

  1. Настройка IP-адресации
    Необходимо выполнить настройку IP-адресации в сети в соответствии с топологией. Если не указано явно, то 4 октет IP-адреса, соответствует номеру маршрутизатора.
  2. Настройка OSPF в локальной сети AS 100 на маршрутизаторах dyn1, dyn2, dyn3, dyn4. В OSPF надо анонсировать все сети автономной системы.
  3. Настройка eBGP-соседей на dyn5 и dyn6.
    На топологии указаны IP-адреса, которые используются для связи с AS100.
    Настроить связи с eBGP-соседями через физические интерфейсы.
  4. Базовая настройка BGP в AS 100
    1. Настройка связи с соседями (IBGP через loopback-интерфейсы).
    2. Настройка анонсирования своего диапазона адресов на dyn1 и dyn2. Для того чтобы AS100 не стала транзитной, необходимо настроить фильтрацию маршрутов. Dyn1 и dyn2 должны анонсировать соседним AS только свою сеть (192.168.100.0/22).
    3. Проверка базовых настроек BGP.
      1. Проверить доступность всех сетей из локальной сети AS 100.
      2. Проверить правильность анонсирования маршрутов. И убедиться, что AS100 не используется как транзитная.
  5. Настройка разделения нагрузки между провайдерами для исходящего трафика (настраивать можно или совместно два метода или по очереди их, отменяя предыдущий).
    1. Настройка провайдера с AS 500 как основного, более приоритетного, для исходящего трафика.
      Исходящий трафик должен идти через AS 600, если он идет в одну из её сетей. В остальных случаях должен использоваться путь через AS 500 на обоих маршрутизаторах. Этого можно добиться с помощью фильтрации маршрутов от AS600. И получением из неё только частичной таблицы маршрутизации и маршрута по умолчанию. В случае выхода из строя провайдера с AS 500, весь трафик должен передаваться через AS 600.
    2. Настройка распределения нагрузки между провайдерами с помощью Local preference. Часть сетей может анонсироваться с одним значением Local preference, а остальные с другим.
  6. Балансировка нагрузки для исходящего трафика между провайдерами с помощью BGP multipath для внутренних и внешних BGP-соседей (предыдущие методы распределения нагрузки необходимо отменить, чтобы было маршруты с одинаковой длинной атрибута AS path)
    1. Балансировка без учета пропускной способности каналов (каналы считаются равными)
      1. Для внешних соседей
      2. Для внутренних соседей
    2. Балансировка с учетом пропускной способности каналов
      1. Для внешних соседей
      2. Для внутренних соседей
  7. Настройка разделения нагрузки между провайдерами для входящего трафика.
    1. Вариант 1. Анонсировать с пограничных маршрутизаторов сеть 192.168.100.0/22. С dyn1 сеть 192.168.101.0/24, а с dyn2 сеть 192.168.102.0/24. (предыдущие лабораторные) Засчет этого входящий трафик к одной сети будет идти через один маршрутизатор, ко второй – через второй.
    2. Вариант 2. Для линков с одним и тем же провайдером, можно использовать атрибут MED для того чтобы указать провайдеру, какой из входов в автономную систему приоритетнее.
    3. Вариант 3. Если предыдущий метод разделения нагрузки не подходит или не дает хороших результатов, можно использовать AS prepend. Как совместно с предыдущим методом, так и независимо. (предыдущие лабораторные)
    4. Вариант 3. Если провайдеры поддерживают community, то можно использовать их.
      1. Настройка community со стороны клиента
      2. Настройка community со стороны провайдеров

[править] Пошаговая настройка

[править] Настройка IP-адресации

Необходимо выполнить настройку IP-адресации в сети в соответствии с топологией. Если не указано явно, то 4 октет IP-адреса, соответствует номеру маршрутизатора.

[править] Настройка OSPF

Настройка OSPF в локальной сети AS 100 на маршрутизаторах dyn1, dyn2, dyn3, dyn4. В OSPF надо анонсировать все сети автономной системы.

Dyn1, dyn2

router ospf 1
 passive-interface FastEthernet1/0
 passive-interface FastEthernet2/0
 network 192.168.0.0 0.0.255.255 area 0

Dyn3, dyn4

router ospf 1
 network 192.168.0.0 0.0.255.255 area 0


[править] Настройка eBGP-соседей на dyn5 и dyn6

На топологии указаны IP-адреса, которые используются для связи с AS100. Настроить связи с eBGP-соседями через физические интерфейсы.

Итоговые настройки на dyn5

router bgp 500
 network 192.168.1.0
 network 192.168.6.0
 neighbor 192.168.1.2 remote-as 100
 neighbor 192.168.1.6 remote-as 100
 neighbor 192.168.6.8 remote-as 500
 neighbor 192.168.6.8 next-hop-self

Итоговые настройки на dyn6

router bgp 600
 network 192.168.2.0
 network 192.168.3.0
 network 192.168.7.0
 neighbor 192.168.3.2 remote-as 100
 neighbor 192.168.3.6 remote-as 100
 neighbor 192.168.7.9 remote-as 600
 neighbor 192.168.9.10 remote-as 600


[править] Базовая настройка BGP в AS 100

[править] Настройка связи с соседями (IBGP через loopback-интерфейсы)

dyn1

router bgp 100
 neighbor 192.168.1.1 remote-as 500
 neighbor 192.168.3.1 remote-as 600
 neighbor 192.168.100.2 remote-as 100
 neighbor 192.168.100.2 update-source Loopback0
 neighbor 192.168.100.3 remote-as 100
 neighbor 192.168.100.3 update-source Loopback0
 neighbor 192.168.100.4 remote-as 100
 neighbor 192.168.100.4 update-source Loopback0

dyn2

router bgp 100
 neighbor 192.168.1.5 remote-as 500
 neighbor 192.168.3.5 remote-as 600
 neighbor 192.168.100.1 remote-as 100
 neighbor 192.168.100.1 update-source Loopback0
 neighbor 192.168.100.3 remote-as 100
 neighbor 192.168.100.3 update-source Loopback0
 neighbor 192.168.100.4 remote-as 100
 neighbor 192.168.100.4 update-source Loopback0

dyn3

router bgp 100
 neighbor 192.168.100.1 remote-as 100
 neighbor 192.168.100.1 update-source Loopback0
 neighbor 192.168.100.2 remote-as 100
 neighbor 192.168.100.2 update-source Loopback0
 neighbor 192.168.100.4 remote-as 100
 neighbor 192.168.100.4 update-source Loopback0

dyn4

router bgp 100
 neighbor 192.168.100.1 remote-as 100
 neighbor 192.168.100.1 update-source Loopback0
 neighbor 192.168.100.2 remote-as 100
 neighbor 192.168.100.2 update-source Loopback0
 neighbor 192.168.100.3 remote-as 100
 neighbor 192.168.100.3 update-source Loopback0


[править] Настройка анонсирования своего диапазона адресов на dyn1 и dyn2

Для того чтобы AS100 не стала транзитной, необходимо настроить фильтрацию маршрутов. Dyn1 и dyn2 должны анонсировать соседним AS только свою сеть (192.168.100.0/22).

dyn1

ip as-path access-list 100 permit ^$
!  
route-map local_route permit 10
 match as-path 100
!
router bgp 100
 network 192.168.100.0 mask 255.255.252.0
 neighbor 192.168.1.1 route-map local_route out
 neighbor 192.168.3.1 route-map local_route out
!
ip route 192.168.100.0 255.255.252.0 Null0

dyn2

ip as-path access-list 100 permit ^$
!  
route-map local_route permit 10
 match as-path 100
!
router bgp 100
 network 192.168.100.0 mask 255.255.252.0
 neighbor 192.168.1.5 route-map local_route out
 neighbor 192.168.3.5 route-map local_route out
!
ip route 192.168.100.0 255.255.252.0 Null0


[править] Проверка базовых настроек BGP

Проверить доступность всех сетей из локальной сети AS 100.

Проверить правильность анонсирования маршрутов. И убедиться, что AS100 не используется как транзитная.

[править] Настройка разделения нагрузки между провайдерами для исходящего трафика

[править] (опционально) Настройка провайдера с AS 500 как основного, более приоритетного, для исходящего трафика

Исходящий трафик должен идти через AS 600, если он идет в одну из её сетей. В остальных случаях должен использоваться путь через AS 500 на обоих маршрутизаторах. Этого можно добиться с помощью фильтрации маршрутов от AS600. И получением из неё только частичной таблицы маршрутизации и маршрута по умолчанию. В случае выхода из строя провайдера с AS 500, весь трафик должен передаваться через AS 600.

[править] Настройка распределения нагрузки между провайдерами с помощью Local preference

Часть сетей может анонсироваться с одним значением Local preference, а остальные с другим.

route-map dyn5 permit 10
 set local-preference 50
!
router bgp 100
 neighbor 192.168.1.5 route-map dyn5 in


[править] Балансировка нагрузки для исходящего трафика между провайдерами с помощью BGP multipath

[править] Балансировка без учета пропускной способности каналов (каналы считаются равными)
[править] Для внешних соседей

Настройки и команды показаны на маршрутизаторах dyn1 и dyn3. На dyn2 и dyn4 всё аналогично.

До настройки балансировки нагрузки в сеть 192.168.14.0/24 в таблице BGP есть два внешних маршрута. У них одинаковая длина пути через AS, но разное значение атрибута:

dyn1#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 155
Paths: (3 available, best #3, table Default-IP-Routing-Table)
  Advertised to update-groups:
        3
  600 1200
    192.168.3.1 from 192.168.3.1 (192.168.7.6)
      Origin IGP, localpref 100, valid, external
  500 1100
    192.168.1.5 (metric 2) from 192.168.100.2 (192.168.100.2)
      Origin IGP, metric 0, localpref 100, valid, internal
  500 1100
    192.168.1.1 from 192.168.1.1 (192.168.6.5)
      Origin IGP, localpref 100, valid, external, best

На dyn1 необходимо включить балансировку нагрузки между маршрутами и разрешить использовать маршруты с разным значением AS path:

router bgp 100
 bgp bestpath as-path multipath-relax
 maximum-paths 4

После повторной пересылки маршрутов:

dyn1#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 13
Paths: (3 available, best #2, table Default-IP-Routing-Table)
Multipath: eBGP iBGP
Flag: 0x1820
  Advertised to update-groups:
        2    3
  500 1100
    192.168.1.5 (metric 2) from 192.168.100.2 (192.168.100.2)
      Origin IGP, metric 0, localpref 100, valid, internal
  500 1100
    192.168.1.1 from 192.168.1.1 (192.168.6.5)
      Origin IGP, localpref 100, valid, external, multipath, best
  600 1200
    192.168.3.1 from 192.168.3.1 (192.168.7.6)
      Origin IGP, localpref 100, valid, external, multipath

В таблице маршрутизации два маршрута:

B    192.168.14.0/24 [20/0] via 192.168.3.1, 00:16:38
                     [20/0] via 192.168.1.1, 00:16:38


[править] Для внутренних соседей

На dyn3 приходят два внутренних маршрута с одинаковыми атрибутами BGP, но разной метрикой протокола IGP (metric 2 и metric 13):

dyn3#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 247
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  500 1100
    192.168.1.5 (metric 2) from 192.168.100.2 (192.168.100.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best
  500 1100
    192.168.1.1 (metric 13) from 192.168.100.1 (192.168.100.1)
      Origin IGP, metric 0, localpref 100, valid, internal

Самый простой способ уравнять значение метрик, это настроить на пограничных маршрутизаторах next-hop-self:

router bgp 100
 neighbor 192.168.100.3 next-hop-self
 neighbor 192.168.100.4 next-hop-self

После этого:

dyn3#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 247
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  500 1100
    192.168.1.5 (metric 2) from 192.168.100.2 (192.168.100.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best
  500 1100
    192.168.1.1 (metric 2) from 192.168.100.1 (192.168.100.1)
      Origin IGP, metric 0, localpref 100, valid, internal

На dyn3 и dyn4 необходимо включить балансировку нагрузки для внутреннего BGP:

router bgp 100
 maximum-paths ibgp 4

Таблица BGP:

dyn3#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 265
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Multipath: iBGP
  Not advertised to any peer
  500 1100
   192.168.100.2 (metric 2) from 192.168.100.2 (192.168.100.2)
    Origin IGP, metric 0, localpref 100, valid, internal, multipath
  500 1100
   192.168.100.1 (metric 2) from 192.168.100.1 (192.168.100.1)
    Origin IGP, metric 0, localpref 100, valid, internal, multipath, best

Таблица маршрутизации:

dyn3#sh ip route 192.168.14.0
Routing entry for 192.168.14.0/24
  Known via "bgp 100", distance 200, metric 0
  Tag 500, type internal
  Last update from 192.168.100.1 00:23:28 ago
  Routing Descriptor Blocks:
  * 192.168.100.2, from 192.168.100.2, 00:37:57 ago
      Route metric is 0, traffic share count is 1
      AS Hops 2
      Route tag 500
    192.168.100.1, from 192.168.100.1, 00:23:28 ago
      Route metric is 0, traffic share count is 1
      AS Hops 2
      Route tag 500


[править] Балансировка с учетом пропускной способности каналов

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


[править] Для внешних соседей

Для того чтобы учитывалась пропускная способность каналов, необходимо настроить:

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

Dyn1:

router bgp 100
 bgp bestpath as-path multipath-relax
 bgp dmzlink-bw
 neighbor 192.168.1.1 dmzlink-bw
 neighbor 192.168.3.1 dmzlink-bw
 maximum-paths 4

Dyn2:

router bgp 100
 bgp bestpath as-path multipath-relax
 bgp dmzlink-bw
 neighbor 192.168.1.5 dmzlink-bw
 neighbor 192.168.3.5 dmzlink-bw
 maximum-paths 4

Таблица BGP после обновления маршрутов:

dyn1#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 13
Paths: (3 available, best #3, table Default-IP-Routing-Table)
Multipath: eBGP iBGP
  Advertised to update-groups:
        2    4
  500 1100
    192.168.100.2 from 192.168.100.2 (192.168.100.2)
      Origin IGP, metric 0, localpref 100, valid, internal
      DMZ-Link Bw 1500 kbytes
  600 1200
    192.168.3.1 from 192.168.3.1 (192.168.7.6)
      Origin IGP, localpref 100, valid, external, multipath
      DMZ-Link Bw 250 kbytes
  500 1100
    192.168.1.1 from 192.168.1.1 (192.168.6.5)
      Origin IGP, localpref 100, valid, external, multipath, best
      DMZ-Link Bw 1000 kbytes

Таблица маршрутизации:

Dyn1# sh ip route 192.168.14.0
Routing entry for 192.168.14.0/24
  Known via "bgp 100", distance 20, metric 0
  Tag 500, type external
  Last update from 192.168.1.1 00:22:51 ago
  Routing Descriptor Blocks:
  * 192.168.3.1, from 192.168.3.1, 00:22:51 ago
      Route metric is 0, traffic share count is 1
      AS Hops 2
      Route tag 500
    192.168.1.1, from 192.168.1.1, 00:22:51 ago
      Route metric is 0, traffic share count is 4
      AS Hops 2
      Route tag 500


[править] Для внутренних соседей

Для того чтобы учитывалась пропускная способность каналов, необходимо настроить:

  1. отправку extended BGP communities внутренним соседям
  2. добавление во входящие обновления от внешних соседей информации о пропускной способности канала (сделано в предыдущем пункте)
  3. включить на всех маршрутизаторах поддежку балансировки по пропускной способности.

Dyn1:

router bgp 100
 bgp dmzlink-bw
 neighbor 192.168.1.1 dmzlink-bw
 neighbor 192.168.3.1 dmzlink-bw
 neighbor 192.168.100.2 send-community both
 neighbor 192.168.100.3 send-community both
 neighbor 192.168.100.4 send-community both
 maximum-paths 4

Dyn2:

router bgp 100
 bgp dmzlink-bw
 neighbor 192.168.1.5 dmzlink-bw
 neighbor 192.168.3.5 dmzlink-bw
 neighbor 192.168.100.1 send-community both
 neighbor 192.168.100.3 send-community both
 neighbor 192.168.100.4 send-community both
 maximum-paths 4

Dyn3:

router bgp 100
 bgp dmzlink-bw
 maximum-paths ibgp 4

Dyn4:

router bgp 100
 bgp dmzlink-bw
 maximum-paths ibgp 4

Таблица BGP после обновления маршрутов:

dyn3#sh ip bgp 192.168.14.0
BGP routing table entry for 192.168.14.0/24, version 13
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Multipath: iBGP
  Not advertised to any peer
  500 1100
    192.168.100.2 (metric 2) from 192.168.100.2 (192.168.100.2)
     Origin IGP, metric 0, localpref 100, valid, internal, multipath
     DMZ-Link Bw 1500 kbytes
  500 1100
    192.168.100.1 (metric 2) from 192.168.100.1 (192.168.100.1)
     Origin IGP, metric 0, localpref 100, valid, internal, multipath, best
     DMZ-Link Bw 1250 kbytes

Таблица маршрутизации:

dyn3#sh ip route 192.168.14.0
Routing entry for 192.168.14.0/24
  Known via "bgp 100", distance 200, metric 0
  Tag 500, type internal
  Last update from 192.168.100.1 00:26:42 ago
  Routing Descriptor Blocks:
<pre>
  * 192.168.100.2, from 192.168.100.2, 00:26:42 ago
      Route metric is 0, traffic share count is 6
      AS Hops 2
      Route tag 500
    192.168.100.1, from 192.168.100.1, 00:26:42 ago
      Route metric is 0, traffic share count is 5
      AS Hops 2
      Route tag 500


[править] Настройка разделения нагрузки между провайдерами для входящего трафика

[править] Вариант 1. Анонс разных сетей через разных провайдеров

Анонсировать с пограничных маршрутизаторов сеть 192.168.100.0/22. С dyn1 сеть 192.168.101.0/24, а с dyn2 сеть 192.168.102.0/24. Засчет этого входящий трафик к одной сети будет идти через один маршрутизатор, ко второй – через второй.

[править] Вариант 2. Использование атрибута MED для подключений к одному и тому же провайдеру

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

Изменение метрики:

route-map local_route permit 10
 match ip address prefix-list local
 match as-path 100
 set metric 100

Применение route-map:

router bgp 100
 neighbor 192.168.1.1 route-map local_route out
[править] Вариант 3. Использование AS path prepend
Если предыдущий метод разделения нагрузки не подходит или не дает хороших результатов, можно использовать AS prepend. Как совместно с предыдущим методом, так и независимо.
[править] Вариант 4. Настройка community

Если провайдеры поддерживают community, то можно использовать их.

[править] Настройка community со стороны клиента

Настройка на dyn1:

ip bgp-community new-format
!
route-map LP_200 permit 10
 match as-path 100
 set community 600:200
!
route-map LP_500 permit 10
 match as-path 100
 set community 500:500
!
router bgp 100
 neighbor 192.168.1.1 send-community
 neighbor 192.168.1.1 route-map LP_500 out
 neighbor 192.168.3.1 send-community
 neighbor 192.168.3.1 route-map LP_200 out

Настройка на dyn2:

ip bgp-community new-format
!
route-map LP_200 permit 10
 match as-path 100
 set community 500:200
!
route-map LP_600 permit 10
 match as-path 100
 set community 600:600
!
router bgp 100
 neighbor 192.168.1.5 send-community
 neighbor 192.168.1.5 route-map LP_200 out
 neighbor 192.168.3.5 send-community
 neighbor 192.168.3.5 route-map LP_600 out

После этого на dyn5 приходят маршруты со значениями community (надо настроить ip bgp-community new-format чтобы они отображались в формате ASN:LP)

dyn5#sh ip bgp 192.168.100.0
BGP routing table entry for 192.168.100.0/22, version 718
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
        1    3
  100
    192.168.1.2 from 192.168.1.2 (192.168.100.1)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: 500:500
  100
    192.168.1.6 from 192.168.1.6 (192.168.100.2)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 500:200

Однако значение Local preference осталось по умолчанию, так как на провайдерах ещё не настроены правила работы с community.

[править] Настройка community со стороны провайдеров

dyn5:

ip bgp-community new-format
!
ip community-list standard LP_200 permit 500:200
ip community-list standard LP_500 permit 500:500
!
route-map client_LP_in permit 10
 match community LP_200
 set local-preference 200
route-map client_LP_in permit 20
 match community LP_500
 set local-preference 500
route-map client_LP_in permit 30
 set local-preference 150
!
router bgp 500
 neighbor 192.168.1.2 route-map client_LP_in in
 neighbor 192.168.1.6 route-map client_LP_in in

После обновления маршрутов на dyn5:

dyn5#sh ip bgp 192.168.100.0
BGP routing table entry for 192.168.100.0/22, version 720
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
<pre>
        1    3
  100
    192.168.1.2 from 192.168.1.2 (192.168.100.1)
      Origin IGP, metric 0, localpref 500, valid, external, best
      Community: 500:500
  100
    192.168.1.6 from 192.168.1.6 (192.168.100.2)
      Origin IGP, metric 0, localpref 200, valid, external
      Community: 500:200

Dyn6:

ip bgp-community new-format
!
ip community-list standard LP_200 permit 600:200
ip community-list standard LP_600 permit 600:600
!
route-map client_LP_in permit 10
 match community LP_200
 set local-preference 200
route-map client_LP_in permit 20
 match community LP_600
 set local-preference 600
route-map client_LP_in permit 30
 set local-preference 130
!
router bgp 600
 neighbor 192.168.3.2 route-map client_LP_in in
 neighbor 192.168.3.6 route-map client_LP_in i

После обновления маршрутов на dyn6:

dyn6#sh ip bgp 192.168.100.0
BGP routing table entry for 192.168.100.0/22, version 556
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Flag: 0x8C0
  Advertised to update-groups:
        1    3
  100
    192.168.3.2 from 192.168.3.2 (192.168.100.1)
      Origin IGP, metric 0, localpref 200, valid, external
      Community: 600:200
  100
    192.168.3.6 from 192.168.3.6 (192.168.100.2)
      Origin IGP, metric 0, localpref 600, valid, external, best
      Community: 600:600

[править] Использование Xentaur

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

Работа с маршрутизаторами в Xentaur:

Действие
Комбинация клавиш
Переключение между окнами (с 1 по 9 окно)
Ctrl+a номер окна
Переключение между окнами
Ctrl+a ' номер окна
Список всех окон (по нему можно передвигаться и переключиться на другое окно): 
Ctrl+a “
Переключиться на следующее окно: 
Ctrl+a space  или
Ctrl+a n
Переключиться на предыдущее окно
Ctrl+a backspace или
Ctrl+a p
Прокрутка вверх
Ctrl+a [  
после нажатия комбинации, передвигаться можно стрелками вверх  и вниз

[править] Схема для лабораторных на этой странице

network='bgp_lab'

domains =       [ 'dyn1',     'dyn2',     'dyn3',     'dyn4',     'dyn5',     'dyn6',     'qua7',   'qua8',   'qua9',   'qua10',  'qua11',  'qua12'  ]
domain_types =  [ 'dynamips', 'dynamips', 'dynamips', 'dynamips', 'dynamips', 'dynamips', 'quagga', 'quagga', 'quagga', 'quagga', 'quagga', 'quagga' ]
bridges =       [

                  'br1',
                  'br2',
                  'br3',
                  'br4',
                  'br5',
                  'br6',
                  'br7',  
                  'br8',  
                  'br9',
                  'br10',
                  'br11',
                  'br12',
                  'br13',
                  'br14',
                  'br15',
                  'br16',
                ]

vbridges_table ={
        'dyn1'    : [ 'br2', 'br3', 'br5' ],
        'dyn2'    : [ 'br2', 'br4', 'br5' ],
        'dyn3'    : [ 'br1', 'br2' ],
        'dyn4'    : [ 'br1', 'br2' ],
        'dyn5'    : [ 'br3', 'br5', 'br6' ],
        'dyn6'    : [ 'br4', 'br5', 'br7' ],
        'qua7'    : [ 'br1' ],  
        'qua8'    : [ 'br6', 'br8', 'br10' ],
        'qua9'    : [ 'br7', 'br9', 'br11' ],
        'qua10'   : [ 'br9', 'br15', 'br16' ],  
        'qua11'   : [ 'br10', 'br12', 'br14' ],
        'qua12'   : [ 'br11', 'br13', 'br14' ],
}

[править] Полезные команды

В этом разделе перечислены только некоторые команды. Более подробная информация доступна на странице BGP в Cisco

Отобразить часть текущей конфигурации с настройками BGP

sh run | s bgp  

Настройка процесса BGP

router bgp <asn>

Создать соседа BGP (эта команда активирует сессию BGP с указанным соседом)

neighbor <ip-address> remote-as <asn>

Указать какие сети анонсировать по протоколу BGP (если сеть присутствует в таблице маршрутизации)

network <network-number> 

Какие маршруты анонсируются указанному соседу

show ip  bgp neighbors A.B.C.D advertised-routes

Просмотр краткой информации о соседях

sh ip bgp summary 

Детальная информация о соседях

show ip bgp neighbors

Таблица BGP

sh ip bgp 

Подробная информация о маршрутах к определенной сети

show ip bgp 192.168.1.0

Указывает какие сети не были помещены в RIB (routing information base) и почему они не были туда помещены

show ip bgp rib-failure

Показать маршруты у которых в AS Path встречается ASN 406

sh ip bgp regexp 406

Одновременный soft reset для входящих и исходящих обновлений

clear ip bgp <neighbor-address> soft