User Tools

Site Tools


informatique:cisco:bgp

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:cisco:bgp [2008/12/15 15:16] 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 qui utilise le port tcp/179 pour établir des communications entre routeurs voisins.+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 17: Line 19:
     * 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 numéros d'AS vont de 1 à 65535, les numéros de 64512 à 65535 son réservé pour un usage privé
  
Line 34: Line 36:
     * **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     * **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** (type code 1) : indique l'origine de la route (IGP, EGP ou incomplete (redistribution)) +      * en EBGP, le next-hop est le routeur qui annonce la route 
-    * **local preference** (type code 5) échangé au sein de l'AS en IBGP uniquement, une valeur supérieure est préférée+      * 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) 
 +    * **origin** (type code 1) : indique l'origine de la route (IGP, EGP ou incomplète (redistribution)) 
 +    * **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)     * **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 et est local (pas annoncé aux voisins)+    * **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 La priorité pour choisir un chemin est : weight > local pref > originate route > AS-Path > MED
Line 67: Line 71:
   (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   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===== =====Configuration avancée=====
  
 ====Peer group==== ====Peer group====
  
 +Local à chaque routeur, permet de factoriser la configuration de peers.
  
-=====Vérifications=====+====Annoncer un préfixe====
  
-Lister les annonces BGP sur un routeur +Annoncer les réseaux de 207.0.0.0/10 à 207.0.0.0/18 : 
-  show bgp ipv4 unicast+  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/1
 + description vers ISP_R1
 + ip address 100.0.1.1 255.255.255.0
 +!
 +interface FastEthernet0/2
 + 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 Environments: Sample Configurations]]
 +
 +=====Vérifications=====
 +
 +Lister les annonces BGP sur un routeur
 +<code bash>
 +show bgp ipv4 unicast
 +</code>
  
 Lister les voisins Lister les voisins
-  show 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 *+clear ip bgp * 
 +</code>
 ou ou
-  clear ip bgp 192.168.0.0+<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.1229354179.txt.gz · Last modified: 2013/10/14 20:51 (external edit)