Labb 6: OSPF metric | Default route propagering
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 – Manuellt konfiguration: ip ospf cost <value>
- Metod 2 – Justering av referensbandbredden: auto-cost reference-bandwidth value
- Observera: Referensbandbredden anges i Mbps, men interface-bandbredd anges i kbps. Vid beräkningar bör enheterna matchas (t.ex. Mbps/Mbps eller kbps/kbps).
- Till exempel – Om värdet anges som
5000
, betyder det 5000 Mbps, vilket motsvarar 5 000 000 kbps.
- Metod 3 – Justering av interfacets bandbredd: bandwidth 100 000 (100 000 000 kbps)
- Värdet
100000
avser 100 000 kbps, vilket motsvarar 100 Mbps.
- Värdet
Bakgrund
OSPF beräknar den totala kostnaden för en rutt genom att summera kostnaden för varje egress-interface längs vägen. Det betyder att endast interfacet där paketet skickas ut räknas, inte där det tas emot.
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 är 100 Mbps (100 000 kbps), vilket ger en OSPF-kostnad på 1 för en 100 Mbps-länk. Högre bandbredder, t.ex. 1 Gbps eller 10 Gbps, skulle resultera i kostnader under 1, men OSPF rundar upp till 1, vilket kan leda till bristande differentiering mellan länkhastigheter.
Justering av Referensbandbredd
För att finjustera kostnadsberäkningen kan referensbandbredden ändras med:
Router(config-router)# auto-cost reference-bandwidth [Mbps]
Exempel: Justera referensbandbredden till 10 Gbps (10 000 Mbps eller 10 000 000 kbps)
- Interface FastEthernet (100 Mbps): 10 000/ 100 = 100 eller 10 000 000 / 100 000 = 100
- Interface GigabitEthernet (1 Gbps): 10 000/1000 = 10 eller 10 000 000 / 1 000 000 = 10
- interface 10 GigabitEthernet: 10 000/10 000 = 1 eller 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 i OSPF
Vid sändning av ett ping-paket från R1 till 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
Bandbredd per rutt:
- Rutt 1 och Rutt 2: 1 Gbps
- Rutt 3: 1544 Kbps.
Frågan är: Vilken väg väljer ping-paketet?
Lastbalansering mellan Rutt 1 och Rutt 2
Vid en traceroute från R1 till 102.168.10.10 observeras att trafiken lastbalanseras mellan Rutt 1 och Rutt 2.
- Detta sker eftersom båda rutterna har samma OSPF-kostnad. OSPF beräknar kostnaden baserat på länkhastighet, och eftersom båda använder 1 Gbps-länkar, får varje länk en kostnad på 1.
- Den totala kostnaden för båda rutterna blir 4 (en kostnad på 1 per länk).
- Rutt 3 används inte eftersom den har en mycket högre kostnad.
Manuell justering av OSPF kostnad
För att styra trafiken till en specifik rutt kan vi manuellt öka kostnaden för en av rutterna.
- Om vi höjer OSPF-kostnaden till 5 på varje egress-interface i Rutt 1, blir dess totala kostnad 20.
- Eftersom Rutt 2 fortfarande har en kostnad på 4, kommer OSPF nu att föredra Rutt 2 helt och hållet.
Konfiguration för att höja kostnaden på Rutt 1:
På R1, justera OSPF-kostnaden på g0/0:
R1(config)# interface g0/0
R1(config-if)# ip ospf cost 5
R1(config-if)# end
Upprepa samma ändring på alla egress-interface längs Rutt 1 (R2, R3, och R8) för att säkerställa att totalkostnaden blir 20. Efter justeringen kommer R1 att skicka sina ping-paket via Rutt 2, eftersom den nu har en lägre kostnad (4) jämfört med Rutt 1 (20).
Styrning av OSPF-routing genom justering av referensbandbredd
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
Rutt 1 och Rutt 2 består av GigabitEthernet-interface, vilket innebär en bandbredd på 1000 Mbps.
Tidigare ökade vi OSPF-kostnaden manuellt i Rutt 1, vilket resulterade i en total kostnad på 20, och därmed började R1 prioritera Rutt 2 (kostnad 4) för att skicka ping-paket.
Nu justeras referensbandbredden från 100 Mbps till 10 000 Mbps för att dynamiskt påverka OSPF-kostnader och tvinga trafiken tillbaka genom Rutt 1.
Med den nya referensbandbredden beräknas kostnaden för varje länk enligt:
Kostnad = 10000 / Interface-bandbredd (Mbps)
Detta leder till följande kostnader längs Rutt 2:
- R1-Gig0/0 = 5
- R2-Gig1/0 = 10
- R3-Gig2/0 = 10
- R8-Gig1/0 = 5
- Total kostnad = 30
Eftersom Rutt 1 nu har en lägre total kostnad, kommer R1 att välja Rutt 1 istället för Rutt 2.
Konfiguration av referensbandbredd på R2 och R3:
- 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#
Genom att ändra referensbandbredden på R2 och R3, påverkar vi automatiskt kostnadsberäkningen och styr routing-beslut utan att behöva manuellt justera kostnader på varje enskilt interface.
Denna nya ändring handlar om att justera bandbredden på seriella länkar för att påverka OSPF-kostnadsberäkningen.
Vad är nytt jämfört med tidigare ändringar?
Bakgrund
Tidigare ändringar använde manuell OSPF-kostnadsjustering (ip ospf cost
Nu används en tredje metod, där bandbredden på ett interface justeras med kommandot bandwidth
Hur fungerar det?
OSPF-kostnaden beräknas som:
Kostnad = Referensbandbredd / Interface-bandbredd
Genom att höja bandbredden på seriella länkar från 1544 Kbps (T1) till 100 000 Kbps (100 Mbps), reduceras OSPF-kostnaden på dessa länkar. Resultatet blir att Rutt 3 nu får en betydligt lägre total kostnad, vilket gör att OSPF prioriterar denna väg.
Konfigurationer
- 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
Sammanfattning av situationen efter ändringen
- Före ändringen:
- Rutt 1: Kostnad 20
- Rutt 2: Kostnad 30
- Rutt 3: Kostnad 197 (för hög för att väljas)
- Efter ändringen (bandwidth 100 000 på seriella länkar i Rutt 3):
- Rutt 1 och Rutt 2: Oförändrade
- Rutt 3: OSPF-kostnaden sjunker drastiskt och blir den föredragna vägen
Viktigt att notera
Att ändra interface-bandbredd påverkar inte den faktiska fysiska hastigheten utan bara hur OSPF uppfattar länken.
Detta används normalt inte för att manipulera OSPF-kostnader, utan snarare för att matcha den faktiska kapaciteten i nätverk där bandbredd rapporteras felaktigt.
Om det används felaktigt kan det leda till suboptimala routing-beslut, där OSPF föredrar en långsammare länk över en snabbare.
Denna ändring visar hur justering av interface-bandbredd kan användas för att manipulera OSPF-routning, men bör göras med försiktighet och endast i specifika scenarier exempelvis utbildning.