User Tools

Site Tools


informatique:cisco:bgp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
informatique:cisco:bgp [2008/12/14 19:17] – créée pteuinformatique:cisco:bgp [2013/10/14 20:44] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ======BGP====== ======BGP======
  
-BGP est un protocole de routage standart inter-domaine.+BGP (Border Gateway Protocol) est le protocole de routage standard inter-domaine (**EGP**, Exterior Gateway Protocol) qui utilise le port tcp/179 pour établir des communications entre routeurs voisins. 
 + 
 +Le BGP permet un routage administratif basé sur la méfiance de ses voisins, ce qui signifie qu'à la différence des protocoles de routage **IGP** (Interior Gateway Protocol) comme l'OSPF, RIP ou EIGRP qui font confiance à leurs voisins et cherchent le chemin le plus court, le BGP permet de contrôler la façon de router les paquets entrant et sortant.
  
   * 2 déclinaisons du BGP   * 2 déclinaisons du BGP
     * iBGP pour le routage intra-domaine     * iBGP pour le routage intra-domaine
-    * EBGP pour le routage inter-domaine+    * eBGP pour le routage inter-domaine
   * 3 tables   * 3 tables
     * table des voisins     * table des voisins
Line 14: Line 16:
   * 4 types de messages :   * 4 types de messages :
     * Open     * Open
-    * Keepalive+    * Keepalive (périodiques toutes les 60s)
     * Update     * Update
     * Notification     * Notification
-  * la **synchronisation**, si elle est activée, invalide un préfix annoncé en IBGP mais dont la route est inconnue en IGP : il ne sera pas annoncé dans EBGP. L asynchro peut être désactivée si on utilise de l'IBGP full-mesh. +  * la **synchronisation**, si elle est activée, invalide un préfixe annoncé en IBGP mais dont la route est inconnue en IGP : il ne sera pas annoncé dans EBGP. La synchro peut être désactivée si on utilise de l'IBGP full-mesh. 
-  * une **communauté** est un groupe de destinations qui partagent certaine propriétés ; elles utilisent un tag ; celà permet un filtrage cohérent+  * une **communauté** est un groupe de destinations qui partagent certaine propriétés ; elles utilisent un tag ; cela permet un filtrage cohérent 
 +  * les numéros d'AS vont de 1 à 65535, les numéros de 64512 à 65535 son réservé pour un usage privé
  
 =====Les attributs===== =====Les attributs=====
  
-Les attributs BGP ont différentes caractéritiques :+Les attributs BGP ont différentes caractéristiques :
   * **well-known** qui doivent être reconnus par toutes les implémentations de BGP car ils sont transmis aux peers BGP.   * **well-known** qui doivent être reconnus par toutes les implémentations de BGP car ils sont transmis aux peers BGP.
     * **mandatory** (AS-path, next-hop, origin) : ils sont présents dans chaque //update message//     * **mandatory** (AS-path, next-hop, origin) : ils sont présents dans chaque //update message//
Line 31: Line 34:
  
 Ils peuvent être annoncés dans les //routing update// sauf le //weight//. Ils peuvent être annoncés dans les //routing update// sauf le //weight//.
-    * **AS-path** : c'est un "traceroute" d'AS intégré à chaque //route update// : il contient la liste des ASs traversés+    * **AS-path** ou AS_Sequence (type code 2) : c'est un "traceroute" d'AS intégré à chaque //route update// : il contient la liste des ASs traversés, dernier traversé en premier ; l'AS-Path assure une topologie sans boucle
     * **next-hop**     * **next-hop**
-    * **origin** : indque l'origine de la route (IGP, EGP ou incomplete+      * en EBGP, le next-hop est le routeur qui annonce la route 
-    * **local preference** +      * en IBGP c'est le voisin qui annonce la route sauf qui la route est apprise par EBGP, auquel cas le next-hop sera le même que celui d'EBGP (donc le routeur qui a annoncé la route) 
-    * **MED** (Multi-Exit Discriminator) : ~ métrique +    * **origin** (type code 1) indique l'origine de la route (IGP, EGP ou incomplète (redistribution)
-    * **weight** : celui-là est propriétaire Cisco et est local (pas annoncé aux voisins)+    * **local preference** (type code 5) échangé au sein de l'AS en IBGP uniquement, une valeur supérieure est préférée (vaut 100 par défaut) 
 +    * **MED** (Multi-Exit Discriminator) (type code 4) : ~ métrique => la plus faible est la meilleure ; indique le point d'entrée préféré pour un AS multi-homed (plusieurs connexions à des AS externes) 
 +    * **weight** : celui-là est propriétaire Cisco ; il est local au routeur (pas annoncé aux voisins) 
 + 
 +La priorité pour choisir un chemin est : weight > local pref > originate route > AS-Path > MED 
 + 
 + 
 +=====Machine d'état BGP===== 
 + 
 +6 états différents : 
 +  * **Idle** : le routeur est prêt à établir une session BGP. 
 +  * **Connect** : la connexion est établie. Il envoie un message //Open// et passe à l'état **Open Sent** 
 +  * **Active** : une connexion est établie par un peer ; il envoie un message //Open// et passe à l'état **Open Sent** 
 +  * **Open Sent** : attente de réception d'un message open du peer ; sur réception, envoie un //Keep alive// et passe à l'état **Open Confirm** 
 +  * **Open confirm** attente d'un //Keep Alive// venant du peer, puis passe à l'état **Established**. 
 +  * **Established** communication bidirectionnelle établie ; commence à envoyer des //updates// et des //Keep alive//.
  
  
