Cele:
- Skonfiguruj IBGP pomiędzy: RR i R1, RR i R2, RR i R3.
- Rozgłoś interfejsy Loopback w BGP.
- Upewnij się, że R1, R2 i R3 mają ze sobą pełną łączność w BGP.
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:
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.
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. ;)
słuszna uwaga, poprawione ;]
pozdrawiam