Назад | Перейти на главную страницу

Как мне применить предпочтительные маршруты с помощью BGP и Quagga?

У меня есть два маршрутизатора, которые я настраиваю в настоящее время, и они будут снабжать мою сеть серверов частным номером AS, предоставленным центром обработки данных.

Что я хочу сделать, так это предоставить как маршрут по умолчанию для отработки отказа VRRP для серверов в сети, так и убедиться, что исходящая и входящая маршрутизация всегда будет предпочтительнее по одному пути и использовать другой путь только тогда, когда основной предпочтительный путь не работает. . то есть настройка МАСТЕР / РЕЗЕРВНОЕ КОПИРОВАНИЕ.

Я уже разобрался с VRRP. Но мои знания BGP очень базовые.

Позвольте мне нарисовать немного ascii-арта топологии, чтобы было немного понятнее.

ISPA (AS 1)               ISPB (AS 1)
  |                         |
  |                         |
  R1 --- P2P (ethernet) --- R2 (AS65007)
  |                         |
  +------- LAN (ipoib) -----+  

Маршрутизаторы ISP A и B - это удаленные маршрутизаторы в одном центре обработки данных. Предположим, у них есть AS 1. А еще у меня есть частный AS 65007.

А теперь давайте сформулируем это снова. Я хочу, чтобы трафик из AS 1 всегда приходил ко мне через R1 и никогда через R2, если только путь R1 к ISP A не отключен.

Предположим, ISPA и R1 имеют IP-адреса 10.1.1.1/30 и 10.1.1.2/30 соответственно. И предположим, что ISPB и R2 имеют IP-адреса 10.1.1.5/30 и 10.1.1.6/30 соответственно.

Также предположим, что диапазон сети, который я хочу рекламировать, равен 192.168.1.0/25.

Моя текущая конфигурация без смещенной маршрутизации в настоящее время работает и выглядит так:

Для R1 (R2 - почти то же самое).

ip prefix-list Net:Out seq 5 permit 192.168.1.0/25

router bgp 65007
  bgp router-id 10.1.1.2
  redistribute connected route-map Redist:BGP
  neighbor 10.1.1.1 remote-as 558
  neighbor 10.1.1.1 description Net
  neighbor 10.1.1.1 soft-reconfiguration inbound
  neighbor 10.1.1.1 prefix-list Net:Out out

route-map Redist:BGP permit 10
match ip address prefix-list Net:Out

** Что также имеет проблему, потому что R1 не знает, что он может достичь R2 в 10.1.1.6. IBGP отсутствует. Как мне это исправить? **

Мне сказали, что я могу искажать данные несколькими способами. Из моего NOC мне сказали, что я могу использовать localpref и добавить свою AS на резервный маршрутизатор.

Если бы я правильно понял, это выглядело бы примерно так. Где конфигурация R1 останется прежней. Это правильный синтаксис для quagga и будет ли это работать?

ip prefix-list Net:Out seq 5 permit 192.168.1.0/25

router bgp 65007
  bgp router-id 10.1.1.6
  redistribute connected route-map Redist:BGP
  neighbor 10.1.1.5 remote-as 558
  neighbor 10.1.1.5 route-map Net:In in
  neighbor 10.1.1.5 description Net
  neighbor 10.1.1.5 soft-reconfiguration inbound
  neighbor 10.1.1.5 prefix-list Net:Out out

route-map Redist:BGP permit 10
match ip address prefix-list Net:Out
set as-path prepend 65007 65007

route-map Net:In
set local-preference 10

Однако, когда я описал свою проблему знакомому, который работает в области сетевых технологий, он сказал мне, что все еще существует большая вероятность того, что данные все равно будут передаваться через R2 от провайдера, и описал другой способ сделать это. Он сказал, что я также могу использовать MED, если провайдер примет это. Или же, поскольку обе линии исходят от одного и того же провайдера, он сказал мне, что маршрутизация очень детерминирована и всегда будет выбирать наиболее специализированный путь. Поэтому он предложил на моем основном маршрутизаторе R1 рекламировать две сети. то есть два / 26-х. Это правильно и будет ли это работать. Может, стоит комбинировать оба метода?

ip prefix-list Net:Out seq 5 permit 192.168.1.0/26
ip prefix-list Net:Out seq 10 permit 192.168.1.64/26

router bgp 65007
  bgp router-id 10.1.1.2
  redistribute connected route-map Redist:BGP
  neighbor 10.1.1.1 remote-as 558
  neighbor 10.1.1.1 route-map in Net:In
  neighbor 10.1.1.1 description Net
  neighbor 10.1.1.1 soft-reconfiguration inbound
  neighbor 10.1.1.1 prefix-list Net:Out out

route-map Redist:BGP permit 10
match ip address prefix-list Net:Out

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


