PT5: OSPF metric

I denna laboration utforskar vi hur routing i ett OSPF-nätverk kan optimeras genom att hantera OSPF metric, även känd som kostnad. Vi kommer att dyka in i de olika metoderna för att anpassa dessa kostnader för att uppnå en mer effektiv routing.

  • Metod 1: ip ospf cost 10
    • Router(config)# interface g0/0
    • Router(config-if)# ip ospf 71 area 0
    • Router(config-if)# ip ospf cost 10
    • Router(config-if)# end
    • Router# show ip ospf interface g0/0
  • Metod 2: auto-cost reference-bandwidth value
    • Router(config)# router ospf 71
    • Router(config-router)# auto-cost reference-bandwidth 5000
    • Router(config-router)# end
    • Router#
    • Observera att referensbandbredden anges i Mbps, men Interface-bandwidth anges i kbps vilket måste justeras vid matematiska beräkningar. I metod 2 anges som exempel 5000 när egentligen är 5 000 000 kbps.
  • Metod 3: bandwidth 100 000
    • Router(config)# interface s0/0/0
    • Router(config-if)# bandwidth 100000
    • Router(config-if)# end
    • Router# show ip ospf interface s0/0/0

Bakgrund

OSPF räknar den totala kostnaden för en rutt från källan till destinationen, genom att beakta endast kostnaden för ”utgående” interface på varje router längs vägen. Det betyder att när en OSPF-router beräknar den totala kostnaden för en rutt, lägger den till kostnaden för interfacet genom vilket paketet kommer att skickas ut mot nästa hop i rutten, inte kostnaden för det interfacet genom vilket paketet kom in.

Hur Beräknas Kostnaden?

OSPF använder en enkel formel för att beräkna kostnaden för en länk som är invers proportionell mot interface-bandbredd: Kostnad = Referensbandbredd / interface-bandbredd

Standard Referensbandbredd

Som sagt tidigare, använder OSPF en standard referensbandbredd på 100 Mbps (100 000 kbps), vilket innebär att en länk med en bandbredd på 100 Mbps tilldelas en OSPF-kostnad på 1, baserat på beräkningen (100 Mbps / 100 Mbps = 1). För länkar med högre bandbredd, såsom 1 Gbps, 10 Gbps eller ännu snabbare, skulle beräkningen teoretiskt resultera i ett värde mindre än 1. Eftersom OSPF-kostnaden måste vara ett heltal, rundas dessa värden upp till 1. Denna standardinställning kan leda till otillräcklig differentiering mellan länkar av olika hastigheter. Därför möjligheten att justera standard referensbandbredden för att möjliggöra användbar kostnadsberäkningen. Det är viktigt att notera att en lägre OSPF-kostnad prioriteras högre, vilket innebär att rutter med lägre kostnad väljs före de med högre kostnad.

Anpassning av Referenskostnaden

För att ändra referensbandbredden i en OSPF-konfiguration används kommandot auto-cost reference-bandwidth [Mbps] under OSPF-konfigurationsläget. Det är viktigt att denna inställning görs konsekvent över alla OSPF-router i samma OSPF-domän.

  • Router(config-router)# auto-cost reference-bandwidth 10000 (10 000 Mbps = 10 000 000 Kbps)
  • FastEthernet = 10 000 000 /100 000 = 100
  • GigabitEthernet = 10 000 000 / 1 000 000 = 10
  • 10 GigabitEthernet = 10 000 000 / 10 000 000 = 1

Topologi

