Introduction :

BGP (Border Gateway Protocol), différents cas d'utilisation :

  • Le client annonce ses réseaux publiques au(x) ISPs
  • L'ISP annonce à son client une route par défaut, tous les réseaux d'Internet ou une partie
  • Echange de routes entre deux AS

Quatre type d'utilisations :

  • Single homed

    • 1 ISP
    • 1 connection à l'ISP
  • Dual-homed

    • 1 ISP
    • 2 connctions à l'ISP
  • Multi-homed

    • plusieurs ISPs
    • 1 connection par ISP
  • Dual-multi-homed

    • plusieurs ISPs
    • 2 connections par ISP

Informations/Fiche sur BGP :

  • Protocol standard
  • C'est un EGP
  • Protocol Distance Vector (Path cector)
  • Administrative Distance : 20 pour eBGP et 200 pour iBGP
  • Métrique riche
  • Lettre qui identifie BGP dans la table de routage : B
  • AS : de 1 à 65535

EGP :

Relations iBGP/eBGP

iBGP : relation BGP entre 2 routeurs de la même AS.
eBGP : relation BGP entre 2 routeurs d'AS différentes.

Path Vector :

Path Vector

Mécanisme de prévention de boucle

  • BGP ignore les annonces contenant son AS dans l'AS PATH
  • en iBGP, il y a un split-horizon ibgp

exemple pour l'AS PATH :

Loop Prevention pour l'AS PATH

La relation de voisinage :

Comme nous l'avons vu plus haut, il y a 2 types de relations BGP :

  • eBGP
  • iBGP

Pour différencier une relation eBGP/iBGP dans la configuration il faut regarder l'AS du routeur (router bgp XXX) et le comparé au remote-as des neighbor.
Lorsque les 2 sont identiques c'est qu'il y a une relation iBGP dans le cas contraire c'est eBGP.

Configuration :

eBGP

Relations iBGP/eBGP

Configuration R1

1 R1#conf t
2 Enter configuration commands, one per line.  End with CNTL/Z.
3 R1(config)#router bgp 1000
4 R1(config-router)#neighbor 10.1.2.2 remote-as 2000

Configuration R22

1 R2#conf t
2 Enter configuration commands, one per line.  End with CNTL/Z.
3 R2(config)#router bgp 2000
4 R2(config-router)#neighbor 10.1.2.1 remote-as 1000

Vérification

  • Début des échanges

 1 R1#sh ip bgp summ
 2 BGP router identifier 11.1.1.1, local AS number 1000
 3 BGP table version is 100, main routing table version 100
 4 7 network entries using 819 bytes of memory
 5 7 path entries using 364 bytes of memory
 6 7/5 BGP path/bestpath attribute entries using 868 bytes of memory
 7 1 BGP AS-PATH entries using 24 bytes of memory
 8 0 BGP route-map cache entries using 0 bytes of memory
 9 0 BGP filter-list cache entries using 0 bytes of memory
10 BGP using 2075 total bytes of memory
11 BGP activity 17/7 prefixes, 53/46 paths, scan interval 60 secs
12 
13 Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
14 10.1.2.2        4  2000     121     157        0    0    0 00:00:01 Active
15 R1#

=> State/PfxRcd : Active

  • Relation de voisinage montée

 1 R1#sh ip bgp summ
 2 BGP router identifier 11.1.1.1, local AS number 1000
 3 BGP table version is 112, main routing table version 112
 4 7 network entries using 819 bytes of memory
 5 7 path entries using 364 bytes of memory
 6 7/5 BGP path/bestpath attribute entries using 868 bytes of memory
 7 1 BGP AS-PATH entries using 24 bytes of memory
 8 0 BGP route-map cache entries using 0 bytes of memory
 9 0 BGP filter-list cache entries using 0 bytes of memory
10 BGP using 2075 total bytes of memory
11 BGP activity 17/7 prefixes, 59/52 paths, scan interval 60 secs
12 
13 Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
14 10.1.2.2        4  2000     137     177        0    0    0 00:00:03        0

Relation de voisinage montée mais l'apprentissage des routes n'est pas fait.
=> State/PfxRcd : 0

  • Apprentissage des routes fait :

 1 R1#sh ip bgp summ
 2 BGP router identifier 11.1.1.1, local AS number 1000
 3 BGP table version is 115, main routing table version 115
 4 10 network entries using 1170 bytes of memory
 5 10 path entries using 520 bytes of memory
 6 7/6 BGP path/bestpath attribute entries using 868 bytes of memory
 7 1 BGP AS-PATH entries using 24 bytes of memory
 8 0 BGP route-map cache entries using 0 bytes of memory
 9 0 BGP filter-list cache entries using 0 bytes of memory
10 BGP using 2582 total bytes of memory
11 BGP activity 17/7 prefixes, 62/52 paths, scan interval 60 secs
12 
13 Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
14 10.1.2.2        4  2000     144     186      115    0    0 00:03:06        3

=> State/PfxRcd : 3

Autre

