BGP – route reflector

Cele:

Adresy IP routerów:

R1

Interfejs IP
FastEthernet 0/0 172.16.1.1/24
Loopback 0 1.1.1.1/24

R2

Interfejs IP
FastEthernet 0/0 172.16.2.2/24
Loopback 0 2.2.2.2/24

R3

Interfejs IP
FastEthernet 0/0 172.16.3.3/24
Loopback 0 3.3.3.3/24

RR

Interfejs IP
FastEthernet 0/0 172.16.1.10/24
FastEthernet 1/0 172.16.2.10/24
FastEthernet 2/0 172.16.3.10/24

Schemat sieci:

BGP - route reflector

Router: 3640
IOS: c3640-jk9o3s-mz.124-16a.bin

Rozwiązanie

Skonfiguruj IBGP pomiędzy: RR i R1, RR i R2, RR i R3.

Wszystkie routery znajdują się wewnątrz AS 65001, uruchamiamy proces BGP na każdym z nich i definiujemy sąsiadów:

R1(config)#router bgp 65001
R1(config-router)#neighbor 172.16.1.10 remote-as 65001
R2(config)#router  bgp 65001
R2(config-router)#neighbor 172.16.2.10 remote-as 65001
R3(config)#router bgp 65001
R3(config-router)#neighbor 172.16.3.10 remote-as 65001
RR(config)#router  bgp 65001
RR(config-router)#neighbor 172.16.1.1 remote-as 65001
RR(config-router)#neighbor 172.16.2.2 remote-as 65001
RR(config-router)#neighbor 172.16.3.3 remote-as 65001

Dla routerów R1, R2 i R3 określiliśmy tylko jednego sąsiada, nie mamy więc połączenia każdy z każdym (full mesh). Sprawdźmy status BGP na R1 i RR:

R1#show ip bgp summary 
BGP router identifier 1.1.1.1, local AS number 65001
BGP table version is 1, main routing table version 1

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
172.16.1.10     4 65001       2       2        0    0    0 00:00:14        0
RR#show ip bgp summary 
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
172.16.1.1      4 65001      90      89        4    0    0 01:26:23        0
172.16.2.2      4 65001      90      89        4    0    0 01:26:29        0
172.16.3.3      4 65001      90      89        4    0    0 01:26:06        0

Router RR nawiązał relacje sąsiedztwa z pozostałymi, natomiast R1 tylko z RR (tak samo R2 i R3). Dokładnie tak jak skonfigurowaliśmy.


Rozgłoś interfejsy Loopback w BGP.

Zgodnie z poleceniem rozgłaszamy interfejsy Loopback w BGP:

R1(config)#router  bgp 65001
R1(config-router)#network 1.1.1.0 mask 255.255.255.0
R2(config)#router  bgp 65001                   
R2(config-router)#network 2.2.2.0 mask 255.255.255.0
R3(config)#router bgp 65001                    
R3(config-router)#network 3.3.3.0 mask 255.255.255.0

Sprawdźmy teraz status. RR ma wszystkie trasy w swojej tablicy routingu:

RR#show ip route bgp 
     1.0.0.0/24 is subnetted, 1 subnets
B       1.1.1.0 [200/0] via 172.16.1.1, 00:01:40
     2.0.0.0/24 is subnetted, 1 subnets
B       2.2.2.0 [200/0] via 172.16.2.2, 00:01:20
     3.0.0.0/24 is subnetted, 1 subnets
B       3.3.3.0 [200/0] via 172.16.3.3, 00:00:57

Jednak sytuacja wygląda zupełnie inaczej na pozostałych routerach.

R2#show ip bgp 
BGP table version is 2, local router ID is 2.2.2.2
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
*> 2.2.2.0/24       0.0.0.0                  0         32768 i

R1, R2 i R3 nic nie wiedzą o pozostałych sieciach Loopback ,mimo że rozgłaszane są one w tym samym AS. Powodem tego jest to, że nie określiliśmy na nich wszystkich peer’ów w AS 65001. Jedynie router RR jest „prawidłowo” skonfigurowany, przez co zna trasy do wszystkich sieci. Jednak nie przesyła on informacji na temat routingu pomiędzy routerami.


