Flow label IPv6 : 3 nouveaux RFC ce mois-ci !

Peut-être va-t-on enfin savoir à quoi peuvent servir ces 20 bits de l’en-tête IPv6. Pour faire simple, 3 RFC sortent sur le sujet suite au dernier meeting IETF:

  • RFC6436: critique du modèle actuel (ce travail fait suite à un état des lieux publié en juin dernier dans le RFC6294)
  • RFC6437: mise à jour des anciennes spécifications (rend obsolète le RFC3697)
  • RFC6438: un exemple d’usage du flow label qui se base sur les nouvelles specs

NDLA: Peut-être aurais-je du faire pareil et poster 3 articles sur le blog pour gonfler mes stats de publication? :-)

Essayons d’y voir plus clair. Tout d’abord, qu’est-ce qui ne va pas avec les specs initiales? Les 3 règles de base définies dans le RFC3697 semblent ne permettre aucun usage du flow label:

  1. Le flow label ne devait pas être modifié entre source et récepteur. La première difficulté est qu’on n’avait pas moyen de vérifier que cette règle était respectée (il n’y a pas de checksum pour le header IPv6). La seconde est qu’il n’est du coup pas possible d’utiliser le flow label si le host ne le fait pas: il est par exemple impossible sur un réseau de mettre en place une gestion des ECMP basé sur le flow label puisqu’on n’a jamais la certitude que le host source positionnera le bon flow label. Troisième difficulté: les gens de la sécu n’aiment pas trop l’idée de ne pas avoir le droit de dépendre de ce champ et de ne pas avoir le droit de le modifier…
  2. les noeuds ne doivent pas faire d’analyse sur le flow label IPv6 (qui ne doit pas avoir de signification). Ici on n’autorise donc que les modèles sans états (cad ceux où les noeuds du réseau ne communiquent pas entre eux sur une éventuelle signification) et on s’empêche toute utilisation dans lesquelles les noeuds se mettraient d’accord sur l’utilisation de ce champ.
  3. la performance ne doit pas dépendre de ce seul flow label. A priori pas de problème avec cette règle mais il faut bien faire attention à bien lire la règle: il est possible d’utiliser conjointement ce champ avec un autre pour en tirer globalement une décision sur la performance à appliquer

Maintenant regardons ce qui change dans les nouvelles specifications.

  • Le flow label doit être choisi pour qu’il y ait une variabilité maximale (ce champ ne doit pas pouvoir être deviné ou rejoué), une distribution uniforme doit donc être adoptée. Différentes solutions sont proposées pour permettre de définir ce champ sans nécessiter la création d’états. On peut se baser sur le 5-tuple IP source, IP destination, protocole, port source, port destination; ou bien sur un 2-tuple IP source, IP destination.
  • Le flow label ne peut servir seul à élaborer une quelconque règle puisque ce champ n’est contrôlé par aucun checksum. Il faut par exemple combiner le flow label à d’autres champs (par exemple les adresses source et destination) pour garder une variabilité même si tous les paquets sont reçus avec la même valeur de flow label.
  • Un flow label de 0 (zero) signifie qu’il n’a pas été positionné.
  • Un routeur (par exemple le 1er routeur) peut maintenant positionner un flow label si celui reçu était nul. Les conditions pour l’attribuer (distribution uniforme) et les algorithmes ne sont pas différentes de celles qui définissent le positionnement par le host source.
  • Un flow label non nul ne doit pas être modifié, sauf absolue nécessité sécuritaire. Dans ce dernier cas un firewall pourrait repositionner un flow label à 0 (toute autre modification est interdite)
  • Toute méthode de calcul du flow label avec état devrait tout de même suivre les règles de base décrites ci-dessus (le RFC recommande de rester sur une solution sans états)

En faisant ces petites modifications, les auteurs espèrent une utilisation du flow label IPv6. Notamment dans le RFC 3648, il rappellent que pour la gestion des LAG ou ECMP, un algorithme de hashing basé sur le flow label et les adresses source et destination permettrait une meilleure répartition des flux sur les n liens que si l’on ne se base que sur les seules adresses. Les auteurs rappellent qu’en raison de la présence des extensions IPv6 (en-tête de taille variable inhérent à IPv6), l’extraction des ports source et destination est plus difficile en IPv6 qu’en IPv4 sur un routeur de coeur. Le flow label est donc bienvenu! Les auteurs prennent comme exemple les tunnels: en cas d’ECMP ou LAG, le flow label peut servir à répartir intelligemment le trafic entre les TEP (Tunnel End Points) sur les différents liens sans risquer de nuire aux flux encapsulés. A ce titre on indique comment le TEP source peut définir le flow label à partir des du 2-tuple IP source / IP destination ou 5-tuple IPsource / IP destination / protocole / port source / port destination du paquet encapsulé.