Par défaut, BGP considère que son voisin eBGP est directement connecté (connection avec IP d'interconnexion).
Si ce n'est pas le cas il faut déclaré le neighbor en ebgp-multihop (cas de relation via la loopback).

eBGP direct/multihop

1 router bgp 1000
2   neighbor 10.1.2.2 remote-as 2000
3   neighbor 10.1.2.2 ebgp-multihop

iBGP

Relations iBGP/eBGP

Configration R1

1 R1#conf t
2 Enter configuration commands, one per line.  End with CNTL/Z.
3 R1(config)#router bgp 1000
4 R1(config-router)#neighbor 11.3.3.3 remote-as 1000
5 R1(config-router)#neighbor 11.3.3.3 update-source Loopback0

Il faut faire le pendant dans la configuration du voisin iBGP.
La commande neighbor A.B.C.D update-source Loopback0, permet de monter le voisinage BGP via la loopback0, l'avantage c'est que dans un réseau maillé si le lien directe tombe, on peut toujours passé par un autre chemin via le routage.

Vérification

 1 R1#sh ip bgp summ          
 2 BGP router identifier 11.1.1.1, local AS number 1000
 3 BGP table version is 12, main routing table version 12
 4 11 network entries using 1287 bytes of memory
 5 11 path entries using 572 bytes of memory
 6 8/7 BGP path/bestpath attribute entries using 992 bytes of memory
 7 1 BGP AS-PATH entries using 24 bytes of memory
 8 0 BGP route-map cache entries using 0 bytes of memory
 9 0 BGP filter-list cache entries using 0 bytes of memory
10 BGP using 2875 total bytes of memory
11 BGP activity 11/0 prefixes, 11/0 paths, scan interval 60 secs
12 
13 Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
14 10.1.2.2        4  2000      17      20       12    0    0 00:11:23        3
15 11.3.3.3        4  1000      16      21       12    0    0 00:11:47        1

Les échanges BGP :

  • Port TCP 179
  • BGP version 4
  • Hello, par défaut tous les 60 secondes
  • Holdtime, par défaut tous les 180 secondes
    • configurable avec un min à 0 sec et un max à 65535

1 router bgp 1000
2   timers bgp <hello> <holdtime>

  • BGP identifier
    • router-ID : qui est égal à l'adresse IP la plus grande des interfaces de loopback, s'il n'y a pas de loopback, c'est la plus grande IP des interfaces UP (au moment ou l'on passe la commande router BGP XX).

Etat de la relation de voisinage :

  • Idle : je ne sais pas joindre mon voisin
  • Active : je connais un chemin pour joindre mon voisin
  • Connect : la session TCP est établie (3-way handshake)
  • OpenSent : j'ai envoiyé un message OPEN (version BGP, mon AS, mon Holdtime, mon router-ID) et j'attends la réponse
  • OpenConfirm : j'ai reçu un message OPEN, je commence à scanner ma table pour décider des annonces à envoyer à mon voisin
  • Established : le scan est terminé, je commence à envoyer mes annonces au voisin

Injection de routes dans la table BGP locale :

2 méthodes :

Injection de route

1 router bgp 1000
2   network 172.16.21.0 [mask 255.255.255.0]

Identifié par un i dans le champs "origin-code" de la table BGP (visible à côté du PATH dans le show ip bgp).

Redistribution de route

1 router bgp 1000
2   redistribute <IGP>
3   redistribute static
4   redistribute connected

Identifié par un ? dans le champs "origin-code" de la table BGP.

Spécificité de la commande network

  • Dans un IGP (OSPF/EIGRP/RIP)

    • Indique les interfaces sur lequel activer l'IGP.
  • Dans l'EGP (BGP)

    • Indique le réseau à annoncer.
  • Sans masque

    • BGP annonce le chemin vers le réseau majeur
      • en mode auto-summary : si un sous-réseau du réseau majeur est présent dans la table de routage.
      • en mode no auto-summary : si le réseau majeur est présent dans la table de routage (mode par défaut).

- Avec masque (exact match) - BGP annonce le chemin vers le réseau spécifique
- si ce réseau est présent dans la table de routage avec exactement le même masque.

La métrique

C'est une métrique riche, mais seulement 3 attributs sont obligatoires sur chaque annonce :

  • as-path

    • liste des AS à traverser pour joindre le réseau.
    • attribut vide tant que l'annonce n'est pas sortie de l'AS.
    • permet d'éviter les boucles.
  • next-hop

    • prochain saut
  • orign-code

    • i : réseau injecté via la commande network
    • e : non utilisé
    • ? : réseau injecté par la commande redistribute

Note : une fois affectée, l'origin-code ne changera plus.

Modification de la métrique

  • Si l'annonce est envoyée à un voisin eBGP

    • as-path : rajout de l'AS local au début de la liste
    • next-hop : @IP source de la relation de voisinage
    • origin-code : pas de modification
  • Si l'annonce est envoyée à un voisin iBGP

    • Aucune modification des attributs
      • sauf si la route avait été injectée localement
        • next-hop : @IP de la source de la relation de voisinage

Quelles routes sont annoncées

  • Toutes les routes ne sont pas annoncées aux voisins.
  • Seule la meilleur route de chaque destination est annoncée :
    • identifiée par best
    • code : >
  • Pas de partage de charge possible

Critères de sélection de la 'best'

  1. next-hop : doit être accessible
  2. weight : le plus grand
  3. local preference : la plus grande
  4. injectée localement
  5. as-path : le plus petit
  6. origin-code : préférence du i au ?
  7. MED : la plus petite
  8. eBGP préféré à iBGP
  9. iBGP : voisin IGP le plus proche
  10. eBGP : chemin le plus ancien
  11. router-ID : le plus petit

La fréquence des annonces

  • Les annonces sont regroupées et envoyées en batch :
    • iBGP : toutes les 5 secondes
    • eBGP : toutes les 30 secondes

Configuration :

1 router bgp 1000
2   neighbor A.B.C.D advertisement-interval 10

  • min : 0 sec
  • max : 60 sec

A qui est annoncé la best

  • Si la best a été injectée localement : elle est annoncée à tous les voisins.
  • Si la best a été apprise grâce à un voisin eBGP : elle est annoncée à tous les voisins.
  • Si la best a été apprise grâce à un voisin iBGP : elle n'est annoncée qu'aux voisins eBGP.
  • Dans tous les cas : une annonce n'est pas envoyée à un voisin si ce voisin est mon next-hopi (split-horizon BGP).

Les annonces reçues par un voisin iBGP ne sont pas envoyées aux autres voisins iBGP car il n'existe pas de mécanisme de prévention de boucle.
En eBGP, la prévention de boucle se fait sur l'AS-PATH, suppression d'une annonce contenant mon propre AS.

full mesh iBGP

iBGP split horizon

Définition

Interdiction d'envoyer une annonce reçue d'un voisin iBGP à un autre voisin iBGP.

Conséquence

Tous les routeurs d'un AS doivent avoir une connexion iBGP entre eux (ne veut pas dire connection physique, il utilise l'IGP) => full mesh iBGP.

L'injection des routes BGP dans la table de routage

BGP scan la table BGP :

-Toutes les 60 secondes par défaut.

Modifiable :

1 router bgp 1000
2   bgp scan-time 5

  • min : 5 sec
  • max : 60 sec

-Si la route BGP best n'existe pas dans la table de routage, elle y est injectée :

eBGP : AD = 20
iBGP : AD = 200

Note : on préfére toujours une route eBGP, car le but du BGP est de router vers Internet, on va préférer faire router les routeurs d'un autre AS.

-Si la route existe déjà, elle est injectée si l'AD indiquée dans la table de routage est moins bonne que celle de BGP.

Critères de sélection de la 'best'

  1. next-hop : doit être accessible
  2. weight : le plus grand
  3. local preference : la plus grande
  4. injectée localement
  5. as-path : le plus petit
  6. origin-code : préférence du i au ?
  7. MED : la plus petite
  8. eBGP préféré à IGP
  9. iBGP : voisin IGP le plus proche
  10. eBGP : chemin le plus ancien
  11. router-ID : le plus petit

Next-hop

Il doit être joignable (le connaître dans la table de routage locale).

Weight

On s'en sert pour influencer le taffic sortant du routeur.
Attribut propriétaire Cisco, sa portée est strirctement local au routeur (jamais envoyé au voisin).
Préférence pour la route ayant le weight la plus grande.

  • min : 0
  • max : 65535

Valeur par défaut :

  • 32768 si la route est injectée localement
  • 0 sinon

SCHEMA QUI SERA VALABLE POUR WEIGHT ET LOCAL PREF

Configuration

1 router bgp 2000
2   neighbor <IP_du_voisin> weight <Valeur>

ou

1 route-map W1
2   set weight 100
3 
4 route-map W2
5   set weight 200
6 
7 router bgp 2000
8   neighbor <IP_du_voisin_1> route-map W1
9   neighbor <IP_du_voisin_2> route-map W2

Local préférence

C'est un attribut standard mais pas obligatoire.
On s'en sert pour influencer le taffic sortant de l'AS. C'est uniquement envoyé aux voisins iBGP :

  • l'attribut est supprimé des annonces eBGP
  • l'attribut ne sort donc pas de l'AS
  • l'attribut influence l'ensemble des routeurs de l'AS

Préférence pour la route ayant le local preference la plus grande.

  • par défaut 100
  • min : 0
  • max : 4294967295
  • Sera appliqué à tous les forward d'annonces reçue de tout voisin eBGP.
  • Appliquée aux annonces générées localement (via network ou redistribute)
  • Sera vide en local pour tous les réseaux gérés localement (via network ou redistribute)

Configuration

1 router bgp 2000
2   neighbor <IP_du_voisin> remote-as 1000
3   bgp default local-preference 200

Soit on augmente la local preference sur le lien qu'on privilégie ou on diminue sur un lien de backup/déprécié.

ou

1 route-map LC200
2   set local-preference 200
3 
4 router bgp 2000
5   neighbor <IP_du_voisin> remote-as 1000
6   neighbor <IP_du_voisin> route-map LC200 in

Spécifique à un voisin.

Exemple pour filtrer un réseau spécifique d'un voisin

 1 access-list 1 permit 9.9.9.9
 2 
 3 route-map LC200-9.9.9.9 permit 10
 4  match ip address 1
 5  set local-preference 200
 6 
 7 route-map LC200-9.9.9.9 permit 20
 8 router bgp 1000
 9  neighbor <IP_du_voisin> remote-as 2000
10  neighbor <IP_du_voisin> route-map LC200-9.9.9.9 in

AS-Path

On s'en sert pour influencer le taffic entrant dans l'AS (influence le routeur distant).
Attribut standard et obligatoire.
Préférence pour la route ayant l'AS Path le plus petit.
Pas de règle précise pour calculer le nombre d'itérations nécessaires, il faut procéder par essais successifs.
Utiliser uniquement son AS, sinon le système de prévention de boucle BGP empêchera les routeurs d'un autre AS de tenir compte de vos annonces.
Permet d'influencer tous les AS.

Configuration par l'exemple :

On souhaite privilégier que les routeurs distant passent par R4-1 :

1 route-map ASPP
2   set as-path prepend 4000 4000 4000
3 
4 router bgp 4000
5   neighbor <IP_R1> remote-as 1000
6   neighbor <IP_R1> route-map ASPP out
7   neighbor <IP_R3> remote-as 3000

AS-Path prepend

Il faut au besoin ajouter autant de fois l'AS local que d'AS traversées !

On peux aussi plomber une route pour sortir (dans un cas Multi-homed par exemple) :

1 route-map ASPP
2  set as-path prepend last-as 3
3 
4 router bgp 1000
5  neighbor <IP_voisin_a_plomber> remote-as 2000
6  neighbor <IP_voisin_a_plomber>  route-map ASPP in

Ajoute 3 fois le dernier AS (donc 4 fois en tout) dans l'AS-Path pour le voisin eBGP indiqué.

MED : Multi-Exit Discriminator

C'est la commande metric dans la configuration.
On s'en sert pour influencer le traffic entrant dans l'AS. Attribut non standard, et non transmissible.
Si le voisin ne connait pas cet attribut, il n'est pas annoncé aux voisin iBGP, il ne sort pas de l'AS voisine.
Valeur par défaut :

  • routes redistribués depuis IGP :
  • configurable via default-metric (fonctionne pour toutes les routes sauf static et connected)
  • sinon c'est la metric de l'IGP
  • routes redistribuées static ou connected : 0
  • sinon 0

La MED reçu d'un AS n'est pas annoncée à un autre AS (remis à 0).
- permet d'influencer uniquement les AS voisins.

Configuration

Nous allons voir comment forcer le chemin par R4-1 :

 1 ! Sur R4-1
 2 route-map M41
 3   set metric 41
 4 
 5 router bgp 1000
 6   neighbor <IP_R3> remote-as 3000
 7   neighbor <IP_R3> route-map M41 out
 8 
 9 ! Sur R4-3
10 route-map M43
11   set metric 43
12 
13 router bgp 1000
14   neighbor <IP_R3> remote-as 3000
15   neighbor <IP_R3> route-map M43 out
16 
17 ! ou en global pour toutes les annonces :
18 router bgp 1000
19   default-metric 41

BGP MED

Soft-reconfiguration

Le soft-reconfiguration permet d'avoir une copie en RAM des annonces d'un voisin sans filtre. En cas de modification/ajout/suppression de filtres, on peut récupérer les routes du voisin sans lui demander.
La contre partie, c'est la consommation mémoire.
Route-map avance

Configuration

1 router bgp 1000
2   neighbor <IP_du_voisin> remote-as 2000
3   neighbor <IP_du_voisin> soft-reconfiguration inbound

route-map avancées

Etude de cas :

On veut que le réseau 10.0.0.0/24 et 10.0.1.0/24 rentre par R1-1 et 10.0.2.0/24 et 10.0.3.0/24 par R1-2.
Route-map avance

Configuration :

 1 ! sur R1-1
 2 ip access-list standard net01
 3   permit 10.0.0.0 0.0.0.255
 4   permit 10.0.1.0 0.0.0.255
 5 ou
 6   permit 10.0.0.0 0.0.1.255
 7 
 8 route-map med-r1-1
 9   match ip address net01
10   set metric 50
11 route-map med-r1-1 permit 20
12   set metric 200
13 
14 router bgp 1000
15   neighbor 2.1.2.1 remote-as 2000
16   neighbor 2.1.2.1 route-map med-r1-1 out
17 
18 
19 ! sur R1-2
20 ip access-list standard net23
21   permit 10.0.2.0 0.0.0.255
22   permit 10.0.3.0 0.0.0.255
23 ou
24   permit 10.0.2.0 0.0.1.255
25 
26 route-map med-r1-2
27   match ip address net23
28   set metric 50
29 route-map med-r1-2 permit 20
30   set metric 200
31 
32 router bgp 1000
33   neighbor 2.2.2.2 remote-as 2000
34   neighbor 2.2.2.2 route-map med-r1-2 out

Les expressions régulières


AS Path Regex Nb Match
65001 3331 2233 11333221
65001 3331 2233 1133322|334
65001 3331 2233 11333[1235]15
65001 3331 2233 11333[1-4]14
65001 3331 2233 11333[1-3].33
65001 3331 2233 11333^651
65001 3331 2233 11333^330
65001 3331 2233 1133333$1
65001 3331 2233 11333330
65001 3331 2233 11333_331
65001 3331 2233 113333+3

Définitions

.tout caractères
*0 ou plusieurs fois
+1 ou plusieurs fois
?0 ou 1 fois
^début de chaîne
$fin de chaîne
_tout délimiteur (virgule, espace, tabulation, début, fin)
\protection du caractère suivant
[ ]1 des caractères
|fonction OU
( )un groupe
{3}quantifié 3 fois
{1,3}quantifié de 1 à 3 fois

Exemple de cas

100Prefix qui traverse l'AS 100
^100$Prefix généré par l'AS 100 et qui est directement connectée à mon AS
^100Prefix annoncé par mon voisin AS 100
100$Prefix qui a été généré par l'AS 100
^[0-9]+$Tout prefix ne contenant qu'un AS
^$Prefix généré par mon AS
.*Tout prfix
^([0-9]+)(_\1)*$Tout prefix répété X ou X X ou X X X ...

On peut tester/utiliser une regex BGP avec la commande suivante :

1 Router#show ip bgp regex ^([0-9]+)(_\1)$| b Net
2 BGP table version is 87, local router ID is 172.217.43.6
3 
4 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
5               r RIB-failure, S Stale
6 Origin codes: i - IGP, e - EGP, ? - incomplete
7 
8    Network          Next Hop            Metric LocPrf Weight Path
9 *> 1.1.1.1/32       172.22.83.1                            0 4321 4321 4321 ?

AS-Path access-list

Cela va permettre de filtrer les annonces sur l'AS.
Access-list identifiée par un numéro de 1 à 500.

! Accepter tout ce qui se termine par l'AS 100 (réseau de l'AS 100)
ip as-path access-list 1 permit _100$

