Comprendre l'Agrégation de routes dans BGP ccnp_cch
Sommaire • Introduction • Schéma du réseau • Agrégation sans l'argument as-set • Agrégation avec l'argument as-set • Changer les attributs de la route agrégée • Utilisation de "advertise-map" pour agréger des sous-ensembles de routes ccnp_cch
Introduction BGP (Border Gateway Protocol) autorise l'agrégation de routes données en une seule route en utilisant la commande aggregate-address address-mask [as-set] [summary- only] [suppress-map map-name] [advertise-map map-name] [attribute-map map- name]. Quand vous utilisez la commande aggregate-address sans aucun argument, il n'y a pas héritage des attributs (tels AS_PATH ou community) des routes individuelles, ce qui entraine une perte de granularité. L'objectif de ce document est d'illustrer comment manipuler les différents attributs quand on utilise la commande aggregate- address et comment influencer leur propagation. Schéma du réseau Routeur A Routeur C Routeur B Routeur D AS 400 AS 200 AS 300 AS 100 160.20.0.0/16 160.10.0.0/16 2.2.2.0/8 3.3.3.0/8 4.4.4.0/8 ccnp_cch
Agrégation sans l'argument as-set L'utilisation de l'argument as-set crée une adresse agrégée avec un ensemble (mathé- matique) de systèmes autonomes. Cet argument as-set agrège les attributs AS_PATH de toutes les routes individuelles. Nous allons utiliser l'exemple de configuration ci-dessous pour examiner cette fonctionnalité et voir comment cela aide BGP à détecter et à éviter les boucles. Routeur A Current configuration hostname RouteurA ! interface Serial1 ip address 2.2.2.2 255.0.0.0 ! router bgp 100 network 160.20.0.0 !-- Réseau 160.20.0.0/16 annoncé par le Routeur A neighbor 2.2.2.1 remote-as 300 ! end Routeur B Current configuration hostname RouteurB ! interface Serial0 ip address 3.3.3.3 255.0.0.0 ! router bgp 200 network 160.10.0.0 !-- Réseau 160.10.0.0/16 annoncé par le Routeur B neighbor 3.3.3.1 remote-as 300 ! end ccnp_cch
Routeur C Current configuration hostname RouteurC ! interface Serial0 ip address 2.2.2.1 255.0.0.0 ! interface Serial1 ip address 3.3.3.1 255.0.0.0 ! interface Serial2 ip address 4.4.4.1 255.0.0.0 ! router bgp 300 neighbor 2.2.2.2 remote-as 100 neighbor 3.3.3.3 remote-as 200 neighbor 4.4.4.4 remote-as 400 aggregate-address 160.0.0.0 255.0.0.0 summary-only ! !-- Le réseau est agrégé et seul 160.0.0.0/8 est annoncé end Routeur D Current configuration hostname RouteurD ! interface Serial0 ip address 4.4.4.4 255.0.0.0 ! router bgp 400 neighbor 4.4.4.1 remote-as 300 ! end ccnp_cch
Le routeurC (AS 300) agrège les routes 160. 20. 0/16 et 160. 10 Le routeurC (AS 300) agrège les routes 160.20.0.0/16 et 160.10.0.0/16 venant respec- tivement de l'AS 100 et de l'AS 200. Ceci est du à l'argument summary-only configuré sur le RouteurC. Seule la route 160.0.0.0/8 (Classless InterDomain Routing - CIDR) est annoncée au routeur D. Les routes spécifiques 160.20.0.0/16 et 160.10.0.0/16 sont supprimées comme le montre la table BGP du routeur C ci-dessous: RouteurC#show ip bgp BGP table version is 6, local router id is 4.4.4.1 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 160.0.0.0/8 0.0.0.0 32768 i s> 160.10.0.0 3.3.3.3 0 0 200 i s> 160.20.0.0 2.2.2.2 0 0 100 i Maintenant examinons la table BGP du routeur D pour observer l'information de chemin de la route agrégée. RouteurD#show ip bgp BGP table version is 6, local router id is 4.4.4.4 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 160.0.0.0/8 4.4.4.1 0 300 i La route agrégée 160.0.0.0/8 est considéré comme issue de l'AS 300 avec "Origin Code" IGP et a perdu les informations individuelles des préfixes AS_PATH 160.10.0.0 /16 (AS 200) et 160.20.0.0/16 (AS 100) ccnp_cch
Agrégation avec l'argument as-set Maintenant configurons l'argument as-set dans la commande aggregate-address sur le routeur C. La nouvelle configuration est montrée ci-dessous: Routeur C Current configuration hostname RouteurC ! interface Serial0 ip address 2.2.2.1 255.0.0.0 ! interface Serial1 ip address 3.3.3.1 255.0.0.0 ! interface Serial2 ip address 4.4.4.1 255.0.0.0 ! router bgp 300 neighbor 2.2.2.2 remote-as 100 neighbor 3.3.3.3 remote-as 200 neighbor 4.4.4.4 remote-as 400 aggregate-address 160.0.0.0 255.0.0.0 summary-only as-set ! end Maintenant regardons l'influence de cet argument dans la sortie de la commande show ip bgp sur le routeur D. RouteurD#show ip bgp BGP table version is 6, local router id is 4.4.4.4 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 160.0.0.0/8 4.4.4.1 0 300 {200,100} i En utilisant l'argument as-set, l'information de chemin dans la table BGP change pour inclure l'ensemble 300 {200,100}. Ceci indique que l'agrégation a agrégé les routes qui sont passées dans l'AS 100 et l'AS 200. L'information as-set devient importante pour éviter les boucles car elle indique d'où viennent ces routes. Dans tout réseau cette information d'agrégation est propagée par BGP en retour vers un AS de la liste dans as-set, pouvant ainsi créer des boucles. Le principe de détection de boucle de BGP note que son propre numéro d'AS est présent dans l'as-set de la mise à jour par conséquent la mise à jour est éliminée et une boucle de routage est évitée. ccnp_cch
Note: l'argument as-set contient des informations sur chaque route individuelle et des changements dans une route individuelle entraine une mise à jour de l'agréga- tion. Dans notre exemple, si la route 160.10.0.0/16 passe hors service, l'information de chemin de l'agrégation change de 300 {200,100} à 300 {200} et elle est mise à jour. Si l'agrégation agrège 10 ou 100 routes, elle peut être constamment en train de chan- ger si les routes formant l'agrégation sont instables. Changer les attributs d'une route agrégée Dans la configuration ci-dessus nous avons vu comment utiliser as-set pour garder les attributs AS_PATH d'une route spécifique. Dans certains cas, vous aurez peut-être besoin de changer des attributs (tels la métrique, la communauté, origin...) d'une route agrégée. Pour comprendre comment vous pouvez utiliser l'argument attribute-map pour mani- puler les attributs de aggregate-address, prenons un cas dans lequel une ou plusieurs routes agrégées particulières sont configurées avec l'attribut no export community. Le RrouteurA marque l'attribut no-export pour le réseau 160.20.0.0/16 et l'annonce au RouteurC. Le RouteurC hérite de l'attribut no-export lors de l'agrégation de la route 160.0.0.0/8 et par conséquent cette route ne sera pas annoncée au RouteurD. Les configurations des routeurs B, C et D restent inchangées. Ci-dessous se trouve la configuration du RouteurA: RouteurA Current configuration hostname RouteurA ! interface Serial1 ip address 2.2.2.2 255.0.0.0 ! router bgp 100 network 160.20.0.0 !-- Réseau 160.20.0.0/16 annoncé par le RouteurA neighbor 2.2.2.1 remote-as 300 neighbor 2.2.2.1 send-community neighbor 2.2.2.1 route-map SET-NO-EXPORT out ! access-list 1 permit 160.20.0.0 0.0.255.255 ! route-map SET_NO_EXPORT permit 10 match ip address 1 set community no-export ! !-- L'attribut community est fixé à no-export sur ce !-- routeur pour la route 160.2.0.0/16 ! end ccnp_cch
Maintenant regardons la table BGP du routeur C pour 160 Maintenant regardons la table BGP du routeur C pour 160.0.0.0/8 RouteurC#show ip bgp 160.0.0.0 BGP routing table entry for 160.0.0.0/8, version 9 Paths: (1 available, best #1, not advertised to EBGP peer) Not advertised to any peer {200,100}, (aggregated by 300 4.4.4.1) 0.0.0.0 from 0.0.0.0 (4.4.4.1) 0rigin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic- aggregate, best, ref 2 Community: no-export L'attribut community no-export empêche le routeur C d'annoncer la route agrégée vers le routeur D son voisin eBGP. Le routeur D montre qu'il n'a pas appris 160.0.0.0 du Routeur C: RouteurD# show ip bgp 160.0.0.0 % Network not in table En configurant l'argument attribute-map sur le routeur C, nous manipulons l'attribut community de la route agrégée de no-export à none et ainsi nous permettons à la route agrégée d'être annoncée au routeur D. Routeur C Current configuration hostname RouteurC ! interface Serial0 ip address 2.2.2.1 255.0.0.0 ! interface Serial1 ip address 3.3.3.1 255.0.0.0 ! interface Serial2 ip address 4.4.4.1 255.0.0.0 ! router bgp 300 neighbor 2.2.2.2 remote-as 100 neighbor 3.3.3.3 remote-as 200 neighbor 4.4.4.4 remote-as 400 aggregate-address 160.0.0.0 255.0.0.0 summary-only as-set attribute-map Map ! !-- L'argument attribut-map permet de changer la !-- communauté de l'agrégation ! route-map Map permit 10 set community none ! !-- l'agrégation de communauté est fixée à "none" end ccnp_cch
Maintenant examinons la table BGP du RouteurC pour 160. 0/8 Maintenant examinons la table BGP du RouteurC pour 160.0.0.0/8. Comme il n'y a pas d'attribut community pour la route agrégée, le routeur C annonce 160.0.0.0/8 au RouteurD. RouteurC#show ip bgp 160.0.0.0 BGP routing table entry for 160.0.0.0/8, version 6 Paths: (1 available, best #1) Advertised to non-peer-group peers: 2.2.2.2 3.3.3.3 4.4.4.4 {200,100}, (aggregated by 300 4.4.4.1) 0.0.0.0 from 0.0.0.0 (4.4.4.1) 0rigin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic- aggregate, best, ref 2 La sortie de la commande show ip bgp 160.0.0.0 sur le RouteurD montre qu'il a appris la route agrégée 160.0.0.0/8 du RouteurC. RouteurD#show ip bgp 160.0.0.0 BGP routing table entry for 160.0.0.0/8, version 10 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not Advertised to any peer 300 {200,100}, (aggregated by 300 4.4.4.1) 4.4.4.1 from 4.4.4.1 (4.4.4.1) 0rigin IGP, localpref 100, external, best ccnp_cch
Utilisation de "advertise-map" pour agréger un sous-ensemble spécifique de routes Avoir le contrôle sur les préfixes individuels qui forment la route agrégée est utile pour décider quels sont les attributs que la route agrégée doit transporter. Dans l'exemple précédent, si nous excluons le préfixe 160.20.0.0 de la route agrégée, la route agrégée 160.0.0.0/8 n'héritera pas de l'attribut community no-export. Nous allons réaliser cela en configurant l'argument advertise-map sur le routeur C. Routeur C Current configuration hostname RouteurC ! interface Serial0 ip address 2.2.2.1 255.0.0.0 ! interface Serial1 ip address 3.3.3.1 255.0.0.0 ! interface Serial2 ip address 4.4.4.1 255.0.0.0 ! router bgp 300 neighbor 2.2.2.2 remote-as 100 neighbor 3.3.3.3 remote-as 200 neighbor 4.4.4.4 remote-as 400 aggregate-address 160.0.0.0 255.0.0.0 as-set summary-only advertise-map SELECT_SP_ROUTE ! !-- Exclusion d'un préfixe en utilisant advertise-map ! access-list 1 permit 160.10.0.0 0.0.255.255 ! route-map SELECT_SP_ROUTE permit 10 match ip address 1 ! end ccnp_cch
Maintenant examinons la table BGP du routeur C pour 160. 0/8 Maintenant examinons la table BGP du routeur C pour 160.0.0.0/8. RouteurC#show ip bgp 160.0.0.0 BGP routing table entry for 160.0.0.0/8, version 15 Paths: (1 available, best #1) Advertised to non-peer-group peers: 2.2.2.2 4.4.4.4 200, (aggregated by 300 2.2.2.1) 0.0.0.0 from 0.0.0.0 (2.2.2.1) 0rigin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic- aggregate, best, ref 2 Seul l'AS 200 fait partie de l'information AS_PATH de l'agrégation, pas l'AS 100. Aussi la communauté no-export n'est pas héritée de 160.20.0.0/16. Cependant la route agrégée est annoncée au routeur D comme le montre la sortie de la commande show ip bgp160.0.0.0. RouteurD#show ip bgp 160.0.0.0 BGP routing table entry for 160.0.0.0/8, version 7 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 300 200, (aggregated by 300 4.4.4.1) 4.4.4.1 from 4.4.4.1 (4.4.4.1) 0rigin IGP, localpref 100, valid, external, atomic-aggregate, best ip bgp 160.0.0.0 Il faut également noter que comme l'as-set agrégé contient uniquement l'AS 200, le routeur A (dans l'AS 100) accepte la route agrégée et l'installe dans sa table de rou- tage. Ceci est du au fait que le système de détection de boucle de BGP ne détecte pas son propre AS (AS 100) dans l'as-set. RouteurA#show ip bgp BGP table version is 3, local router ID is 160.20.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPref Weight Path *> 160.0.0.0/8 2.2.2.1 0 300 200 i *> 160.20.0.0 0.0.0.0 0 32768 i ccnp_cch