Konfigurationer

  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R1
  • R1(config)# no ip domain-lookup
  • R1(config)# interface g0/0
  • R1(config-if)# description Connected to R2
  • R1(config-if)# ip address 10.10.10.1 255.255.255.252
  • R1(config-if)# no shutdown
  • R1(config-if)# exit
  • R1(config)# interface g2/0
  • R1(config-if)# description Connected to R6
  • R1(config-if)# ip address 10.10.10.13 255.255.255.252
  • R1(config-if)# no shutdown
  • R1(config-if)# exit
  • R1(config)# interface s1/0
  • R1(config-if)# description DCE Connected to R4
  • R1(config-if)# ip address 172.16.0.1 255.255.255.252
  • R1(config-if)# clock rate 128000
  • R1(config-if)# no shutdown
  • R1(config-if)# exit
  • R1(config)# router ospf 8
  • R1(config-if)# router-id 1.1.1.1
  • R1(config-if)# network 10.10.10.0 0.0.0.3 area 0
  • R1(config-if)# network 10.10.10.12 0.0.0.3 area 0
  • R1(config-if)# network 172.16.0.0 0.0.0.3 area 0
  • R1(config-if)# end
  • R1#
  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R2
  • R2(config)# no ip domain-lookup
  • R2(config)# interface g0/0
  • R2(config-if)# description Connected to R1
  • R2(config-if)# ip address 10.10.10.2 255.255.255.252
  • R2(config-if)# no shutdown
  • R2(config-if)# exit
  • R2(config)# interface g1/0
  • R2(config-if)# description Connected to R3
  • R2(config-if)# ip address 10.10.10.5 255.255.255.252
  • R2(config-if)# no shutdown
  • R2(config-if)# exit
  • R2(config)# router ospf 8
  • R2(config-router)# router-id 2.2.2.2
  • R2(config-router)# network 10.10.10.0 0.0.0.3 area 0
  • R2(config-router)# network 10.10.10.4 0.0.0.3 area 0
  • R2(config-router)# end
  • R2#
  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R3
  • R3(config)# no ip domain-lookup
  • R3(config)# interface g1/0
  • R3(config-if)# description Connected to R2
  • R3(config-if)# ip address 10.10.10.6 255.255.255.252
  • R3(config-if)# no shutdown
  • R3(config-if)# exit
  • R3(config)# interface g2/0
  • R3(config-if)# description Connected to R8
  • R3(config-if)# ip address 10.10.10.9 255.255.255.252
  • R3(config-if)# no shutdown
  • R3(config-if)# exit
  • R3(config)# router ospf 8
  • R3(config-router)# router-id 3.3.3.3
  • R3(config-router)# network 10.10.10.4 0.0.0.3 area 0
  • R3(config-router)# network 10.10.10.8 0.0.0.3 area 0
  • R3(config-router)# end
  • R3#
  •  
  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R4
  • R4(config)# no ip domain-lookup
  • R4(config)# interface s1/0
  • R4(config-if)# description Connected to R1
  • R4(config-if)# ip address 172.16.0.2 255.255.255.252
  • R4(config-if)# no shutdown
  • R4(config-if)# exit
  • R4(config)# interface s2/0
  • R4(config-if)# description DCE Connected to R5
  • R4(config-if)# ip address 172.16.0.5 255.255.255.252
  • R4(config-if)# clock rate 128000
  • R4(config-if)# no shutdown
  • R4(config-if)# exit
  • R4(config)# router ospf 8
  • R4(config-router)# router-id 4.4.4.4
  • R4(config-router)# network 172.16.0.0 0.0.0.3 area 0
  • R4(config-router)# network 172.16.0.4 0.0.0.3 area 0
  • R4(config-router)# end
  • R4#
  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R5
  • R5(config)# no ip domain-lookup
  • R5(config)# interface s2/0
  • R5(config-if)# description Connected to R4
  • R5(config-if)# ip address 172.16.0.6 255.255.255.252
  • R5(config-if)# no shutdown
  • R5(config-if)# exit
  • R5(config)# interface s3/0
  • R5(config-if)# description DCE Connected to R8
  • R5(config-if)# ip address 172.16.0.9 255.255.255.252
  • R5(config-if)# clock rate 128000
  • R5(config-if)# no shutdown
  • R5(config-if)# exit
  • R5(config)# router ospf 8
  • R5(config-router)# router-id 5.5.5.5
  • R5(config-router)# network 172.16.0.4 0.0.0.3 area 0
  • R5(config-router)# network 172.16.0.8 0.0.0.3 area 0
  • R5(config-router)# end
  • R5#
  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R6
  • R6(config)# no ip domain-lookup
  • R6(config)# interface g2/0
  • R6(config-if)# description Connected to R1
  • R6(config-if)# ip address 10.10.10.14 255.255.255.252
  • R6(config-if)# no shutdown
  • R6(config-if)# exit
  • R6(config)# interface g3/0
  • R6(config-if)# description Connected to R7
  • R6(config-if)# ip address 10.10.10.17 255.255.255.252
  • R6(config-if)# no shutdown
  • R6(config-if)# exit
  • R6(config)# router ospf 8
  • R6(config-router)# router-id 6.6.6.6
  • R6(config-router)# network 10.10.10.12 0.0.0.3 area 0
  • R6(config-router)# network 10.10.10.16 0.0.0.3 area 0
  • R6(config-router)# end
  • R6#
  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R7
  • R7(config)# no ip domain-lookup
  • R7(config)# interface g3/0
  • R7(config-if)# description Connected to R1
  • R7(config-if)# ip address 10.10.10.18 255.255.255.252
  • R7(config-if)# no shutdown
  • R7(config-if)# exit
  • R7(config)# interface g4/0
  • R7(config-if)# description Connected to R7
  • R7(config-if)# ip address 10.10.10.21 255.255.255.252
  • R7(config-if)# no shutdown
  • R7(config-if)# exit
  • R7(config)# router ospf 8
  • R7(config-router)# router-id 7.7.7.7
  • R7(config-router)# network 10.10.10.16 0.0.0.3 area 0
  • R7(config-router)# network 10.10.10.20 0.0.0.3 area 0
  • R7(config-router)# end
  • R7#
  • Router> enable
  • Router# configure terminal
  • Router(config)# hostname R8
  • R8(config)# no ip domain-lookup
  • R8(config)# interface g1/0
  • R8(config-if)# description Connected to LAN
  • R8(config-if)# ip address 102.168.10.1 255.255.255.0
  • R8(config-if)# no shutdown
  • R8(config-if)# exit
  • R8(config)# interface g2/0
  • R8(config-if)# description Connected to R3
  • R8(config-if)# ip address 10.10.10.10 255.255.255.252
  • R8(config-if)# no shutdown
  • R8(config-if)# exit
  • R8(config)# interface g4/0
  • R8(config-if)# description Connected to R7
  • R8(config-if)# ip address 10.10.10.22 255.255.255.252
  • R8(config-if)# no shutdown
  • R8(config-if)# exit
  • R8(config)# interface s3/0
  • R8(config-if)# description Connected to R5
  • R8(config-if)# ip address 172.16.0.10 255.255.255.252
  • R8(config-if)# no shutdown
  • R8(config-if)# exit
  • R8(config)# router ospf 8
  • R8(config-router)# router-id 8.8.8.8
  • R8(config-router)# network 10.10.10.8 0.0.0.3 area 0
  • R8(config-router)# network 10.10.10.20 0.0.0.3 area 0
  • R8(config-router)# network 172.16.0.8 0.0.0.3 area 0
  • R8(config-router)# network 102.168.10.0 0.0.0.255 area 0
  • R8(config-router)# end
  • R8#