! Accepter tout ce qui vient de l'AS 200
ip as-path access-list 1 permit _200$

route-map ASFilter
  match as-path 1

Etude de cas

Nous alons réutiliser le schéma précédent :
Route-map avance
On veut privilégier R1-1 pour le traffic à destination de l'AS 3000 et 4000.
On veut privilégier R1-2 pour le traffic à destination de l'AS 5000 et 6000.

Configuration

! sur R1-1
ip as-path access-list 34 permit _3000$
ip as-path access-list 34 permit _4000$

route-map ASFilter34
  match as-path 34
  set local-preference 200
route-map ASFilter34 permit 20
  set local-preference 50

route bgp 1000
  neighbor 2.1.2.1 remote-as 2000
  neighbor 2.1.2.1 route-map ASFilter34 in

! sur R1-2
ip as-path access-list 56 permit __5000$
ip as-path access-list 56 permit __6000$

route-map ASFilter56
  match as-path 56
  set local-preference 200
route-map ASFilter56 permit 20
  set local-preference 50

route bgp 1000
  neighbor 2.2.2.2 remote-as 2000
  neighbor 2.2.2.2 route-map ASFilter56 in

Filtrage des annonces

Filtrer selon les numéros d'AS

ip as-path access-list 1 permit _REGEX_
ip as-path access-list 1 deny ...