Line 51: Line 69:
 Déclarer la Loopback0 comme IP source : Déclarer la Loopback0 comme IP source :
  
-   (config-router)#neighbor 10.10.10.2 update-source loopback0+  (config-router)#neighbor 10.10.10.2 update-source loopback0
  
-Déclarer des réseaux :+Déclarer le réseau 10.10.10.0/24 (le masque doit matcher pour que le réseau soit effectivement annoncé) : 
 + 
 +  network 10.10.10.0 mask 255.255.255.0 
 + 
 +=====Détermination du meilleur chemin===== 
 +cf : BGP Best Path Selection Algorithm 
 + 
 +  * highest WEIGHT : c'est un paramètre propriétaire Cisco, pas toujours/souvent utilisé 
 +  * highest LOCAL_PREF : par défaut = 100 
 +  * locally originated via a //network// or //aggregate// BGP subcommand or through redistribution from an IGP 
 +  * shortest AS_PATH 
 +  * lowest origin type (IGP < EGP < INCOMPLETE) 
 +  * lowest multi-exit discriminator (MED) : uniquement si les next-hop appartiennent au même AS 
 +  * prefer eBGP over iBGP paths 
 +  * path with the lowest IGP metric to the BGP next hop 
 +  * When both paths are external, prefer the path that was received first (the oldest one) 
 +  * Prefer the route that comes from the BGP router with the lowest router ID 
 +  * Prefer the path that comes from the lowest neighbor address. 
 +=====Configuration avancée===== 
 + 
 +====Peer group==== 
 + 
 +Local à chaque routeur, permet de factoriser la configuration de peers. 
 + 
 +====Annoncer un préfixe==== 
 + 
 +Annoncer les réseaux de 207.0.0.0/10 à 207.0.0.0/18 : 
 +  ip prefix-list 207.0.0.0/8 ge 10 le 18 
 +(**ge** = Greater or Equal != **le** pour Less or Equal) 
 + 
 +====Agréger des routes==== 
 + 
 +On utilise la commande ''aggregate-address''
 + 
 +  router bgp 300 
 +   network 200.52.1.192 mask 255.255.255.224 
 +   aggregate-address 200.52.1.0 255.255.255.0 
 + 
 +Dans le cas ci-dessus le routeur annoncera les 2 réseaux 200.52.1.192/27 ET 200.52.1.0/24. Si on ne veux annoncer que les agrégats de route on doit utiliser la commande ''summary-only''
 +  aggregate-address 200.52.1.0 255.255.255.0 summary-only 
 + 
 +====route-reflector==== 
 + 
 +Sur le router "route-reflector, on doit déclarer le voisin, puis déclarer que c'est un //client-reflector//
 +  router bgp 64000 
 +   neighbor 165.50.12.2 remote-as 64000 
 +   neighbor 165.50.12.2 route reflector-client 
 + 
 +====Communauté==== 
 + 
 +Pour partager une communauté avec le voisin 10.0.0.1 
 +  neighbor 10.0.0.1 send-community 
 + 
 +====Load Sharing==== 
 + 
 +Le load sharing permet d'utiliser plusieurs liaisons WAN de façon statique (sans répartition de charge à la différence du load-balancing), ainsi que du fail-over en cas de panne d'une liaison. 
 + 
 +===Double raccordement au même ISP=== 
 + 
 +On considère un router WAN relié en eBGP à 2 routeurs d'un même ISP. Il faut monter les adjacences eBGP et ajouter la commande ''maximum-paths 2'' pour installer jusqu'à 2 paths dans la table de routage. 
 + 
 +Exemple : notre AS=100 et l'AS de notre ISP=200. Configuration de notre routeur : 
 +<code> 
 +                     R1 
 +                   / 
 +AS=100  Router_WAN         AS=200 
 +                   \ 
 +                     R2 
 +</code> 
 + 
 +<code bash> 
 +interface Loopback0 
 + ip address 10.0.0.1 255.255.255.0 
 +
 +interface FastEthernet0/
 + description vers ISP_R1 
 + ip address 100.0.1.1 255.255.255.0 
 +
 +interface FastEthernet0/
 + description vers ISP_R2 
 + ip address 100.0.2.1 255.255.255.0 
 +
 +router bgp 100 
 + neighbor 100.0.1.2 remote-as 200 
 + neighbor 100.0.2.2 remote-as 200 
 + network 10.0.0.0 
 + ! détermine le nombre de path différents à installer dans la table de routage 
 + maximum-paths 2 
 +</code> 
 + 
 +===as-path prepend=== 
 + 
 +L'AS-path prepend permet à un routeur BGP d'alourdir l'AS-path de certaines routes afin de déterminer quel routeur sera privilégier pour tel ou tel réseau. 
 + 
 + 
 +Dans ce cas on a cette architecture : 2 routeurs WAN locaux vers 2 routeurs d'un même ISP ; avec des adjacences BGP "en carré"
 +<code> 
 +               R1--------------R3 
 +AS10 (local)                     AS11 (ISP) 
 +               R2--------------R4 
 +</code> 
 + 
 +J'ai 2 réseaux locaux 10.0.1.0/24 et 10.0.2.0/24 ; mon n° d'AS est 10. Je veux que le premier réseau soit routé par mon ISP (AS=11) vers R1, et le second vers R2. 
 + 
 +Sur R1 : 
 +<code bash> 
 +router bgp 1 
 + network 10.0.1.0 mask 255.255.255.0 
 + network 10.0.2.0 mask 255.255.255.0 
 + neighbor 192.168.0.1 remote-as 10 
 + neighbor 192.168.0.1 route-map rm_R1 out 
 +
 +access-list 1 permit 10.0.1.0 
 +access-list 2 permit 10.0.2.0 
 +
 +route-map rm_R1 permit 10 
 + match ip address 1 
 +!          
 +route-map R101-103-MAP permit 20 
 + match ip address 2 
 + ! on "alourdi" l'AS-path vers le réseau qui doit passer par R2 
 + set as-path prepend 11 11 
 +</code> 
 + 
 +On "alourdi" l'AS-path (on ajoute dans l'entête 2 numéros d'AS = 2 "sauts") des routes annoncées en BGP au routeur de l'ISP, afin que celui-ci préfère R2. R2 aura la conf inverse, c'est-à-dire qu'il va alourdir l'AS-path du réseau 10.0.1.0/24 afin que le routeur de l'ISP envoie la trafic vers R1. 
 + 
 +===Liens=== 
 + 
 +  * [[http://www.cisco.com/en/US/tech/tk365/technologies_configuration_example09186a00800945bf.shtml|Load Sharing with BGP in Single and Multihomed EnvironmentsSample Configurations]] 
 + 
 +=====Vérifications=====
  
-   network 10.10.10.0 mask 255.255.255.0 
-   
 Lister les annonces BGP sur un routeur Lister les annonces BGP sur un routeur
-  sh bgp ipv4 unicast+<code bash> 
 +show bgp ipv4 unicast 
 +</code>
  
 Lister les voisins Lister les voisins
-  sh ip bgp neighbors+<code bash> 
 +show ip bgp neighbors 
 +</code>
  
 Pour redémarrer toutes les sessions BGP Pour redémarrer toutes les sessions BGP
-  clear bgp all+<code bash> 
 +clear bgp all 
 +clear ip bgp * 
 +</code> 
 +ou 
 +<code bash> 
 +clear ip bgp 192.168.0.0 
 +</code> 
 + 
 +Voir la liste de préfixes : 
 +<code bash> 
 +show ip prefix-list 
 +</code> 
 + 
 + 
 +=====Liens utiles=====
  
 +  * [[http://www.cisco.com/en/US/docs/ios/12_2/ip/configuration/guide/1cfbgp.html|Configuring BGP (cisco.com)]]
 +  * [[http://www.cisco.com/en/US/tech/tk365/technologies_configuration_example09186a00800945bf.shtml|Load Sharing with BGP in Single and Multihomed Environments: Sample Configurations]]
 +  * [[http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a00800c95bb.shtml|BGP case studies]]
informatique/cisco/bgp.1229282234.txt.gz · Last modified: 2013/10/14 20:52 (external edit)