Archipel est un ensemble de logiciels experimentaux qui tentent de constituer un reseau résillient, sobre et tolérant au delai.
Nous nous basons sur les concepts et logiciels des DTN (Delay Tolerant Networks) et des réseaux opportunistes pour creer de nouvelle manières d'utiliser le reseau. Plus sobre et respectueux de l'humain et de l'environnement; explorons de nouvelles manières de se connecter entre humains avec les outils numeriques.
Créer un proxy Web pour diriger les requêtes sur un DTN. En Rust ou en Python
Créer un serveur Web qui repond aux requêtes provenant du DTN. En Rust ou en Python
Faire un état de l'art des recherches en DTN.
Recherche
Contactez EpicKiwi, ouvrez des issues ou venez simplement au LOL pour en discuter ensemble.
Introduction aux réseaux tolérant au délai
Un réseau tolérant au délai (DTN, Delay Tolerant Network) est un réseau qui permet la communication entre deux machines qui ne sont pas disponibles au même moment sur le reseau. On part du principe que l'information envoyée arrivera dans le futur a la destination mais on ne peux pas échanger directement.
Ce type de réseau est principalement utilisé dans le spacial de part les contraintes que cet environnement impose. Deux satellites ne sont pas forcement disponibles sur un réseau au même moment.
Ce type de réseau se base sur le fait que les noeuds du réseau (les machines par lesquel le message passe) vont stocker les messages à transmettre pour un certain temps avant de les transmettre. A partir de ce principe, il est possible d'imaginer plein de manière de transmettre et d'optimiser la transmission de messages.
Un réseau opportuniste est un variante d'un DTN dans lequel la structure du réseau change constemment et on ne suppose pas qu'une destination est ou sera disponible dans le futur. L'objectif d'un réseau opportuniste est orienté sur le fait de transmettre de l'information aux machines qui se présentent sans l'adresser à une destination spécifique.
Un Socially Aware Network (SAN)[1] est un type de DTN qui se base sur les dynamiques sociales pour optimiser la transmission de l'information dans le réseau. On se place a l'intersection entre les études sociologiues et de dynamique des groupes pour concevoir des algorithmes de routage permettant de transmettre l'information le plus vite possible.
Le Bundle Protocol est une architecture et une implémentation d’un protocol DTN. Plus d’infos dans l’article consacré.
Présentation du Bundle protocol
Le Bundle Protocol est un protocol qui propose une architecture[2] pour un réseau tolérant au délai se basant sur des messages appelés Bundle. Ces bundles contiennent toutes les informations nécéssaires pour interpreter l'information dans son intégralité. C'est à dire qu'un bundle peut être interpreté en lui même sans demander d'informations complémentaires. Informations qui peuvent demander des heures, des jours voir plus pour arriver.
Le réseau est constitué d'un ensemble de Nodes qui disposent chacun d'un identifiant*. Ces Identifiants sont les equivalents des noms de domaines dans le monde IP.
Les bundles sont produits par les Application Agents (AA). Ce sont les application de l'utilisateur qui se connectent à un node pour transmettre ou recevoir des Bundle. Ils se déclarent aupres du node sous un identifiant (l'Agent ID) qui s'ajoute à l'identifiant du node. L'identifiant du node et l'Agent ID forment ensemble un Endpoint Identifier (EID) qui se présente comme une URL sous la forme dtn://[identifiant du node]/[agent id]. Chaque bundle dispose donc d'un EID source et d'un EID de destination.
Les nodes vont se transmettre un bundles de proche en proche jusqu'a ce qu'il atteigne la destination. Si un node ne sait pas comment transmettre un bundle, ce node est libre de sa gestion. C'est l'algorithme de routage qui définie ce comportement. Certaines implémentations effacent le bundle, d'autres les diffusent à tout les nodes rencontrés[8], etc. Il existe de très nombreuses stratégies.
Pour échanger les données, les nodes font usage d'une Couche de convergence (CLA). La couche de convergence a pour rôle de lier deux nodes pour qu'ils puissent échanger leurs informations. Certaines se basent sur TCP[9], sur le protocol LoRa, etc. La normalisation ne définie pas la couche de convergence et l'implémentation est libre de la définir.
La dernière version est la version BPv7[3] qui propose une version du protocol basé sur CBOR[4]. Il existe quelques implémentations comme ION[5] (l'implémentation de la NASA), dtn7[6] (Une implémentation en Go et Rust) ou µD3TN[6] (Une implémentation en C orientée microcontrolleurs). Nous essayons d'utiliser et d'adapter µD3TN pour notre usage.
Pour un réseau plus soutenable
L'un des objectifs du projet Archipel est de concevoir un réseau plus soutenable du point de vue écologique et humain.
Écologiquement, le réseau Archipel tend vers la création d'un réseau qui s'émancipe de l'infrastructure réseau en utilisant directement la connexion pair-à-pair pour la transmission de l'information. Cela permet de soustraire la consommation d'énergie nécéssaire pour la simple transmission de l'information des réseaux IP (Cables terrestres et sous-marins, Routeurs, concentrateurs, etc.). Cela permet aussi de préserver les ressources terrestres nécéssaire à la production de machines réseaux de haute performance. Des ressources qui sont polluantes à l'extraction et au recyclage.
Humainement, Archipel expérimente une approche du réseau plus décentralisée et locale des réseaux numériques. Cela redonne le pouvoir aux humains d'heberger leurs contenu, de le diffuser et de le gérer sans intermédiaire. Les plateformes centralisées ne pouvant exister dans un réseau où la distance entre les utilisateur·ices implique un délai de réponse plus important.
Le réseau Archipel propose une approche du réseau numérique qui assume le temps et la distance entre les individus. L'objectif est de chercher à transmettre l'information à la cible le plus efficacement possible en prenant en compte l'impact environnemental et la vie privée des utilisateur·ices.
Cela ne va pas sans de nombreuses contraintes. Comment s'assurer que la majorité des données arriverons bien au destinataire ? Quel est le rôle de l'utilisateur·ice du réseau ? Comment favoriser l'émergance de réseaux locaux même pour les utilisateur·ice non experts ? C'est à toutes ces question et beaucoup d'autres que nous tentons de répondre avec Archipel.