BGP – always compare med

Cele:

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:

BGP - always compare med

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).

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

*