Image of an arrow

Introducing DHTNet: Distributed Peer-to-Peer Networking Made Simple

Avatar

aberaud

Savoir-faire Linux est ravi d’annoncer DHTNet, une nouvelle bibliothèque en C++17 issue du projet Jami, conçue pour simplifier la connectivité pair-à-pair (P2P).

DHTNet permet aux développeurs d’établir des connexions P2P sécurisées entre des appareils en utilisant uniquement des clés publiques, éliminant le besoin d’une infrastructure centralisée ou d’un adressage IP direct.

[L’introduction est en français, le reste du texte en anglais]

Features

  • Connection Management: DHTNet simplifies the establishment and management of connections to peers, streamlining the communication process.
  • Multiplexed Sockets: It provides multiplexed sockets that allow multiple channels for data transmission, optimizing network resources.
  • UPnP Integration: DHTNet seamlessly integrates with UPnP, enabling automatic port mapping and enhanced network connectivity.
  • Server TURN Support: DHTNet includes support for server TURN, used as a fallback for connections if the NAT block all possible connections.

Technical Overview

DHTNet is a C++17 library designed to serve as a network overlay that provides an IP network abstraction. Its main objective is to establish secure peer-to-peer connections using public-key authentication.

DHTnet allows you to connect with a device simply by knowing its public key and efficiently manages peer discovery and connectivity establishment, including NAT traversal.

At its core, DHTNet integrates several established standards and technologies to provide robust P2P connectivity:

  • OpenDHT serves as the foundation for peer discovery on the distributed network
  • ICE (Interactive Connectivity Establishment) is handled by pjnath, supporting connection through NATs and firewalls
  • Security and authentication are implemented through GnuTLS

The library implements a true peer-to-peer architecture where devices can discover and connect to each other through public key-based addressing. This approach eliminates the need for static IP addresses or central coordination servers, making it particularly suitable for dynamic network environments.

Use Cases and Applications

DHTNet is particularly well-suited for:

  • Embedded systems and IoT devices that require direct peer-to-peer communication
  • Distributed applications that need to operate without central infrastructure
  • Systems where traditional client-server architectures are impractical
  • Development of decentralized networking protocols and applications

Technical Requirements

  • Build tested with:
    • GCC on GNU/Linux
    • Clang on Android, iOS and macOS
    • MSVC on Windows
  • C++17 compatible compiler required
  • Dependencies:
    • OpenDHT
    • Our fork of pjproject, implementing ICE/TCP
    • GnuTLS

Contributing

DHTNet is an open-source project under the GPLv3+ licence, and contributions from the community are welcome. The codebase aims to maintain high standards of code quality and documentation to facilitate collaboration and maintainability.

Future Development

The development roadmap includes:

  • Additional transport protocol support
  • Enhanced API documentation
  • Performance optimizations for constrained environments
  • Extended example implementations

We encourage developers interested in distributed systems and peer-to-peer networking to explore DHTNet and provide feedback on its functionality and potential improvements.

https://github.com/savoirfairelinux/dhtnet/

https://github.com/savoirfairelinux/dhtnet/blob/master/BUILD.md

 


Articles similaires

Image of an arrow

Entraînement de YOLO pour la Détection Temps Réel sur Système LiDAR Il s’agit du deuxième volet d’une série en trois parties consacrée à la détection temps réel sur système LiDAR. Retrouvez ici l’article 1 sur la génération de jeux de données synthétiques de profondeur et NIR. Actuellement, de nouveaux LiDAR embarqués à basse résolution, tels […]

Permettre la Détection Temps Réel grâce à la Génération de Données LiDAR Synthétiques Cette série d’articles couvrira les éléments essentiels au déploiement d’un système de détection en temps réel avec un module dToF 3D LiDAR. Ce premier article est consacré à la génération de données LiDAR synthétiques. Génération de données LiDAR synthétiques pour la détection […]

Accélérer le démarrage précoce de Linux avec Yocto multiconfig De Paul Le Guen de Kerneizon Introduction Dans les produits embarqués, il est souvent essentiel de gagner quelques secondes, voire quelques centaines de millisecondes, entre la mise sous tension et la disponibilité de l’application. Dans cet article, je vais présenter un workflow pratique pour mesurer, comparer […]

Dans le monde actuel, où tout, des machines à café aux équipements industriels, est connecté au réseau, connaître et évaluer la sécurité de vos logiciels et de leurs dépendances n’a jamais été aussi crucial. La plupart des vulnérabilités proviennent de petits bogues dans des composants logiciels, et plus récemment (bien que plus rarement) d’attaques sophistiquées […]

Object detection

Déployer un réseau de neurones artificiels convolutionnels sur un système embarqué Introduction L’essor des plateformes embarquées capables de traitement IA a profondément changé la donne : il est désormais possible de déployer des solutions intelligentes sur l’équipement lui-même, sans dépendre du cloud. C’est ce qu’on appelle l’« edge AI ». Lors d’un récent projet, nous […]