MOOC:Compagnon Act24-s7

From Livre IPv6

Revision as of 16:06, 13 March 2016 by Panelli (Talk | contribs) (Pour aller plus loin)


Activité 23: Les principes du routage IPv6

Introduction

Le routage IPv6 est quasiment identique au routage IPv4 sous CIDR (Classless Inter-Domain Routing, routage inter-domaine sans classe). La seule différence est la taille des adresses qui sont de 128 bits dans IPv6 au lieu de 32 bits dans IPv4. Beaucoup d’équipements proposent en standard l’intégration du routage statique, et d’autres plus évolués ou avec des extensions, il devient possible d'utiliser des algorithmes de routage dynamique comme OSPF, RIP et IS-IS.

En IPv6, cela ne diffère pas tellement de l’IPv4. La syntaxe est globalement la même, à la différence qu’en IPv6 nous n’avons pas d’adresse “réseau”. C’est donc ce qu’on appelle le Préfixe IPv6 qui servira de référence pour notre table de routage.

Cette activité a pour objectif de montrer l'impact d'IPv6 sur les protocoles de routage. Il ne sera pas détaillé ici le fonctionnement de tel ou tel protocole, mais plutôt les changements qui ont été nécessaires afin de prendre en compte la technologie IPv6 dans les protocoles de routage existants pour IPv4. Ces changements sont essentiellement liés à la prise en compte du nouveau format de l'adresse IPv6 ainsi qu'à l'ajout d'une nouvelle table de routage dédiée à IPv6.

Les différents types de routage sont passés en revue : routage statique, routage interne et routage externe. A l'issue du chapitre, on constatera qu’IPv6 est maintenant bien intégré dans ces protocoles et que cette évolution a eu un impact très faible pour l'utilisateur final.

Les algorithmes de routage n'ont pas changé avec IPv6. Les travaux en cours consistent principalement à les adapter au nouveau format de l'adresse IP. Ces protocoles de routage profitent des propriétés maintenant incluses dans la nouvelle version du protocole IPv6 comme l'authentification ou le multicast. Une conséquence de l'apparition du routage IPv6 est que les équipements doivent alors prendre en compte les deux piles de protocoles, IPv4 et IPv6. Cela doit être pris en considération lors de l'activation des protocoles de routage. En particulier, il faut prêter attention à la congruence des topologies IPv4 et IPv6.

Routage Statique

Adresse locale

Pour atteindre une destination la machine cherche à vérifier si l’adresse cible est accessible directement en utilisant les interfaces connectées, plusieurs cas sont possibles :

  • Interface de loopback, cas particulier d’une interface logique toujours connectée, une adresse peut y être affectée et donc elle sera perpétuellement accessible puisque cette interface est toujours active.
  • Interface physique, l’adresse qui y est affectée n’est accessible qu’à la condition où l’interface soit activée, et qu’elle soit correctement branchée pour fournir une connectivité.

Si les interfaces sont connectées, et que des adresses IPv6 ont été affectées à ces interfaces en statique ou dynamiquement, alors elles apparaissent dans la table de routage, et de fait la machine dispose d’une connectivité vers les réseaux dont les préfixes ont étés affectés

  • choix interface de sortie vers un voisin
    • A<1--1>B
    • 2 postes A et B sont connectés sur le même réseau en local,
    • l'attribution des adresses IPv6 avec le même préfixe les autorisent à échanger directement entre elles après le test d'adjacence

Test d'adjacence

Le test d’adjacence permet de vérifier si le destinataire partage un même réseau qui est accessible directement en utilisant les interfaces directement connectées :

  • Pour cela la machine va comparer le préfixe de la destination avec les préfixes des réseaux directement connectés, si cela est vérifié la machine peut réaliser un routage direct. Le dispositif ICMPv6 découverte des voisins va permettre aux machines connectées sur le même réseau de se découvrir l'un et l'autre et de déterminer l'adresse physique d'un équipement à partir de son adresse IPv6. (Plus de détails sur cette fonction en Séquence n°3).
  • Dans le cas présenté ci-dessous, les deux postes A et B, peuvent directement communiquer car ils sont connectés sur le même réseau à l’aide d’un commutateur, qui relaient de manière transparente les trames au niveau 2. Le préfixe IPv6 2001:db8:0001::/64 est paramétré sur chaque machine, donc les échanges sont possibles directement :
