Cele:
- Skonfiguruj BGP na wszystkich routerach zgodnie ze schematem sieci. Rozgłoś sieć 1.2.3.0/24 w BGP w AS 34 oraz AS 200.
- R2 skonfiguruj MED na wartość 200 dla tras wysyłanych w kierunku R1, R3 ustaw MED na 30, a na routerze R4 ustaw metrykę na 40.
- Dlaczego trasa z R1 do 1.2.3.0/24 wciąż prowadzi przez R2, skoro poprzednio ustawiona metryka jest korzystniejsza w AS 34? Skonfiguruj R1 tak, aby trasa ta prowadziła do AS 34.
Adresy IP routerów:
R1
Interfejs | IP |
---|---|
Serial 0/0 | 10.0.14.1/28 |
Serial 0/1 | 10.0.13.1/28 |
Serial 0/2 | 10.0.12.1/28 |
R2
Interfejs | IP |
---|---|
Serial 0/0 | 10.0.12.2/28 |
Loopback 0 | 2.2.2.2/32 |
Loopback 1 | 1.2.3.4/24 |
R3
Interfejs | IP |
---|---|
Serial 0/0 | 10.0.13.3/28 |
Serial 0/1 | 10.34.34.3/28 |
R4
Interfejs | IP |
---|---|
Serial 0/0 | 10.0.14.4/28 |
Serial 0/1 | 10.34.34.4/28 |
Loopback 0 | 4.4.4.4/32 |
Loopback 1 | 1.2.3.4/24 |
Schemat sieci:
Router: 3640
IOS: c3640-jk9o3s-mz.124-16a.bin
Rozwiązanie
Skonfiguruj BGP na wszystkich routerach zgodnie ze schematem sieci. Rozgłoś sieć 1.2.3.0/24 w BGP w AS 34 oraz AS 200.
Na wszystkich routerach uruchamiamy proces BGP i definiujemy sąsiadów zgodnie ze schematem. Zarówno router R2 jak i R4 mają podpiętą do siebie sieć 1.2.3.0/24, którą rozgłosimy także w BGP.
R1(config)#router bgp 100 R1(config-router)# neighbor 10.0.12.2 remote-as 200 R1(config-router)# neighbor 10.0.13.3 remote-as 34 R1(config-router)# neighbor 10.0.14.4 remote-as 34
R2(config)#router bgp 200 R2(config-router)# neighbor 10.0.12.1 remote-as 100 R2(config-router)# network 1.2.3.0 mask 255.255.255.0
R3(config)#router bgp 34 R3(config-router)# neighbor 10.0.13.1 remote-as 100 R3(config-router)# neighbor 10.34.34.4 remote-as 34 R3(config-router)# network 1.2.3.0 mask 255.255.255.0
R4(config)#router bgp 34 R4(config-router)# neighbor 10.0.14.1 remote-as 100 R4(config-router)# neighbor 10.34.34.3 remote-as 34 R4(config-router)# network 1.2.3.0 mask 255.255.255.0
Sprawdzamy status na R1:
R1#show ip bgp summary | begin Nei Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.12.2 4 200 5 5 2 0 0 00:01:17 1 10.0.13.3 4 34 4 4 2 0 0 00:00:49 1 10.0.14.4 4 34 4 4 2 0 0 00:00:46 1
R1 nawiązał relacje sąsiedztwa w BGP z R2, R3 i R4, każdy z nich rozgłasza jeden prefiks czyli naszą sieć 1.2.3.0/24.
R1#show ip bgp | begin Network Network Next Hop Metric LocPrf Weight Path * 1.2.3.0/24 10.0.13.3 0 34 i * 10.0.14.4 0 0 34 i *> 10.0.12.2 0 0 200 i
Pingując adres 1.2.3.4 router R1 wyśle pakiety w kierunku routera R2 (AS 200).
R2 skonfiguruj MED na wartość 200 dla tras wysyłanych w kierunku R1, R3 ustaw MED na 30, a na routerze R4 ustaw metrykę na 40.
Na routerach R2, R3 i R4 zdefiniujemy odpowiednio metrykę dla tras BGP. Na każdym z nich tworzymy route-map o nazwie MED i ustawiamy metrykę zgodnie z poleceniem:
R2(config)#route-map MED permit 10 R2(config-route-map)#set metric 200
R3(config)#route-map MED permit 10 R3(config-route-map)#set metric 30
R4(config)#route-map MED permit 10 R4(config-route-map)#set metric 40
Następnie przechodzimy do trybu konfiguracji BGP i łączymy route-map z rozgłoszeniami wychodzącymi w kierunku R1:
R2(config)#router bgp 200 R2(config-router)#neighbor 10.0.12.1 route-map MED out
R3(config)#router bgp 34 R3(config-router)#neighbor 10.0.13.1 route-map MED out
R4(config)#router bgp 34 R4(config-router)#neighbor 10.0.14.1 route-map MED out
Zrestartujemy proces BGP na R1, żeby nie czekać zbyt długo na rezultaty:
R1#clear ip bgp * soft
R1#show ip bgp | begin Network Network Next Hop Metric LocPrf Weight Path *> 1.2.3.0/24 10.0.12.2 200 0 200 i * 10.0.13.3 30 0 34 i * 10.0.14.4 40 0 34 i
Widzimy, że metryka została ustawiona, przechodzimy do następnego punktu.
Dlaczego trasa z R1 do 1.2.3.0/24 wciąż prowadzi przez R2, skoro poprzednio ustawiona metryka jest korzystniejsza w AS 34? Skonfiguruj R1 tak, aby trasa ta prowadziła do AS 34.
W tym punkcie dochodzimy do sedna problemu. Zgodnie z teorią niższa wartość MED (metryki) oznacza lepszą trasę. Dlaczego więc router R1 wciąż kieruje pakiety w stronę R2 zamiast R3 (metryka 200 kontra 30)? Router R1 porównuje wartości MED, ale tylko w obrębie systemu autonomicznego. Jeżeli informacji o tej samej trasie router uczy się z różnych AS’ów, wtedy różne wartości MED nie mają znaczenia. W tym przykładzie R1 dostaje informacje o sieci 1.2.3.0/24 od 3 różnych routerów, które należą do dwóch różnych AS’ów. W AS 34 R3 rozgłasza metrykę 30, a R4 równą 40. W tym miejscu rzeczywiście dochodzi do porównania, preferowaną trasą będzie R3, jednak sytuacja taka nie zachodzi już pomiędzy AS 34 i AS 200.
No dobrze, ale dlaczego został wybrany akurat R2? Aby znaleźć odpowiedź musimy zobaczyć, które wartości algorytm wyboru trasy w BGP bierze pod uwagę i w jakiej kolejności:
1. Preferuj najwyższą wagę (WEIGHT)
2. Preferuj najwyższy LOCAL_PREF
3. Pochodzenie (ORIGIN)
4. Preferuj ścieżkę z krótszym AS_PATH
5. Preferuj niższy ORIGIN
6. Preferuj niższy MED
7. Preferuj trasy z eBGP nad iBGP.
8. Preferuj ścieżkę, która ma niższy router-id.
9. Preferuj ścieżkę, która od sąsiada z niższym adresem IP.
Punkt 8. jest tutaj kluczem. Router R2 ma najniższą wartość router-id, która jest dokładnie taka sama jak adres IP jego interfejsu Loopback 0, czyli 2.2.2.2. Dla R3 router-id wynosi 10.34.34.3, a dla R4 4.4.4.4:
R2#show bgp | include router ID BGP table version is 2, local router ID is 2.2.2.2
R3#show bgp | include router ID BGP table version is 2, local router ID is 10.34.34.3
R4#show bgp | include router ID BGP table version is 2, local router ID is 4.4.4.4
Jeżeli chcemy aby dany router w BGP zawsze porównywał ze sobą MED należy użyć opcji always-compare-med
w trybie konfiguracji BGP:
R1(config)#router bgp 100 R1(config-router)#bgp always-compare-med
R1#clear ip bgp * soft
R1#show ip bgp | begin Network Network Next Hop Metric LocPrf Weight Path *> 1.2.3.0/24 10.0.13.3 30 0 34 i * 10.0.12.2 200 0 200 i * 10.0.14.4 40 0 34 i
Świetnie, trasa wskazuję w końcu na R3 (10.0.13.3).
0 Komentarze.