Kostnadshantering

När vi sänder ett ping-paket från router R1 till host-adressen 102.168.10.10, står vi inför tre möjliga rutter genom nätverket:

  • Rutt 1:  R1 --> R2 --> R3 --> R8 --> 102.168.10.10
  • Rutt 2: R1 --> R6 --> R7 --> R8 --> 102.168.10.10
  • Rutt 3: R1 --> R4 --> R5 --> R8 --> 102.168.10.10

Rutt 1 och 2 erbjuder båda en bandbredd på 1 Gbps, medan Rutt 3 endast en bandbredd på 1544 Kbps. Frågan är: Vilken väg väljer ping-paketet?

När vi använder kommandot tracer från R1 mot 102.168.10.10 observerar vi lastbalansering mellan Rutt 1 och 2. Detta beror på att de opererar över BROADCAST-nätverk och båda har en OSPF-kostnad på 1 per länk, vilket leder till en total kostnad på 4 för varje rutt.

För att påverka routing-beslutet och styra ping-paketet till en specifik rutt, kan vi manuellt justera OSPF-kostnaden för varje routers exit-interface längs önskad väg. Om kostnaden höjs till 5 blir det totala kostnaden 20 för den vägen.

Här är stegen för att höja kostnaden i rutt 1 så att ping-paketen tar sig enbart genom rutt 2:

På R1, ange OSPF-kostnaden till 5 för gränssnittet g0/0:

  • R1(config)# interface g0/0
  • R1(config-if)# ip ospf 8 area 0
  • R1(config-if)# ip ospf cost 5
  • R1(config-if)# end

