Infrastructure IPv6

De Société Coopérative d'Aménagement Numérique Icaunaise
Aller à la navigation Aller à la recherche

SCANI a adhéré au RIPE NCC en septembre 2016. A cette occasion, le réseau existant AS201080 s'est vu attribuer un bloc PA IPv6 : 2a0b:3200::/29. Pour l'instant, SCANI n'utilise que les deux premiers /32, réservant les trois quart de l'espace aux usages futurs.

Adressage

Contrairement à IPv4, la nouvelle version permet, de par le nombre d'adresses disponibles, d'attribuer des blocs d'IP entiers aux utilisateurs finaux. La recommandation minimale est l'attribution d'un /64 (18446744073709551616 adresses) à chaque utilisateur final. Afin de pouvoir le plus simplement possible découper ce bloc en de multiples sous réseaux (par exemple un réseau wifi privé, un réseau public, ...), SCANI a choisi d'attribuer un /56 ( 4722366482869645213696 adresses) à chaque adhérent disposant d'une connexion.

Un bloc /32 entier a été dédié à cet usage, soit la possibilité de déléguer des blocs à quelques 16 millions d'utilisateurs.

DHCPv6 vs SLAAC

La principale difficulté rencontrée lors du déploiement a été la méthode pour fournir aux CPEs (les routeurs, majoritairement des TPLink premier prix sur le réseau SCANI) des adhérents leur adresse d'interco (l'unique qu'on fourni habituellement en IPv4) ET le sous réseau qui va derrière (là ou, en IPv4, on n'a qu'un 192.168.x.0/24 habituellement).

La méthode la plus simple est SLAAC qui, pour faire simple, permet que le terminal choisisse de lui même les adresses qu'il va utiliser. Peu efficace concernant un réseau d'opérateur puisqu'il faut pouvoir savoir qui utilise quoi ET permettre aux utilisateurs de conserver le même bloc IP même en cas de changement de matériel. La solution a donc été écartée rapidement

Le DHCPv6 reprends les mêmes grands principes que le DHCPv4. Toutefois, il ne se base plus sur l'adresse MAC de l'équipement final mais sur le DUID qui est une combinaison de l'adresse MAC et d'autres paramètres non prédictibles. Et comme le monde est mal fait, ce DUID n'est pas accessible facilement en dehors de brancher l'équipement sur un réseau ouvert pour constater sur pièce le DUID utilisé.

Il semble possible d'utiliser quand même la MAC avec certaines versions de DHCPv6 mais il a été décidé de se cantonner pour l'instant à une configuration purement statique des adresses sur les CPE. Avantage : pas besoin de se prendre trop la tête. Problème : difficile de déployer à grande échelle.

D'autres tests vont être menés, mais en attendant, la configuration "en dur" fait le job.

Injection ExaBGP

L'autre problème concerne le fait que le coeur du réseau (une zone OSPF chez nous) doit être au courant des blocs d'adresses attribués aux réseaux derrière les CPE et qu'il doit savoir comment les joindre. L'implémentation de DHCPv6 utilisée par les routeurs Ubiquiti dont on se sert ne sait pas injecter des routes dynamiquement, il a donc fallu ruser.

Notre choix s'est porté sur le montage de plusieurs route servers BGP utilisant exaBGP. Ça oblige à configurer du BGP sur l'ensemble des routeurs layer3 du réseau (une douzaine actuellement) et ça injecte une route par utilisateur dans chaque routeur, mais ça permet de faire une interconnexion directe entre le SI et les quelques route servers pour que les nouveaux prefix IPv6 soient routés immédiatement après leur déclaration sur la fiche de l'utilisateur et ce sans rien reconfigurer.

L'autre avantage est la portabilité totale des blocs concernés. Si un utilisateur déménage au sein du réseau SCANI, il conservera le même bloc. S'il change son CPE également.

Le réseau SCANI dispose pour l'instant de trois serveurs exaBGP abrités par des machines virtuelles légères.

Nous avions commencé par faire une seule IP anycast pour ces trois machines, mais nous avons constaté quelques effets de bord désagréables sur quelques routeurs OSPF du réseau qui avaient des metrics similaires pour deux instances d'exaBGP, menant donc à des déconnexions/reconnexions BGP à n'en plus finir. On est donc revenu sur une configuration plus classique avec 3 neighbors BGP, un par instance exaBGP, sur chaque routeur. Plus gourmand en configuration mais beaucoup plus stable.

Interco SI

Chaque instance exaBGP fait tourner un petit script qui va se connecter au système d'information de SCANI via une API faite maison. Cette API retourne toutes les 10 secondes l'ensemble des blocs v6 attribués à des utilisateurs et l'adresse v6 d'interco de leur CPE.

Pour l'instant, tous les exaBGP injectent toutes les routes dans tous les routeurs. Il est prévu de sectoriser un peu tout ça pour éviter la surpopulation dans les tables de routage avec le temps.

Lors d'une modification de CPE (l'IPv6 d'interco est calée sur l'ID du CPE dans le SI et l'ID de la zone géographique), exaBGP supprime la route et la recrée avec les bonnes informations quand il les a.

BGP & OSPFv3