Cisco - BGP
Alasta 10 Octobre 2015 cisco cisco ccnp route cli
Description : Nous allons parler de BGP sur Cisco ainsi que de son implémentation.
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 :
iBGP : relation BGP entre 2 routeurs de la même AS.
eBGP : relation BGP entre 2 routeurs d'AS différentes.
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 :
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
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).
1 router bgp 1000
2 neighbor 10.1.2.2 remote-as 2000
3 neighbor 10.1.2.2 ebgp-multihop
iBGP
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).
- BGP annonce le chemin vers le réseau majeur
- 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
- sauf si la route avait été injectée localement
- Aucune modification des attributs
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'
- next-hop : doit être accessible
- weight : le plus grand
- local preference : la plus grande
- injectée localement
- as-path : le plus petit
- origin-code : préférence du i au ?
- MED : la plus petite
- eBGP préféré à iBGP
- iBGP : voisin IGP le plus proche
- eBGP : chemin le plus ancien
- 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'
- next-hop : doit être accessible
- weight : le plus grand
- local preference : la plus grande
- injectée localement
- as-path : le plus petit
- origin-code : préférence du i au ?
- MED : la plus petite
- eBGP préféré à IGP
- iBGP : voisin IGP le plus proche
- eBGP : chemin le plus ancien
- 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
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
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.
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.
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 11333 | 22 | 1 |
65001 3331 2233 11333 | 22|33 | 4 |
65001 3331 2233 11333 | [1235] | 15 |
65001 3331 2233 11333 | [1-4] | 14 |
65001 3331 2233 11333 | [1-3].3 | 3 |
65001 3331 2233 11333 | ^65 | 1 |
65001 3331 2233 11333 | ^33 | 0 |
65001 3331 2233 11333 | 33$ | 1 |
65001 3331 2233 11333 | 33 | 0 |
65001 3331 2233 11333 | _33 | 1 |
65001 3331 2233 11333 | 3+ | 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
100 | Prefix qui traverse l'AS 100 |
^100$ | Prefix généré par l'AS 100 et qui est directement connectée à mon AS |
^100 | Prefix 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 :
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