Ce que c'est qu'une adresse IP

Dans les temps anciens, on utilisait IPv4. Une adresse de réseau correspondant à la version 4 du protocole IP était un nombre entier exprimé sur 32 bits, donc compris entre 0 et 2^32-1 (donc entre 0 et 4294967295). Comme c'est assez illisible sous cette forme-là, on l'écrivait en séparant 4 blocs de 8 bits (comme on écrit les numéros de téléphone en séparant des blocs de 2 ou 3 digits pour faire joli). Donc, une adresse IP v4 c'est un entier compris entre 0.0.0.0 et 255.255.255.255.

Quand on raccorde un ordinateur à la version 4 d'Internet, on lui donne une adresse, par exemple 80.67.176.0.

Dans la version plus moderne, une adresse IP v6, donc dans la version 6 du protocole[1], une adresse IP est un nombre entier sur 128 bits, donc 4 fois plus long, soit entre 0 et 340282366920938463463374607431768211455[2]. Qu'on aurait pu écrire entre 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 et 255.255.255.255.255.255.255.255.255.255.255.255.255.255.255.255, mais ça faisait quand même bigrement long. Alors on a décidé de les écrire en hexadécimal, et en regroupant par blocs de 16 bits.

Donc une adresse IP v6, c'est un entier compris entre 0:0:0:0:0:0:0:0 et ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff.

Après mûre réflexion, de grands penseurs ont trouvé qu'il serait plus intéressant de distribuer plusieurs adresses, tout un bloc, à chaque abonné, puisqu'on tend à avoir plusieurs ordinateurs à la maison[3]. On a longuement ergoté sur la taille du bloc à donner à chacun. Soit un bloc de petite taille (quelques milliers d'adresses), soit un bloc de grande taille laissant 64 bits comme adresse de réseau et 64 bits comme adresse locale dans la maison[4], soit un bloc de très grande taille laissant 80 bits pour l'adresse locale et 48 bits pour l'adresse sur le réseau[5].

La bonne pratique affichée, et promue par le RIPE NCC (l'organisme en charge de distribuer les adresses IPs aux opérateurs), est donc de donner au strict minimum un /64 aux utilisateurs finals (laissant 64 bits pour l'adressage local), et idéalement un /48 (donc 80 en adressage local).

La bonne pratique est donc de ne jamais distribuer une seule adresse IP v6, mais d'en distribuer tout un réseau à chaque abonné.

Comment sont distribuées les adresses

L'ensemble des adresses possibles sur Internet sont distribuées par paquet par 5 organismes régionaux (eux-même "approvisionnés" par un organisme central, l'IANA). Chaque organisme régional est en charge d'une région du monde: ARIN pour l'Amérique du Nord, APINC pour l'Asie-Pacifique, RIPE pour l'Europe, etc. Ce sont les RIR, les Regional Internet Registries.

Ensuite, les RIR distribuent ces adresses à des structures qui y sont rattachées, des LIR, des Local Internet Registries. Pour ce qui concerne l'Europe, un LIR, c'est n'importe quoi, entreprise, association, pourquoi pas un particulier, qui demande à adhérer au RIPE NCC, qui paye sa cotisation, et qui respecte les procédures administratives tatillonnes.

Ensuite, soit un LIR réserve des adresses pour son usage propre (par exemple, Orange demande un gros paquet d'adresses pour ses serveurs et pour ses abonnés), soit il réserve des adresses pour ses clients (par exemple, Orange peut réserver tout un bloc d'adresses spécifiquement pour un client donné, genre une chaîne de télé qui fait héberger ses serveurs web). Quand un LIR réserve une plage d'adresse pour un client, soit il tape dans son stock propre, et informe le RIPE. Ça donne un message du genre Alors, pour le client XXX, qui a besoin de 256 adresses, je lui ai filé telles adresses prises dans mon stock.. Et dans ce cas là, le client ne pourra plus changer de fournisseur (c'est cool, ça). En effet, s'il veut changer de fournisseur, il devra rendre les adresses, en demander de nouvelles, et changer les adresses de toutes ses machines.