router bgp 1000
  ! Filtrage des annonces reçues du voisin
  neighbor <IP_du_voisin> filter-list 1 in

    ! Filtrage des annonces envoyées au voisin
  neighbor <IP_du_voisin> filter-list 1 out 

Filtrer en fonction des réseaux

ip prefix-list _NAME_ permit <network>/<length> [<ge|le> Minimum_prefix_length_1-32]
ip prefix-list _NAME_ deny ...

router bgp 1000
  ! Filtre les annonces reçues du voisin
  neighbor <IP_du_voisin> prefix-list _NAME_ in

  ! Filtre les annonces envoyées au voisin
  neighbor <IP_du_voisin> prefix-list _NAME_ out

Filtrer selon divers paramètres

route-map DIVERS permit 10
  match ip-adress ...
route-map DIVERS deny 20
  match ip address prefix-list ...
  ! Attention dans la prefix-list on a deny et un deny de la route-map, on ignore cette règle de route-map.
route-map DIVERS permit 30
  match as-path ...

! il y a un implicit deny any

router bgp 1000
  ! Filtre les annonces reçues du voisin
  neighbor <IP_du_voisin> route-map DIVERS in

    ! Filtre les annonces envoyées au voisin
  neighbor <IP_du_voisin> route-map DIVERS out