Vous avez bien dit 4rd ?

Rémi Despres, Rapid Deployment, Residual Deployment, Route Distinguisher… on commence a s’y perdre avec tous ces rd! Alors prenons 5 minutes pour y voir plus clair…

Tout d’abord on commence par enlever l’intrus: le Route Distinguisher réservé aux VPN MPLS, uniquement rajouté dans la liste pour complexifier un peu la donne :-)

Bon… on commence à connaître 6rd (IPv6 Rapid Deployment), RFC 5569, plusieurs fois abordé sur ce blog: on connecte des sites IPv6 entre eux et à l’internet IPv6 via un mécanisme similaire à 6to4, mais qui utilise un préfixe IPv6 standard au lieu du 2002::/16. Utilisé entre autres par Free pour offrir un service IPv6 à ses abonnés, 6rd offre une solution pragmatique pour offrir de l’IPv6 à travers un réseau d’accès IPv4-only.

Ceci rappelé, connaissez-vous 4rd (IPv4 Residual Deployment) ID du même auteur Rémi Despres? Là on considère une étape un peu plus avancée dans l’adoption d’IPv6 où l’on veut continuer à offrir de l’IPv4 à des sites sans pour autant conserver IPv4 sur l’accès (et ainsi n’opérer qu’un seul protocol sur cette partie du réseau). Le principe consiste à insérer le préfixe IPv4 du site dans l’adresse IPv6 de son routeur d’accès via une règle de mapping locale au domaine considéré. A l’accès du domaine des BR (Border Relay) reçoivent les paquets IPv4 de l’internet et les encapsulent dans un paquet IPv6 à destination du routeur d’accès du site en question en utilisant la règle de mapping locale au domaine. Voici un petit schéma qui tente de clarifier tout cela (une compréhension de 6rd  peut aider également!):

 

Les specifications actuelles de 4rd incluent d’autres fonctionnalités, par exemple la possibilité d’insérer dans l’adresse IPv6 non pas simplement un préfixe IPv4 mais une adresse IPv4 suivie d’un numéro de port (cela permet de partager une adresse IPv4 entre plusieurs sites). Les specs proposent aussi une option DHCPv6 pour propager une règle de mapping au CE…

Alors qu’en est-il des implémentations chez CISCO? Pour le moment 4rd n’est pas encore implémenté, mais l’idée est regardée (il suffit de regarder la liste des auteurs et l’aknowledgement du draft!)

Internet-draft 4rd: http://tools.ietf.org/html/draft-despres-intarea-4rd-01

6rd whitepaper sur Cisco.com

Un nouveau whitepaper décrivant la fonction 6rd (IPv6 Rapid Deployment) est disponible sur CCO:

http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6553/whitepaper_c11-665758.html

Cette fonction est très utilisée dans un environnement résidentiel pour permettre une intégration d’IPv6 dans un réseau opérateur.

Geoff Huston – NANOG53

Une présentation qui vaut la peine d’y passer un peu de temps. Celle de Goeff Houston, Chief Scientist à l’APNIC, sur les difficultés et les risques d’une longue transition IPv6.

http://www.nanog.org/meetings/nanog53/presentations/Wednesday/Huston.pdf

Des slides épurés mais un contenu oh combien intéressant.

 

Multicast IPv6 inter-domaine

J’ai encore vu passer récemment la question sur un forum: “Y’a-t-il un équivalent de MSDP pour IPv6 ?”. Ayant pas mal travaillé sur le sujet (et tout ce qui touche au multicast IPv6 d’une manière générale) je vais donc essayer de faire une réponse détaillée sur ce blog pour la communauté francophone.