Figure 1: Routage statique direct
  • Dans le cas contraire, un routage indirect s’impose, et la machine doit confier les paquets vers cette destination à une autre machine qui s’occupera de leurs acheminements, c’est le principe du routage indirect. Dans le cas présenté ci-dessous, le poste A peut atteindre les deux postes B et C, par contre B et C ne peuvent pas directement communiquer car ils sont connectés sur deux réseaux avec des préfixes IPv6 différents :
Figure 2: Routage statique indirect
  • Donc dans la table de routage de B il faudra introduire une entrée vers le préfixe distant 2001:db8:0002::/64, en précisant l’adresse 2001:db8:0001::1/64 qui elle est directement accessible par B. Les paquets émis depuis B vers C seront dès lors retransmis.
Figure 3: Routage statique indirect
  • Ensuite il convient de ne pas omettre la même opération dans la table de routage de C, sans quoi aucune réponse vers B ne sera possible. Il faudra introduire une entrée vers le préfixe distant 2001:db8:0001::/64, en précisant l’adresse de A 2001:db8:0002::1/64 qui elle est directement accessible par C. Les paquets émis depuis C vers B seront dès lors retransmis par A.

Entrées d'une table de routage statique

La constitution d’une table de routage statique impose une configuration manuelle, afin de déterminer vers quelle passerelle l’équipement pourra se délester des paquets des destinations non directement connectées.

  • Cas simple, une passerelle par défaut est spécifiée, et tous les paquets qui visent des destinations externes lui seront retransmis. En quelque sorte on fait confiance aux capacités et à la connectivité de cette passerelle. Une entrée de ce type est visible dans la table de routage de l’équipement, l'exemple suivant montre comment configurer une route statique par défaut sur un routeur IPv6:
Figure 4: Routage par défaut
  • Sur les postes de travail, il est donc simple de confier tous les paquets à destination de réseaux distants à la passerelle par défaut représentée par le routeur connecté à un fournisseur d’accès Internet. Une simple route par défaut est ajoutée à chaque poste de travail :
Figure 5: Routage par défaut
  • Des routes spécifiques peuvent être définies, dès lors que l’on dispose d’une connectivité bien adaptée pour certains préfixes. Dance ce cas une configuration par des commandes de ce type sera nécessaire,

ipv6 route fd00:cafe:/48 fd00:2000::1

  • Les routes les plus spécifiques c’est-à-dire celles avec un long préfixe seront traitées en premier, puis les routes moins spécifiques ensuite, et enfin la route par défaut en dernier ressort.

Routage dynamique

Comme dans IPv4, il faut faire la distinction entre deux grandes familles de protocoles de routage : les protocoles de routage internes (IGP : Interior Gateway Protocols) et externes (EGP : Exterior Gateway Protocols). C'est la notion de système autonome qui permet de faire la différence en définissant la portée des échanges d'informations de routage effectuée par ces protocoles de routage. Ainsi, la propagation des préfixes internes à un AS se fait par un IGP, alors que les annonces de préfixes entre AS se fait par un EGP.

Pour connecter un site à l'Internet, il faut donc mettre oeuvre des protocoles de routage internes et des protocoles de routage externes. Ce chapitre traite les trois protocoles IGP suivants : RIPng (équivalent de RIPv2 pour IPv4), ISIS et OSPFv3 (équivalent d’OSPFv2 pour IPv4), ainsi que du protocole de routage externe BGP.

Les protocoles de routage internes permettent une configuration automatique des tables de routage des routeurs à l'intérieur d'un même système autonome. Les routeurs déterminent le plus court chemin pour atteindre un réseau distant. Les protocoles de routage internes nécessitent une configuration minimale du routeur notamment en ce qui concerne les annonces de routes initiées par ce routeur (ex. réseaux directement accessibles par une interface du routeur, annonces statiques ...).

