Libp2p: Communication sans ports ouverts
User avatar
Curated by
pokapow
3 min read
64
Libp2p, une bibliothèque de réseau pair-à-pair, emploie des techniques innovantes comme le hole punching décentralisé et l'utilisation de relais pour permettre la communication entre des nœuds situés derrière des NAT et des pare-feu, sans nécessiter l'ouverture manuelle de ports sur les routeurs.

Traversée NAT et Pare-feu

La traversée de NAT et de pare-feu est réalisée grâce à un processus en deux phases : la préparation et le hole punching proprement dit. Lors de la phase de préparation, le protocole AutoNAT est utilisé pour déterminer si un nœud est directement accessible, tandis qu'une connexion relayée est établie entre les nœuds
1
.
Ensuite, le protocole DCUtR (Direct Connection Upgrade through Relay) entre en jeu pour synchroniser et coordonner le hole punching, permettant l'échange d'informations sur les adresses externes via la connexion relayée
2
.
Cette approche décentralisée élimine le besoin de serveurs de signalisation centralisés comme STUN ou TURN, offrant ainsi une solution plus flexible et évolutive pour la connectivité pair-à-pair
3
.
connectivity.libp favicon
docs.libp favicon
docs.libp favicon
3 sources

Mécanisme Hole Punching

blog.ipfs.tech
blog.ipfs.tech
Le mécanisme de hole punching permet d'établir une connexion directe entre deux nœuds A et B situés derrière des NAT ou des pare-feu. Le processus se déroule comme suit :
  • Les nœuds envoient simultanément des paquets l'un vers l'autre, "perçant" ainsi des trous dans leurs pare-feu respectifs.
  • Les routeurs ajoutent des règles temporaires (5-tuples) dans leurs tables d'état, permettant le passage des paquets entrants correspondants
    1
    .
  • Une fois les "trous" créés, les paquets peuvent traverser les NAT dans les deux sens, établissant ainsi une communication directe entre les nœuds
    1
    .
Cette technique ingénieuse permet à libp2p de contourner les restrictions des NAT et des pare-feu sans nécessiter de configuration manuelle des routeurs, offrant ainsi une connectivité quasi-universelle entre les nœuds du réseau
2
.
docs.libp favicon
connectivity.libp favicon
2 sources

Utilisation de Relais

En cas d'échec du hole punching, libp2p offre une solution de repli en utilisant des nœuds relais pour faciliter la communication entre les pairs. Ces relais agissent comme des intermédiaires, permettant aux nœuds de communiquer même lorsqu'ils ne peuvent pas établir de connexion directe
1
.
Bien que cette méthode puisse entraîner une latence plus élevée et une bande passante réduite par rapport aux connexions directes, elle garantit une connectivité fiable dans des environnements réseau complexes, assurant ainsi la robustesse et l'universalité du système de communication de libp2p.
connectivity.libp favicon
1 source

Protocoles WebSocket et QUIC

Pour les nœuds fonctionnant dans les navigateurs, libp2p exploite les protocoles WebSocket et WebTransport, qui ne nécessitent pas l'ouverture de ports spécifiques
1
.
WebSocket permet de "détourner" une connexion TCP, tandis que WebTransport fait de même avec une connexion QUIC. Ce dernier, basé sur UDP, offre de meilleures performances pour traverser les NAT
1
2
.
Bien que WebTransport soit encore en développement par les groupes de travail IETF et W3C, il présente un intérêt particulier pour libp2p en raison de sa capacité à contourner les exigences strictes en matière de certificats, le rendant ainsi adapté aux environnements pair-à-pair
1
.
connectivity.libp favicon
docs.libp favicon
2 sources
Related
Quels sont les avantages de WebTransport par rapport aux WebSocket
Comment fonctionne le mécanisme de "hole punching" dans libp2p
Quels sont les principaux défis liés à l'utilisation exclusive de QUIC pour les nodes libp2p
Comment libp2p gère-t-il les connexions entre nodes derrière des NATs ou des firewalls
Quels sont les avantages des streams dans libp2p par rapport aux requêtes HTTP