MSDP ne supporte pas IPv6 (ou l’inverse) et il n’est a priori pas question que cela change. Le RFC3618 qui décrit MSDP est toujours “experimental” et il ne semble pas prévu d’en changer le statut. Il est donc difficile d’imaginer dans ces conditions une adoption par la communauté IPv6. Je rappelle brièvement que cette problématique ne concerne que le multicast en mode ASM (Any-Source Multicast), dans lequel un récepteur s’abonne à un groupe et désire recevoir le trafic de toutes les sources qui envoient des données à ce groupe. Dans le mode SSM (Source-Specific Multicast), la question de l’inter-domaine ne se pose pas puisque le récepteur s’abonne à un groupe en spécifiant la source (ou les sources) d’intérêt: aucun protocole de type MSDP n’est donc nécessaire pour découvrir les sources et le modèle est grandement simplifié.

Embedded-RP

La question qui se pose est donc “comment faire de l’interdomaine multicast ASM en IPv6?”. La réponse est embedded-RP (RFC3956), disponible sur les routeurs CISCO depuis déjà quelques années. Le principe d’embedded-RP (ou RP embarqué) consiste à profiter de la grande taille d’une adresse IPv6 multicast pour y insérer l’adresse du point de rendez-vous (RP). Comme il n’est pas possible d’insérer l’adresse unicast du RP (128 bits) dans une adresse multicast IPv6 (128 bits également), cette méthode suppose que l’adresse du RP soit d’un format particulier: ce format est bien décrit dans le RFC aussi je ne vais pas le décrire dans le détail ici. Sur les 64 derniers bits de l’adresse du RP, tous doivent être positionnés à 0 à l’exception des 4 derniers qui sont nommés Router Interface Identifier ou RIID.

La lecture d’une adresse multicast IPv6 de type embedded-RP permet automatiquement de déterminer le point de rendez-vous associé. Ce point de rendez-vous peut être n’importe où et la notion de domaine multicast n’existe plus (une source pouvant s’enregistrer sur le RP d’un réseau distant). Dans ces conditions un mécanisme comme MSDP n’est plus utile puisque toutes les sources et tous les récepteurs d’un groupe “utilisent” le même RP. Il faut donc voir embedded-RP comme un mécanisme permettant le group-to-RP mapping (c’est à dire une solution permettant de déterminer le RP correspondant à une adresse de groupe). Tous les routeurs doivent donc supporter embedded-RP pour que la solution fonctionne: le DR (Designated Router), le RP (point de rendez-vous) et tous les autres routeurs du réseau multicast IPv6. Les adresses multicast de type embedded-RP sont dans le préfixe par FF7x::/12. Le 7 correspond aux adresses multicast de type embedded-RP, le x correspond à la portée de l’adresse (E=global, 5=site…)

Si la solution technique existe, elle change le modèle connu en IPv4 dans lequel une source s’enregistre sur le RP de son domaine. Le modèle opérationnel change donc considérablement et il convient de le comprendre avant de le déployer, car les procédures de troubleshooting ne sont plus les mêmes: les PIM-registers traversant les domaines.

Comment déployer embedded-RP ?

Le mécanisme est automatiquement activé lors de l’activation du multicast IPv6:

ipv6 multicast-routing

Il est cependant possible de désactiver embedded-RP:

no ipv6 pim rp embedded

Pour configurer un point de rendez-vous de type embedded-RP il suffit d’utiliser les commandes habituelles de configuration de RP. La seule différence est que l’adresse du RP et les adresses de groupe configurées correspondent au mapping “embedded-RP” décrit dans le RFC3956. La configuration ne doit être faite que sur le RP:

ipv6 pim rp-address 2001:db8:cafe:f00d::1 EMBEDDED-RP-GROUP
ipv6 access-list EMBEDDED-RP-GROUP
 permit ipv6 any FF7E:140:2001:db8:cafe:f00d::/96

Et maintenant ? Comment utiliser le service ?

Embedded-RP impose d’utiliser des adresses IPv6 multicast qui “marchent”, c’est-à-dire dérivées d’un RP existant configuré. Ces adresses ne peuvent pas se deviner aussi à mon avis le mécanisme global ne sera complet qu’avec un mécanisme permettant d’allouer des adresses multicast IPv6. J’avais il y a déjà quelque temps proposé des mécanismes:

  • Basés sur DHCPv6: draft-jdurand-assign-addr-ipv6-multicast-dhcpv6-01
  • Basés sur SLAAC: draft-jdurand-ipv6-multicast-ra-00.txt
  • Imposant que tous les DR soient des RP: draft-jdurand-all-drs-are-rps-00

Ces propositions n’ont pas avancé à l’époque, pousser SSM en avant étant selon la communauté la meilleure façon d’avancer de façon pragmatique.

Cisco IOS Advantage – IPv6 Deployment and Operation Experiences

