Skip to main content

Theorie

We starten met een korte herhaling van de leerstof die aangehaald werd in Network Infrastructure 2.

Opgelet

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.

  1. Internal BGP (iBGP): Een sessie tussen twee routers binnen eenzelfde AS.
  2. 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:

  1. Well-known mandatory
  2. Well-known discretionary
  3. Optional transitive
  4. Optional non-transitive

Een korte samenvatting van de classificatie vind je onderstaande tabel.

NaamOndersteund door alle BGP implementatiesGeadverteerd tussen ASes
Well-known mandatoryJAJA
Well-known discretionaryJANEEN
Optional transitiveNEENJA
Optional non-transitiveNEENNEEN

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:

  1. BGP single-hop sessie (Gebruik van de ARP table is noodzakelijk om BGP peer te contacteren)
  2. 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 sessies

BGP communiceert aan de hand van vier verschillende types van boodschappen.
Omschrijf de verschillende types!

TypeNaamFunctieomschrijving
1OPEN
2UPDATE
3NOTIFICATION
4KEEPALIVE

In onderstaande figuur vind je een schermafbeelding uit Wireshark terug van een BGP OPEN type boodschap.

OPEN type

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!

NaamFunctieomschrijving
Idle
Connect
Active
OpenSent
OpenConfirm
Established

Eenvoudige BGP configuratie

Het configuratieproces kan opgesplitst worden in drie algemene delen.

  1. BGP sessie parameters
  2. Address Family initialisatie
  3. Address Family activatie

Aan de hand van een eenvoudig voorbeeld doorlopen we een volledige configuratie.
In onderstaande figuur vind je de gebruikte topologie.

BGP topologie

Stap 1: Initialiseer het BGP proces via het commando router bgp as-number.

BGP Stap 1

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.

BGP Stap 2

Stap 3: Identificeer de BGP neighbor via commando neighbor ip-address remote-as as-number.

BGP Stap 3

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.

BGP Stap 5

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.

BGP Stap 6

Stap 7: Initialiseer de adresfamilie via het commando address-family.
Standaard is enkel de IPv4 adresfamilie geïnitialiseerd.

BGP Stap 7

Stap 8: Activeer de adresfamilie voor de BGP neighbor via het commando neighbor ip-address activate.

BGP Stap 8

Verificatie van een BP sessie

Een BGP sessie controleren kan via verschillende commando's.

  1. show bgp (meerdere opties mogelijk)
  2. show ip bgp (meerdere opties mogelijk)

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast summary.

BGP controle

Achterhaal uit bovenstaande figuur alle informatie!

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

  1. Adj-RIB-in bevat de Network Layer Reachability Information (NLRI) routes vooraleer de inbound route policies worden toegepast.
  2. 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.
  3. Adj-RIB-out bevat de NLRI routes na het toepassen van de outbound 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.

BGP Prefix

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.

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

  2. Bij een statische of dynamiche route
    Het next-hop BGP attribuut wordt het next-hop IP address
    Het BGP origin attribuut wordt i (IGP)
    Het BGP weight attribuut wordt 32768
    Het Multi-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.

show ip route

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast.

show ip bgp

Achterhaal uit bovenstaande figuur alle informatie!

VeldOmschrijving
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:

  1. Internal BGP (iBGP)
  2. 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.

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.

  1. Redistributie van BGP routes in OSPF. (Dit is geen geschikte optie. Waarom?)
  2. 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.

Zonder Full Mesh

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.

Met Full Mesh

Peering via loopback interfaces

In onderstaande figuur vind je een ander voorbeeld van Full Mesh iBGP topologie.

Full Mesh 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.

  1. We voorzien een tweede verbinding tussen de routers en maken zo extra BGP sessies aan tussen de de routers.
  2. 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.

Full Mesh 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:

  1. Geen herberekening door het BGP best path algorithm bij een onderbreking van een verbinding.
  2. 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.

show ip route

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op R3

show bgp ipv4 unicast

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.

eBGP en iBGP

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.

Topologie Next-Hop

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.

Router Oostende zonder Next-Hop-Self

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.