Upprepa motsvarande konfiguration för alla exit-interface längs Rutt 1, det vill säga på R2, R3, och R8 för att säkerställa att den totala kostnaden blir 20.

Genom att göra dessa skickar router R1 sina ping-paket genom rutt 2 som har en total kostnad 4, lägre än 20.

Detta exempel illustrerar hur justering av OSPF-kostnader kan användas för att finjustera routing och prioritera vissa vägar över andra i ett OSPF-nätverk.

Kommunikationen mellan router R1 och datorn 102.168.10.10 finns tre möjliga rutter:

  • Rutt 1: R1 --> R2 --> R3 --> R8 --> 102.168.10.10
  • Rutt 2: R1 --> R6 --> R7 --> R8 --> 102.168.10.10
  • Rutt 3: R1 --> R4 --> R5 --> R8 --> 102.168.10.10

Routrarna i rutt 1 och rutt två har GigabitEthernet interface, därmed en bandbredd på 1000 Mbps. Med justeringen av den totala kostnaden till 20 mellan R1 och datorn i nätverket 102.168.10.0 via rutt 1, har router R1 börjat prioritera att skicka ping-paket via interfacet Gig2/0, det vill säga genom rutt 2 som har en total kostnad på 4.

Nu kommer att ändras den totala kostnaden för rutten 2 till ett värde över 20 genom att ändra den standard referensbandbredd från 100 Mbps till 10 000 Mbps. Detta görs för att styra routing på ping-paketen genom R1-R2-R3-R8. Med den nya referensbandbredden blir beräkningen av kostnaden 10 vilket ger en total kostnad på 30:

  • R1-Gig0/0 har en kostnad på 5
  • R2-Gig1/0 ändras till 10
  • R3-Gig2/0 ändras till 10
  • R8-Gig1/0 har en kostnad på 5

För att genomföra denna ändring i OSPF-konfigurationen, använder vi följande kommandon:

  • R2(config)# router ospf 8
  • R2(config-router)# auto-cost reference-bandwidth 10000
  • R2(config-router)# end
  • R2#
  • R3(config)# router ospf 8
  • R3(config-router)# auto-cost reference-bandwidth 10000
  • R3(config-router)# end
  • R3#

Sammanfattning av nuvarande situation är som följer:

  • Rutt 1: R1 --> R2 --> R3 --> R8 --> 102.168.10.10 med en total OSPF-kostnad 20 
  • Rutt 2: R1 --> R6 --> R7 --> R8 --> 102.168.10.10 med en total OSPF-kostnad 30 
  • Rutt 3: R1 --> R4 --> R5 --> R8 --> 102.168.10.10 med en total OSPF-kostnad 197

Tidigare har vi anpassat OSPF-kostnaderna genom att direkt justera kostnaden på routergränssnitten med ip ospf cost <värde> och genom att ändra standardreferensbandbredden. En tredje metod är att modifiera interfacets bandbredd. Det bör dock noteras att det vanligtvis inte rekommenderas att justera den rapporterade bandbredden för ett interface specifikt för att påverka OSPF-kostnadsberäkningar, såvida det inte finns specifika skäl för det.

OSPF-kostnaden är omvänt proportionell mot bandbredden, vilket innebär att ett interface med högre bandbredd resulterar i en lägre OSPF-kostnad. Att öka den fysiska bandbredden på seriella anslutningar bortom deras kapacitet (1544 Kbps i detta exempel) är inte möjligt genom konfigurationsändringar lika direkt som att ändra andra konfigurationsparametrar.

För demonstrationens skull kan man genomföra följande konfigurationer för att artificiellt sätta kostnaden till 1 per interface, vilket dock bör hanteras med försiktighet:

  • R1(config)# interface s1/0
  • R1(config-if)# bandwidth 100000
  • R1(config-if)# end
  • R1# show ip ospf interface s1/0
  • R4(config)# interface s2/0
  • R4(config-if)# bandwidth 100000
  • R4(config-if)# end
  • R4# show ip ospf interface s2/0
  • R5(config)# interface s3/0
  • R5(config-if)# bandwidth 100000
  • R5(config-if)# end
  • R5# show ip ospf interface s3/0

Med dessa inställningar bör ping-paketen nu föredra rutt 3.