- noq, développé par l’équipe n0, est une implémentation QUIC générique écrite en Rust qui prend en charge le multipath et la traversée NAT
- Le développement s’est orienté vers une base de code indépendante afin de dépasser les limites structurelles de l’architecture existante basée sur Quinn dans iroh
- Le projet inclut diverses fonctionnalités comme QUIC Multipath, NAT Traversal, Address Discovery, des extensions QLog et WeakConnectionHandle
- Il est utilisé en production depuis iroh v0.96, et les tests d’interopérabilité avec picoquic sont également terminés
- À l’avenir, l’équipe compte poursuivre la collaboration avec le groupe de travail QUIC et l’équipe Quinn, et faire évoluer noq en technologie de base pour les développeurs d’applications réseau en Rust
Annonce de noq
- noq est une implémentation QUIC générique développée par l’équipe n0, avec prise en charge du multipath et de la traversée NAT
- Elle est utilisée comme couche de transport depuis iroh v0.96, mais peut aussi servir à des usages généraux au-delà d’iroh
Du passage de Quinn à noq
- iroh utilisait auparavant QUIC sur la base de Quinn, mais de nombreuses fonctionnalités complexes, comme la traversée NAT et le basculement de chemin, devaient être gérées en dehors de QUIC
- En raison de ces contraintes structurelles, il était difficile d’apporter des modifications externes, ce qui a conduit à la décision de réaliser un hard fork de Quinn
- Tout en maintenant la collaboration avec Quinn, le projet a évolué vers une base de code indépendante afin de répondre aux besoins spécifiques d’iroh
Principales fonctionnalités de noq
-
QUIC Multipath
- Implémentation complète de la spécification QUIC Multipath, intégrant les relais et chemins directs d’iroh (IPV4, IPV6) comme des concepts de chemin de premier ordre dans QUIC
- Conservation d’un état de contrôle de congestion pour chaque chemin, avec possibilité de sélectionner le chemin optimal
- Auparavant, iroh manipulait les chemins sous QUIC ; désormais, QUIC les reconnaît et les gère directement
- Conçu comme une implémentation multipath générique utilisable aussi en dehors d’iroh
-
QUIC NAT Traversal
- Implémentation fondée sur une interprétation propre du brouillon QUIC NAT Traversal, présentée comme le premier cas doté d’une stabilité de niveau production
- Testée en conditions réelles sur plusieurs centaines de milliers d’appareils iroh
- Le hole punching NAT est effectué directement au niveau QUIC, ce qui permet un fonctionnement plus précis du contrôle de congestion et de la détection de perte
-
QUIC Address Discovery
- iroh utilise QUIC Address Discovery (QAD) depuis la v0.32
- L’adresse IP publique du client est apprise via la connexion QUIC plutôt que via STUN
- L’envoi de paquets chiffrés évite la rigidification du protocole et renforce la protection de la vie privée
-
Extensions QLog
- Enregistrement de divers événements des connexions QUIC sur la base du brouillon standard QLog
- Prise en charge de beaucoup plus d’événements qu’auparavant, avec ajout d’événements liés au multipath
- Compatible avec des outils de visualisation comme qvis, avec aussi un prototype de visualiseur affichant les flux de paquets multi-chemins
-
WeakConnectionHandle
- Type permettant d’être promu en objet
Connection en cas de besoin, sans maintenir la connexion en permanence
- Similaire à
std::sync::Weak, mais sans nécessiter l’usage de Arc
- Peut être utile notamment dans un gestionnaire de connexions
Déploiement en production et interopérabilité
- noq est utilisé en production depuis iroh v0.96
- En plus de sa propre implémentation multipath, les tests d’interopérabilité avec picoquic ont également été menés à bien
Feuille de route
- L’objectif est de faire de noq une technologie de base durable
- Amélioration de la traversée NAT et optimisation des performances fondée sur le multipath
- Poursuite de la collaboration avec le groupe de travail QUIC et l’équipe Quinn
- Extension de la collaboration avec les développeurs travaillant sur les implémentations QUIC, le transport P2P et les applications fonctionnant dans divers environnements réseau
- Mise à disposition de documentation et d’exemples de code pour permettre d’utiliser directement cette implémentation QUIC multipath en Rust
Présentation d’Iroh
- Iroh est une bibliothèque réseau de type « dial-any-device », qui prend en charge une configuration réseau flexible par combinaison de protocoles
- Elle est déjà exploitée sur plusieurs centaines de milliers d’appareils et publiée en open source
- Il est possible de participer au projet via la documentation, le code et le canal Discord
Aucun commentaire pour le moment.