Introduction :

Nous allons voir les spécificités de la MED (Multi Exit Discriminator) aussi appelé metric.

C'est la commande metric dans la configuration.
On s'en sert pour influencer le traffic entrant dans l'AS. Attribut non standard, et non transmissible.
Si le voisin ne connait pas cet attribut, il n'est pas annoncé aux voisin iBGP, il ne sort pas de l'AS voisine.
Valeur par défaut :

  • routes redistribués depuis IGP :
  • configurable via default-metric (fonctionne pour toutes les routes sauf static et connected)
  • sinon c'est la metric de l'IGP
  • routes redistribuées static ou connected : 0
  • sinon 0

La MED reçu d'un AS n'est pas annoncée à un autre AS (remis à 0).
Permet d'influencer uniquement les AS voisins.

Topologie pour le test :

Topologie de tests

R2, R3 et R4 annonces le préfixe 8.8.8.8/32 avec des MED différentes.
Les interconnexions sont en 10.1.X.0/24, ou X est le numéro du routeur, exemple pour l'interco R1 et R4 c'est 10.1.4.0/24.
BGP router-id = X.X.X.X ou X est le numéro de routeur.

Apprentissage des routes :

R1 :

 1 R1#show ip bgp 
 2 BGP table version is 3, local router ID is 1.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8   8.8.8.8/32       10.1.3.3               100             0 23 i
 9                    10.1.2.2               200             0 23 i
10 >                  10.1.4.4               150             0 4 i

Les routes pour un préfixe sont affichées de la plus récente (Next Hop 10.1.3.3) à la plus ancienne (Next Hop 10.1.4.4).
On peut le voir en ré-initialisant le peering avec R4 :

 1 R1#clear ip bgp 10.1.4.4
 2 Mar  1 00:15:27.431: %BGP-5-ADJCHANGE: neighbor 10.1.4.4 Down User reset
 3 Mar  1 00:15:28.975: %BGP-5-ADJCHANGE: neighbor 10.1.4.4 Up
 4 R1#show ip bgp 
 5 BGP table version is 5, local router ID is 1.1.1.1
 6 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 7               r RIB-failure, S Stale
 8 Origin codes: i - IGP, e - EGP, ? - incomplete
 9 
10    Network          Next Hop            Metric LocPrf Weight Path
11   8.8.8.8/32       10.1.4.4               150             0 4 i
12 >                  10.1.3.3               100             0 23 i
13                    10.1.2.2               200             0 23 i

Le Next Hop 10.1.4.4 est passé en première ligne donc annonce plus récente.

Par défaut, la MED est comparée seulement si 2 routes on le même AS voisin, sinon la MED est ignorée.
Le processus examine les routes par 2, dans l'exemple ci dessus le processus regarde les 2 premières lignes.
La MED est ignorée ce n'est pas la même AS, ici c'est le chemin le plus ancien qui est retenu donc la seconde ligne.
Cette dernière est maintenant comparée à la troisième, même AS dont la MED est prise en compte, donc la plus petite qui est la seconde ligne.
N'ayant pas d'autre route à comparer c'est la seconde ligne (Next Hop 10.1.3.3) qui est la best BGP.

Cisco - BGP Best Path Selection Algorithm

Il y a 2 commandes de configuration BGP qui peuvent influencer la sélection du chemin via la MED :

  • bgp deterministic-med
  • bgp always-compare-med

Ces 2 commandes sont désactivées par défaut.
Activer seulement bgp deterministic-med permet de grouper les annonces par AS pour évaluer chaque groupe :

 1 R1#sh ip bgp
 2 BGP table version is 3, local router ID is 1.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8   8.8.8.8/32       10.1.4.4               150             0 4 i
 9 >                  10.1.3.3               100             0 23 i
10                    10.1.2.2               200             0 23 i

Il y a 2 groupes, AS 4 et AS 23, il y a une best temporaire dans chaque groupe qui sont comparées entre elles.
Donc dans l'AS 4, il y a qu'une entrée donc c'est une best temporaire, et dans l'AS 23 c'est le Next Hop 10.1.3.3 qui est choisi car il a une MED plus petite.
Entre la best de l'AS 4 et AS 23 la MED n'intervient pas car ce sont des AS différentes, c'est le Next Hop 10.1.3.3 qui sera la best car il a un Router ID plus petit.

Activer seulement bgp always-compare-med permet de comparer la MED sur différents AS.

 1 R1#sh ip bgp     
 2 BGP table version is 3, local router ID is 1.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8 > 8.8.8.8/32       10.1.3.3               100             0 23 i
 9                    10.1.4.4               150             0 4 i
10                    10.1.2.2               200             0 23 i

Là c'est l'entrée 1 qui sera la best car elle a la plus petite MED.

Si on active bgp always-compare-med et bgp deterministic-med

 1 R1#sh ip bgp     
 2 BGP table version is 3, local router ID is 1.1.1.1
 3 Status codes: s suppressed, d damped, h history,  valid, > best, i - internal,
 4               r RIB-failure, S Stale
 5 Origin codes: i - IGP, e - EGP, ? - incomplete
 6 
 7    Network          Next Hop            Metric LocPrf Weight Path
 8   8.8.8.8/32       10.1.4.4               150             0 4 i
 9 >                  10.1.3.3               100             0 23 i
10                    10.1.2.2               200             0 23 i

Les annonces seront groupées par AS (bgp deterministic-med), élection d'une best temporaire dans chaque groupe puis comparaison des MED (bgp always-compare-med).

Cisco - How the bgp deterministic-med Command Differs from the bgp always-compare-med Command