La caractéristique conditionnelle d'annonce de Border Gateway Protocol (BGP) fournit le contrôle supplémentaire de l'annonce de route, selon l'existence d'autres préfixes dans la table BGP.
Avant de tenter cette configuration, assurez-vous que vous connaissez bien :
La fonctionnalité d'annonce conditionnelle BGP décrite dans ce document a été introduite dans les versions 11.1CC et 11.2 du logiciel Cisco IOS® et est disponible dans les versions ultérieures.
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
Logiciel Cisco IOS® Version 12.2(13)T13
Routeurs de la gamme Cisco 2500
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Normalement, les routes sont propagées indépendamment de l'existence d'un chemin différent. La fonctionnalité d'annonce conditionnelle BGP utilise les mots clés advertise-map et non-existe-map de la commande neighbor advertise-map afin de suivre les routes par le préfixe de route. Si un préfixe de route n'est pas présent dans la sortie de la commande non-existe-map, la route spécifiée par la commande advertise-map est annoncée. Cette fonctionnalité est utile pour les réseaux à logements multiples, dans lesquels certains préfixes sont annoncés à l'un des fournisseurs uniquement si les informations de l'autre fournisseur ne sont pas présentes (cela indique une défaillance dans la session d'appairage ou une accessibilité partielle).
Les annonces BGP conditionnelles sont envoyées en plus des annonces normales qu'un routeur BGP envoie à ses homologues.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Cette section vous fournit des informations pour configurer les fonctionnalités décrites dans ce document.
Remarque : Pour obtenir des informations supplémentaires sur les commandes utilisées dans ce document, utilisez l'outil de recherche de commandes IOS
Ce document utilise la configuration réseau indiquée dans le diagramme suivant.
Ici, l'interface de bouclage de R103 est utilisée pour annoncer 192.168.50.0/24 à R102. R102 possède un réseau BGP, 128.16.16.0/24, qui est annoncé par défaut à ses homologues BGP (eBGP) externes, R101 et R103.
Avec la fonctionnalité d'annonce conditionnelle BGP, vous pouvez maintenant effectuer ces tâches sur R102 :
Si 192.168.50.0/24 existe dans la table BGP de R102, alors n'annoncez pas le réseau 128.16.16.0/24 à R101.
Si 192.168.50.0/24 n'existe pas dans la table BGP de R102, annoncez le réseau 128.16.16.0/24 à R101.
Avec Cisco IOS® 12.2T ou versions ultérieures, le mot clé existe-map peut également être utilisé pour accomplir ces tâches :
Si 192.168.50.0/24 existe dans la table BGP de R102, annoncez le réseau 128.16.16.0/24 à R101.
Si 192.168.50.0/24 n'existe pas dans la table BGP de R102, alors n'annoncez pas le réseau 128.16.16.0/24 à R101.
Ce document utilise les configurations suivantes :
Note : L'exemple ici traite du mot clé non-existe-map. L'utilisation du mot clé existe-map est similaire à celle-ci.
R102 |
---|
hostname R102 ! interface Loopback0 ip address 128.16.16.1 255.255.255.0 ! interface Serial8/0 ip address 10.10.10.2 255.255.255.0 ! interface Serial9/0 ip address 10.10.20.2 255.255.255.0 ! router bgp 2 bgp log-neighbor-changes network 128.16.16.0 mask 255.255.255.0 network 130.130.0.0 neighbor 10.10.10.1 remote-as 1 neighbor 10.10.10.1 advertise-map ADVERTISE non-exist-map NON-EXIST !--- Advertises the routes matched in the route-map ADVERTISE (128.16.16.0/24) !--- only if the routes matched in route-map NON-EXIST (192.168.50.0/24) !--- do not exist in the BGP table. neighbor 10.10.20.3 remote-as 3 ! ip route 130.130.0.0 255.255.0.0 Null0 ! access-list 60 permit 128.16.16.0 0.0.0.255 access-list 65 permit 192.168.50.0 0.0.0.255 ! route-map NON-EXIST permit 10 match ip address 65 ! route-map ADVERTISE permit 10 match ip address 60 ! |
R103 |
---|
hostname R103 ! interface Loopback0 ip address 192.168.50.1 255.255.255.0 ! interface Serial9/0 ip address 10.10.20.3 255.255.255.0 ! router bgp 3 bgp log-neighbor-changes network 192.168.50.0 neighbor 10.10.20.2 remote-as 2 ! |
R101 |
---|
hostname R101 ! interface Loopback0 ip address 200.200.200.1 255.255.255.0 ! interface Serial8/0 ip address 10.10.10.1 255.255.255.0 ! router bgp 1 bgp log-neighbor-changes network 200.200.200.0 neighbor 10.10.10.2 remote-as 2 ! |
Cet exemple vérifie à quoi ressemble BGP lorsque 192.168.50.0/24 se trouve dans la table BGP de R102 :
Vérifiez d'abord si 192.168.50.0/24 existe dans la table BGP de R102 :
R102# show ip bgp BGP table version is 6, local router ID is 128.16.16.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 *> 128.16.16.0/24 0.0.0.0 0 32768 i *> 130.130.0.0 0.0.0.0 0 32768 i *> 192.168.50.0 10.10.20.3 0 0 3 i *> 200.200.200.0 10.10.10.1 0 0 1 i
Puisque 192.168.50.0/24 se trouve dans la table BGP de R102, R102 ne doit pas annoncer 128.16.16/24 à R101.
R102# show ip bgp neighbors 10.10.10.1 advertised-routes BGP table version is 6, local router ID is 128.16.16.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 *> 130.130.0.0 0.0.0.0 0 32768 i *> 192.168.50.0 10.10.20.3 0 0 3 i !--- Note 128.16.16.0/24 is not advertised to neighbor 10.10.10.1. R102# show ip bgp 128.16.16.0 BGP routing table entry for 128.16.16.0/24, version 6 Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: !--- This is not advertised to R101. 10.10.20.3 Local 0.0.0.0 from 0.0.0.0 (128.16.16.1) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best
Vérifiez ensuite l'état de l'annonce conditionnelle sur R102 :
R102# show ip bgp neighbors 10.10.10.1 BGP neighbor is 10.10.10.1, remote AS 1, external link BGP version 4, remote router ID 200.200.200.1 BGP state = Established, up for 02:27:07 Last read 00:00:07, hold time is 180, keepalive interval is 60 seconds !--- Output suppressed. For address family: IPv4 Unicast BGP table version 6, neighbor version 6 Index 1, Offset 0, Mask 0x2 Condition-map NON-EXIST, Advertise-map ADVERTISE, status: Withdraw 1 accepted prefixes consume 36 bytes Prefix advertised 3, suppressed 0, withdrawn 1 Number of NLRIs in the update sent: max 1, min 0 !--- Output suppressed.
Le résultat montre que l'annonce conditionnelle est « retirée » et que les réseaux qui correspondent à la route-map « ADVERTISE » ne sont pas annoncés à l'homologue 10.10.10.1.
Afin de confirmer que les routes qui correspondent à la route-map « ADVERTISE » ne sont pas annoncées à R101, vérifiez la table BGP sur R101 :
R101# show ip bgp 128.16.16.0 % Network not in table
Cet exemple montre à quoi ressemble BGP lorsque le réseau 192.168.50.0/24 n'existe pas dans la table BGP R102 :
Tout d'abord, arrêtez l'interface de bouclage 0 sur R103 de sorte que R103 n'annonce plus 192.168.50.0/24 à R102.
R103(config)# interface loopback 0 R103(config-if)# shutdown R103(config-if)# 03:29:36: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
Vérifiez ensuite que R102 n'apprend pas 192.168.50.0/24 et que le réseau n'est pas inclus dans la table BGP R102.
R102# show ip bgp BGP table version is 8, local router ID is 128.16.16.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 *> 128.16.16.0/24 0.0.0.0 0 32768 i *> 130.130.0.0 0.0.0.0 0 32768 i *> 200.200.200.0 10.10.10.1 0 0 1 i !--- Note 192.168.50.0/24 is not present.
Maintenant, voyez combien de temps il faut pour que l'annonce conditionnelle arrive :
R102# debug ip bgp updates *Mar 1 02:39:18.059: BGP(0): 10.10.20.3 rcv UPDATE about 192.168.50.0/24 -- withdrawn *Mar 1 02:39:18.059: BGP(0): no valid path for 192.168.50.0/24 *Mar 1 02:39:18.079: BGP(0): nettable_walker 192.168.50.0/24 no best path *Mar 1 02:39:18.219: BGP(0): 10.10.10.1 computing updates, afi 0, neighbor version 10, table version 11, starting at 0.0.0.0 *Mar 1 02:39:18.219: BGP(0): 10.10.10.1 send unreachable 192.168.50.0/24 *Mar 1 02:39:18.219: BGP(0): 10.10.10.1 send UPDATE 192.168.50.0/24 -- unreachable *Mar 1 02:39:18.219: BGP(0): 10.10.10.1 1 updates enqueued (average=27, maximum=27) *Mar 1 02:39:18.219: BGP(0): 10.10.10.1 update run completed, afi 0, ran for 0ms, neighbor version 10, start version 11, throttled to 11 *Mar 1 02:40:04.747: BPG(0): Condition NON-EXIST changes to Advertise *Mar 1 02:40:04.747: BGP(0): net 128.16.16.0/24 matches ADV MAP ADVERTISE: bump version to 12 *Mar 1 02:40:05.187: BGP(0): nettable_walker 128.16.16.0/24 route sourced locally *Mar 1 02:40:05.187: BGP(0): 10.10.10.1 computing updates, afi 0, neighbor version 11, table version 12, starting at 0.0.0.0 *Mar 1 02:40:05.187: BGP(0): 10.10.10.1 128.16.16.0/24 matches advertise map ADVERTISE, state: Advertise *Mar 1 02:40:05.187: BGP(0): 10.10.10.1 send UPDATE (format) 128.16.16.0/24, next 10.10.10.2, metric 0, path *Mar 1 02:40:05.187: BGP(0): 10.10.10.1 1 updates enqueued (average=52, maximum=52) *Mar 1 02:40:05.187: BGP(0): 10.10.10.1 update run completed, afi 0, ran for 0ms, neighbor version 11, start version 12, throttled to 12
Le processus d'annonce conditionnelle est déclenché par le processus d'analyse BGP, qui s'exécute toutes les 60 secondes. Cela signifie que la durée maximale de l'annonce conditionnelle est de 60 secondes. L'annonce conditionnelle peut prendre effet plus tôt, selon le moment où la route suivie est supprimée de la table BGP et l'instance suivante du scanner BGP. Émettez ces commandes sur R102 afin de vérifier l'état d'annonce conditionnelle sur R102 pour le voisin 10.10.10.1 :
R102# show ip bgp neighbors 10.10.10.1 BGP neighbor is 10.10.10.1, remote AS 1, external link BGP version 4, remote router ID 200.200.200.1 BGP state = Established, up for 02:45:27 Last read 00:00:27, hold time is 180, keepalive interval is 60 seconds !--- Output suppressed. For address family: IPv4 Unicast BGP table version 12, neighbor version 12 Index 1, Offset 0, Mask 0x2 Condition-map NON-EXIST, Advertise-map ADVERTISE, status: Advertise 1 accepted prefixes consume 36 bytes Prefix advertised 6, suppressed 0, withdrawn 4 Number of NLRIs in the update sent: max 1, min 0 !--- Output suppressed.
La table BGP et la table de routage du routeur R101 ont 128.16.16.0/24, comme indiqué ici :
Remarque : Dans cet exemple de sortie, les annonces BGP conditionnelles (réseau 128.16.16.0/24) sont envoyées, en plus des annonces BGP normales (réseau 130.130.0.0/16) qu'un routeur BGP envoie à ses homologues.
R101# show ip bgp BGP table version is 18, local router ID is 200.200.200.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 *> 128.16.16.0/24 10.10.10.2 0 0 2 i *> 130.130.0.0 10.10.10.2 0 0 2 i *> 200.200.200.0 0.0.0.0 0 32768 i
R101# show ip route bgp 128.16.0.0/24 is subnetted, 1 subnets B 128.16.16.0 [20/0] via 10.10.10.2, 00:09:32 B 130.130.0.0/16 [20/0] via 10.10.10.2, 02:48:46
Cet exemple implique la réinstallation du réseau 192.168.50.0/24 dans R102 afin de voir comment BGP passe de « Annoncer » à « Retirer ».
Afin de réinstaller 192.168.50.0/24, émettez la commande no shutdown pour faire basculer l'interface loopback 0 sur R103 vers UP.
R103(config)# interface loopback 0 R103(config-if)# no shutdown R103(config-if)# 03:49:06: %LINK-3-UPDOWN: Interface Loopback0, changed state to up 03:49:07: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up !--- R102 kicks in conditional advertisement the moment the !--- conditional network is received again. *Mar 1 02:51:42.227: BGP(0): 10.10.20.3 rcvd UPDATE w/ attr: nexthop 10.10.20.3, origin i, metric 0, path 3 *Mar 1 02:51:42.227: BGP(0): 10.10.20.3 rcvd 192.168.50.0/24 *Mar 1 02:51:42.247: BGP(0): Revise route installing 192.168.50.0/24 -> 10.10.20.3 to main IP table *Mar 1 02:51:42.379: BGP(0): 10.10.10.1 computing updates, afi 0, neighbor version 12, table version 13, starting at 0.0.0.0 *Mar 1 02:51:42.379: BGP(0): 10.10.10.1 send UPDATE (format) 192.168.50.0/24, next 10.10.10.2, metric 0, path 3 *Mar 1 02:51:42.379: BGP(0): 10.10.10.1 1 updates enqueued (average=47, maximum=47) *Mar 1 02:51:42.379: BGP(0): 10.10.10.1 update run completed, afi 0, ran for 0ms, neighbor version 12, start version 13, throttled to 13 *Mar 1 02:52:09.159: BPG(0): Condition NON-EXIST changes to Withdraw *Mar 1 02:52:09.159: BGP(0): net 128.16.16.0/24 matches ADV MAP ADVERTISE: bump version to 14 *Mar 1 02:52:09.499: BGP(0): nettable_walker 128.16.16.0/24 route sourced locally *Mar 1 02:52:11.559: BGP(0): 10.10.10.1 computing updates, afi 0, neighbor version 13, table version 14, starting at 0.0.0.0 *Mar 1 02:52:11.559: BGP(0): 10.10.10.1 128.16.16.0/24 matches advertise map ADVERTISE, state: Withdraw *Mar 1 02:52:11.559: BGP(0): 10.10.10.1 send unreachable 128.16.16.0/24 *Mar 1 02:52:11.559: BGP(0): 10.10.10.1 send UPDATE 128.16.16.0/24 -- unreachable *Mar 1 02:52:11.559: BGP(0): 10.10.10.1 1 updates enqueued (average=27, maximum=27) *Mar 1 02:52:11.559: BGP(0): 10.10.10.1 update run completed, afi 0, ran for 0ms, neighbor version 13, start version 14, throttled to 14
R102 n'annonce plus 128.16.16.0/24 à R101.
R102# show ip bgp neighbors 10.10.10.1 advertised-routes BGP table version is 14, local router ID is 128.16.16.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 *> 130.130.0.0 0.0.0.0 0 32768 i *> 192.168.50.0 10.10.20.3 0 0 3 i !--- Note 128.16.16.0/24 is not advertised. R102# show ip bgp neighbors 10.10.10.1 BGP neighbor is 10.10.10.1, remote AS 1, external link BGP version 4, remote router ID 200.200.200.1 BGP state = Established, up for 03:01:32 Last read 00:00:31, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: !--- Output supressed. For address family: IPv4 Unicast BGP table version 14, neighbor version 14 Index 1, Offset 0, Mask 0x2 Condition-map NON-EXIST, Advertise-map ADVERTISE, status: Withdraw 1 accepted prefixes consume 36 bytes Prefix advertised 7, suppressed 0, withdrawn 5 Number of NLRIs in the update sent: max 1, min 0 !--- Output supressed.
Remarque : dans un scénario réel, AS1 et AS3 sont connectés à Internet (Global BGP). Par conséquent, le réseau 192.168.50.0/24 peut être propagé via un maillage bgp global de AS3 vers la table BGP AS1 (R101). À son tour, AS1 peut propager le préfixe 192.168.50.0 à R102 (selon l'accord de stratégie entre AS1 et AS2). Si R101 propage les routes AS3 apprises du maillage BGP global vers R102, l'annonce conditionnelle peut échouer si des vérifications supplémentaires ne sont pas placées dans la carte non existante.
Afin de mieux comprendre pourquoi la publication conditionnelle échoue, considérez ce scénario. AS1 apprend 192.168.50.0/24 à partir du maillage bgp global et annonce 192.168.50.0/24 à AS2 (R102). R102 apprend également le préfixe 192.168.50.0/24 de son appairage direct vers R103 (sur la liaison R102 vers R103). Lorsque la liaison directe entre R102 et R103 échoue, vous vous attendez à ce que le préfixe 192.168.50.0/24 cesse d'exister dans la table BGP de R102 et que l'annonce conditionnelle démarre et annonce le préfixe 128.16.16.0/24 à R101. Cependant, puisque le préfixe 192.168.50.0/24 continue d'exister dans la table BGP R102 (apprise à partir de R101), l'annonce conditionnelle se brise car le préfixe de la carte non existante existe toujours dans la table BGP R102. Pour s'assurer que le préfixe 192.168.50.0/24 est appris uniquement à partir de la connexion directe à AS3 (R102 à R103) afin que l'annonce conditionnelle puisse entrer, ajoutez une instruction match as_path sous la carte non existante qui correspond à AS_PATH du préfixe 192.168.50.0/24 apprise à partir de la connexion directe (qui dans ce cas) est AS 3). L'expression régulière de ce cas est ^3. Pour plus d'informations sur les expressions régulières, référez-vous à Utilisation d'expressions régulières dans BGP. Attention, vous ne pouvez pas faire correspondre uniquement le chemin as et non le préfixe. La correspondance as-path ne peut que compléter les critères correspondants pour le préfixe correspondant. En d'autres termes, vous ne pouvez pas annoncer certains préfixes à un voisin si aucun préfixe n'existe à partir d'un certain numéro de système autonome.
La nouvelle configuration du routeur R102 est présentée ici. Les ajouts sont en gras.
R101 |
---|
hostname R102 ! interface Loopback0 ip address 128.16.16.1 255.255.255.0 ! interface Serial8/0 ip address 10.10.10.2 255.255.255.0 ! interface Serial9/0 ip address 10.10.20.2 255.255.255.0 ! router bgp 2 bgp log-neighbor-changes network 128.16.16.0 mask 255.255.255.0 network 130.130.0.0 neighbor 10.10.10.1 remote-as 1 neighbor 10.10.10.1 advertise-map ADVERTISE non-exist-map NON-EXIST neighbor 10.10.20.3 remote-as 3 ! ip route 130.130.0.0 255.255.0.0 Null0 ! ip as-path access-list 1 permit ^3 ! access-list 60 permit 128.16.16.0 0.0.0.255 access-list 65 permit 192.168.50.0 0.0.0.255 ! route-map NON-EXIST permit 10 match ip address 65 match as-path 1 ! route-map ADVERTISE permit 10 match ip address 60 ! |
Il y a quelques bogues connus qui se rapportent à BGP et à la publication conditionnelle. Pour plus d'informations, référez-vous aux bogues CSCdp18563 (clients enregistrés uniquement) et CSCdp20320 (clients enregistrés uniquement) dans la Boîte à outils des bogues.
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
10-Aug-2005 |
Première publication |