Difference between revisions of "Cisco RIP"
Helikopter (talk | contribs) |
Helikopter (talk | contribs) |
||
Line 1: | Line 1: | ||
Routing Information Protocol är ett distance vector routing protocol. I denna artikel används RIP synonymt med RIPv2 (RFC 2453), RIPv1 har inte stöd för VLSM så det är väldigt legacy. Varje router kan annonsera sina directly connected networks plus det som de lär sig från sina grannar. Som med övriga distance vector routing protocols på IOS annonseras endast nätverk som hamnar i routingtabellen vidare, dvs annonsera endast det som routern själv använder. Man skickar kända nätverk med deras metric till grannar. Med tanke på att man inte känner till hela topologin utan endast nätverk och riktning är det större risk för loopar än med t.ex. link-state routing protokoll. | Routing Information Protocol är ett distance vector routing protocol. I denna artikel används RIP synonymt med RIPv2 (RFC 2453), RIPv1 har inte stöd för VLSM så det är väldigt legacy. Varje router kan annonsera sina directly connected networks plus det som de lär sig från sina grannar. Som med övriga distance vector routing protocols på IOS annonseras endast nätverk som hamnar i routingtabellen vidare, dvs annonsera endast det som routern själv använder. Man skickar kända nätverk med deras metric till grannar. Med tanke på att man inte känner till hela topologin utan endast nätverk och riktning är det större risk för loopar än med t.ex. link-state routing protokoll. | ||
+ | |||
+ | '''Type:''' Distance Vector | ||
+ | |||
+ | '''Algorithm:''' Bellman-Ford | ||
+ | |||
+ | '''AD:''' 120 | ||
+ | |||
+ | '''Protocols:''' IP | ||
+ | |||
+ | '''Packets:''' 2 | ||
===Uppdateringar=== | ===Uppdateringar=== | ||
− | RIP-routrar byter information med varandra genom att skicka uppdateringar på alla RIP-enableade interface baserat på update timer (30 sec default). Man skickar all information man har varje gång, max 25 route entries får plats per enskilt paket. Det skickas inga Hellos och inga grannskap upprättas utan uppdateringar skickas till 224.0.0.9 UDP port 520 var 30 sekund. För metric används hop count och upp till 15 är användbart, 16 anses som infinity. RIP har två meddelandetyper, Requests och Responses. Requests används för att be en granne skicka en partial eller full update direkt utan att vänta på Update timer. Skickar en router en request som innehåller en rad med address family ID 0 och metric 16 vill den ha en full update. Annars svarar grannen med uppdateringar för de nät som står speccade i Requesten, dvs partial update. Full update frågas efter när en Ciscorouter bootar upp, ett RIP-interface kommer upp eller ''clear ip route *'' körs medans partial ej | + | RIP-routrar byter information med varandra genom att skicka uppdateringar på alla RIP-enableade interface baserat på update timer (30 sec default). Man skickar all information man har varje gång, max 25 route entries får plats per enskilt paket. Det skickas inga Hellos och inga grannskap upprättas utan uppdateringar skickas till 224.0.0.9 UDP port 520 var 30 sekund. För metric används hop count och upp till 15 är användbart, 16 anses som infinity. RIP har två meddelandetyper, Requests och Responses. Requests används för att be en granne skicka en partial eller full update direkt utan att vänta på Update timer. Skickar en router en request som innehåller en rad med address family ID 0 och metric 16 vill den ha en full update. Annars svarar grannen med uppdateringar för de nät som står speccade i Requesten, dvs partial update. Full update frågas efter när en Ciscorouter bootar upp, ett RIP-interface kommer upp eller ''clear ip route *'' körs medans partial requests ej är implementerat. |
En skillnad med RIP kontra [[Cisco_EIGRP|EIGRP]] och RIPng är att metric läggs på när en route skickas iväg istället för när den kommer in. Finns det flera väger till en destination med samma metric installeras upp till 4 routes i routingtabellen. Detta går att ändra med '''maximum-paths'''-kommandot. | En skillnad med RIP kontra [[Cisco_EIGRP|EIGRP]] och RIPng är att metric läggs på när en route skickas iväg istället för när den kommer in. Finns det flera väger till en destination med samma metric installeras upp till 4 routes i routingtabellen. Detta går att ändra med '''maximum-paths'''-kommandot. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
'''Timers''' <br/> | '''Timers''' <br/> | ||
Line 22: | Line 27: | ||
En stor nackdel med RIP är konvergenstiden. | En stor nackdel med RIP är konvergenstiden. | ||
− | =Konfiguration= | + | ==Konfiguration== |
RIP-processen startar inte utan network-kommando. | RIP-processen startar inte utan network-kommando. | ||
router rip | router rip | ||
version 2 | version 2 | ||
+ | distance 120 | ||
network 10.0.0.0 | network 10.0.0.0 | ||
passive-interface default | passive-interface default | ||
no passive-interface gi2 | no passive-interface gi2 | ||
− | + | Verify | |
show ip protocols | show ip protocols | ||
show ip rip database | show ip rip database | ||
Line 37: | Line 43: | ||
clear ip route * | clear ip route * | ||
− | + | Debug | |
debug ip ripv2 | debug ip ripv2 | ||
debug ip ripv2 events | debug ip ripv2 events | ||
− | + | ===Version=== | |
− | + | interface gi2 | |
ip rip send version 1 | ip rip send version 1 | ||
ip rip receive version 1 | ip rip receive version 1 | ||
− | === | + | ===Split Horizon=== |
− | + | För att förhindra loopar används flera tekniker. Split Horizon, istället för att skicka exakt alla routes till en granne X tas routes med next-hop granne X bort från uppdateringen. Detta är påslaget default på alla interface förutom fysiska Frame Relay och ATM. En ännu kraftfullare variant är att lägga till Poison Reverse, då skickas uppdateringarna med next-hop granne X till granne X men med en metric satt till infinity. Detta har inte Cisco RIPv2 stöd för. | |
− | + | ||
− | + | Om två routrar känner till samma nät kommer den som annonserade ut det först att vara den som gäller för övriga routrar oavsett hop count eftersom split horizon gör att routes man får in på ett interface aldrig annonseras ut på det interfacet. Så även om den "sena" routern har en bättre väg kan den inte berätta det för någon eftersom den har fått in en uppdatering om routen på de interface där det finns RIP-routrar. Det går att stänga av men är inte rekommenderat. | |
− | + | no ip split-horizon | |
− | ip | ||
===Unicast=== | ===Unicast=== | ||
Line 57: | Line 62: | ||
neighbor 10.0.0.10 | neighbor 10.0.0.10 | ||
− | + | ===Broadcast=== | |
255.255.255.255 | 255.255.255.255 | ||
int gi2 | int gi2 | ||
Line 64: | Line 69: | ||
int gi2 | int gi2 | ||
ip broadcast-address 10.0.0.255 | ip broadcast-address 10.0.0.255 | ||
+ | |||
+ | ===Source Validation=== | ||
+ | Godta uppdateringar oavsett vilken IP de kommer ifrån. Stänger av sanity checks against source address of routing updates. | ||
+ | no validate-update-source | ||
==Summarization== | ==Summarization== | ||
+ | Make RIPv2 classless | ||
no auto-summary | no auto-summary | ||
Line 100: | Line 110: | ||
show ip protocols | b rip | show ip protocols | b rip | ||
− | == | + | ==Convergence== |
− | + | Optimization & Scalability | |
− | + | ||
+ | Skicka inte uppdateringar så fort | ||
+ | output-delay <milliseconds> | ||
+ | Hur många obehandlade uppdateringar som tillåts | ||
+ | input-queue 150 | ||
+ | |||
+ | ===Triggered Updates=== | ||
+ | RIP går att göra till ett event-drivet protokoll. Det har stöd för triggered updates, dvs om en förändring sker kan en partial update skickas ut direkt. Om en route failar kan man skicka ut en triggered update om denna routen med en metric satt till infinity då propagerar uppdateringen till alla routrar och de slutar använda den failade routen, detta kallas route poisoning. Däremot sparas routen i den interna RIP-databasen men markeras som possibly down. Eftersom RIP använder UDP går det inte att lita på att exakt alla paket är rätt. | ||
+ | |||
+ | Per interface (shut/noshut för att aktivera) | ||
+ | ip rip triggered | ||
+ | |||
+ | Suppress triggered updates when next regular update due within 10 seconds | ||
+ | flash-update-threshold 10 | ||
+ | |||
+ | ===Timers=== | ||
+ | Går att tuna men det bör vara samma överallt. | ||
+ | timers basic 10 60 60 80 100 | ||
+ | show ip protocols | include seconds | ||
+ | Per interface | ||
+ | ip rip advertise <seconds> | ||
+ | |||
+ | ===BFD=== | ||
+ | [[Cisco_BFD|BFD]] kan användas med RIP unicast. | ||
+ | router rip | ||
+ | version 2 | ||
+ | bfd all-interfaces | ||
+ | neighbor 1.1.1.1 bfd | ||
==Filtering== | ==Filtering== | ||
− | ''' | + | '''Prefix-list''' |
router rip | router rip | ||
distribute-list gateway #Filtering incoming updates based on gateway | distribute-list gateway #Filtering incoming updates based on gateway | ||
distribute-list prefix #Filter prefixes in routing updates | distribute-list prefix #Filter prefixes in routing updates | ||
+ | |||
+ | ip prefix-list R3 seq 5 deny 192.168.0.3/32 | ||
+ | ip prefix-list R3 seq 10 permit 0.0.0.0/0 le 32 | ||
+ | ip prefix-list LIST seq 10 permit 0.0.0.0/0 le 32 | ||
+ | router rip | ||
distribute-list prefix LIST gateway R3 in | distribute-list prefix LIST gateway R3 in | ||
+ | |||
+ | '''ACL''' <br/> | ||
Extended ACL tolkas av RIP som: | Extended ACL tolkas av RIP som: | ||
access-list 100 permit ip host <sending router> host <prefix> | access-list 100 permit ip host <sending router> host <prefix> | ||
Exempel | Exempel | ||
access-list 100 deny ip host 10.0.0.10 host 172.20.0.0 | access-list 100 deny ip host 10.0.0.10 host 172.20.0.0 | ||
+ | access-list 100 permit ip any any | ||
router rip | router rip | ||
distribute-list 100 in Gi2 | distribute-list 100 in Gi2 | ||
Line 132: | Line 177: | ||
Från alla routrar | Från alla routrar | ||
distance 255 0.0.0.0 255.255.255.255 10 | distance 255 0.0.0.0 255.255.255.255 10 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=RIPng= | =RIPng= |
Revision as of 18:01, 18 April 2016
Routing Information Protocol är ett distance vector routing protocol. I denna artikel används RIP synonymt med RIPv2 (RFC 2453), RIPv1 har inte stöd för VLSM så det är väldigt legacy. Varje router kan annonsera sina directly connected networks plus det som de lär sig från sina grannar. Som med övriga distance vector routing protocols på IOS annonseras endast nätverk som hamnar i routingtabellen vidare, dvs annonsera endast det som routern själv använder. Man skickar kända nätverk med deras metric till grannar. Med tanke på att man inte känner till hela topologin utan endast nätverk och riktning är det större risk för loopar än med t.ex. link-state routing protokoll.
Type: Distance Vector
Algorithm: Bellman-Ford
AD: 120
Protocols: IP
Packets: 2
Contents
Uppdateringar
RIP-routrar byter information med varandra genom att skicka uppdateringar på alla RIP-enableade interface baserat på update timer (30 sec default). Man skickar all information man har varje gång, max 25 route entries får plats per enskilt paket. Det skickas inga Hellos och inga grannskap upprättas utan uppdateringar skickas till 224.0.0.9 UDP port 520 var 30 sekund. För metric används hop count och upp till 15 är användbart, 16 anses som infinity. RIP har två meddelandetyper, Requests och Responses. Requests används för att be en granne skicka en partial eller full update direkt utan att vänta på Update timer. Skickar en router en request som innehåller en rad med address family ID 0 och metric 16 vill den ha en full update. Annars svarar grannen med uppdateringar för de nät som står speccade i Requesten, dvs partial update. Full update frågas efter när en Ciscorouter bootar upp, ett RIP-interface kommer upp eller clear ip route * körs medans partial requests ej är implementerat.
En skillnad med RIP kontra EIGRP och RIPng är att metric läggs på när en route skickas iväg istället för när den kommer in. Finns det flera väger till en destination med samma metric installeras upp till 4 routes i routingtabellen. Detta går att ändra med maximum-paths-kommandot.
Timers
Varje router har för varje route en tillhörande invalid after timer (default 180 sekunder) som tickar varje sekund och resetas varje gång den kommer in en uppdatering innehållandes routen. Kommer det inte in någon uppdateringen med routen blir den invalid och holddown timern startar. Då börjar routern skicka ut uppdateringar om att denna route inte är nåbar (infinte metric) genom sig själv eftersom det har hänt något med routen ur det egna perspektivet så övriga routrar får hitta en annan väg. Samtidigt som den inte accepterar några uppdateringar gällandes denna route tills holddown timear ut (default 180 sekunder). Huvudsyftet men holddown är fördröja processandet av uppdateringar om nätverk vars nåbarhet inte är säker eftersom de mottagna uppdateringarna kanske inte innehåller up-to-date information.
Det finns också en flushed after timer som tickar och resetas på samma sätt som invalid after. Om routern inte hör något på 240 sekunder (default) tas routen bort från routingtabellen. Denna finns för att en route inte ska vara oviss för evigt. Eftersom invalid after är 180 sekunder och flushed after är 240 får inte holddown köra klart utan det bryts efter 60 sekunder.
Som med alla distance vector protokoll används den route med lägst metric, dvs bästa vägen, och övriga vägar påverkar inte routingtabellen. Enda undantaget till denna regel är om next-hop skickar en högre metric än tidigare då accepteras den direkt, t.ex. vid route poisoning. Enda sättet att få påverkningsmöjlighet är att annonsera lägst metric.
Om två routergrannar ser sig själva som next-hop för samma nätverk (kan hända om Split Horizon är avstängt) kommer de att turas om att uppdatera varandra med grannens metric plus 1 och den blir högre och högre för att tillslut nå infinity och den ena slutar. Med RIP kan detta ta lång tid. Detta kallas Counting to infinity och är en konsekvens av distance vector protokoll.
En stor nackdel med RIP är konvergenstiden.
Konfiguration
RIP-processen startar inte utan network-kommando.
router rip version 2 distance 120 network 10.0.0.0 passive-interface default no passive-interface gi2
Verify
show ip protocols show ip rip database
Clearing routing process
clear ip route *
Debug
debug ip ripv2 debug ip ripv2 events
Version
interface gi2 ip rip send version 1 ip rip receive version 1
Split Horizon
För att förhindra loopar används flera tekniker. Split Horizon, istället för att skicka exakt alla routes till en granne X tas routes med next-hop granne X bort från uppdateringen. Detta är påslaget default på alla interface förutom fysiska Frame Relay och ATM. En ännu kraftfullare variant är att lägga till Poison Reverse, då skickas uppdateringarna med next-hop granne X till granne X men med en metric satt till infinity. Detta har inte Cisco RIPv2 stöd för.
Om två routrar känner till samma nät kommer den som annonserade ut det först att vara den som gäller för övriga routrar oavsett hop count eftersom split horizon gör att routes man får in på ett interface aldrig annonseras ut på det interfacet. Så även om den "sena" routern har en bättre väg kan den inte berätta det för någon eftersom den har fått in en uppdatering om routen på de interface där det finns RIP-routrar. Det går att stänga av men är inte rekommenderat.
no ip split-horizon
Unicast
Kan användas på vissa nätverkstyper, t.ex. multipoint Frame Relay subinterface.
neighbor 10.0.0.10
Broadcast
255.255.255.255
int gi2 ip rip v2-broadcast
Subnet broadcast
int gi2 ip broadcast-address 10.0.0.255
Source Validation
Godta uppdateringar oavsett vilken IP de kommer ifrån. Stänger av sanity checks against source address of routing updates.
no validate-update-source
Summarization
Make RIPv2 classless
no auto-summary
Summarization per interface
int gi2 ip summary-address rip 10.0.0.0 255.255.255.0
no auto-summary behövs för detta.
Default route
Det finns flera olika metoder för att skicka en default route till en granne.
int gi2 ip summary-address rip 0.0.0.0 0.0.0.0
Default-information
router rip default-information originate
Static
ip route 0.0.0.0 0.0.0.0 null 0 router rip network 0.0.0.0 #Alt 1 redistribute static #Alt 2
Default-network
ip route 20.0.0.0 255.0.0.0 null 0 ip default-network 20.0.0.0
Autentisering
Finns stöd för plain-text och MD5 och implementeras med hjälp av key-chain. Ett högre nyckelvärde godtar lägre nyckelvärde om key-string är samma men ej tvärtom. Använder man autentisering sänks antalet prefix som får plats i ett RIP-meddelande från 25 till 24. Key chain måste konfigureras innan RIP authentication!
key chain RIP-KEYS key 1 key-string HACKER interface gi2 ip rip authentication mode md5 ip rip authentication key-chain RIP-KEYS
Verifiera vilka interface som använder vilken key chain
show ip protocols | b rip
Convergence
Optimization & Scalability
Skicka inte uppdateringar så fort
output-delay <milliseconds>
Hur många obehandlade uppdateringar som tillåts
input-queue 150
Triggered Updates
RIP går att göra till ett event-drivet protokoll. Det har stöd för triggered updates, dvs om en förändring sker kan en partial update skickas ut direkt. Om en route failar kan man skicka ut en triggered update om denna routen med en metric satt till infinity då propagerar uppdateringen till alla routrar och de slutar använda den failade routen, detta kallas route poisoning. Däremot sparas routen i den interna RIP-databasen men markeras som possibly down. Eftersom RIP använder UDP går det inte att lita på att exakt alla paket är rätt.
Per interface (shut/noshut för att aktivera)
ip rip triggered
Suppress triggered updates when next regular update due within 10 seconds
flash-update-threshold 10
Timers
Går att tuna men det bör vara samma överallt.
timers basic 10 60 60 80 100 show ip protocols | include seconds
Per interface
ip rip advertise <seconds>
BFD
BFD kan användas med RIP unicast.
router rip version 2 bfd all-interfaces neighbor 1.1.1.1 bfd
Filtering
Prefix-list
router rip distribute-list gateway #Filtering incoming updates based on gateway distribute-list prefix #Filter prefixes in routing updates
ip prefix-list R3 seq 5 deny 192.168.0.3/32 ip prefix-list R3 seq 10 permit 0.0.0.0/0 le 32 ip prefix-list LIST seq 10 permit 0.0.0.0/0 le 32 router rip distribute-list prefix LIST gateway R3 in
ACL
Extended ACL tolkas av RIP som:
access-list 100 permit ip host <sending router> host <prefix>
Exempel
access-list 100 deny ip host 10.0.0.10 host 172.20.0.0 access-list 100 permit ip any any router rip distribute-list 100 in Gi2
Offset list
Lägg till 5 på hop count till det som skickas ut på interface Gi2
router rip offset-list 10 out 5 Gi2 access-list 10 permit any
offset-list 0 träffar alla routes
Administrative Distance
Det går att filtrera routes med hjälp av AD. Exempel: filtrera vissa prefix från en viss granne. AD 255 = UNKNOWN.
access-list 10 permit 192.168.0.0 access-list 10 permit 172.30.0.0 router rip distance 255 20.0.0.20 0.0.0.0 10
Från alla routrar
distance 255 0.0.0.0 255.255.255.255 10
RIPng
RIP Next Generation är RIP för IPv6. Även om namnet låter flashigt har inte mycket underliggande mekanismer förändrats även om UDP 521 istället för 520 nu används för att undvika krock med RIPv1/v2. Destination address för uppdateringarna är FF02::9. 15 hop är max metric och 16 är infinity men däremot ökas metric vid mottagandet av annonsering istället för skickandet som i tidigare versioner. Allt loopundvikande sker på samma sätt. En uppdatering kan innehålla så många entries som får plats i packetet vars max storlek avgörs av IPv6 MTU på länken. RIPng har inte stöd för autentisering utan precis som med OSPFv3 sköts detta av IPsec, däremot har inte Ciscos implementation stöd för detta. Passive interfaces och static neighbors finns inte heller men nyheter är Route Poisoning (till Split Horizon) och multipla RIPng-processer.
Konfiguration
Prereq
ipv6 unicast-routing ipv6 cef
Sätt IP-adresser på interfacen och enablea sedan RIP
ipv6 router rip 1 poison-reverse interface fa 0/0 ipv6 rip 1 enable
Verify
show ipv6 rip
Annonsera endast default route
interface fa 0/0 ipv6 rip 1 default-information only