WorkshopDocumentation/Partage-De-Contenu-Peer-to-Peer
Copyright (C) 2014 Mathieu Goessens <gebura@poolp.org>
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Sommaire
Présentation Peer-to-Peer
Objectifs: découvrir les technologies et outils peer-to-peer, et réfléchir à leur adéquation pour des besoins de documentation et de partage entre labfabs.
Introduction aux technlogies Peer-to-Peer
Slides: http://gebura.eu.org/~geb/p2p-web-challenges-and-perspectives2.pdf
La diffusion de contenu sur Internet
- Modèle client serveur: un serveur puissant, n clients.
- Avec le temps, ce modèle se complexifie à cause de l'augmentation des volumes de données (contenus riches), de l'augmentation du nombre de clients etc.
- Le modèle client serveur actuel repose plutôt sur un grand nombre de serveurs.
Cela pose de nombreux problèmes:
- coûts
- dissymetrie de trafic
- vie privée: toute les données sont stockés au même endroit
- résistance aux attaques
- [...]
Pour tous ces problèmes, ce sont les utilisateurs qui en payent le prix.
- coûts : pubs
- dissymetrie de traffic: problèmes réseaux, sites lents.
- vie privée
- faciliter à éteindre certains sites (wikileaks)
Pour certains de ces problèmes, les technologies peer-to-peer proposent des solutions.
Les technologies peer-to-peer
En quelques mots:
- des "noeuds" égaux, à la fois client et serveur, s'échangeant des choses entre eux, sans rôle particulier.
- utilisatés pour du stockage, de la distribution de contenu, de calculs etc
- aux origines, internet était peer-to-peer.
Trois grand modèles:
- centralisé
- structuré
- non structuré
le modèle peer-to-peer centralisé
Un serveur joue le rôle de coordinateur.
- Les noeuds voulant offrir une ressource (contenu, puissance de calcul...), en informe ce serveur.
- Les noeuds voulant utiliser une ressource (récupérer un contenu...), demandent au serveur qui renvoie la liste des noeuds proposant cette ressource.
- les noeuds discutent en suite directement entre eux.
Caractèristiques:
- Simple: se code en quelques dizaines/ centaines de ligne
- Efficace: le serveur connait tout, il peut donc proposer les meilleurs peers (même ville, même fai, noeud moins chargé...).
- Peu solide: tout repose sur ce serveur
Exemple:
- Trackers bitTorrent
- Napster (coupé, lorsque le serveur central a été éteint).
Le modèle peer-to-peer structuré
En quelques mots:
- Les noeuds fonctionnent avec une structure forte. Exemple: une DHT un tableau de donnée distribué.
- Les noeuds savent joindre quelques voisins et peuvent ainsi router des messages.
- Les noeuds ont des adresses, les données aussi, les noeuds sont responsables des données les plus proches d'eux.
Caractéristiques:
- Simple: un tableau (get/push) donc très generique
- On ne peut faire des recherches que sur des valeurs exactes
- Bonne propriétés mathématiques sur les temps de transfert des messages, mais pas forcément suffisant
- Il faut un moyen de joindre le réseau: demander au réseau local, à un serveur distant...
- Les noeuds sont obligés de se pinger régulièrement pour maintenir les tables de routages etc
Exemples:
- Kadmelia (eMule , BitTorrent DHT)
Le modèle peer-to-peer non structurés
En quelques mots:
- Les noeuds sont connectés de manière +/- random, sans structure forte.
- Les messages sont diffusés à la manière d'une rumeur, ou d'une maladie, chaque noeud qui reçoit un message le transfert X fois
Caractèristiques:
- Simple à faire marcher
- Moins couteux qu'une DHT car moins de messages de contrôle.
- Comme la diffusion des messages est probabiliste, on ne peut pas s'assurer que tout le monde reçoive le message. Pas adapté à tous les cas d'usages donc.
Exemples:
- Infrastructure internet
- BGP (routage)
- Serveurs IRC
- Serveurs Usenet
- Gnutella
- BitTorrent Peer-Exchange (PEX)
Quels usages ?
- Partager des données entre labfab ?
- Travailler à plusieurs sur ces données ? Plus ou moins en même temps ?
- Partager l'hebergement des données ? (et les téléchargement)
- Archiver des données ?
Ces questions pourront amener à des réponses différentes et donc à des choix de technologies différents.
Quelques exemples de technologies peer-to-peer
Syncthing
Outils de synchronisation àla dropbox en Peer-to-peer.
Comme beaucoup d'outils "peer-to-peer", il est vendu comme "magique", quasi sans aucune doc de fonctionnement (à part les formats de messages À part le format des messages https://github.com/syncthing/syncthing/blob/master/protocol/PROTOCOL.md ).
Une question que l'on s'est posé est la manière dont se passe la résolutions de conflits, conflits qui peuvent apparaître lorsque plusieurs personnes travaillent en même temps sur le ou les mêmes documents.
Syncthing propose plusieurs modes de versionning, nous les avons testés tous les trois:
- Sans versionning: syncthing ne converne que la dernière version d'un fichier, si il y a eu des modifications entre temps, elles sont perdues, sans que le moindre message d'information le laisse apparaitre.
- versionning simple:
- fichiers restent differents
- nouveau fichier pas vu de l'autre coté
- versionning "avancé" ok
- versions mises dans un dossier different
- pas de lock, pas de resolution de conflit
- noeud de synchronisation installable ?
- mode de fonctionnement en arbre