Upewnij się, że R1, R2 i R3 mają ze sobą pełną łączność w BGP.

Konfigurując IBGP wymagane jest aby każdy router nawiązał połączenie ze wszystkimi sąsiadami wewnątrz AS. Problemem takiego rozwiązania jest to, że nawet w niewielkich sieciach liczba połączeń może być spora. Można ją wyliczyć ze wzoru:

liczba połączeń = n*(n-1)/2

,gdzie n to liczba routerów w IBGP. Dla 4 routerów daje nam to 6 połączeń, a dla 15 już 105. Tak więc trzymanie takiej pełnej siatki połączeń zwiększa ilość informacji wymienianych pomiędzy urządzeniami, a także zapotrzebowanie na pamięć i moc obliczeniową każdego z routerów.
Możemy zredukować tę liczbę korzystając z tzw. route-reflector. Odpowiednia konfiguracja routera RR umożliwi przesyłanie tras dalej przez co wszystkie routery (klienci route-reflector) będą miały ze sobą pełną łączność.

RR(config)#router  bgp 65001
RR(config-router)#neighbor 172.16.1.1 route-reflector-client 
RR(config-router)#neighbor 172.16.2.2 route-reflector-client 
RR(config-router)#neighbor 172.16.3.3 route-reflector-client

Po zmianie ustawień sesja BGP zostaje zerwana i nawiązana od nowa:

*Mar  1 01:41:51.879: %BGP-5-ADJCHANGE: neighbor 172.16.1.1 Down RR client config change
*Mar  1 01:41:54.015: %BGP-5-ADJCHANGE: neighbor 172.16.1.1 Up

*Mar  1 01:41:57.147: %BGP-5-ADJCHANGE: neighbor 172.16.2.2 Down RR client config change
*Mar  1 01:41:58.931: %BGP-5-ADJCHANGE: neighbor 172.16.2.2 Up 

*Mar  1 01:42:00.067: %BGP-5-ADJCHANGE: neighbor 172.16.3.3 Down RR client config change
*Mar  1 01:42:02.199: %BGP-5-ADJCHANGE: neighbor 172.16.3.3 Up 

Każdy z sąsiadów od RR jest teraz klientem route reflector. Zobaczmy status BGP na R1:

R1#show ip bgp  | begin Network
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       0.0.0.0                  0         32768 i
* i2.2.2.0/24       172.16.2.2               0    100      0 i
* i3.3.3.0/24       172.16.3.3               0    100      0 i

Pojawiły się sieci 2.2.2.0/24 i 3.3.3.0/24. Ostatni problem do rozwiązania to Next Hop. R1 nie ma tras do 172.16.2.2 oraz 172.16.3.3, dlatego wciąż nie ma on łączności z interfejsami Loopback od R2 i R3. Możemy te trasy rozgłosić w BGP na RR

RR(config)#router  bgp 65001
RR(config-router)#network 172.16.1.0 mask 255.255.255.0
RR(config-router)#network 172.16.2.0 mask 255.255.255.0
RR(config-router)#network 172.16.3.0 mask 255.255.255.0

Tablica routingu na R1:

R1#show ip route bgp 
     2.0.0.0/24 is subnetted, 1 subnets
B       2.2.2.0 [200/0] via 172.16.2.2, 00:00:34
     3.0.0.0/24 is subnetted, 1 subnets
B       3.3.3.0 [200/0] via 172.16.3.3, 00:00:34
     172.16.0.0/24 is subnetted, 3 subnets
B       172.16.2.0 [200/0] via 172.16.1.10, 00:00:39
B       172.16.3.0 [200/0] via 172.16.1.10, 00:00:37

Wygląda dobrze, spróbujmy polecenia ping:

R1#ping 2.2.2.2 source l0

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/15/16 ms
R1#ping 3.3.3.3 source l0

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/15/24 ms

Ping przeszedł, mamy pełną łączność w obszarze. Zadanie wykonane.

  1. Jedna mała uwaga… Zamiast „ilość połączeń”, należałoby raczej napisać „liczba połączeń”. Tak wiem, czepiam się, ale to jest techniczny opis, więc warto pamiętać, że ilość nie jest dokładnie tym samym, co liczba. ;)

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Obraz CAPTCHY

*