Intro au protocole BGP 1
Quelques termes utilisés dans ce cours IGP (Interior Gateway Protocol) RIP, IGRP, EIGRP, OSPF Protocoles de routage utilisés à l'intérieur d'un système autonome (AS) EGP (Exterior Gateway Protocol) BGP Protocole de routage utilisé pour échanger des informations de routage entre différents systèmes autonomes (AS) Autonomous System (RFC 1771) Un ensemble de routeurs sous une seule administration, qui utilise un IGP et des métriques communes pour faire le routage des paquets à l'intérieur d'un AS and et un EGP pour le routage vers d'autres AS s. BGP un protocole de routage à vecteur de chemin (path vector) 2
Est-il obligatoire d'utiliser BGP? L'utilisation de BGP dépend du niveau de connaissance technique et de la présence d'une de ces situations : Le AS permet le transit de paquets d'autres AS Le AS a plusieurs connexions à d'autres AS s (multihomed) Les flux entrants ou sortants de l'as doivent être manipulés 3
BGP n'est pas nécessaire si Ne pas utiliser BGP si : il n'y a qu'une seule connexion ver un autre AS ou FAI votre AS ne requiert des filtrages ou manipulations des flux les routeurs sont limités en mémoire ou capacité de calcul l'administrateur a une connaissance limitée du processus de filtrage et sélection des chemins BGP la liaison entre les AS a une faible bande passante 4
Définition des Systèmes Autonomes (AS) AS - Un ensemble de routeurs qui partagent des politiques de routage similaires et qui sont gérés dans un même domaine administratif. De l'extérieur, un AS est vu comme une entité unique Un AS peut être composé : d'un ensemble de routeurs qui tourne le même protocole IGP d'un ensemble de routeurs qui tournent différents protocoles de routage (une grande entreprise ou un FAI, par exemple) 5
Identification des AS Défini par le RFC 1772 Les numéros des AS Attribués par une entité (IANA) Entre 1 et 65535 Les adresse de 64512 à 65535 sont réservés pour un usage privée 6
Attribution des AS À cause du nombre limité d'as, il faut justifier le besoin d'un numéro AS +- 40000 déjà attribués Aujourd'hui, la IANA (Internet Assigned Numbers Authority) conseille fortement l'usage des AS 64512-65535 pour les AS qui sont connectés à un seul AS 7
BGP concepts de base BGP est un protocole de routage par vecteur de chemin path vector Une route indique la liste d'ass qu'il faut traverser pour arriver à la destination Ex : pour le réseau 10.3.0.0/16, il faut passer par les AS 50, 75, 28 8
BGP concepts de base BGP a por objectif : l'échange d'informations de routage entre les ASs garantir le choix d'une route sans boucle (loop-free) BGP4 est la première version de BGP qui supporte CIDR et agrégation de routes IGPs comme RIP, OSPF et EIGRP utilisent des métriques BGP n'utilise pas une métrique fait les décisions selon des politiques de routage n'indique pas les détails internes des ASs ne représente qu'un arbre d'ass show ip bgp commande IOS pour afficher la table de routage BGP 9
BGP concepts de base Les mises à jour BGP utilisent TCP sur le port 179 RIP utilise UDP sur le port 520 EIGRP utilise RTP OSPF n'utilise pas un protocole de couche 4 Du fait d'utiliser TCP, BGP a besoin de : une connectivité IP entre les voisins BGP ouvrir des connexions TCP avant d'échanger des données BGP bénéficie de la fiabilité de TCP 10
Chemin sans boucle (Loop-free) Pour éviter les boucles, BGP construit un graphe avec les données envoyées par les voisins La connexion entre deux AS représente un chemin AS Path Le chemin pour atteindre un AS est représenté comme une séquence de numéros d'as Grâce aux numéros d'as, un système autonome peut détecter un chemin qui passe deux fois par le même AS 11
BGP Updates AS Path 1 500 2 AS Path 100, 500 3 AS Path 200, 100, 500 AS Path 300, 200, 100, 500 4 AS Path 5 400, 300, 200, 100, 500 6 AS Path 400, 300, 200, 100, 500 Son propre AS 12
Chemin sans boucles AS_PATH Liste des AS associés à une route L'un des attributs associés aux routes (à voir plus tard) La stratégie la plus simple consiste à choisir le chemin le plus court Pour deux annonces de réseaux identiques (mêmes prefixes), BGP préfère les routes avec le AS_PATH le plus petit Dans cet example, AS7 choisit le chemin le plus court (4, 2, 1) 13
Fonctionnement de BGP Voisins ou pairs Deux routeurs qui établissent une connexion TCP Chaque routeur doit exécuter le protocole BGP 14
Échange Initial Lorsqu'une connexion est établie, les routeurs échangent leurs routes candidates Après l'échange initial, des mises à jour incrémentales sont envoyées entre les routeurs 15
Suppression de Routes Les informations sur les routes peuvent être aussi concerner une route qui devient inaccessible un meilleur chemin disponible Les routeurs BGP gardent un tableau de numéros de version Liste des numéros de version des mises à jour reçues de chaque routeur Incrémenté à chaque modification des tables de routage BGP Une incrémentation rapide indique normalement un réseau instable ou mal configuré 16
BGP Keepalives Les pairs échangent des messages keepalive pour garder la connexion active Le défaut Cisco est de 60 secondes (le RFC 1771 n'espécifie pas une valeur) Si l'intervalle est dépassé trois fois (180 seconds) un pair est considéré down Les intervalles peuvent être configurées 17
Les types de message BGP Avant toute communication entre deux peers il est nécessaire de démarrer une connexion TCP sur le port 179 Une fois ouverte la connexion, BGP échange plusieurs messages avec les paramètres de la connexion et les informations de routage Tous les messages BGP sont unicastés vers un seul partenaire Il y a 4 types de message BGP : Type 1: OPEN identification initiale entre les peers Type 2: KEEPALIVE Type 3: UPDATE mises à jour Type 4: NOTIFICATION - erreurs 18
Types de message BGP Chaque message BGP contient l'entête suivante : Marker : Le champs marker est utilisé soit pour authentifier un message entrant ou pour détecter la perte de synchronisation entre les pairs BGP Length : Le champs length indique la taille totale du message BGP, entête incluse 19
Type 1 : BGP Open Après l'établissement de la connexion TCP, les routeurs échangent des messages Open Ce message établi le voisinage entre les pairs Chaque voisin s'identifie et spécifie ses paramètres BGP tems que : La version du protocole BGP Le numéro d'as Son identifiant BGP Des paramètres optionnels 20
Type 2 : BGP Keepalive Le message BGP Keepalive est envoyé périodiquement entre les pairs afin de garder la connexion ouverte Si un routeur accepte les paramètres spécifiés dans le message Open de son voisin, il répond avec un Keepalive Par la suite, les messages Keepalive sont envoyés à chaque 60 secondes par les routeurs Cisco, ou 1/3 du hold time agrée (180 secondes) 21
Type 3 : Update Les messages UPDATE contiennent toutes les information nécessaires afin d'établir des chemins sans boucle Les messages Update servent à annoncer des routes candidates, supprimer des routes, ou les deux Les trois composants principaux d'un message UPDATE sont : Network-Layer Reachability Information (NLRI) Attributs des chemins Routes supprimées 22
Type 3 : Update Network-Layer Reachability Information (NLRI) Ce champs annonce les préfixes des adresses IP et la longueur de leurs masques 192.168.160.0/19 Préfixe = 192.168.160.0 Longueur = 19 Attributs du chemin (plus tard) Ce champs contient des informations qui permettent à BGP de choisir le chemin le plus court, détecter les boucles de routage et la politique de routage Routes à supprimer Ce sont des réseaux qui sont devenus inatteignables et doivent être supprimés 23
Type 4 : Notification Un message de notification est envoyé lorsqu'une erreur est détecté et toujours lorsqu'une connexion est fermée Le message NOTIFICATION est composé des champs Code d'erreur (8 bits) Sous-code d'erreur (8 bits) Un champs de données (detaille variable) 24
Attributs d'un Chemin Chaque route a son propre ensemble d'attributs, qui peut inclure des informations sur le chemin préférences sur les routes next-hop informations d'agrégation Les admins utilisent ces informations pour composer des politiques de routage À partir des valeurs des attributs, BGP peut être configuré pour filtrer des informations sur certaines routes choisir des chemins préférentiels 25
Attributs de Chemin Certains attributs ne sont pas reconnus par tous les fabricants Les attributs de chemin ont quatre types Well-known mandatory Well-known discretionary Optional transitive Optional non-transitive 26
Attributs de Chemin Well-known mandatory Un attribut qui doit être présent dans une mise à jour BGP (UPDATE) Reconnu par toute implémentation BGP Si un attribut well-known est manquant, une notification d'erreur sera créée établit un standard minimum des attributs Exemple : l'attribut AS_PATH 27
Attributs de Chemin Well-known discretionary Attribut qui doit aussi être reconnu par toute implémentation BGP Peut ne pas être envoyé dans un message BGP UPDATE Exemple : LOCAL_PREF 28
Attributs de Chemin Optional transitive Un attribut qui peut ne pas être reconnu par une implémentation BGP (donc optionnel) Cet attribut est transitif BGP doit accepter et annoncer l'attribut même s'il ne le reconnaît pas Exemple : COMMUNITY 29
Attributs de Chemin Optional non-transitive Un attribut qui peut ne pas être reconnu par une implémentation BGP Même si un router reconnaît l'attribut, il est non-transitif Ne doit PAS être repassé aux autres pairs BGP Exemple : ORIGINATOR_ID 30
Configurer BGP Pour commencer, entrer dans le mode configuration BGP Router(config)#router bgp AS-number Attention, les commandes BGP sont presque similaires à ceux des IGP Leur fonction peut être assez différente Note : L'IOS cisco ne permet qu'un seule processus BGP par routeur alors un routeur n'appartient qu'à un seul AS 31
Configurer BGP Router(config-router)#network network-number [mask networkmask] Les réseaux doivent être présents dans la table de routage (show ip route) pour être distribués Les routes apprises avec BGP sont diffusées par défaut, mais souvent elles sont filtrées par des politiques de routage 32
Configurer BGP Router(config-router)#network network-number [mask networkmask] " Avec les IGPs, la commande network indique les interfaces qui participent ainsi que les routes annoncées " Dans le cas du protocole BGP, la commande network n'affecte pas les interfaces " En BGP, network indique les routes apprises localement qui seront annoncées " Les réseaux peuvent être des routes connectées, statiques ou apprises dynamiquement " Seulement configurer network ne suffit pas pour établir des connexions BGP 33
Configurer BGP Router(config-router)#neighbor ip-address remote-as AS-number La commande Neighbor Utilisée pour établire une rélation de voisinage avec un autre routeur BGP Le paramètre AS-number indique si le routeur est un voisin EBGP ou IBGP 34
IBGP versus EBGP Lorsque BGP s'exécute à l'intérieur d'un AS, il est appelé Internal BGP (IBGP). Un routeur de transit execute IBGP Utilisé presque exclusivement dans le cas des AS multi-homed BGP entre deux AS est appelé External BGP (EBGP) Un routeur de frontière 35
IBGP versus EBGP Les routeurs A et B tournent EBGP (BGP) alors que les routeurs B et C tournent IBGP On observe que : les pairs EBGP (BGP) doivent être directement connectés les pairs IBGP n'ont pas besoin d'être directement connectés il suffit d'avoir un protocole IGP (OSPF, EIGRP, etc) pour router les messages à l'intérieur d'un AS 36
EBGP RTA(config)#router bgp 100 RTA(config-router)#neighbor 10.1.1.1 remote-as 200 RTB(config)#router bgp 200 RTB(config-router)#neighbor 10.1.1.2 remote-as 100 Observez que la valeur remote-as 100 de la commande neighbor est différente de la valeur AS-number spécifiée par la commande router bgp (200) Avec deux numéros AS différents, RTB inicie une connexion EBGP avec RTA 37
IBGP RTB(config)#router bgp 200 RTB(config-router)#neighbor 172.16.1.2 remote-as 200 RTB(config-router)#neighbor 172.16.1.2 update-source loopback 0 RTC(config)#router bgp 200 RTC(config-router)#neighbor 172.16.1.1 remote-as 200 RTC(config-router)#neighbor 172.16.1.1 update-source loopback 0 38
RTB(config-router)#neighbor 172.16.1.2 update-source loopback 0 RTC(config-router)#neighbor 172.16.1.1 update-source loopback 0 update-source loopback 0 - indique au routeur d'utiliser toute interface opérationnelle pour établir les connexions TCP (tant que Lo0 est active et configurée avec une adresse IP) Sans cette commande update-source loopback 0, les routeurs BGP ne peuvent utiliser que l'interface la plus proche Utiliser n'importe quelle interface augmente la robustesse de BGP si un lien est défaillant 39
Considérez que la route suivante est entrée dans la table de RTB 0 192.168.1.0/24 [110/74] via 10.2.2.1, 00:31:34, Serial2 RTB a appris cette route grâce à un IGP (OSPF) Cet AS utilise OSPF pour échanger les routes internes Comment RTB pourra annoncer cette route via BGP? Avec la redistribution des routes OSPF sur BGP ou Avec la commande BGP network 40
EBGP RTB(config)#router bgp 200 RTB(config-router)#network 172.16.1.0 mask 255.255.255.254 RTB(config-router)#network 10.1.1.0 mask 255.255.255.254 RTB(config-router)#network 192.168.1.0 Les deux premières commandes network indiquent le masque d'un sous-réseau spécifique La troisième commande network annonce le réseau 192.168.1.0 sans avoir besoin d'une redistribution OSPF route statique Attention : network ici indique les routes qui seront annoncés sur toute connexion BGP 41
EBGP Multihop EBGP Multihop EBGP Multihop I do not speak BGP. But RTW and RTU can use EBGP multihop to speak BGP. EBGP doit connecter directement les pairs pour établir une session Exception : l'ios Cisco a une option multihop pour permettre la connexion logique entre RTW et RTU même si RTV n'implémente pas BGP équivalent à augmenter le TTL d'un annonce BGP Cette option doit être configurée pour chaque pair Router(config-router)#neighbor IP-address ebgp-multihop [hops] 42
EBGP EBGP Multihop EBGP Multihop I do not speak BGP. But RTW and RTU can use EBGP multihop to speak BGP. 43
RTW(config)#router bgp 200 RTW(config-router)#neighbor 1.1.1.2 remote-as 300 RTW(config-router)#neighbor 1.1.1.2 ebgp-multihop 2 AS200 1.1.1.1 AS300 1.1.1.2 RTU(config)#router bgp 300 RTU(config-router)#neighbor 1.1.1.1 remote-as 200 RTU(config-router)#neighbor 1.1.1.1 ebgp-multihop 2 44
Configurer BGP Lors de la configuration de BGP, les modifications ne sont pas immédiatement visibles Pour forcer BGP de reinitialiser ses tables, utiliser la commande clear ip bgp Router#clear ip bgp * Router#clear ip bgp 10.0.0.0 Utilisez cette commande avec beaucoup d'attention, voir pas du tout sur un réseau de production clear ip bgp * OOPS! Not me but a colleague who was an employee of a large ISP with a 3 letter title. Got back from a Cisco routing course and thought they would try out some commands on the core network. It took 45 minutes for the core to reconverge. P45 followed 45
Exemple 46
Exemple 47
Exemple 48
Exemple 49
50
Comment vérifier la config BGP Si le routeur n'a pas installé les routes prévues, on peut utiliser la commande show ip bgp pour vérifier les routes que BGP a appris RTA#show ip bgp BGP table version is 3, local router ID is 10.2.2.2 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 * i1.0.0.0 192.168.1.6 0 100 0 200 400 e *>i10.1.1.1/32 10.1.1.1 0 100 0 i *>i172.16.1.0/24 10.1.1.1 0 100 0 i * i192.168.1.32/27 192.168.1.6 0 100 0 200 i 51
show ip bgp RouterC#show ip bgp BGP table version is 8, local router ID is 200.200.200.66 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 *> 11.0.0.0 0.0.0.0 0 32768 i *> 12.0.0.0 200.200.200.65 0 300 200 i *> 192.10.2.0 200.200.200.65 0 0 300 i BGP table version numéro de version interne, augmente à chaque update local router ID adresse IP du routeur Status codes Statut des entrées dans la table s l'entrée a été supprimée * l'entrée est valide > l'entrée est le meilleur chemin pour le réseau (path vector) i l'entrée a été apprise par une session IBGP 52
show ip bgp RouterC#show ip bgp BGP table version is 8, local router ID is 200.200.200.66 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 *> 11.0.0.0 0.0.0.0 0 32768 i *> 12.0.0.0 200.200.200.65 0 300 200 i *> 193.10.2.0 200.200.200.65 0 0 300 i Origin codes L'origine des entrées : i entrée originée d'un IGP e entrée originée d'un EGP? entrée avec une origine non établie. Normalement est un routeur BGP appris à partir d'un IGP Network adresse IP du réseau Next Hop adresse IP du prochain saut. Une entrée 0.0.0.0 indique que le routeur a une route non-bgp vers la destination 53
show ip bgp RouterC#show ip bgp BGP table version is 8, local router ID is 200.200.200.66 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 *> 11.0.0.0 0.0.0.0 0 32768 i *> 12.0.0.0 200.200.200.65 0 300 200 i *> 193.10.2.0 200.200.200.65 0 0 300 i Metric Si affichée, indique une métrique du système interautonome LocPrf Préférence locale, définie avec la commande set localpreference. La valeur défaut est de 100 Weight Poids d'une route, définie par les filtres de l'as Path Le chemin vers la destination 54
Comment vérifier la config BGP Si un routeur BGP n'apparaît dans les tables BGP, on peut utiliser show ip bgp neighbors pour vérifier les connexions établies RTA#show ip bgp neighbors BGP neighbor is 172.24.1.18, remote AS 200, external link BGP version 4, remote router ID 172.16.1.1 BGP state = Established, up for 00:03:25 Last read 00:00:25, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: Route refresh: advertised and received Address family IPv4 Unicast: advertised and received Received 7 messages, 0 notifications, 0 in queue Sent 8 messages, 0 notifications, 0 in queue Route refresh request: received 0, sent 0 Minimum time between advertisement runs is 30 seconds 55
Voisinage BGP Split Horizon Des routes apprises via IBGP ne sont pas propagées vers d'autres nœuds IBGP Cela évite la formation de boucles de routage Pour qu'un routeur IBGP apprend sur les autres routeurs IBGP à l'intérieur d'un AS, ils doivent être connectés en full mesh Il suffit qu'une connexion TCP soit possible, pas besoin d'être directement connecté 56
Synchronisation des AS Quand un routeur IBGP reçoit un update à partir d'un pair IBGP, il vérifie cette destination avec un IGP, comme EIGRP ou OSPF Si le routeur IBGP ne peut pas trouver le réseau dans la table de routage IGP, il n'annonce pas cette destinations aux autres routeurs BGP 57
Synchronisation des AS Si la route n'est pas atteignable via IGP, des routeurs non-bgp ne seront pas capables de directionner le trafic qui traverse le AS vers sa destination Il est inutile d'annoncer des routes aux pairs externes si les données envoyées à travers cet AS seront rejetés par un routeur non-bgp tôt ou tard 58
Synchronisation des AS La règle de synchronisation BGP empêche un routeur BGP (RTC) d'annoncer aux pairs extérieurs (ISP2) les destinations (192.213.1.0/24) apprises par un voisin intérieur (RTA) à moins que cette destination soit vérifiable via IGP (RTD and RTB). Si un routeur vérifie la route via IGP, il assume que cette route a déjà été annoncé dans l'as et que le réseau est atteignable 59
Synchronisation des AS Si un routeur IBGP (RTC) a une route IGP vers cette destination, la route est considérée synchronisée et la route sera annoncé aux autres pairs BGP (ISP2) 60
Synchronisation des AS L'injection d'une route BGP dans un AS est assez coûteuse La redistribution des routes BGP ver un IGP représente une surcharge que certains routeurs ne sont pas capables de tolérer une table BGP représente autour de 200MB De plus, connaître toutes les routes BGP à l'intérieur d'un AS n'est pas nécessaire 61
Synchronisation des AS L'IOS Cisco a une option no synchronization Cette commande donne la possibilité de propager des routes sans les avoir vérifié 62
Synchronisation des AS Dans la pratique, deux situations permettent d'arrêter la synchronisation sans danger : Quand tous les routeurs dans l'as sont des routeurs IBGP (et par conséquent totalement connectés) La liaison interne est garantie par l'interconnexion en mesh IBGP Lorsque l'as n'est pas un AS de passage 63
Le routage BGP BGP est un protocole flexible car il reste essentiellement simple Dans BGP, les routes sont échangées avec des messages UPDATE Lorsqu'un routeur reçoit un message UPDATE, BGP applique les politiques de routage et les filtres sur les mises-à-jour, avant de repasser les nouvelles aux autres routeurs L'implémentation BGP de Cisco stocke les mises-à-jour dans une table séparée de la table de routage IP : show ip bgp! 64
Utilisation d'un Route-map avec BGP BGP(config)#route-map SET_M_5 permit 10 BGP(config-route-map)#match ip address 1 BGP(config-route-map)#set metric 5 BGP(config-route-map)#exit BGP(config)#access-list 1 permit 1.1.1.0 0.0.0.255 BGP(config)#route bgp 100 BGP(config-route)#neighbor 172.16.20.2 remote-as 300 BGP(config-route)#neighbor 172.16.20.2 route-map SET_M_5 out Une mise-à-jour sous la forme 1.1.1.x correspondra à l'access list et sera donc annoncée avec une métrique "cinq" (5) Un route-map peut être appliqué à l'entrée (mot clé in) ou à la sortie des paquets UPDATE BGP, avec le mot clé out 65
Utilisation des Attributs BGP Lorsqu'un routeur BGP reçoit des updates à partir de plusieurs systèmes autonomes qui indiquent des chemins différents vers la même destination, BPG doit choisir LE meilleur chemin Une fois choisi, BGP annonce ce meilleurs chemin à ses voisins la décision est fondée sur la valeur des attributs (tels que NEXT_HOP ou LOCAL_PREF) inclus dans les updates, mais aussi par d'autres facteurs configurables sur la machine 66
Quelques Attributs BGP importants ORIGIN NEXT_HOP AS_PATH LOCAL_PREF Weight MULTI_EXIT_DISC (MED) ATOMIC_AGGREGATE 67
Résumé de la procédure du choix des routes " BGP choisit un seul chemin (pas d'équilibrage de charge) " Quand un chemin est choisi, il est placé dans la table de routage et annoncé aux autres routeurs " L'ordre de choix : 1. Si le prochain saut est inaccessible, ignore le chemin 2. Préférence aux chemins avec le plus grand poids 3. Préférence aux chemins avec la plus grande préférence locale 4. Préférence aux chemins indiqués par le processus BGP 5. Préférence aux chemins avec le plus court AS_PATH 6. Préférence aux chemins avec le plus petit type d'origine IGP < EGP < Incomplete 7. Préférence aux chemins avec le plus petit attribut MED 8. Préférence aux chemins extérieurs 9. Préférence aux chemins avec le plus proche voisin IGP 10. Préférence aux chemins avec la plus petite adresse IP, comme indiqué par BGP router ID. 68
The ORIGIN attribute The origin attribute provides information about the origin of the route. The origin of a route can be one of three values: IGP The route is interior to the originating AS, and is represented by the letter i. This value is set when the network router configuration command is used to inject the route into BGP. EGP The route is learned via the Exterior Gateway Protocol (EGP), is represented by the letter e. Incomplete The origin of the route is unknown or learned in some other way, and is represented by the?. An origin of Incomplete occurs when a route is redistributed into BGP. 69
The ORIGIN attribute Use a route map and the set origin command to manipulate the ORIGIN attribute. route-map SET_ORIGIN_OSPF permit 10 set origin igp 70
NEXT_HOP The NEXT_HOP attribute is a well-known mandatory attribute In terms of an IGP, such as RIP, the next hop to reach a route is the IP address of the router that has announced the route. The NEXT_HOP concept with BGP is slightly more elaborate. For EBGP sessions, the next hop is the IP address of the neighbor that announced the route For IBGP sessions, for routes originated inside the AS, the next-hop is the IP address of the neighbor that announced the route. For routes injected into the AS via EBGP, the next hop learned from EBGP is carried unaltered into IBGP. The next hop is the IP address of the EBGP neighbor from which the route was learned. 71
NEXT_HOP and Multiaccess Media Routers C and D are in AS 300 are running OSPF. Router C is running BGP with Router A. Router C can reach network 180.20.0.0 via 170.10.20.3. When Router C sends a BGP update to Router A regarding 180.20.0.0, it sets the next hop attribute to 170.10.20.3, instead of its own IP address (170.10.20.2). This is because Routers A, B, and C are in the same subnet, and it makes more sense for Router A to use Router D as the next hop, rather than taking an extra hop via Router C. 72
NEXT_HOP and Multiaccess Media Router C router bgp 300 neighbor 170.10.20.1 remote-as 100 neighbor 170.10.20.1 next-hop-self Routers A, C, and D, use a common media such as Frame Relay (or any NBMA cloud). Router C advertises 180.20.0.0 to Router A with a next hop of 170.10.20.3, just as it would do if the common media were Ethernet. The problem is that Router A does not have a direct permanent virtual connection (PVC) to Router D and cannot reach the next hop, so routing will fail. To remedy this situation, use the neighbor next-hop-self router configuration command. The neighbor next-hop-self command causes Router C to advertise 180.20.0.0 with the next hop attribute set to 170.10.20.2. 73
AS_PATH private AS numbers BGP uses the AS_PATH attribute as part of the routing updates (UPDATE packet) to ensure a loop-free topology on the Internet. Each route that gets passed between BGP peers will carry a list of all AS numbers that the route has already been through. If the route is advertised to the AS that originated it, that AS will see itself as part of the AS_PATH attribute list and will not accept the route. EBGP: BGP speakers prepend their AS numbers when advertising routing updates to other autonomous systems (external peers). IBGP: When the route is passed to a BGP speaker within the same AS, the AS_PATH information is left intact. 74
AS_PATH private AS numbers AS_PATH information is one of the attributes, BGP looks at to determine the best route to take to get to a destination. In comparing two or more different routes, given that all other attributes are identical, a shorter path is always preferred. In case of a tie in AS_PATH length, other attributes are used to make the decision. Private AS numbers cannot be leaked to the Internet because they are not unique. Cisco has implemented a feature, remove-private-as, to strip private AS numbers out of the AS_PATH list before the routes get propagated to the Internet. 75
AS_PATH RTB(config)#router bgp 1 RTB(config-router)#neighbor 172.16.20.2 remote-as 65001 RTB(config-router)#neighbor 192.168.6.3 remote-as 7 RTB(config-router)#neighbor 192.168.6.3 remove-private-as Note how RTB is using the remove-private-as keyword in its neighbor connection to AS7. 76
The WEIGHT attribute AS 100 2000 AS 200 1000 The weight attribute is a special Cisco attribute that is used in the path selection process when there is more than one route to the same destination. The weight attribute is local to the router on which it is assigned, and it is not propagated in routing updates. By default, the weight attribute is 32768 for paths that the router originates and zero for other paths. Routes with a higher weight are preferred when there are multiple routes to the same destination. 77
Higher weight preferred weight 2000 weight 1000 AS 100 2000 RouterC AS 200 1000 Using the neighbor weight Command to Set the Weight Attribute The following configuration for Router C uses the neighbor weight router configuration command: Router C router bgp 300 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 weight 2000 neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 weight 1000 This configuration sets the weight of all route updates from AS 100 to 2000, and the weight of all route updates coming from AS 200 to 1000. Result: The higher weight assigned to route updates from AS 100 causes Router C to send traffic through Router A. 78
Regular Expressions Character ^ $ _. * Description Matches the beginning of the input string. Matches the end of the input string. Matches a space, comma, left brace, right brace, the beginning of an input string, or the ending of an input stream Matches any single character Matches 0 or more single- or multiplecharacter patterns. 79
The WEIGHT attribute AS 100 AS 200 weight 2000 weight 1000 RouterC Using an Access List to Set the Weight Attribute The following commands on Router C use access lists and the value of the AS_path attribute to assign a weight to route updates: Router C router bgp 300 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 filter-list 5 weight 2000 neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 filter-list 6 weight 1000 ip as-path access-list 5 permit ^100$ ip as-path access-list 6 permit ^200$ 80
AS 100 AS 200 weight 2000 weight 1000 RouterC Using a Route Map to Set the Weight Attribute The following commands on Router C use a route map to assign a weight to route updates: Router C router bgp 300 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 route-map SET-WEIGHT-IN in neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 route-map SET-WEIGHT-IN in ip as-path access-list 5 permit ^100$ route-map SET-WEIGHT-IN permit 10 match as-path 5 set weight 2000 route-map SET-WEIGHT-IN permit 20 set weight 1000 81
The LOCAL_PREF Attribute Well-known discretionary attribute Degree of preference given to a route to compare it with other routes for the same destination Higher LOCAL_PREF values are preferred Local to the AS Exchanged between IBGP peers only It is not advertised to EBGP peers Unlike the weight attribute, which is only relevant to the local router, the local preference attribute is part of the routing update and is exchanged among routers in the same AS (ibgps). 82
AS 256 receives route updates for network 170.10.0.0 from AS 100 and AS 300. There are two ways to set local preference: Using the bgp default local-preference command Using a Route Map to Set Local Preference 83
Local Pref = 150 All traffic in AS 256 destined for 170.10.0.0 (and other ASes) Local Pref = 200 Router C router bgp 256 Higher Local Preference is preferred! bgp default local-preference 150 Router D router bgp 256 bgp default local-preference 200 84
Local Pref = 150 Higher Local Preference is preferred! All traffic in AS 256 destined for 170.10.0.0 (and other AS s) Local Pref = 200 Router D router bgp 256 neighbor 3.3.3.4 remote-as 300 neighbor 3.3.3.4 route-map SET_LOCAL_IN in neighbor 128.213.11.1 remote-as 256 ip as-path access-list 7 permit ^300$ route-map SET_LOCAL_IN permit 10 match as-path 7 set local-preference 200 route-map SET_LOCAL_IN permit 20 85
AS_PATH Attribute Router D router bgp 256 neighbor 3.3.3.4 remote-as 300 neighbor 3.3.3.4 route-map SET_LOCAL_IN in neighbor 128.213.11.1 remote-as 256 ip as-path access-list 7 permit ^300$ route-map SETLOCALIN permit 10 match as-path 7 set local-preference 200 route-map SETLOCALIN permit 20 This command creates a special kind of access list that looks at the AS_PATH attribute. The ip as-path access-list command is used with route maps to match part (or all) of a route s AS PATH. Regular expressions are used with this command to provide specificity. 86
The MED attribute Multi-Exit Discriminator Attribute A lower MED value is preferred over a higher MED value. The default value of the MED attribute is 0. Unlike local preference, the MED attribute is exchanged between AS s, but a MED attribute that comes into an AS does not leave the AS. When an update enters the AS with a certain MED value, that value is used for decision making within the AS. When BGP sends that update to another AS, the MED is reset to 0. Unless otherwise specified, the router compares MED attributes for paths from external neighbors that are in the same AS. If you want MED attributes from neighbors in other AS to be compared, you must configure the bgp always--compare-med command. 87
By default, BGP compares the MED attributes of routes coming from neighbors in the same external AS as the route (such as AS 300). Router A can only compare the MED attribute coming from Router C (120) to the MED attribute coming from Router D (200) even though the update coming from Router B has the lowest MED value. Router A router bgp 100 neighbor 2.2.2.1 neighbor 3.3.3.3 neighbor 4.4.4.3 Router B router bgp 400 neighbor 4.4.4.4 neighbor 4.4.4.4 SETMEDOUT neighbor 5.5.5.4 route-map SETMEDOUT set metric 50 remote-as 300 remote-as 300 remote-as 400 remote-as 100 route-map out remote-as 300 permit 10 RouterA can only compare MEDs from the same AS Router C router bgp 300 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 route-map neighbor 5.5.5.5 remote-as neighbor 1.1.1.2 remote-as route-map SETMEDOUT permit 10 set metric 120 Router D router bgp 300 neighbor 3.3.3.2 neighbor 3.3.3.2 neighbor 1.1.1.1 route-map SETMEDOUT set metric 200 SETMEDOUT out 400 300 remote-as 100 route map SETMEDOUT out remote-as 300 permit 10 88
To force Router A to include updates for network 180.10.0.0 from Router B in the comparison, use the bgp alwayscompare-med router configuration command on Router A: Router A will choose Router B as the best next hop for reaching network 180.10.0.0 (assuming that all other attributes are the same). Router A router bgp 100 neighbor 2.2.2.1 remote-as 300 neighbor 3.3.3.3 remote-as 300 neighbor 4.4.4.3 remote-as 400 bgp always-compare-med Router B router bgp 400 neighbor 4.4.4.4 remote-as 100 neighbor 4.4.4.4 route-map SETMEDOUT out neighbor 5.5.5.4 remote-as 300 route-map SETMEDOUT permit 10 set metric 50 Router C router bgp 300 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 route-map SETMEDOUT out neighbor 5.5.5.5 remote-as 400 neighbor 1.1.1.2 remote-as 300 route-map SETMEDOUT permit 10 set metric 120 Router D router bgp 300 neighbor 3.3.3.2 neighbor 3.3.3.2 neighbor 1.1.1.1 route-map SETMEDOUT set metric 200 remote-as 100 route map SETMEDOUT out remote-as 300 permit 10 89
BGP Golden Rules Attribute Weight Local-Preference AS-Path MED Direction Applied Traffic Flow Affected Inbound Outbound Inbound Outbound Outbound Inbound Outbound Inbound 90
ATOMIC_AGGREGATE Well-known discretionary 172.16.0.0/24 172.16.1.0/24 172.16.2.0/24 172.16.3.0/24 172.16.0.0/22 (Aggregate) 10.1.1.1 10.1.1.2 172.16.0.0/24 172.16.1.0/24 RTA RTB 172.16.2.0/24 172.16.3.0/24 AS 1 AS 2 The purpose is to create an aggregate (summarized) entry in the BGP table. There are two ways to create an aggregate address under BGP: 1. Create a static entry in the routing table for the aggregate address and then advertise it with the network command. 2. Use the aggregate-address command. An aggregate is created only if a more-specific route to the aggregate exists in the BGP table. 91
172.16.0.0/24 172.16.1.0/24 172.16.2.0/24 172.16.3.0/24 172.16.0.0/22 (Aggregate) Example 1: Aggregating Local Routes 172.16.0.0/24 10.1.1.1 10.1.1.2 172.16.1.0/24 RTA RTB 172.16.2.0/24 172.16.3.0/24 AS 1 AS 2 show ip bpg 172.16.0.0 will display that this route has the atomic-aggregate attribute set. RTB(config-router)#aggregate-address 172.16.0.0 255.255.252.0 RTA#show ip bgp 172.16.0.0 255.255.252.0 BGP routing table entry for 172.16.0.0/22, version 18 Paths: (1 available, best #1) <text omitted> Origin IGP, localpref 100, valid, external, atomic- aggregate, best 92
BGP Route Filtering Route filtering empowers a BGP speaker to choose what routes to exchange with any of its BGP peers. Route filtering is the cornerstone of policy routing. An AS can identify inbound traffic it is willing to accept, by filtering its outbound advertisements An AS can control what routes its outbound traffic uses, by specifying the routes to accept from EBGP neighbors Even more precise policies can be defined via route filters. For example, BGP routes passing through a filter can have their attributes manipulated to affect the best-path decision process. You can apply route filters to or from a particular neighbor by using the distribute-list command. 93
RTA filters update to RTC so it does not include the 192.69.10.0/24 network. RTA(config)#router bgp 3 RTA(config-router)#neighbor 172.16.1.2 remote-as 3 RTA(config-router)#neighbor 172.16.20.1 remote-as 1 RTA(config-router)#neighbor 172.16.20.1 distribute-list 1 out RTA(config-router)#exit RTA(config)#access-list 1 deny 192.69.10.0 0.0.0.255 RTA(config)#access-list 1 permit any 94
Default Routes It is important to control default information in BGP because improper configuration can cause serious Internet routing problems. For example, a misconfigured BGP speaker could end up flooding a default route to all of its neighbors and quickly find itself consumed with default routed traffic from surrounding autonomous systems. To protect against misadvertisements, the Cisco IOS provides a way to target default information at a specific neighbor by using the defaultoriginate option with the neighbor command: RTC(config)#router bgp 3 RTC(config-router)#neighbor 172.16.20.1 remote-as 1 RTC(config-router)#neighbor 172.16.20.1 default-originate 95
Default Routes If a BGP router is to be configured to advertise a default to all of its peers, use the network command shown as follows: RTC(config)#router bgp 3 RTC(config-router)#neighbor 172.16.20.1 remote-as 1 RTC(config-router)#neighbor 172.17.1.1 remote-as 2 RTC(config-router)#network 0.0.0.0 96
Symmetry Symmetry is achieved when traffic leaving the AS from one exit point comes back through the same point. Symmetry always exists if an AS maintains a single connection to outside networks. An asymmetrical traffic flow can result in increased delay and other routing problems. In general, customers and providers would like to see their traffic come back by way of the same point or close to the same point that it left the AS. To promote symmetry, choose a primary path and configure routing policies that force traffic to flow along this path. A default route with a low administrative distance or a high Local Preference might serve to control the flow of outbound traffic, but inbound traffic can be more complex to manipulate. Through appropriate planning and use of BGP attributes and route filters, an AS can control which paths the outside world finds most desirable. 97
Load Balancing Load balancing is the capability to divide data traffic over multiple connections. A BGP speaker may learn two identical EBGP paths for a prefix from a neighboring AS. If this happens, it will choose the path with the lowest route ID as the best path. This best path is installed in the IP routing table. To enable BGP load balancing over equal cost paths, use the maximum-paths command, which has the following syntax: Router(config-router)# maximum-paths number By default, BGP will install only one path to the IP routing table. 98
Les risques de BGP appropriation de routes Le cas du FAI pakistanais et de YouTube Le dimanche 24 février 2008, Pakistan Telecom (AS17557) a annoncé sans autorisation le préfixe 208.65.153.0/24. Selon l'ambassade du Pakistan, c'était une mesure gouvernementale destinée à bloquer l'accès de YouTube en Pakistan L'un des FAI de Pakistan Telecom (PCCW Global - AS3491) a transmis cet annonce sur l'internet, ce qui a résulté dans le détournement global du trafic destiné à YouTube Le début AS36561 (YouTube) annonce 208.65.152.0/22. Dimanche 24 février 2008, 18:47 (UTC) : AS17557 (Pakistan Telecom) commence à annoncer 208.65.153.0/24 AS3491 (PCCW Global Hong Kong) retransmet l'annonce Les routeurs du monde entier reçoivent l'annonce et le trafic de YouTube est redirigé vers le Pakistan 99
Suite et fin Dimanche 24 février 2008, 20:07 (UTC): AS36561 (YouTube) annonce 208.65.153.0/24. Avec deux préfixes identiques, des politiques de routage BGP telles que le chemin le plus court font leur choix AS17557 (Pakistan Telecom) continue à recevoir une partie du trafic destiné à YouTube. Dimanche 24 février 2008, 20:18 (UTC): AS36561 (YouTube) annonce 208.65.153.128/25 et 208.65.153.0/25 (et aussi /26) À cause du préfixe plus long, chaque routeur qui reçoit cet annonce choisit de s'adresser à YouTube Dimanche 24 février 2008, 20:51 (UTC): Pakistan Telecom via AS3491 (PCCW Global) annonce les préfixes /25 et /26 La plupart des routeurs continu à s'adresser à YouTube à cause de la longueur du chemin Dimanche 24 février 2008, 21:01 (UTC): AS3491 (PCCW Global) retire tous les préfixes annoncés par AS17557 (Pakistan Telecom), finissant le détournement des routes. 100