Deux types de protocole de routage interne existent : les protocoles à état de lien ("link state" en anglais) et les protocoles à vecteur de distance ("distance vector" en anglais). Les premiers calculent le chemin le plus court en comptant le nombre de sauts pour atteindre le préfixe de destination, tandis que les seconds attribuent un coût à chaque lien en fonction de divers paramètres (type du lien...).

RIPng ou RIP IPv6

Les algorithmes appelés "distance vector", sont utilisés par le protocole de routage RIPv2 (RFC 2453). Ils sont basés sur l'algorithme de Bellman-Ford et figurent parmi les premiers algorithmes de routage interne utilisés dans l'Internet.

Les routeurs diffusent leurs tables de routage sur les liens auxquels ils sont connectés. Les autres routeurs modifient une route dans leur table si la métrique reçue (dans ce cas le nombre de routeurs à traverser pour atteindre une destination) est plus petite que celle déjà stockée dans la table. Si une annonce de route n'est pas présente dans la table, le routeur la rajoute. Ces modifications sont à leur tour diffusées sur les autres réseaux auxquels sont connectés les routeurs. Elles se propagent donc sur l'ensemble du réseau à l'intérieur du système autonome. On montre que cet algorithme converge et qu'en condition stable, aucune boucle n'est créée sur le réseau (c'est-à-dire qu'un paquet ne sera pas transmis indéfiniment de routeur en routeur sans jamais pouvoir atteindre sa destination).

Les tables sont émises périodiquement. Si un routeur tombe en panne ou si le lien est coupé, les autres routeurs ne recevant plus l'information suppriment l'entrée correspondante de leur table de routage. RIPng est le premier protocole de routage dynamique proposé pour IPv6 (RFC 2080) RIPng est une simple extension à IPv6 du protocole RIPv2 d'IPv4. Il en hérite les mêmes limitations d'utilisation (maximum de 15 sauts par exemple).

ISIS

IS-IS (Intermediate System to Intermediate System) est un protocole de routage interne à état de lien. Il a été standardisé par l'ISO (ISO 10589). C'est un protocole de niveau 3 (contrairement à OSPF et RIP qui sont de niveau 4) qui s'appuie sur une couche 2 de type Ethernet 802.2. Cet élément mérite d'être signalé car cela rend ce protocole indépendant d'IP, que ce soit IPv4 ou IPv6. Ce protocole travaille sur deux niveaux de hiérarchie : les aires (niveau 1) et le backbone (niveau 2).

Un routeur IS-IS peut être soit :

  • level-1 (routage intra aire),
  • level-2 (routage inter aire),
  • level-1-2 (routage intra et inter aire).

Un routeur de niveau 1 n'a de voisins que dans son aire, alors qu'un routeur de niveau 2 peut avoir des voisins dans une autre aire. Il n'y a pas d'aire de backbone (contrairement à OSPF). Le backbone est constitué de la réunion de tous les routeurs de level-2. Sur un réseau de type LAN, il y a élection d'un routeur désigné (DIS) qui a la charge de produire les annonces.

Afin de construire sa topologie, IS-IS utilise 3 types de messages :

  • les messages HELLO permettant de construire les adjacences;
  • les messages LSP (Link State Protocol) permettant d'échanger les informations sur l'état des liens;
  • les messages SNP (Sequence Number Packet) permettant de confirmer la topologie.