Router Oostende met Next-Hop-Self

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.

Topologie MP-BGP

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:

  1. 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.
  2. 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.

show bgp ipv6 unicast neighbors

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.

show bgp ipv6 unicast summary

In onderstaande figuur vind je het resultaat van het commando show bgp ipv6 unicast op router Gent.

show bgp ipv6 unicast

In onderstaande figuur vind je het resultaat van het commando show ipv6 route op router Gent.

show ipv6 route

BGP (Advanced)

Route Summarization

Er zijn meerdere voordelen bij Route summarization:

  1. De routers worden minder belast.
  2. De berekening van het best-path wordt versneld.
  3. 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.

Topologie BGP route summarization

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.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.

show bgp ipv4 unicast

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.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.

show bgp ipv4 unicast

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.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.

show bgp ipv4 unicast

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.

show ip route

In onderstaande figuur vind je het resultaat van het commando show ip route op router Gent.

show ip route

In onderstaande figuur vind je het resultaat van het commando show ip route op router Brussel.

show ip route

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

  1. Distribution list
  2. Prefix list
  3. AS_Path ACL/filtering
  4. 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.

Topologie BGP distribution list

We maken geen gebruik van route summarization! In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.

show bgp ipv4 unicast

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.

show bgp ipv4 unicast

Prefix list filtering

In onderstaande figuur vind je de topologie die gebruikt zal worden bij de prefix list filtering configuratie.

Topologie BGP distribution list

We maken geen gebruik van route summarization! In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Gent.

show bgp ipv4 unicast

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.

show bgp ipv4 unicast

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.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast regex 150.

show bgp ipv4 unicast regexp 150

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast regex 150$.

show bgp ipv4 unicast regexp 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.

Topologie BGP distribution list

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.

show bgp ipv4 unicast neighbors 10.0.2.2 advertised-routes

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.

show bgp ipv4 unicast

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.

show bgp ipv4 unicast

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.

Topologie BGP distribution list

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.

show bgp ipv4 unicast neighbors 10.0.2.2 advertised-routes

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brussel.

show bgp ipv4 unicast

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.

show bgp ipv4 unicast

Clearing BGP connections

Soms moet men een BGP-sessie hernieuwen vooraleer een wijziging actief wordt. Dan kan op 2 manieren gebeuren:

  1. Via een hard reset
  2. 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.

clear ip bgp *

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:

  1. Een wijziging van de BGP next-hop reachability
  2. Een falende interface die verbonden is met een eBGP peer
  3. Een wijziging in de redistributie
  4. 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.

PrioriteitAttribuut
1Weight (highest)
2Local preference (highest)
3Originate
4AIGP metric (shortest)
5AS_Path (shortest)
6Origin code
7MED (lowest)
8eBGP over iBGP
9IGP metric (lowest)
10Oldest path
11Neighbor Router ID (lowest)
12Neighbor 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.

Topologie BGP attribuut

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.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Brugge.

show bgp ipv4 unicast

In onderstaande figuur vind je het resultaat van het commando show bgp ipv4 unicast op router Oostende.

show bgp ipv4 unicast

Er bestaan 2 manieren om weight aan te passen:

  1. Via het commando set weight weight in een route map
  2. 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.

show bgp ipv4 unicast

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:

  1. Via het commando set local-preference preference in een route map
  2. 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.

Topologie BGP attribuut

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.

show bgp ipv4 unicast

Originate

De voorkeur verloopt in onderstaande volgorde:

  1. Lokaal geadverteerde routes
  2. Netwerken die lokaal werden samengevoegd. (Route Summarization)
  3. 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.

Topologie BGP attribuut

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.

show bgp ipv4 unicast

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:

  1. IGP origin
  2. EGP origin
  3. 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.

Topologie BGP attribuut

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.

show bgp ipv4 unicast

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.

Topologie BGP attribuut

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.

show bgp ipv4 unicast

eBGP over iBGP

De voorkeur verloopt in onderstaande volgorde:

  1. eBGP peers
  2. Confederation members (buiten de scope van deze cursus)
  3. 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