Aggrégation de route

Par défaut, il y a no auto-summary de positionné.

Commande

1 router bgp 1000
2   ! Annonces l'aggrégat de route si un des réseaux est présent dans la table de routage
3   aggregate-address 10.0.0.0 255.0.0.0 summary-only
4   
5   ! La différence avec la précédente commande c'est qu'il annonce l'aggrégation et les réseaux.
6   aggregate-address 10.0.0.0 255.0.0.0

Résumé de commandes de configurations :

 1 router bgp <AS>
 2   ! si l'AS du voisin est égale à l'AS locale c'est une relation iBGP dans le cas contraire c'est de l'eBGP
 3   neighbor <IP_du_voisin> remote-as <AS_du_voisin>
 4   ! utiliser une interface particulère pour monter la relation (par défaut c'est l'ip de l'interface du voisin).
 5  neighbor <IP_du_voisin> update-source <Interface local>
 6   ! dans le cas ou l'IP du routeur n'est pas sur l'interface directement connecté au voisin
 7   neighbor <IP_du_voisin> ebgp-multihop 
 8 
 9   ! injection de routes dans la table BGP
10   network <sous-réseau> [mask <masque_de_sous-réseau>]
11   ! redistribution de routes dans la table BGP
12   redistribute <Type_de_routes> [metric <metric> route-map <Nom_route-map>] 
13   
14   !!Optionnelle
15   ! Modification des timers
16   timers bgp <hello> <holdtime>
17     ! Modification de la fréquence des annonces
18   neighbor <IP_du_voisin> advertisement-interval <Interval_en_secondes>
19   ! Modification de l'interval de scan de la table BGP pour l'insertion dans la table de routage
20   bgp scan-time <Interval_en_secondes>
21   
22   ! Autoriser/forcer le set du next-hop dans les annonces iBGP avec un voisin iBGP.
23   neighbor <IP_du_voisin_iBGP> next-hop-self
24 
25   ! Modification du weight
26   neighbor <IP_du_voisin> weight <Valeur>
27     ! ou via route-map
28   neighbor <IP_du_voisin> route-map W1
29 
30   ! Modification de la local preference (global à toutes les reception d'annonces eBGP)
31   bgp default local-preference 200
32   ! ou via route-map
33   neighbor <IP_du_voisin> route-map LC200 in
34 
35  ! Modification de l'AS-Path via route map
36   ! route-map ASPP
37   !   set as-path prepend <AS_local> <AS_local> ...
38     neighbor <IP_du_voisin> route-map ASPP out
39 
40   ! Modification de la MED via route-map
41   ! route-map M60
42   !   set metric 60
43   neighbor <IP_du_voisin> route-map M60 out
44   ! ou en global
45   default-metric 60
46 
47   ! Modification de traffic avec l'AS-PATH
48   ! ip as-path access-list 1 permit 2000$
49   ! route-map ASFilter
50   !  match as-path 1
51   neighbor <IP_du_voisin> route-map ASFilter in
52 
53  ! Filtrage des annonces :
54   ! selon l'AS
55   ! ip as-path access-list 1 permit \REGEX\
56   ! ip as-path access-list 1 deny ...
57   ! Filtrage des annonces reçues du voisin
58   neighbor <IP_du_voisin> filter-list 1 in
59   ! Filtrage des annonces envoyées au voisin
60   neighbor <IP_du_voisin> filter-list 1 out
61 
62  ! selon des réseaux
63   ! ip prefix-list \NAME\ permit ...
64   ! ip prefix-list NAME deny ...
65   ! Filtre les annonces reçues du voisin
66   neighbor <IP_du_voisin> prefix-list NAME in
67   ! Filtre les annonces envoyées au voisin
68   neighbor <IP_du_voisin> prefix-list NAME_ out
69 
70  ! selon divers paramètres
71   ! route-map DIVERS permit 10
72   !   match ip-adress ...
73      ! route-map DIVERS deny 20
74   !   match ip address prefix-list ...
75      ! route-map DIVERS permit 30
76   !   match as-path ...
77   ! Filtre les annonces reçues du voisin
78   neighbor <IP_du_voisin> route-map DIVERS in
79   ! Filtre les annonces envoyées au voisin
80   neighbor <IP_du_voisin> route-map DIVERS out
81 
82  ! Aggrégation de routes
83   aggregate-address 10.0.0.0 255.0.0.0 summary-only
84 
85  ! Ajout de la soft-configuration
86  neighbor <IP_du_voisin> soft-reconfiguration inbound

Quelques commandes :

  • Affichage de la table BGP

 1 R1#sh ip bgp
 2 BGP table version is 16, local router ID is 11.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8 > 1.1.1.0/24       0.0.0.0                  0         32768 i
 9 > 4.4.4.4/32       10.1.2.2                 0             0 2000 i
10 >i5.5.5.5/32       11.3.3.3                 0    100      0 i
11 > 9.9.9.9/32       10.1.2.2                               0 2000 ?
12 > 10.0.0.0         0.0.0.0                            32768 i
13 s> 10.1.2.0/24      0.0.0.0                  0         32768 ?
14 s> 10.1.3.0/24      0.0.0.0                  0         32768 ?
15 s> 10.3.4.0/24      10.1.3.3                 1         32768 ?
16 > 11.1.1.1/32      0.0.0.0                  0         32768 ?
17 > 11.3.3.3/32      10.1.3.3                 1         32768 ?
18 > 11.4.4.4/32      10.1.3.3                 2         32768 ?
19 > 25.2.5.0/24      10.1.2.2                               0 2000 ?

  • Affichage d'informations BGP

 1 R1#sh ip bgp summary 
 2 BGP router identifier 11.1.1.1, local AS number 1000
 3 BGP table version is 16, main routing table version 16
 4 12 network entries using 1404 bytes of memory
 5 12 path entries using 624 bytes of memory
 6 9/8 BGP path/bestpath attribute entries using 1116 bytes of memory
 7 1 BGP AS-PATH entries using 24 bytes of memory
 8 0 BGP route-map cache entries using 0 bytes of memory
 9 0 BGP filter-list cache entries using 0 bytes of memory
10 BGP using 3168 total bytes of memory
11 BGP activity 12/0 prefixes, 12/0 paths, scan interval 60 secs
12 
13 Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
14 10.1.2.2        4  2000      67      77       16    0    0 01:01:05        3
15 11.3.3.3        4  1000      65      72       16    0    0 01:01:07        1

Note :
V : version BGP
MsgRcvd : messages reçus
MsgSent : messages envoyés
TblVer : numéro de version de la table BGP local (permet de voir si les annonces ont étés faites au voisin)
InQ/OutQ : préfix en attente de traitement
Up/Down : temps de la relation de voisinage
State/PfxRcd : état de la relation de voisinage puis une fois montée le nombre de préfix

  • Informations des voisin

  1 R1#sh ip bgp neighbors [IP-voisin]
  2 BGP neighbor is 10.1.2.2,  remote AS 2000, external link
  3   BGP version 4, remote router ID 11.2.2.2
  4   BGP state = Established, up for 01:03:00
  5   Last read 00:00:00, last write 00:00:00, hold time is 180, keepalive interval is 60 seconds
  6   Neighbor capabilities:
  7     Route refresh: advertised and received(old & new)
  8     Address family IPv4 Unicast: advertised and received
  9   Message statistics:
 10     InQ depth is 0
 11     OutQ depth is 0
 12                          Sent       Rcvd
 13     Opens:                  1          1
 14     Notifications:          0          0
 15     Updates:               13          2
 16     Keepalives:            65         65
 17     Route Refresh:          0          1
 18     Total:                 79         69
 19   Default minimum time between advertisement runs is 30 seconds
 20 
 21  For address family: IPv4 Unicast
 22   BGP table version 16, neighbor version 16/0
 23  Output queue size : 0
 24   Index 2, Offset 0, Mask 0x4
 25   2 update-group member
 26                                  Sent       Rcvd
 27   Prefix activity:               ----       ----
 28     Prefixes Current:               6          3 (Consumes 156 bytes)
 29     Prefixes Total:                15          3
 30     Implicit Withdraw:              6          0
 31     Explicit Withdraw:              3          0
 32     Used as bestpath:             n/a          3
 33     Used as multipath:            n/a          0
 34 
 35                                    Outbound    Inbound
 36   Local Policy Denied Prefixes:    --------    -------
 37     Bestpath from this peer:              6        n/a
 38     Suppressed due to dampening:          6        n/a
 39     Total:                               12          0
 40   Number of NLRIs in the update sent: max 3, min 1
 41 
 42   Connections established 1; dropped 0
 43   Last reset never
 44 Connection state is ESTAB, I/O status: 1, unread input bytes: 0          
45 Connection is ECN Disabled, Mininum incoming TTL 0, Outgoing TTL 1 46 Local host: 10.1.2.1, Local port: 36269 47 Foreign host: 10.1.2.2, Foreign port: 179 48 49 Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes) 50 51 Event Timers (current time is 0x3A5538): 52 Timer Starts Wakeups Next 53 Retrans 71 0 0x0 54 TimeWait 0 0 0x0 55 AckHold 67 40 0x0 56 SendWnd 0 0 0x0 57 KeepAlive 0 0 0x0 58 GiveUp 0 0 0x0 59 PmtuAger 0 0 0x0 60 DeadWait 0 0 0x0 61 62 iss: 3709893137 snduna: 3709895103 sndnxt: 3709895103 sndwnd: 15985 63 irs: 3126996070 rcvnxt: 3126997477 rcvwnd: 14978 delrcvwnd: 1406 64 65 SRTT: 300 ms, RTTO: 303 ms, RTV: 3 ms, KRTT: 0 ms 66 minRTT: 8 ms, maxRTT: 300 ms, ACK hold: 200 ms 67 Flags: active open, nagle 68 IP Precedence value : 6 69 70 Datagrams (max data segment is 1460 bytes): 71 Rcvd: 114 (out of order: 0), with data: 68, total data bytes: 1406 72 Sent: 112 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 70, total data bytes: 1965 73
74 BGP neighbor is 11.3.3.3, remote AS 1000, internal link 75 BGP version 4, remote router ID 11.3.3.3 76 BGP state = Established, up for 01:03:13 77 Last read 00:00:13, last write 00:00:13, hold time is 180, keepalive interval is 60 seconds 78 Neighbor capabilities: 79 Route refresh: advertised and received(old & new) 80 Address family IPv4 Unicast: advertised and received 81 Message statistics: 82 InQ depth is 0 83 OutQ depth is 0 84 Sent Rcvd 85 Opens: 1 1 86 Notifications: 0 0 87 Updates: 8 1 88 Keepalives: 65 65 89 Route Refresh: 0 0 90 Total: 74 67 91 Default minimum time between advertisement runs is 0 seconds 92 93 For address family: IPv4 Unicast 94 BGP table version 16, neighbor version 16/0 95 Output queue size : 0 96 Index 1, Offset 0, Mask 0x2 97 1 update-group member 98 Sent Rcvd 99 Prefix activity: ---- ---- 100 Prefixes Current: 8 1 (Consumes 52 bytes) 101 Prefixes Total: 11 1 102 Implicit Withdraw: 0 0 103 Explicit Withdraw: 3 0 104 Used as bestpath: n/a 1 105 Used as multipath: n/a 0 106 107 Outbound Inbound 108 Local Policy Denied Prefixes: -------- ------- 109 Bestpath from this peer: 1 n/a 110 Suppressed due to dampening: 3 n/a 111 Total: 4 0 112 Number of NLRIs in the update sent: max 3, min 1 113 114 Connections established 1; dropped 0 115 Last reset never 116 Connection state is ESTAB, I/O status: 1, unread input bytes: 0
117 Connection is ECN Disabled, Mininum incoming TTL 0, Outgoing TTL 255 118 Local host: 11.1.1.1, Local port: 179 119 Foreign host: 11.3.3.3, Foreign port: 56609 120 121 Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes) 122 123 Event Timers (current time is 0x3A7194): 124 Timer Starts Wakeups Next 125 Retrans 69 0 0x0 126 TimeWait 0 0 0x0 127 AckHold 67 63 0x0 128 SendWnd 0 0 0x0 129 KeepAlive 0 0 0x0 130 GiveUp 0 0 0x0 131 PmtuAger 0 0 0x0 132 DeadWait 0 0 0x0 133 134 iss: 1233415379 snduna: 1233417119 sndnxt: 1233417119 sndwnd: 16270 135 irs: 136954806 rcvnxt: 136956143 rcvwnd: 16137 delrcvwnd: 247 136 137 SRTT: 300 ms, RTTO: 303 ms, RTV: 3 ms, KRTT: 0 ms 138 minRTT: 8 ms, maxRTT: 300 ms, ACK hold: 200 ms 139 Flags: passive open, nagle, gen tcbs 140 IP Precedence value : 6 141 142 Datagrams (max data segment is 536 bytes): 143 Rcvd: 81 (out of order: 0), with data: 67, total data bytes: 1336 144 Sent: 136 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 70, total data bytes: 1739

  • Afficher les routes que j'annonce à un voisin

 1 R1#sh ip bgp neighbors 11.3.3.3 advertised-routes 
 2 BGP table version is 16, local router ID is 11.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8 > 1.1.1.0/24       0.0.0.0                  0         32768 i
 9 > 4.4.4.4/32       10.1.2.2                 0             0 2000 i