Soit, et c'est un cas relativement classique, le client demande à avoir un bloc d'adresses bien à lui, et pas pris au milieu des adresses de son fournisseur, on appelle ça un bloc d'adresses PI, PI pour Provider Independant, indépendant du fournisseur. C'est une démarche relativement classique, tous les LIR connaissent la procédure pour demander un bloc PI.

Pour éviter de fragmenter le réseau, le RIPE a décidé qu'un bloc PI ne pouvait pas être sous-attribué. Ainsi, quand Gitoyen (qui est le LIR de FDN) demande un bloc PI pour FDN (par exemple pour router la future offre de VPNs, mettons), alors FDN n'a pas le droit de prendre 16 adresses dans ce bloc et de les attribuer à un abonné donné. Par contre, on a tout à fait le droit de distribuer ces adresses, une par une, aux utilisateurs finaux.

La règle est donc: dans un bloc PI, on ne peut pas distribuer un sous-réseau à un utilisateur final.

Bilan des courses

Vous le voyez venir gros comme un camion. Cette règle date du temps de v4. En v4, il ne fallait utiliser un bloc PI que pour ses besoins propres (pour les adresses de nos machines), ou en distribuant les adresses une par une à nos abonnés.

Mais la belle règle prévue pour v4 est appliquée pour v6. Donc, dans un bloc PI en v6, il est interdit de distribuer des sous-réseaux. Or pour raccorder un abonné en IP v6, il est fortement préconisé de lui attribuer tout un réseau.

Ergo, il est interdit de raccorder des abonnés en IPv6 avec des blocs PI.

La solution ?

Oh, la solution est connue. Il suffit de prendre des blocs qui ne sont pas PI, et donc de définitivement surbordonner le FAI associatif qui fait sa demande d'un bloc d'adresses à son LIR, comme FDN l'a décidé en utlisant des adresses de Gitoyen[6]. Il suffit de faire comme ça, et on peut faire fonctionner de l'IPv6.

Mais on arrive à ce résultat ahurissant que pour rester indépendant de son fournisseur, la seule bonne solution, c'est de ne pas passer à IP v6. Et ce pour une raison uniquement administrative et profondément débile liée au respect stupide que le RIPE a de ses sacro-saintes procédures. Techniquement? Ça ne change rien, notre FAI associatif aura bien un bloc d'adresses pour lui, qu'il pourra router comme bon lui semble[7].

La seule dépendance est administrative. Le RIPE force le FAI-client à rester chez le même LIR quoi qu'il arrive. Et ce choix ajoute une difficulté administrative stupide au déploiement, déjà pas bien en avance, de l'IPv6.

Etonnant, non ? On voudrait le freiner un peu plus qu'on ne s'y prendrait pas autrement.

Notes

[1] Il ne faut pas demander ce qu'est devenu la version 5, personne ne sait vraiment.

[2] Oui, ça fout la trouille, vu comme ça...

[3] 3 smartphones, des tablettes, quelques portables, un PC dans le bureau, l'ordinateur de la chaudière, sans parler de la machine à laver ou du frigo.

[4] Il se trouve que le "numéro de série", ou adresse MAC, des cartes réseaux est sur 64 bits, donc c'est assez pratique, on colle directement le numéro de série de la carte sans réfléchir et tout marche.

[5] Ca laisse donc les 64 bits pour mettre le numéro de série de la carte réseau, et 16 bits pour ranger son réseau comme on a envie, le meilleur des deux solutions; mais ça réduit considérablement la place disponible pour le réseau global. Enfin, réduit... Il reste 65.536 fois plus grand que le réseau dans sa version 4, pas de quoi pleurer.

[6] FDN à fait ce choix, parce que Gitoyen est une association dans laquelle FDN est largement impliquée, et que donc la "dépendence" est finalement assez virtuelle.

[7] La préconisation du RIPE, pour respecter sa procédure idiote, est dans ce cas de figure d'attribuer un réseau pris dans le bloc PA du LIR, et de désagréger le bloc PA pour que le client-FAI puisse annoncer sa plage d'IP sur son AS à lui. Donc, le nombre de routes annoncées sur Internet reste strictement le même.