Juniper (JNCIS-SP)
  • 1) Juniper Initial Configuration
  • 2) Juniper VLANs + Inter VLAN Routing + DHCP
    • 2.1) Классическая маршрутизация между VLAN (При помощи роутера)
      • Настройка VLAN'ов на SW-MSK-ARB
      • Настройка VLAN'ов на SW-SPB-NEV
      • Настройка IP-адресации, DHCP и маршрутизации между VLAN'ами
      • Проверка конфигурации
      • Полезные ссылки
    • 2.2) Маршрутизация между VLAN на L3-коммутаторе
  • 3) LAGs + Static Routing (с резервированием) + SysLog + SSH
    • Агрегирование каналов и настройка IP-адресов
    • Статическая маршрутизация с резервированием
    • Настройка доступа к Juniper по SSH
    • SysLog Server
    • Конфигурации Устройств
    • Полезные ссылки
  • 4) Q-in-Q
    • Настройка Q-in-Q
    • Конфигурации устройств
  • 5) MC-LAG (Multi-Chassis LAG) + BFD + IRB
    • MC-LAG
    • Конфигурации устройств
    • Полезные ссылки
  • 6) STP (RSTP/VSTP/MSTP + MVRP)
    • RSTP
    • VSTP
    • MSTP
    • STP Protection
    • Конфигурации устройств
    • Полезные ссылки
  • 7) Basic Routing Concepts
    • Полезные ссылки
  • 8) OSPF
    • 4.1) Смена типов областей и Load Balancing
      • Конфигурации устройств
    • 4.2) Настройка Virtual-Link, OSPF в Broadcast-сетях (Выбор DR и BDR) и OSPF summarization
      • Выбор DR и BDR
      • Настройка Virtual-Link + Route Summarization
      • Конфигурации устройств
    • Примечание (Router-ID)
    • OSPF Database and LSA
    • Полезные ссылки
  • 9) IS-IS
    • Практическая часть
    • Конфигурации устройств
    • Полезные ссылки
  • 10) BGP
    • eBGP
    • Анонсирование первых префиксов
    • iBGP
      • BGP Confederations
      • Атрибут Next-Hop и iBGP
      • BGP Route Reflectors
    • BGP Routing Policies
    • BGP Load Balancing
    • BGP Session Attributes
    • Конфигурации устройств
    • Примечание (Router-ID)
    • Полезные ссылки:
  • 11) MPLS
    • Static LSP
    • LDP
    • RSVP
    • L2/L3 VPN
    • Конфигурации Устройств
    • Полезные ссылки
  • 12) CSPF (Dynamic TE)
    • Настройка
    • Конфигурации устройств
    • Полезные ссылки
  • 13) Tunneling Technologies (IPIP/GRE)
    • Конфигурации устройств
    • Полезные ссылки
  • 14) High Availability
    • Конфигурации устройств
    • Полезные ссылки
  • 15) IPv6
  • Полезные ссылки
Powered by GitBook
On this page

Was this helpful?

  1. 10) BGP
  2. iBGP

BGP Route Reflectors

PreviousАтрибут Next-Hop и iBGPNextBGP Routing Policies

Last updated 1 year ago

Was this helpful?

Если вкратце, то RR работает схоже с Backbone Area в OSPF, распространяя маршруты, полученные от других iBGP-пиров. Однако, кластеры можно настраивать иерархически, как показано на рисунке выше. Т.е. RT.SPB.OBV будет являться одновременно RR для кластера 10.0.0.201 и клиентом кластера 10.0.0.202.

Таким образом, иерархически, сеть RR будет выглядеть вот так:

                              RT.SPB.MIR
                             /          \
                   RT.SPB.OBV            RT.SPB.LNX
                  /          \
             RT.SPB.STL   RT.SPB.K12

Настройка RT.SPB.MIR:

root@RT.SPB.MIR# edit protocols bgp group rr-BGP 

[edit protocols bgp group rr-BGP]
root@RT.SPB.MIR# set local-address 10.0.0.202 

[edit protocols bgp group rr-BGP]
root@RT.SPB.MIR# set type internal 

[edit protocols bgp group rr-BGP]
root@RT.SPB.MIR# set cluster 10.0.0.202 

[edit protocols bgp group rr-BGP]
root@RT.SPB.MIR# set neighbor 10.0.0.201 

[edit protocols bgp group rr-BGP]
root@RT.SPB.MIR# set neighbor 10.0.0.204

В данном случае мы настроили одну единственную группу с указанием кластера. На RT.SPB.OBV необходимо будет указать 2 группы. Одна группа без кластера, в которой RT.SPB.OBV будет просто клиентом кластера RT.SPB.MIR, а другую, где он сам будет являться RR для клиентов. Роутер RT.SPB.LNX же будет просто клиентом RT.SPB.MIR.

Настройка RT.SPB.OBV:

root@RT.SPB.OBV# edit protocols bgp group rr-BGP 