10 > 9.9.9.9/32       10.1.2.2                               0 2000 ?
11 > 10.0.0.0         0.0.0.0                            32768 i
12 > 11.1.1.1/32      0.0.0.0                  0         32768 ?
13 > 11.3.3.3/32      10.1.3.3                 1         32768 ?
14 > 11.4.4.4/32      10.1.3.3                 2         32768 ?
15 *> 25.2.5.0/24      10.1.2.2                               0 2000 ?
16 
17 Total number of prefixes 8 

  • Afficher les routes reçues d'un voisin (après filtrage s'il y a)

 1 R1#sh ip bgp neighbors 11.3.3.3 route           
 2 BGP table version is 16, local router ID is 11.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8 >i5.5.5.5/32       11.3.3.3                 0    100      0 i
 9 
10 Total number of prefixes 1 

  • Affichers les routes d'un voisin (sans filtrage mais seulement si le soft-reconfiguration est configuré)

 1 R1#sh ip bgp neighbors 11.3.3.3 received-routes 
 2 BGP table version is 16, local router ID is 11.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8 >i5.5.5.5/32       11.3.3.3                 0    100      0 i
 9 
10 Total number of prefixes 1

  • Afficher les routes best qui n'ont pas pu être ajouté dans la table de routage

1 R2#sh ip bgp rib-failure 
2 Network            Next Hop                      RIB-failure   RIB-NH Matches
3 25.2.5.0/24        25.2.5.5            Higher admin distance              n/a

  • Information sur les updates

 1 R1#sh ip bgp update-group 
 2 BGP version 4 update-group 1, internal, Address Family: IPv4 Unicast
 3   BGP Update version : 16/0, messages 0
 4   Update messages formatted 8, replicated 0
 5   Number of NLRIs in the update sent: max 3, min 1
 6   Minimum time between advertisement runs is 0 seconds
 7   Has 1 member ( indicates the members currently being sent updates):
 8    11.3.3.3      