Pour élaborer ces messages, IS-IS se base sur l'utilisation d'éléments d'informations indépendants appelés TLV (Type, Longueur, Valeur). Le message est ainsi constitué d'un en-tête suivi d'une liste de TLV. Chaque TLV véhicule une information propre, et est donc standardisée. L'exemple ci-dessous montre une TLV Protocoles Supportés faisant partie d'un message HELLO, informant les voisins des protocoles supportés par l'émetteur du paquet:

  • 0x81 0x02 0xcc 0x8e
    • Le premier octet donne le type de la TLV. Il s'agit ici du type 0x81, c'est-à-dire Protocoles supportés.
    • Le second octet donne la longueur en octets de la TLV : ici les deux octets qui suivent.
    • Les autres octets composent la valeur de la TLV. Ici nous avons deux octets indiquant des numéros de protocoles supportés (NLPID : Network Layer Protocol IDentifier): 0xCC pour IPv4 et 0x8E pour IPv6.

OSPFv3

Le troisième protocole de routage interne, basé sur l'algorithme du plus court chemin, s'appelle OSPF (Open Shortest Path First). Relativement plus difficile à mettre en oeuvre que RIPng, il est beaucoup plus efficace dans les détections et la suppression des boucles dans les phases transitoires. Ce protocole est basé sur plusieurs sous-protocoles, dont un qui permet une inondation fiable du réseau. Les routeurs possèdent alors chacun une copie des configurations de tous les routeurs présents sur le réseau, et peuvent calculer simultanément le plus court chemin pour aller vers l'ensemble des destinations.

Pour réduire la durée des calculs et surtout pour éviter un recalcul complet des routes à chaque changement de configuration, OSPF offre la possibilité de découper le réseau en aires. Une aire principale appelée backbone relie toutes les autres aires. Les réseaux trouvés dans une aire donnée sont envoyés aux autres aires par les routeurs qui sont en frontière d'aire.

OSPF a été adapté à IPv6 (RFC 2740) ; la version est passée de 2 à 3. La plupart des algorithmes implementés dans OSPFv2 ont été réutilisés en OSPFv3 ; bien évidemment, certains changements ont été nécessaires en vue de l'adaptation aux fonctionnalités d'IPv6.

BGP

BGP4 est le protocole de routage externe actuellement utilisé pour le routage global de l'Internet IPv4 (la version 4, identique pour BGP et IP, est pure coïncidence). Compte tenu de sa criticité, ce protocole est l'objet d'évolutions constantes. L'une d'entre elles est le RFC 2858 qui rend BGP4 multi-protocole en introduisant la notion de famille d'adresse (ex. IPv4, IPv6, IPX...) et de sous-famille d'adresse (ex. unicast, multicast). Le RFC 2545 précise l'usage des extensions multi-protocoles pour le cas d'IPv6.

L'adaptation multi-protocole de BGP4 est assez simple car elle ne concerne que les trois attributs dont le format dépend de l'adresse soit :

  • NLRI : Network Layer Reachability Informations (suite de préfixes);
  • NEXT_HOP : Adresse IP où il faut router les NLRI;
  • AGGREGATOR : Adresse IP du routeur qui a fait une aggrégation de préfixes.

Pour réaliser pratiquement cette adaptation, BGP4+ introduit deux nouveaux attributs :

  • MP_REACH_NLRI : Multiprotocol Reachable NLRI;
  • MP_UNREACH_NLRI : Multiprotocol Unreachable NLRI.

qui indiquent que l'on annonce des informations de routage autres que les routes unicasts IPv4. Ces attributs codent en premier le type de famille et de sous-famille d'adresse, puis les attributs dont le format est spécifique. Les autres attributs (comme le chemin d'AS Autonomous Systems) sont codés et annoncés sans changement.

Les implémentations du RFC 2858 sont souvent appelées MBGP (pour faire référence à leur capacité de traitement des routes multicast) ou BGP4+ (pour faire référence à leur capacité de traitement de routes IPv6). Pour l'anecdote, le numéro de version du protocole n'a pas été modifié (en BGP5 par exemple) car le passage de BGP3 à BGP4 rappelle trop de souvenirs douloureux à ceux qui l'ont mis en oeuvre. Les numéros d'AS utilisés pour IPv4 servent aussi pour IPv6.


Références bibliographiques


Pour aller plus loin

Vous pouvez approfondir vos connaissances en consultant les liens suivants :

RIPng:

ISIS:

OSPF:

BGP:


Personal tools