Le prochain IOS Webinar est prévu le 7 septembre et portera sur le déploiement IPv6.

Duration: 2 hours
Date: Wednesday, September 7, 2011
Time: 8 AM Pacific - Register now

 

Cisco IOS Advantage Webinar – NAT64

Les Cisco IOS Advantage Seminars sont des rendez-vous régulier permettant d’avoir une présentation par les meilleurs spécialistes Cisco sur des technologies embarquées dans IOS.

Le dernier Webinar portait sur NAT64.

Il est possible de le voir en allant sur le recording Webex ici :

 

World IPv6 Day – NOW

Nous y sommes, 8 juin .. la journée IPv6 ou un grand nombre de sites vont proposer un accès à leur contenu sur un transport IPv6 en plus du transport IPv4. Pour tous ceux qui bénéficient d’une connectivité IPv6, ce sera l’occasion de pouvoir tester.

Pour suivre les statistiques sur le site du RIPE: RIPE statistics

Pour tester sa connectivité IPv6 : utilisez ce test.

Pour nous c’est une journée importante qui nous donnera très certainement un grand nombre d’enseignements.

Bons tests !!

RIPE – Requirements For IPv6 in Equipment

Un nouveau document du RIPE:

Requirements For IPv6 in ICT Equipment: http://www.ripe.net/ripe/docs/ripe-501.html

Sous ce titre peu sexy ce cache un document donnant des indications sur ce que les équipements réseaux doivent supporter en terme de fonctionnalités et RFCs IPv6.

L’approche est bien sur très intéressante et devrait surement être reprise dans le cadre de la Task Force IPv6 France. En première lecture, il apparait qu’il faudrait regarder quelques points de manière à contribuer :

  • Beaucoup du contenu vient de USGv6, avec des recopies pas toujours justifiées
  • Peut-être quelques mise a jour (RFC anciennes, RFC orphelines, etc)
  • Sécurité: pourquoi insister tant sur IPSec ?
  • Pourquoi 3 options ? Comment choisit-on entre les 3 ?

Je replonge dans le document …

Yahoo propose un hack sur DNS

Dans le but de proposer un meilleur service IPv6, Yahoo a proposé ce qu’on peut appeler un hack DNS :

http://www.networkworld.com/news/2010/032610-yahoo-dns.html

Le contexte :

la volonté des services providers est de fournir un service sur IPv6 qui soit aussi bon (pour ne pas dire meilleur) que celui sur IPv4. Or dans bien des cas, un host va faire une requête quad-A afin de récupérer une adresse IPv6 correspondant à un nom de host, ceci même si la connectivité IPv6 n’est pas transcendante. Google s’est saisi du problème en instituant un système de whitelist, c’est à dire constituer une liste de resolvers DNS d’ISP fournissant une bonne connectivité IPv6. Dans ce cas, on entre dans une procédure ou finalement Google décide qui est “bon” ou qui ne l’est pas.

Le hack proposé par Yahoo :

Dans le cas de Yahoo, l’approche est sensiblement différente puisqu’ils proposent une approche “technique” cette fois. Si l’on voulait résumer cette approche, cela consisterait à dire qu’un autoritative DNS (la destination donc) n’accepterait une query “quad-A” d’un resolver DNS (l’origine) que si cette demande DNS est faite sur un transport IPv6. De la même facon, une requête “A” serait uniquement acceptée sur un transport IPv4. L’idée est donc de dire que si la demande “quad-A” est faite sur un transport IPv6, le service fourni par l’opérateur devrait être suffisamment correct pour que la demande soit acceptée.

L’approche de Yahoo est donc de proposer une modification à la source (resolver DNS de l’ISP) plutot qu’à la destination (autoritative servers), et donc de refuser une requète DNS provenant d’une source address IPv4.

On peut considérer cette approche comme biaisée dans la mesure ou cela revient à considérer que la demande DNS doit se faire sur le même protocole que celui qui sera utilisée vers la cible. Maintenant tout le monde essaie de trouver une solution, Yahoo a maintenant la sienne …

Dans le même temps Google propose de simplifier le système de whitelisting en laissant les ISP faire du opt-in de leur adresse de resolvers :

http://www.ipv6whitelist.org

Pour plus d’information, on pourra se reporter ici :

http://www.ietf.org/proceedings/10mar/slides/dnsop-7.pdf

Suivre

Get every new post delivered to your Inbox.