9 10 BGP version 4 update-group 2, external, Address Family: IPv4 Unicast 11 BGP Update version : 16/0, messages 0 12 Update messages formatted 13, replicated 0 13 Number of NLRIs in the update sent: max 3, min 1 14 Minimum time between advertisement runs is 30 seconds 15 Has 1 member (
indicates the members currently being sent updates): 16 10.1.2.2

  • Afficher le détail d'un réseau

 1 R2#sh ip bgp  5.5.5.5/32          
 2 BGP routing table entry for 5.5.5.5/32, version 40
 3 Paths: (2 available, best #2, table Default-IP-Routing-Table)
 4   Advertised to update-groups:
 5      1          2       
6 1000 7 9.9.9.4 from 9.9.9.4 (11.4.4.4) 8 Origin IGP, localpref 100, valid, external 9 1000 10 10.1.2.1 from 10.1.2.1 (11.1.1.1) 11 Origin IGP, localpref 100, valid, external, best

  • Afficher la best route pour un réseau

1 R2#sh ip bgp  5.5.5.5/32 bestpath 
2 BGP routing table entry for 5.5.5.5/32, version 40
3 Paths: (2 available, best #2, table Default-IP-Routing-Table)
4   Advertised to update-groups:
5      1          2       
6 1000 7 10.1.2.1 from 10.1.2.1 (11.1.1.1) 8 Origin IGP, localpref 100, valid, external, best

  • Clear route BGP

 1 ! Suppression des routes du voisin, AS ou autre et ré-initialisation de la relaton de voisinage
 2 clear ip bgp < IP_voisin | numéro_AS | * | external >
 3 
 4 ! On redemande au voisin la table BGP sans reset de la relation de voisinage
 5 ! 2 comportements :
 6 ! - si soft-reconfiguration de positionné, on recharge la table qui vient de la mémoire
 7 ! - sinon redemande au voisin
 8 clear ip bgp <IP_voisin> soft in
 9 
10 ! renvoi le annonces BGP (pas vu en lab)
11 clear ip bgp <IP_voisin> soft out