[edit protocols bgp group rr-BGP]
root@RT.SPB.OBV# set local-address 10.0.0.201 

[edit protocols bgp group rr-BGP]
root@RT.SPB.OBV# set type internal 

[edit protocols bgp group rr-BGP]
root@RT.SPB.OBV# set cluster 10.0.0.201 

[edit protocols bgp group rr-BGP]
root@RT.SPB.OBV# set neighbor 10.0.0.200     

[edit protocols bgp group rr-BGP]
root@RT.SPB.OBV# set neighbor 10.0.0.203    

[edit protocols bgp group rr-BGP]
root@RT.SPB.OBV# top 

root@RT.SPB.OBV# edit protocols bgp group rr-client 

[edit protocols bgp group rr-client]
root@RT.SPB.OBV# set type internal 

[edit protocols bgp group rr-client]
root@RT.SPB.OBV# set local-address 10.0.0.201 

Далее соответственно настраиваем клиентов как клиентов, просто указывая Loopback'и соседей.

Но, в данной топологии есть проблема - это один единственный RR в кластере 10.0.0.201. Как пример можно посмотреть что будет если отключить RT.SPB.OBV и AS8001 в общей топологии сети. До отключения AS8000:

root@RT.SPB.K12# run show route 8.0.0.0 

inet.0: 45 destinations, 47 routes (45 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

8.0.0.0/16         *[BGP/170] 00:27:56, localpref 100, from 10.0.0.201
                      AS path: (65001) 8000 I, validation-state: unverified
                    > to 10.0.0.10 via ae0.0
                    [BGP/170] 03:38:26, localpref 100
                      AS path: 9001 8001 8000 I, validation-state: unverified
                    > to 9.1.1.0 via ge-0/0/4.0

После отключения AS8000:

root@RT.SPB.K12# run show route 8.0.0.0    

inet.0: 43 destinations, 43 routes (43 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

8.0.0.0/16         *[BGP/170] 00:29:46, localpref 100, from 10.0.0.201
                      AS path: (65001) 8000 I, validation-state: unverified
                    > to 10.0.0.10 via ae0.0

Теперь предположим, что у нас упал RR - RT.SPB.OBV:

root@RT.SPB.K12# run show route 8.0.0.0    

inet.0: 36 destinations, 36 routes (36 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

0.0.0.0/0          *[OSPF/150] 05:04:33, metric 0, tag 0
                    > to 10.0.0.15 via ae1.0

Донастроим топологию:

root@RT.SPB.OBV# set protocols bgp group rr-BGP neighbor 10.0.0.204     
root@RT.SPB.LNX# edit protocols bgp group rr-BGP 

[edit protocols bgp group rr-BGP]
root@RT.SPB.LNX# set neighbor 10.0.0.201 

[edit protocols bgp group rr-BGP]
root@RT.SPB.LNX# set neighbor 10.0.0.203    

[edit protocols bgp group rr-BGP]
root@RT.SPB.LNX# set neighbor 10.0.0.200    

[edit protocols bgp group rr-BGP]
root@RT.SPB.LNX# set type internal 

[edit protocols bgp group rr-BGP]
root@RT.SPB.LNX# set local-address 10.0.0.204 

[edit protocols bgp group rr-BGP]
root@RT.SPB.LNX# set cluster 10.0.0.201 

root@RT.SPB.LNX# show | compare 
[edit protocols bgp]
     group rr-client { ... }
+    group rr-BGP {
+        type internal;
+        local-address 10.0.0.204;
+        cluster 10.0.0.201;
+        neighbor 10.0.0.201;
+        neighbor 10.0.0.203;
+        neighbor 10.0.0.200;
+    }
root@RT.SPB.K12# set protocols bgp group rr-client neighbor 10.0.0.204 
root@RT.SPB.STL# set protocols bgp group rr-client neighbor 10.0.0.204 

Теперь заново отключим AS8000 и посмотрим маршруты:

root@RT.SPB.K12# run show route 8.0.0.0    

inet.0: 38 destinations, 40 routes (38 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

8.0.0.0/16         *[BGP/170] 00:12:15, localpref 100, from 10.0.0.201
                      AS path: (65001) 8000 I, validation-state: unverified
                    > to 10.0.0.10 via ae0.0
                    [BGP/170] 00:02:37, localpref 100, from 10.0.0.204
                      AS path: (65001) 8000 I, validation-state: unverified
                    > to 10.0.0.10 via ae0.0

Видно, что маршрут получен от 10.0.0.201 (RT.SPB.OBV) и 10.0.0.204 (RT.SPB.LNX). Теперь выключим RT.SPB.OBV:

root@RT.SPB.K12# run show route 8.0.0.0    

inet.0: 38 destinations, 38 routes (38 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

8.0.0.0/16         *[BGP/170] 00:02:43, localpref 100, from 10.0.0.204
                      AS path: (65001) 8000 I, validation-state: unverified
                    > to 10.0.0.10 via ae0.0

Как видно всё работает. Теперь схема выглядит так:

                              RT.SPB.MIR
                             /          \
                   RT.SPB.OBV————————————RT.SPB.LNX
                  /     \                   /      \
        RT.SPB.STL   RT.SPB.K12        RT.SPB.STL   RT.SPB.K12

Также нужно настроить iBGP внутри AS9002, сделать это можно просто указав в качестве neighbor'ов - IP интерфейсов ge-0/0/0, а type для этих групп указать interal. Больше можно ничего не указывать, чтобы не настраивать лишее. Это будет не совсем правильно, но для связности между ними пойдёт.

Почему нельзя делать один и тот же cluster-id

Если мы укажем себя как клиента и как route-reflector в одном кластере, то сработает защита от петель и мы не получим маршруты на нашем RR в том же кластере, что и другой RR.

Пример конфига (IP каждого роутера можно узнать по Local-Address):

root@RT.SPB.LNX# show protocols bgp group iBGP
type internal;
local-address 192.168.0.7;
export iBGP-export;
neighbor 192.168.0.4 {
    cluster 192.168.0.5;
}
neighbor 192.168.0.6 {
    cluster 192.168.0.5;
}
neighbor 192.168.0.8;
neighbor 192.168.0.5 {
    cluster 192.168.0.5;
}

neighbor 192.168.0.5 - это тоже RR, который работает в том же самом кластере:

root@RT.SPB.OBV# show protocols bgp group iBGP
type internal;
local-address 192.168.0.5;
export iBGP-export;
neighbor 192.168.0.4 {
    cluster 192.168.0.5;
}
neighbor 192.168.0.6 {
    cluster 192.168.0.5;
}
neighbor 192.168.0.8;
neighbor 192.168.0.7 {
    cluster 192.168.0.5;
}

В данном случае мы увидим на RT.SPB.LNX следующую таблицу маршрутизации (маршруты от RT.SPB.LNX не приняты):

root@RT.SPB.LNX# run show route protocol bgp

inet.0: 36 destinations, 36 routes (33 active, 0 holddown, 3 hidden)
+ = Active Route, - = Last Active, * = Both

80.0.0.0/24        *[BGP/170] 00:16:23, localpref 100, from 192.168.0.4
                      AS path: (65000) 8000 I, validation-state: unverified
                    > to 10.0.0.14 via ae0.0
                      to 10.0.0.18 via ae2.0
100.8.0.0/24       *[BGP/170] 00:16:23, localpref 100, from 192.168.0.4
                      AS path: (65000) 8000 I, validation-state: unverified
                      to 10.0.0.14 via ae0.0
                    > to 10.0.0.18 via ae2.0

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

root@RT.SPB.LNX# show | compare
[edit protocols bgp group iBGP neighbor 192.168.0.4]
-     cluster 192.168.0.5;
+     cluster 192.168.0.7;
[edit protocols bgp group iBGP neighbor 192.168.0.6]
-     cluster 192.168.0.5;
+     cluster 192.168.0.7;
[edit protocols bgp group iBGP neighbor 192.168.0.5]
-     cluster 192.168.0.5;
+     cluster 192.168.0.7;

Результат:

root@RT.SPB.LNX# run show route protocol bgp

inet.0: 36 destinations, 38 routes (33 active, 0 holddown, 3 hidden)
+ = Active Route, - = Last Active, * = Both

80.0.0.0/24        *[BGP/170] 00:00:02, localpref 100, from 192.168.0.5
                      AS path: (65000) 8000 I, validation-state: unverified
                    > to 10.0.0.14 via ae0.0
                    [BGP/170] 00:00:10, localpref 100, from 192.168.0.4
                      AS path: (65000) 8000 I, validation-state: unverified
                    > to 10.0.0.14 via ae0.0
                      to 10.0.0.18 via ae2.0
100.8.0.0/24       *[BGP/170] 00:00:02, localpref 100, from 192.168.0.5
                      AS path: (65000) 8000 I, validation-state: unverified
                    > to 10.0.0.14 via ae0.0
                    [BGP/170] 00:00:10, localpref 100, from 192.168.0.4
                      AS path: (65000) 8000 I, validation-state: unverified
                      to 10.0.0.14 via ae0.0
                    > to 10.0.0.18 via ae2.0

Т.е. нам необходим резервный RR. Пусть им станет RT.SPB.LNX. Для того, чтобы в сети был ещё один RR, необходимо прописать ему тот же кластер, что и другого. Также между RReflector´ами в одном кластере должна быть Full-Mesh топология, при этом другой RR должен быть в той же группе, где указан кластер ID. Только в таком случае не будет петель, так как в сказано, что RR при получении маршрута от другого RR в этом же кластере отбросит маршрут.

RFC4456
Схема сети
Схема кластеров RR