Theorie
We starten met een korte herhaling van de leerstof die aangehaald werd in Network Infrastructure 2
.
Het is van essentieel belang om de theorie goed te begrijpen zodat je de praktische opdrachten in het labo succesvol kan uitvoeren !!!
Inleiding
Border Gateway Protocol (BGP) is een path vector routing protocol
.
BGP is gekend voor zijn schaalbaarheid, flexibiliteit en stabiliteit.
Initieel werd BGP ontworpen voor IPv4 inter-organization connectivity
op publieke netwerken zoals het Internet.
BGP staat beschreven in RFC 4271.
Daarnaast bestaat er ook een optie om BGP te gebruiken met andere protocollen binnen de netwerklaag van het OSI-model.
Multi-Protocol BGP (MP-BGP)
staat beschreven in RFC 4760.
Bij MP-BGP gebruikt iedere adresfamilie (IPv4, IPv6, … ) eigen databanken en configuraties.
Hierdoor kunnen de routing policies
per adresfamilie binnen een BGP-sessie volledig verschillend zijn.
BGP (Basic)
Autonomous System Numbers
Bij BGP is een autonomous system (AS)
een collectie van routers die onder de gemeenschappelijke controle van een organisatie vallen.
Organisaties (ISPs, overheidsinstellingen, multinationals, … ) die internetconnectiviteit wensen, moeten een publiek autonomous system number (ASN)
bekomen.
Initieel bestond een ASN uit een getal van 2 bytes groot. M.a.w. er waren maximaal 65535 ASNs beschikbaar.
Door deze beperkende factor heeft men nadien dit uitgebreid naar 4 bytes.
De Internet Assigned Numbers Authority (IANA) is verantwoordelijk voor het toekennen van publieke ASNs.
Belnet is de ISP voor educatieve instellingen in België. Achterhaal het ASN van Belnet!
BGP sessie
Een BGP sessie is een established adjacency
tussen twee BGP routers.
BGP sessies worden onderverdeeld in twee types.
- Internal BGP (iBGP): Een sessie tussen twee routers binnen eenzelfde AS.
- External BGP (eBGP): Een sessie tussen twee routers die behoren tot een verschillend AS.
Path attributes
BGP maakt gebruik van path attributes (PAs)
die gekoppeld zijn aan ieder network path
.
De PAs hebben een invloed op de routing policies in BGP.
Er bestaan vier verschillende categorieën binnen PAs:
- Well-known mandatory
- Well-known discretionary
- Optional transitive
- Optional non-transitive
Een korte samenvatting van de classificatie vind je onderstaande tabel.
Naam | Ondersteund door alle BGP implementaties | Geadverteerd tussen ASes |
---|---|---|
Well-known mandatory | JA | JA |
Well-known discretionary | JA | NEEN |
Optional transitive | NEEN | JA |
Optional non-transitive | NEEN | NEEN |
Loop prevention
BGP is een path vector routing protocol en beschikt niet over de volledige topologie van het netwerk.
BGP kan dus niet terugvallen op het mechanisme van een link-state routing protocol om loop-free paths
te detecteren.
BGP gebruikt daarom het AS_Path attribuut als loop-prevention
mechanisme.
Het AS_Path attribuut is een well-known mandatory attribuut en bevat een volledige lijst van alle ASNs dat de prefix advertisement
heeft gepasseerd startende vanaf de bron.
Wanneer een BGP router zijn eigen AS in het AS_Path attribuut van een prefix advertisement ziet, zal de router dit als een lus beschouwen en de prefix advertisement verwijderen.
Inter-Router communicatie
BGP-neighbors
worden gedefinieerd aan de hand van een IP-adres.
Dit is een groot verschil in vergelijking met OSPF. Meer info
Als inter-autonomous routing protocol
is het namelijk niet de bedoeling dat neighbor adjacencies
regelmatig wijzigen. Ze moeten m.a.w. dus gecoördineerd worden vastgelegd.
BGP gebruikt TCP-poort 179 om met andere routers te communiceren.
Door gebruik te maken van TCP kan men op verschillende manieren een adjacency vormen.
Bij BGP spreekt men trouwens over een BGP sessie
als we over een established adjacency
spreken tussen twee BGP-routers.
Een BGP peer
is een synoniem voor een BGP neighbor router.
De twee opties zijn:
- BGP single-hop sessie (Gebruik van de ARP table is noodzakelijk om BGP peer te contacteren)
- BGP multi-hop sessie (Gebruik van de routing table is noodzakelijk om BGP peer te contacteren)
Je hoeft m.a.w. niet te "peeren" met je onmiddellijke buur-router.
In onderstaande figuur zie je een voorbeeld van de twee verschillende BGP sessies.
BGP communiceert aan de hand van vier verschillende types van boodschappen.
Omschrijf de verschillende types!
Type | Naam | Functieomschrijving |
---|---|---|
1 | OPEN | |
2 | UPDATE | |
3 | NOTIFICATION | |
4 | KEEPALIVE |
In onderstaande figuur vind je een schermafbeelding uit Wireshark terug van een BGP OPEN type boodschap.
Wat is de functie van de Hold Time
?
BGP gebruikt een finite-state machine (FSM)
om een tabel van alle BGP peers en hun operationele status bij te houden.
Een BGP sessie kan volgende toestanden melden. Omschrijf iedere toestand!
Naam | Functieomschrijving |
---|---|
Idle | |
Connect | |
Active | |
OpenSent | |
OpenConfirm | |
Established |
Eenvoudige BGP configuratie
Het configuratieproces kan opgesplitst worden in drie algemene delen.
- BGP sessie parameters
Address Family
initialisatieAddress Family
activatie
Aan de hand van een eenvoudig voorbeeld doorlopen we een volledige configuratie.
In onderstaande figuur vind je de gebruikte topologie.
Stap 1: Initialiseer het BGP proces via het commando router bgp as-number.
Stap 2: Definieer de BGP Router ID (RID)
via het commando bgp router-id A.B.C.D.
Dit is een optionele stap. De RID wordt namelijk op een gelijkaardige manier bepaald als bij OSPF.
Stap 3: Identificeer de BGP neighbor via commando neighbor ip-address remote-as as-number.
Stap 4 (optioneel) : Definieer de source interface van de BGP sessie via commando neighbor ip-address update-source interface-id.
Dit is een optionele stap en het nut wordt later in de cursus aangehaald.
Stap 5 (optioneel) : Activeer BGP authenticatie via commando neighbor ip-address password password.
Ook dit is een optionele stap. De BGP authenticatie gebruikt een MD5 authenticatie hash om zo manipulatie van BGP boodschappen te voorkomen.
Stap 6 (optioneel) : Wijzig de BGP timers via het commando neighbor ip-address timers bgp Keepalive Holdtime.
Ook dit is een optionele stap. De standaardwaarden zijn 60 seconden voor de keepalive timer en 180 seconden voor de holdtime timer.
Stap 7: Initialiseer de adresfamilie via het commando address-family.
Standaard is enkel de IPv4 adresfamilie geïnitialiseerd.
Stap 8: Activeer de adresfamilie voor de BGP neighbor via het commando neighbor ip-address activate.
Verificatie van een BP sessie
Een BGP sessie controleren kan via verschillende commando's.
- show bgp (meerdere opties mogelijk)
- show ip bgp (meerdere opties mogelijk)
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast summary.
Achterhaal uit bovenstaande figuur alle informatie!
Veld | Omschrijving |
---|---|
Neighbor | |
V | |
AS | |
MsgRcvd | |
MsgSent | |
TblVer | |
InQ | |
OutQ | |
Up/Down | |
State/PfxRcd |
Prefix advertisement
BGP gebruikt drie tabellen om path attributes (PAs) en network paths bij te houden.
Adj-RIB-in
bevat deNetwork Layer Reachability Information (NLRI)
routes vooraleer deinbound route policies
worden toegepast.Loc-RIB
bevat alle NLRI routes die een lokale afkomst hebben of afkomstig zijn van BGP peers. Deze tabel vormt ook de bron voor de IP route tabel.Adj-RIB-out
bevat de NLRI routes na het toepassen van deoutbound route policies
.
Via het commando network network mask subnet-mask worden network prefixes
geïnstalleerd in de BGP Loc-RIB tabel.
Via de optie route-map kunnen er BGP PAs nog toegevoegd worden. Route maps worden later nog bestudeerd.
Het BGP network commando activeert BGP niet op een specifieke interface.
Het zorgt er enkel voor dat het specifieke network prefix
in de Loc-RIB tabel terechtkomt.
Wanneer een een BGP prefix in de Loc-RIB terechtkomt, worden volgende PAs toegevoegd.
-
Bij een connected network:
Het next-hop BGP attribuut wordt 0.0.0.0
Het BGP origin attribuut wordt i (IGP)
Het BGP weight attribuut wordt 32768 -
Bij een statische of dynamiche route
Het next-hop BGP attribuut wordt hetnext-hop IP address
Het BGP origin attribuut wordt i (IGP)
Het BGP weight attribuut wordt 32768
HetMulti-exit discriminator (MED)
attribuut wordt de IGP metric.
Interessant te weten is het feit dat BGP enkel the best path
adverteert naar BGP peers ongeacht het aantal NLRI routes in de Loc-RIB tabel.
In onderstaande figuur vind je het resultaat van het commando show ip route.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast.
Achterhaal uit bovenstaande figuur alle informatie!
Veld | Omschrijving |
---|---|
Network | |
Next Hop | |
Metric | |
LocPrf | |
Weight | |
Path | |
Origin |
Inzicht in BGP sessies
BGP sessies zijn altijd point-to-point tussen twee routers. Zoals reeds vermeld bestaan er twee types:
- Internal BGP (iBGP)
- External BGP (eBGP)
iBGP
iBGP prefixes verkrijgen een administrative distance (AD) van 200.
De nood om BGP te gebruiken binnen een AS komt enkel voor wanneer er nood is aan meerdere routing policies
of bij transit connectivity
tussen verschillende ASes.
In onderstaande figuur vind je een voorbeeld van transit connectivity.
Wanneer R2 een iBGP multi-hop sessie vormt met R4, beschikt R3 niet over de nodige informatie omtrent de netwerken die gerelateerd zijn aan AS 65001 en AS 65201.
Om dit probleem op te lossen kan men opteren voor 2 opties.
- Redistributie van BGP routes in OSPF. (Dit is geen geschikte optie. Waarom?)
- iBGP Full Mesh
iBGP Full Mesh
Zoals reeds besproken kan het AS_Path attribuut gebruikt worden voor loop prevention. Helaas werkt dit mechanisme enkel voor eBGP en niet voor iBGP. Om toch tot een werkbare oplossing te komen, wordt een full mesh
voorgesteld.
In onderstaande figuur vind je een concreet voorbeeld van de problematiek.
Alle routers behoren tot hetzelfde AS en R1 adverteert de prefix 192.168.1.0/24 aan R2.
Aangezien de prefix 192.168.1.0/24 afkomstig is van een iBGP peer (R1) zal R2 de prefix 192.168.1.0/24 niet adverteren naar R3.
Bij iBGP zal een router enkel een prefix aanvaarden als die afkomstig is van een directe "peer".
Prefixen geleerd van een peer zullen niet doorgegeven worden.
In onderstaande figuur vind je een concreet voorbeeld van de oplossing.
Door gebruik te maken van multi-hop iBGP sessie kan R1 nu wel de prefix 192.168.1.0/24 adverteren aan R3.
Aangezien alle routers een iBGP sessie hebben met elkaar is er sprake van een full mesh.
Peering via loopback interfaces
In onderstaande figuur vind je een ander voorbeeld van Full Mesh iBGP topologie.
BGP sessies gebruiken standaard het IP-adres van de uitgaande (outbound) interface om te communiceren met een BGP peer. Indien een bepaalde verbinding onderbroken wordt (in ons voorbeeld de verbinding tussen R1 en R2), zal de BGP sessie tussen R1 en R2 na verloop van tijd eindigen. Hierdoor zal er een connectiviteitsprobleem ontstaan. R2 zal niet meer beschikken over informatie omtrent het netwerk 192.168.1.0/24.
We beschikken over twee opties om dit probleem aan te pakken.
- We voorzien een tweede verbinding tussen de routers en maken zo extra BGP sessies aan tussen de de routers.
- We voorzien een IGP (bijvoorbeeld OSPF) dat de IP-adressen van de loopback interfaces op de routers adverteert en daarnaast configureren we BGP zo dat BGP sessie opgebouwd wordt via de IP-adressen van de loopback interfaces.
Aangezien de eerste niet echt schaalbaar is, opteren we meestal voor de tweede optie.
In onderstaande figuur vind je een voorbeeld van Full Mesh iBGP topologie met loopback interfaces.
Zoals algemeen geweten is een loopback interface virtueel en altijd actief (up).
Bij een onderbroken verbinding blijft de sessie dus intact.
De BGP sessie wijzigt enkel van single-hop naar multi-hop.
De voordelen van deze oplossing zijn:
- Geen herberekening door het BGP
best path algorithm
bij een onderbreking van een verbinding. - Automatische load balancing wordt actief indien de IGP
multiple equal-cost paths
ondersteunt.
Hieronder vind je een deel van de configuratie van R1.
interface Loopback0
ip address 172.16.1.1 255.255.255.255
!
interface GigabitEthernet1
ip address 192.168.11.1 255.255.255.0
negotiation auto
!
interface GigabitEthernet2
ip address 192.168.21.1 255.255.255.0
negotiation auto
!
interface GigabitEthernet4
ip address 192.168.1.1 255.255.255.0
negotiation auto
!
router ospf 1
network 172.16.1.1 0.0.0.0 area 1
network 192.168.11.0 0.0.0.255 area 1
network 192.168.21.0 0.0.0.255 area 1
!
router bgp 65100
bgp router-id 1.1.1.1
bgp log-neighbor-changes
neighbor 172.17.1.1 remote-as 65100
neighbor 172.17.1.1 update-source Loopback0
neighbor 172.18.1.1 remote-as 65100
neighbor 172.18.1.1 update-source Loopback0
!
address-family ipv4
network 192.168.1.0
neighbor 172.17.1.1 activate
neighbor 172.18.1.1 activate
exit-address-family
Hieronder vind je een deel van de configuratie van R3.
interface Loopback0
ip address 172.18.1.1 255.255.255.255
!
interface GigabitEthernet1
ip address 192.168.11.2 255.255.255.0
negotiation auto
!
interface GigabitEthernet3
ip address 192.168.31.1 255.255.255.0
negotiation auto
!
router ospf 1
network 172.18.1.1 0.0.0.0 area 1
network 192.168.0.0 0.0.255.255 area 1
!
router bgp 65100
bgp router-id 3.3.3.3
bgp log-neighbor-changes
neighbor 172.16.1.1 remote-as 65100
neighbor 172.16.1.1 update-source Loopback0
neighbor 172.17.1.1 remote-as 65100
neighbor 172.17.1.1 update-source Loopback0
!
address-family ipv4
neighbor 172.16.1.1 activate
neighbor 172.17.1.1 activate
exit-address-family
In onderstaande figuur vind je het resultaat van het commando show ip route op R3.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op R3
eBGP
Zoals reeds aangegeven is eBGP een hoeksteen van het Internet.
eBGP prefixes verkrijgen een administrative distance (AD) van 20.
Daarnaast is ook de time-to-live (TTL)
verschillend bij eBGP (TTL=1) en bij iBGP (TTL=255).
Dit is ook de reden waarom er geen eBGP multi-hop sessies mogelijk zijn.
De configuratie van eBGP en iBGP is gelijklopend behalve een verschillend ASN in het commando neighbor ip address remote-as as-number.
In onderstaande figuur vind je een voorbeeld van zowel iBGP-sessies als eBGP-sessies.
Waarom is er terug een iBGP-sessie nodig tussen R2 en R4?
Het combineren van eBGP-sessies en iBGP-sessies kan soms verwarrend zijn qua topologie en concepten. R2 en R4 zijn iBGP peers en volgen steeds de regels van iBGP advertisements. Dit geldt ook voor de routes die aangeleerd werden via een eBGP peer.
Next-Hop Manipulatie
iBGP routers geven prefixen, geleerd van eBGP routers, door aan andere iBGP routers met het bestaande, bijhorende eBGP next-hop adres.
Het probleem is dat de andere "interne" iBGP-routers deze next-hop adressen niet kennen.
Aan de hand van een iets complexere oefening maken we de problematiek concreter.
In onderstaande figuur vind je de topologie die gebruikt zal worden bij de Next-Hop-Self
configuratie.
Hieronder vind je deel van de configuratie die aanwezig is op router Gent-Oost.
Deze configuratie werd volledig uitgevoerd volgens het principe van peering via loopback interface
.
Uiteraard zijn de configuraties op de andere routers gelijkaardig.
interface Loopback0
ip address 172.16.1.1 255.255.255.0
!
interface GigabitEthernet1
ip address 10.1.0.2 255.255.255.0
negotiation auto
!
interface GigabitEthernet2
ip address 10.2.0.1 255.255.255.0
negotiation auto
!
router ospf 1
network 10.2.0.0 0.0.0.255 area 1
network 172.16.0.0 0.0.255.255 area 1
!
router bgp 65150
bgp router-id 2.2.2.2
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 10.1.0.1 remote-as 65100
neighbor 172.16.2.1 remote-as 65150
neighbor 172.16.2.1 update-source Loopback0
neighbor 172.16.3.1 remote-as 65150
neighbor 172.16.3.1 update-source Loopback0
!
address-family ipv4
neighbor 10.1.0.1 activate
neighbor 172.16.2.1 activate
neighbor 172.16.3.1 activate
exit-address-family
Dit geeft volgend resultaat op router Oostende.
Het is duidelijk dat dit niet het gewenste resultaat is aangezien het netwerk 192.168.4.0/24 niet bereikbaar vanuit router Oostende.
Door gebruik te maken van het commando neighbor ip address next-hop-self kan een router zich bekend maken aan iBGP peers als next hop
voor network prefixes
die aangeleerd werden via een eBGP peer.
Op volgende routers voegen we volgende commando's toe.
Gent-Oost(config-router-af)#neighbor 172.16.2.1 next-hop-self
Gent-Oost(config-router-af)#neighbor 172.16.3.1 next-hop-self
Gent-West(config-router-af)#neighbor 172.16.1.1 next-hop-self
Gent-West(config-router-af)#neighbor 172.16.2.1 next-hop-self
Dit geeft volgend resultaat op router Oostende.
Hierdoor verkrijgen we het gewenste resultaat. Router Oostende kan het netwerk 192.168.4.0/24 bereiken.
Multiprotocol BGP (MP-BGP)
MP-BGP ondersteunt zowel IPv4
, IPv6
als Multiprotocol Label Switching (MPLS) Layer 3 Virtual Private Network (L3VPN)
.
MP-BGP voor IPv6 gebruikt dezelfde features en regels zoals bij een IPv4 path vector routing protocol.
MP-BGP blijft dus ook gebruikmaken van TCP-poort 179 en bij de initiële negotiatie (Open Message) worden de mogelijkheden tussen de BGP peers uitgewisseld.
De MP-BGP uitbreidingen bevatten een Address Family Identifier (AFI)
die de ondersteunende protocollen beschrijft en een Subsequent Address Family Identifier (SAFI)
die bepaalt of de prefixes toegepast worden in een unicast of multicast omgeving.
- IPv4 unicast: AFI:1, SAFI:1
- IPv4 multicast: AFI:1, SAFI:2
- IPV6 unicast: AFI:2, SAFI:1
- IPV6 multicast AFI:2, SAFI:2
In onderstaande figuur vind je de topologie die gebruikt zal worden bij de MP-BGP configuratie.
Hieronder vind je deel van de configuratie die aanwezig is op router Gent.
Uiteraard zijn de configuraties op de andere routers gelijkaardig.
interface Loopback0
no ip address
ipv6 address FE80::2 link-local
ipv6 address 2001:DB8:0:12::1/64
!
interface GigabitEthernet1
no ip address
negotiation auto
ipv6 address FE80::2 link-local
ipv6 address 2001:DB8:0:1::2/64
!
interface GigabitEthernet2
no ip address
negotiation auto
ipv6 address FE80::2 link-local
ipv6 address 2001:DB8:0:2::1/64
!
interface GigabitEthernet3
no ip address
shutdown
negotiation auto
!
interface GigabitEthernet4
no ip address
shutdown
negotiation auto
!
router bgp 65150
bgp router-id 2.2.2.2
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2001:DB8:0:1::1 remote-as 65100
neighbor 2001:DB8:0:2::2 remote-as 65200
!
address-family ipv4
exit-address-family
!
address-family ipv6
network 2001:DB8:0:1::/64
network 2001:DB8:0:2::/64
network 2001:DB8:0:12::/64
neighbor 2001:DB8:0:1::1 activate
neighbor 2001:DB8:0:2::2 activate
exit-address-family
!
Twee belangrijke opmerkingen:
- Het is geen best practice om link-local adressen te gebruiken bij BGP peering! Men verkiest het gebruik van unique global unicast adressen om de complexiteit te reduceren.
- Hoewel deze oefening enkel IPv6 adressen gebruikt, wordt de BGP RID nog steeds voorgesteld als een IPv4-adres.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv6 unicast neighbors 2001:db8:0:2::2 op router Gent.
Het resultaat toont een succesvolle negotiatie tussen de twee routers Gent en Brussel.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv6 unicast summary op router Gent.
Het resultaat toont de status van de huidige sessies op router Gent.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv6 unicast op router Gent.
In onderstaande figuur vind je het resultaat van het commando show ipv6 route op router Gent.
BGP (Advanced)
Route Summarization
Er zijn meerdere voordelen bij Route summarization
:
- De routers worden minder belast.
- De berekening van het best-path wordt versneld.
- Een verhoging van de stabiliteit van het netwerk.
Laat het ook duidelijk zijn dat route summarization zowel bij IPv4 als bij IPv6 gebruikt kan worden!
Dynamische route summarization bij IPv4 wordt gerealiseerd via het commando aggregate-address network subnet-mask.
Dynamische route summarization bij IPv6 wordt gerealiseerd via het commando aggregate-address prefix/prefix-length.
In onderstaande figuur vind je de topologie die gebruikt zal worden bij de route summarization configuratie.
We tonen eerst de basisconfiguratie van router Brugge zonder route summarization en de bijhorende BGP tabellen.
interface Loopback0
ip address 192.168.0.1 255.255.240.0
!
interface Loopback1
ip address 192.168.16.1 255.255.240.0
!
interface Loopback2
ip address 192.168.32.1 255.255.240.0
!
interface Loopback3
ip address 192.168.48.1 255.255.240.0
!
interface GigabitEthernet1
ip address 10.0.1.1 255.255.255.0
negotiation auto
!
interface GigabitEthernet2
no ip address
shutdown
negotiation auto
!
interface GigabitEthernet3
no ip address
shutdown
negotiation auto
!
interface GigabitEthernet4
no ip address
shutdown
negotiation auto
!
router bgp 65100
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 10.0.1.2 remote-as 65150
!
address-family ipv4
redistribute connected
neighbor 10.0.1.2 activate
exit-address-family
!
Wat is de functie van commando redistribute connected?
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brugge.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.
Nu passen we route summarization
toe.
De netwerken 192.168.0.0/20, 192.168.16.0/20, 192.168.32.0/20 en 192.168.48.0/20 kunnen we samenvoegen tot 192.168.0.0/18.
Indien de vorige stap onduidelijk is, herhaal je best het concept van supernetting.
Op router Brugge configureren we route summarization via het commando:
Brugge(config-router-af)#aggregate-address 192.168.0.0 255.255.192.0
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brugge.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.
We vinden in bovenstaande figuren nu duidelijk het netwerk 192.168.0.0/18 terug.
Helaas is de BGP tabel echter niet kleiner geworden!!
Door gebruikt te maken van de optie summary-only verkrijgen wel het gewenste resultaat en zullen de kleine, aparte netwerkjes niet meer opgenomen worden.
Brugge(config-router-af)#aggregate-address 192.168.0.0 255.255.192.0 summary-only
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brugge.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.
Voor de volledigheid vind je ook de drie route tabellen van de verschillende routers terug.
In onderstaande figuur vind je het resultaat van het commando show ip route op router Brugge.
In onderstaande figuur vind je het resultaat van het commando show ip route op router Gent.
In onderstaande figuur vind je het resultaat van het commando show ip route op router Brussel.
BGP route filtering
Conditional route selection
is een methode om selectief prefixes te identificeren die verzonden of ontvangen kunnen worden.
Deze werkwijze heeft zijn nut bij de manipulatie van netwerkverkeer (traffic flow), bij het reduceren van geheugengebruik en bij het beveiligen van het netwerk.
We beschikken over vier verschillende methodes om routes te filteren. (inbound & outbound):
- Distribution list
- Prefix list
- AS_Path ACL/filtering
- Route maps
Distribution list filtering
Distribution lists filteren prefixes tussen BGP peers op basis van een standard of extended ACLs.
In onderstaande figuur vind je de topologie die gebruikt zal worden bij de distribution list filtering configuratie.
We maken geen gebruik van route summarization! In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
Hieronder vind je de configuratie op router Brugge die netwerk 192.168.32.0/20 niet adverteert naar router Gent.
Alle andere prefixes worden wel geadverteerd.
router bgp 65100
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 10.0.1.2 remote-as 65150
!
address-family ipv4
redistribute connected
neighbor 10.0.1.2 activate
neighbor 10.0.1.2 distribute-list BLOCK-PREFIX out
exit-address-family
!
ip access-list extended BLOCK-PREFIX
10 deny ip 192.168.32.0 0.0.15.255 host 255.255.240.0
20 permit ip any any
De eerste regel van de ACL BLOCK-PREFIX verdient zeker een extra woordje uitleg.
- 192.168.32.0 0.0.15.255 verwijst naar alle netwerken tussen 192.168.32.0 en 192.168.47.255
- host 255.255.240.0 verwijst naar de prefix length /20.
Deze syntax kan soms verwarrend overkomen. Daarom komt deze methode in de praktijk nog zelden voor.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
Prefix list filtering
In onderstaande figuur vind je de topologie die gebruikt zal worden bij de prefix list filtering configuratie.
We maken geen gebruik van route summarization! In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
Hieronder vind je de configuratie op router Brugge die netwerk 192.168.32.0/20 niet adverteert naar router Gent.
Alle andere prefixes worden wel geadverteerd.
router bgp 65100
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 10.0.1.2 remote-as 65150
!
address-family ipv4
redistribute connected
neighbor 10.0.1.2 activate
neighbor 10.0.1.2 prefix-list BLOCK-PREFIX out
exit-address-family
!
ip prefix-list BLOCK-PREFIX seq 10 deny 192.168.32.0/20
ip prefix-list BLOCK-PREFIX seq 20 permit 0.0.0.0/0 le 32
!
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
AS_Path filtering
Soms is filteren via network prefixes een complex gegeven.
Een alternatief bestaat uit te filteren op ASN of meerdere ASNs.
AS_Path filtering wordt verwezenlijkt via een AS_Path ACL die gebruikt maakt van regular expressions
.
Regular expressions
Het gebruik van regular expressions is zeker niet nieuw voor jullie.
Als heropfrissing tonen we enkele voorbeelden waar regular expressions hun nut bewijzen.
Hiervoor starten we met de volledige BGP tabel.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast regex 150.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast regex 150$.
Uiteraard zijn de mogelijkheden met regular expressions quasi onbeperkt.
AS_Path ACLs
Het selecteren van routes via AS_Path vraagt het gebruik van een AS_Path access control list. In onderstaande figuur vind je de topologie die gebruikt zal worden bij de AS_Path filtering configuratie.
We maken geen gebruik van route summarization! In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast neighbors 10.0.2.2 advertised-routes op router Gent. Het resultaat toont welke routes door router Gent worden geadverteerd naar router Brussel.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.
Hieronder vind je een mogelijke configuratie op router Gent die prefixes afkomstig van ASN 65100 niet adverteert naar router Brussel.
router bgp 65150
bgp router-id 2.2.2.2
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 10.0.1.1 remote-as 65100
neighbor 10.0.2.2 remote-as 65200
!
address-family ipv4
redistribute connected
neighbor 10.0.1.1 activate
neighbor 10.0.2.2 activate
neighbor 10.0.2.2 filter-list 1 out
exit-address-family
!
ip as-path access-list 1 permit ^$
Verklaar de gebruikte regular expression!
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.
Route maps
Met route maps kan je veel meer dan enkel filteren.
Het biedt je de mogelijkheid om BGP attributen te manipuleren.
In onderstaande figuur vind je de topologie die gebruikt zal worden bij de route map configuratie.
We maken geen gebruik van route summarization!
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast neighbors 10.0.2.2 advertised-routes op router Gent.
Het resultaat toont welke routes door router Gent worden geadverteerd naar router Brussel.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.
Hieronder vind je een mogelijke configuratie op router Gent die de metric wijzigt voor lokale routes en alle andere routes ongewijzigd adverteert naar router Brussel.
router bgp 65150
bgp router-id 2.2.2.2
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 10.0.1.1 remote-as 65100
neighbor 10.0.2.2 remote-as 65200
!
address-family ipv4
redistribute connected
neighbor 10.0.1.1 activate
neighbor 10.0.2.2 activate
neighbor 10.0.2.2 route-map Gent2Brussel out
exit-address-family
!
ip as-path access-list 1 permit ^$
!
route-map Gent2Brussel permit 10
description Change the metric for locally originated routes
match as-path 1
set metric 1000
route-map Gent2Brussel permit 20
description Allow all other routes
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.
Clearing BGP connections
Soms moet men een BGP-sessie hernieuwen vooraleer een wijziging actief wordt. Dan kan op 2 manieren gebeuren:
- Via een hard reset
- Via een soft reset
Hard reset
Een hard reset onderbreekt de BGP-sessie en wist alle routes afkomstig van de BGP peer.
Nadien wordt een nieuwe BGP-sessie aangemaakt. Deze werkwijze is disruptief!
We gebruiken hiervoor het commando clear ip bgp ip-address.
In onderstaande figuur vind je het resultaat van het commando **clear ip bgp * ** op router Gent.
Soft reset
Een soft reset vraagt enkel een nieuwe full advertisement aan bij de BGP peer. We gebruiken hiervoor het commando clear ip bgp ip-address soft.
Maximum prefix
Meermaals werd het Internet tijdelijk verstoord door een router die overstelpt werd door een groot aantal routes.
Om dit te vermijden bestaat de optie maximum-prefix.
Dit wordt voornamelijk preventief ingesteld om overbelasting van routers te voorkomen.
Hieronder vind je een voorbeeldconfiguratie.
router bgp 65100
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 10.0.1.2 remote-as 65150
!
address-family ipv4
redistribute connected
neighbor 10.0.1.2 activate
neighbor 10.0.1.2 maximum-prefix 100 80
exit-address-family
Wanneer de router in ons voorbeeld 100 prefixes ontvangt van zijn peer, zal de BGP-sessie verbroken worden. Deze BGP-sessie komt nadien niet meer automatisch op. Zo vermijden we oneindige aan/uit lussen. Standaard wordt er pas een boodschap zichtbaar bij het verbreken van de sessie. Door gebruik te maken van een drempelwaarde (in ons voorbeeld is de treshold 80) kunnen we reeds een boodschap verkrijgen vooraleer de sessie verbroken wordt. Er zijn ook nog andere opties mogelijk zoals warning-only.
BGP path selectie
Bij BGP bestaat een route advertisement uit Network Layer Reachability Information (NLRI)
en Path Attributes (PAs)
.
PAs zullen de selectie van het best path beïnvloeden indien er meerdere mogelijkheden aanwezig zijn om een bestemming te bereiken.
Alle mogelijkheden worden bewaard in de Loc-RIB table.
Na de berekening van het best path wordt deze via de RIB in de route tabel geplaatst.
Uiteindelijk zal de BGP router enkel het best path adverteren naar de peer routers.
BGP herberekent het best path voor een prefix bij:
- Een wijziging van de BGP next-hop reachability
- Een falende interface die verbonden is met een eBGP peer
- Een wijziging in de redistributie
- Het verkrijgen van een nieuw of het verwijderen van een oude route
Het belang van BGP path selectie
Het BGP best-path selection algorithm
beïnvloedt hoe het netwerkverkeer een AS binnenkomt of verlaat.
Via de configuratie van BGP attributen op de router wordt het inkomend/uitgaand netwerkverkeer gewijzigd naar gelang de noden/eisen van het netwerk.
Fouten in deze configuratie zorgt vaak voor niet-optimale routering.
BGP best path
Een BGP router gebruikt automatisch de eerst ontvangen route als best path. Ontvangt de BGP router nadien nog routes met eenzelfde prefix length dan zal de router deze steeds vergelijken t.o.v. het huidige best path. Hierbij bepaalt onderstaande lijst welke route uiteindelijk zal geselecteerd worden als best path.
Prioriteit | Attribuut |
---|---|
1 | Weight (highest) |
2 | Local preference (highest) |
3 | Originate |
4 | AIGP metric (shortest) |
5 | AS_Path (shortest) |
6 | Origin code |
7 | MED (lowest) |
8 | eBGP over iBGP |
9 | IGP metric (lowest) |
10 | Oldest path |
11 | Neighbor Router ID (lowest) |
12 | Neighbor IP Address (lowest) |
Weight
BGP weight is een attribuut gedefinieerd door Cisco (propriëtair) en heeft een waarde tussen 0 en 65535 (16-bit).
De waarde wordt lokaal op de router toegekend en wordt niet geadverteerd naar andere routers.
Het path met de hoogste weight wint.
In onderstaande figuur vind je de topologie die gebruikt zal worden.
Hieronder vind je de initiële configuratie van router Gent.
interface GigabitEthernet1
ip address 192.168.10.1 255.255.255.0
negotiation auto
!
interface GigabitEthernet2
ip address 192.168.20.1 255.255.255.0
negotiation auto
!
router bgp 65150
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.10.2 remote-as 65100
neighbor 192.168.20.2 remote-as 65100
!
address-family ipv4
neighbor 192.168.10.2 activate
neighbor 192.168.20.2 activate
exit-address-family
Hieronder vind je de initiële configuratie van router Brugge.
interface Loopback0
ip address 192.168.100.1 255.255.255.0
!
interface GigabitEthernet1
ip address 192.168.10.2 255.255.255.0
negotiation auto
!
interface GigabitEthernet3
ip address 192.168.30.1 255.255.255.0
negotiation auto
!
router bgp 65100
bgp router-id 2.2.2.2
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.10.1 remote-as 65150
neighbor 192.168.30.2 remote-as 65100
!
address-family ipv4
network 192.168.100.0
neighbor 192.168.10.1 activate
neighbor 192.168.30.2 activate
exit-address-family
Hieronder vind je de initiële configuratie van router Oostende.
interface Loopback0
ip address 192.168.200.1 255.255.255.0
!
interface GigabitEthernet2
ip address 192.168.20.2 255.255.255.0
negotiation auto
!
interface GigabitEthernet3
ip address 192.168.30.2 255.255.255.0
negotiation auto
!
router bgp 65100
bgp router-id 3.3.3.3
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.20.1 remote-as 65150
neighbor 192.168.30.1 remote-as 65100
!
address-family ipv4
network 192.168.200.0
neighbor 192.168.20.1 activate
neighbor 192.168.30.1 activate
exit-address-family
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brugge.
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Oostende.
Er bestaan 2 manieren om weight aan te passen:
- Via het commando set weight weight in een route map
- Via het commando neighbor ip address weight weight
In ons voorbeeld zal het netwerkverkeer naar de Loopback interfaces verlopen via router Brugge.
Hiervoor passen we configuratie op router Gent aan.
address-family ipv4
neighbor 192.168.10.2 activate
neighbor 192.168.10.2 weight 8000
neighbor 192.168.20.2 activate
exit-address-family
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
Local preference
Local preference (LOC_PREF) is een well-known discretionary path attribute en heeft een waarde tussen 0 en 232-1.
LOC_PREF wordt voornamelijk gebruikt om het next-hop address te beïnvloeden voor uitgaand netwerkverkeer bij het verlaten van een AS.
De default waarde van LOC_PREF is 100 en een hogere waarde wint t.o.v. een lagere waarde.
De LOC_PREF wordt ook niet geadverteerd tussen eBGP peers.
Er zijn terug 2 manieren om LOC_PREF aan te passen:
- Via het commando set local-preference preference in een route map
- Via het commando neighbor ip address local-preference preference
Een belangrijke opmerking is het feit dat een aanpassing in de LOC_PREF de path selection bij andere iBGP routers kan wijzigen.
Dit geldt echter niet voor eBGP routers.
In onderstaande figuur vind je de topologie die gebruikt zal worden.
In ons voorbeeld zal het netwerkverkeer naar de Loopback interfaces verlopen via router Brugge.
Daarnaast maken we nu eens gebruik van een route map.
Hiervoor passen we de configuratie op router Gent aan.
ip access-list standard LOOPBACK
10 permit 192.168.200.0 0.0.0.255
20 permit 192.168.100.0 0.0.0.255
!
route-map BRUGGE permit 10
match ip address LOOPBACK
set local-preference 8000
route-map BRUGGE permit 20
!
router bgp 65150
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.10.2 remote-as 65100
neighbor 192.168.20.2 remote-as 65100
!
address-family ipv4
neighbor 192.168.10.2 activate
neighbor 192.168.10.2 route-map BRUGGE in
neighbor 192.168.20.2 activate
exit-address-family
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
Originate
De voorkeur verloopt in onderstaande volgorde:
- Lokaal geadverteerde routes
- Netwerken die lokaal werden samengevoegd. (Route Summarization)
- Ontvangen routes afkomstig van BGP peers
AIGP metric
Accumulated Interior Gateway Protocol (AIGP)
voorziet de mogelijkheid aan BGP om gebruik te maken van path metric bij meerdere ASes.
De lowest path metric
is iets typisch voor IGPs om het best path te bepalen.
Bij BGP wordt deze optie standaard niet gebruikt wegens de beperkte schaalbaarheid.
Er bestaat echter één uitzondering. Wanneer meerdere ASes beheerd worden door eenzelfde organisatie kan AIGP een geschikte optie zijn.
AS_Path
AS_Path wordt soms ook vermeld als AS hop count
. Een korter AS_Path wint steeds van een langer AS_Path.
Het AS_Path kan gemanipuleerd worden door gebruik te maken van prepending
.
Men gaat m.a.w. ASNs toevoegen aan het AS_Path om zo te vermijden dat een bepaalde route gekozen wordt als best path.
De werkwijze is vrij eenvoudig via het commando set as-path prepend as-number in een route map.
In onderstaande figuur vind je de topologie die gebruikt zal worden.
In ons voorbeeld zal het netwerkverkeer naar de Loopback interfaces verlopen via router Oostende.
Hiervoor passen we de configuratie op router Gent aan.
ip access-list standard LOOPBACK
10 permit 192.168.200.0 0.0.0.255
20 permit 192.168.100.0 0.0.0.255
!
route-map BRUGGE permit 10
match ip address LOOPBACK
set as-path prepend 100 150 200
route-map BRUGGE permit 20
!
router bgp 65150
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.10.2 remote-as 65100
neighbor 192.168.20.2 remote-as 65100
!
address-family ipv4
neighbor 192.168.10.2 activate
neighbor 192.168.10.2 route-map BRUGGE in
neighbor 192.168.20.2 activate
exit-address-family
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
Origin code
Standaard worden netwerken op Cisco routers geadverteerd met een i
(IGP origin), een e
(EGP origin) of een ?
(Incomplete origin) attribuut.
De voorkeur verloopt in onderstaande volgorde:
- IGP origin
- EGP origin
- Incomplete origin (Redistributed networks)
Het origin attribuut kan gewijzigd worden via het commando set origin {igp|egp|incomplete} in een route map.
In onderstaande figuur vind je de topologie die gebruikt zal worden.
In ons voorbeeld zal het netwerkverkeer naar de Loopback interfaces verlopen via router Oostende.
Hiervoor passen we de configuratie op router Gent aan.
ip access-list standard LOOPBACK
10 permit 192.168.200.0 0.0.0.255
20 permit 192.168.100.0 0.0.0.255
!
route-map BRUGGE permit 10
match ip address LOOPBACK
set origin incomplete
route-map BRUGGE permit 20
!
router bgp 65150
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.10.2 remote-as 65100
neighbor 192.168.20.2 remote-as 65100
!
address-family ipv4
neighbor 192.168.10.2 activate
neighbor 192.168.10.2 route-map BRUGGE in
neighbor 192.168.20.2 activate
exit-address-family
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
MED
Multi-Exit discriminator (MED) heeft een waarde tussen 0 en 232-1.
Het idee achter MED is inkomend netwerkverkeer van een ander AS te beïnvloeden.
Een lagere MED wint van een hogere MED.
Het MED attribuut kan gewijzigd worden via het commando set metric metric in een route map.
In onderstaande figuur vind je de topologie die gebruikt zal worden.
In ons voorbeeld zal het netwerkverkeer naar de Loopback interfaces verlopen via router Oostende. Hiervoor passen we de configuratie op router Gent.
ip access-list standard LOOPBACK
10 permit 192.168.200.0 0.0.0.255
20 permit 192.168.100.0 0.0.0.255
!
route-map BRUGGE permit 10
match ip address LOOPBACK
set metric 100
route-map BRUGGE permit 20
!
router bgp 65150
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.10.2 remote-as 65100
neighbor 192.168.20.2 remote-as 65100
!
address-family ipv4
neighbor 192.168.10.2 activate
neighbor 192.168.10.2 route-map BRUGGE in
neighbor 192.168.20.2 activate
exit-address-family
In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.
eBGP over iBGP
De voorkeur verloopt in onderstaande volgorde:
- eBGP peers
- Confederation members (buiten de scope van deze cursus)
- iBGP peers
IGP metric
De voorkeur gaat uit naar de laagste IGP cost voor een BGP next-hop address.
Oldest path
BGP bewaart stabiliteit in een netwerk door de voorkeur te geven aan een path die aangeleverd werd door de oudste BGP-sessie.
Neighbor Router ID
De voorkeur gaat uit naar het path afkomstig van een eBGP peer met het laagste Router-ID.
Neighbor IP Address
De voorkeur gaat uit naar het path afkomstig van een iBGP peer met het laagste IP-adres.
BGP equal-cost multipath
Net zoals alle IGP (OSPF, EIGRP, ...) routing protocollen ondersteunt BGP ook equal-cost multipath (ECMP).
Via het commando maximum-paths number-paths kan ECMP geactiveerd worden. Dit kan zowel voor iBGP als voor eBGP.
Hieronder vind je een voorbeeldconfiguratie.
router bgp 65150
bgp router-id 1.1.1.1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 192.168.10.2 remote-as 65100
neighbor 192.168.20.2 remote-as 65100
!
address-family ipv4
neighbor 192.168.10.2 activate
neighbor 192.168.10.2 route-map BRUGGE in
neighbor 192.168.20.2 activate
maximum-paths 4
exit-address-family