Home » Comment ça marche, Internet

Comment c’est dedans BGP (1)

1 décembre 2010 1 499 vues 3 commentaires
tags : , ,
Download PDF

Crédit photo : LeSimonPix

Pour les cancres qui n’étaient pas là aux premiers cours, je vais faire un petit résumé sur le fonctionnement du routage sur internet. Il existe comme toujours de nombreuses exceptions, mais de manière générale, ce qu’il faut retenir, c’est que :

  • les adresses IP sont regroupées par blocs de différentes tailles (des préfixes)
  • chacun de ces blocs est attribué à un réseau portant un numéro dit « numéro d’AS (Autonomous System) » identifiant de manière unique un réseau
  • un routeur n’est qu’une vulgaire machine à peu de choses près comparable à votre PC qui dispose généralement de tout un tas de connexions réseau
  • chaque routeur sur internet connaît la liste exhaustive de l’ensemble des préfixes du réseau et l’adresse du routeur voisin à qui il doit envoyer le trafic qui est à destination de ces blocs d’adresses (le couple « bloc d’adresses & adresse du routeur suivant » est appelé une route)
  • à part envoyer les paquets à ses petits copains auxquels il est directement connecté, un routeur ne sait rien faire. Il ne peut pas influer sur la décision que prendra le routeur suivant quant à la suite du chemin que va parcourir le paquet et il ne peut que difficilement dire au précédent « non non, je veux pas de ce paquet là »
  • une session BGP n’est qu’une simple connexion TCP entre deux routeurs. Elle emprunte les mêmes circuits que les données qui voyagent sur le réseau, permettant aux routeurs de savoir si un lien est fonctionnel ou pas. Si le lien est HS, la session BGP tombe d’elle-même.

Vous êtes toujours la ? Bien.

Nous allons imaginer un réseau (A) composé d’un seul routeur discutant avec internet via 3 liens distincts :

  • Un lien avec opérateur (réseau B) vendant du transit vers l’ensemble d’internet
  • Un lien avec un point d’échange ou sont présent 3 autres réseaux (C, D et E)
  • Un lien avec un réseau client (F)

Pour mon exemple, nous avons aussi un réseau G avec lequel nous n’avons aucun lien mais qui, lui, en a avec D et B.

Notre réseau a donc 4 liens physiques établis entre le routeur qui compose A et :

  • Les machines composant le reste de notre réseau A
  • L’un des routeur de B
  • Un switch sur lequel sont connectés les routeurs de C, D et E
  • L’un des routeurs de F

Quand on va inaugurer notre BGP, on va établir la première liaison, celle entre A et B :

  • notre routeur du réseau A va être configuré pour accepter tout et n’importe quoi depuis le réseau B, puisque celui-ci doit nous apprendre la totalité des routes d’internet
  • le routeur du réseau B devra théoriquement être configuré pour n’accepter de A que la (ou les routes) qu’il gère. Ce filtrage se fait au moyen de listes de préfixes qui peuvent être extrapolées des données officiellement inscrites auprès du RIR (le RIPE pour l’Europe) ou bien à la main. C’est l’absence flagrante de ce genre de filtres chez certains opérateurs qui donne lieu aux blagues du type youtube v.s. pakistan.
  • A l’issue de cette configuration, notre routeur saura qu’il peut joindre tout internet B (y compris les réseaux C, D, E et F) en passant par B.
  • En contrepartie, le réseau B va propager les préfixes qu’on lui annoncera pour que tout le monde sur internet sache qu’il faut s’adresser à B pour joindre A

Puis, on va établir le lien avec le point de peering :

  • Malgré le fait que nous n’avons qu’un seul lien physique, nous allons établir deux sessions BGP avec C et E. C’est le même principe que sur un réseau domestique. Votre ordinateur portable est branché avec celui posé sur le bureau, l’imprimante et votre box ADSL mais ils ne sont pas obligés de discuter ensemble. En l’occurrence, D ne souhaite pas établir de session BGP et échanger directement du trafic avec nous pour une raison qu’on ignore
  • Chacun va configurer sa session avec l’autre en prenant bien soin de n’accepter que les préfixes officiels du réseau voisin (pour la même raison que ci-dessus)
  • Nous allons donc nous retrouver, en plus de la totalié des routes d’internet, avec de nouvelles routes permettant de joindre C et E. La redondance commence ici, nous connaissons deux routes différentes pour joindre C et E. L’une passe par B, l’autre est directe. Si on ne configure rien de spécifique, les algorithmes de calcul de BGP vont naturellement privilégier la route directe
  • Si on coupe le câble nous reliant au point d’échange où sont présents C et E, notre routeur va s’en apercevoir rapidement (une trentaine de secondes maximum) et effacer ces routes de sa table. Il lui restera les routes passant par B et le trafic pourra reprendre
  • En cas de maintenance programmée, on peut bien entendu suspendre la session BGP et le trafic est redirigé instantanément sans aucune perte si une autre route est disponible

Enfin, on va connecter notre client :

  • Pour reprendre ce que nous avons écrit ci-dessus, nous nous comportons vis à vis de F comme B se comporte vis à vis de nous. En configurant la session BGP avec F, nous allons indiquer dans notre configuration qu’il faut envoyer la totalité des routes d’internet et n’accepter que les préfixes officiels de F
  • Lorsque la session va monter, nous allons non seulement apprendre qu’il faut parler à F pour joindre ses préfixes mais nous allons aussi le dire à B, C et E. Ainsi, pour joindre F, les routeurs de B, C et E sauront qu’il faut passer par nous, ceux de B le diront au reste de la planète, ce qui finira necessairement par arriver aux oreilles de D avec qui nous n’avons aucun lien direct mais qui se débrouillera bien pour joindre notre client en faisant, par exemple, le trajet D > G > B > A > F
  • Si par hasard nous avons mal fait notre boulot, notre fournisseur B et nos voisins C et E ne savent pas que nous avions prévu une interconnexion avec F, ils n’accepteront donc peut-être pas tous les nouveaux préfixes qui vont arriver. Certains vont peut-être même couper immédiatement et de façon automatique la connexion BGP avec nous.

Voilà une configuration BGP simple, dans le prochain article, je vous parlerai de la précision des routes et peut-être des choses drôles (mais pas bien) qu’on peut faire sur les points d’échange.

3 Comments »

  • Duncane said:

    Sympathique petit billet, qui vient dans la lignée des articles sur comment devenir son propre FAI :)

    Après tout dépend du contexte et de la situation, si tu as juste une range d’IP et pas d’AS, tu fais pas de peering BGP, tu travailles en statique (tu n’as qu’un seul point de contact avec le reste du monde aussi).

    Cheers,

  • Arnaud Gomes said:

    Même avec une seule range d’IP et un seul lien, tu peux faire du BGP avec un AS privé, je soupçonne que ça arrange bien l’opérateur en face qui n’a pas à configurer de route statique. C’est le cas d’un certain réseau de la recherche en France que je ne citerai pas. ;-)

  • samavec said:

    Pourquoi, que c’est il passé avec youtube et le pakistan ?

    [Des histoires de routage]

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.


+ six = 13