Architecture et protocoles

ranet3 repose sur un empilement de protocoles standards. Le trafic est encapsulé par un ESP en mode tunnel implémenté en espace utilisateur (RFC 4303) transporté sur UDP (RFC 3948). L’établissement des tunnels utilise IKEv2 (RFC 7296) avec un échange de clés hybride ML‑KEM conforme à FIPS 203 (RFC 9370). Le routage interne s’appuie sur un démon Babel intégré (RFC 8966) enrichi de métriques de temps aller‑retour (RTT) (RFC 9616) et de routes spécifiques à la source (RFC 9079). La direction du trafic est contrôlée par SRv6 (RFC 8986) qui applique des politiques basées sur les préfixes source/destination.

Routage dynamique et latence

Babel mesure continuellement le RTT de chaque lien. Lorsqu’un lien direct devient plus lent que le relais, le paquet est redirigé vers ce dernier. La perte de paquets et les interruptions augmentent la métrique du lien, ce qui décourage son utilisation jusqu’à amélioration. Cette approche garantit que le chemin le plus rapide est choisi en temps réel, sans intervention manuelle.

Le segment routing en espace utilisateur fonctionne même sur macOS, où le noyau XNU ne supporte pas nativement SRv6. L’utilisateur définit une séquence de waypoints – par exemple A→B→C→B→D – et le trafic suit cet ordre avant de sortir par le préfixe D. La flexibilité de la chaîne de segments permet d’implémenter des politiques de transit complexes sans modifier la configuration du réseau sous‑jacent.

Évaluation de performance

Les tests ont été réalisés sur deux serveurs Dell PowerEdge C6420 équipés de processeurs Intel Xeon Gold 6130 (16 cœurs, 32 threads), 192 GiB de RAM et cartes Intel X710 10 Gbit/s SFP+. Le système d’exploitation était Debian 13 avec le noyau Linux 6.12.111. Les outils de mesure comprenaient iperf3 3.21 et le dataplane wireguard‑go 0.0.20250522.

En condition saturée, le dataplane kernel WireGuard a atteint 5.1‑5.4 Gbit/s en un sens, tandis que le kernel IPsec a limité à 4.0‑4.7 Gbit/s, impacté par le traitement d’un flux unique sur une file de réception NIC. ranet3, fonctionnant en espace utilisateur, a présenté des performances proches du kernel WireGuard, avec un débit maximal de 8.84 Gbit/s de charge TCP après encapsulation ESP/UDP et 18.76 Gbit/s en bidirectionnel sans tunnel. Le coût CPU, mesuré via /proc/stat, a été comparable aux solutions kernel, démontrant l’efficacité de l’implémentation userspace.

Interopérabilité et limites

ranet3 ne requiert que les protocoles IKEv2, ESP, Babel et SRv6. La compatibilité a été vérifiée avec strongSwan, BIRD et le module kernel seg6local sous Linux. Tout routeur ou commutateur supportant IKEv2 avec clés Ed25519, Babel et SRv6 devrait interopérer sans modification. Cependant, l’absence de support natif SRv6 sur certains systèmes (ex. macOS) impose le traitement en espace utilisateur, ce qui ajoute une couche de copie mémoire et peut limiter les performances sur du matériel à faible capacité CPU.