Обновление: указанный выше метод подсети не работал. Я предполагаю, что мой провайдер отвергает все, что меньше 25. Подтверждено, когда я попробовал это на одном маршрутизаторе. show ip bgp вообще не распространял маршрут. Может, я могу использовать MED? будет ли это лучше, чем первый метод?

Есть несколько способов выполнить то, что вы хотите, и да, добавление вашей собственной AS к маршрутам (префиксам), которые вы объявляете ISP, наряду с установкой LOCAL_PREF для тех, которые вы (будете) повторно рекламировать внутри, является хорошим моментом.

В основном вам необходимо:

  1. Сделайте префиксы (маршруты), которые вы объявляете через R1, предпочтительными для ISPA (влияние на входящий путь).
  2. Сделайте все префиксы, которые вы получаете от ISPA на R1 (включая маршрут по умолчанию - при условии, что вы не используете статические маршруты), предпочтительными для вашей внутренней сети (влияющий на исходящий путь). Небольшое примечание: поскольку конечные хосты используют шлюз по умолчанию и не выполняют маршрутизацию, это дело VRRP для передачи пакетов от конечных хостов к R1, но в любом случае вы можете получить, что даже если пакеты прибывают на R2, R2 будет пересылать эти пакеты на R1, а не на ISPB.

Для точки 1, MED, добавление AS, сообщества и т. Д. Являются возможными метриками (например, атрибутами BGP) для настройки, но тот, который будет работать без изменений с удаленной стороны, скорее всего, будет добавлен AS (например, для MED может потребоваться инструкция например, "bgp always-compare-med" в маршрутизаторе ISP, возможно, в зависимости от их конфигурации).

Для пункта 2 можно использовать LOCAL_PREF и WEIGHT (а также сообщества и другие методы, которые нас не волнуют в этом случае). WEIGHT является собственностью Cisco (но Quagga использует его), также он не включен в обновления BGP (локально значимые), поэтому я бы выбрал LOCAL_PREF (который работает с iBGP, которого у вас еще нет).

Сказав это, чтобы попасть на netdc.com, как вы хотите, один из вариантов:

#
# R1
#
router bgp 65007
  bgp router-id 10.1.1.2
  network 192.168.1.0/25
  neighbor 10.1.1.1 remote-as 558
  neighbor 10.1.1.1 description Net
  neighbor 10.1.1.1 soft-reconfiguration inbound
  neighbor 10.1.1.1 route-map Net:In in
  neighbor 10.1.1.1 route-map Net:Out out

  neighbor iBGP_peers peer-group
  neighbor iBGP_peers remote-as 65007
  neighbor iBGP_peers password $whatyouwant
  neighbor iBGP_peers update-source $IP  #The interface in the common subnet 192.168.1.0/25, otherwise you need an internal routing protocol (IGP) also
  neighbor iBGP_peers next-hop-self      # Otherwise you need to advertise the p2p network between you and ISP

  neighbor $IP_R2_in_192.168.1.0 peer-group iBGP_peers
  neighbor $IP_R2_in_192.168.1.0 description R2

ip prefix-list local-allocations seq 10 permit 192.168.1.0/25

route-map Net:In
  description allow everything

route-map Net:Out
  description announce allocated routes sourced from our AS only (avoid to become a transit AS)
  match ip address prefix-list local-allocations

#
# R2
#
router bgp 65007
  bgp router-id 10.1.1.6
  network 192.168.1.0/25
  neighbor 10.1.1.5 remote-as 558
  neighbor 10.1.1.5 description Net
  neighbor 10.1.1.5 soft-reconfiguration inbound
  neighbor 10.1.1.5 route-map Net:In_backup in
  neighbor 10.1.1.5 route-map Net:Out_backup out

  neighbor iBGP_peers peer-group
  neighbor iBGP_peers remote-as 65007
  neighbor iBGP_peers password $whatyouwant
  neighbor iBGP_peers update-source $IP  #The interface in the common subnet 192.168.1.0/25, otherwise you need an internal routing protocol (IGP) also
  neighbor iBGP_peers next-hop-self      # Otherwise you need to advertise the p2p network between you and ISP

  neighbor $IP_R1_in_192.168.1.0 peer-group iBGP_peers
  neighbor $IP_R1_in_192.168.1.0 description R1

ip prefix-list local-allocations seq 10 permit 192.168.1.0/25

route-map Net:In_backup
  description iBGP will de-prefer all the prefixes
  set local-preference 10

route-map Net:Out_backup
  description announce allocated routes sourced from our AS only
  match ip address prefix-list local-allocations
  set as-path prepend 65007 65007 65007

Кстати, перераспределение - это плохо, если его можно избежать. Используйте команду 'network', чтобы рекламировать свой префикс (в Quagga вам не нужна подсеть в RIB, в отличие от Cisco, даже лучше).