Ingénieurs 2000 – Année 2004/2005 - Ludovic LELION Protocole BitTorrent Ingénieurs 2000 – Année 2004/2005 - Ludovic LELION
Sommaire Présentation Fonctionnement Démonstration Export de données Avantages / Inconvénients Conclusion
Présentation : Généralités Protocole de type "Peer to Peer" Inventé par Bram Cohen Objectif Faciliter la distribution de gros fichiers en diminuant la charge sur les serveurs Succès croissant Nombreuses organisations proposent des téléchargements via ce protocole (RedHat, Eclipse …) Peer to peer classique : chaque client partage une partie de sa bande passante pour partager des fichiers
Présentation : Glossaire Torrent Client Seeder Leecher Tracker Torrent : Extension du fichier contenant les informations sur les données à télécharger Seeder : Client ne faisant que d’uploader (possède tout le fichier) Leecher : Client désirant télécharger des parties (ne possède pas l’intégralité des données) Tracker : Chef d’orchestre du téléchargement. Contient les informations concernant les clients
Fonctionnement : Bases Pas de système de recherche Récupération d’un fichier d’informations Torrent Téléchargement d’un ensemble de fichiers Chaque client contient une ou toutes les parties des données à télécharger Récupération d’un fichier d’informations Torrent A partir d’Internet Sur d’autres systèmes Peer to Peer (Emule, Gnutella, …)
Fonctionnement : Architecture LEECHER LEECHER SEEDER TRACKER SEEDER Fichier .torrent
Fonctionnement : Encodage du fichier Torrent (BEncoding) Integer Préfixé par "i" et terminé par "e" Ex : i123e (123) ou i-231e (-231) String Préfixé par la longueur de la chaîne, suivi d’un ":" Ex : 10:Bittorrent ("Bittorrent") List Préfixé par "l" et terminé par "e" Ex : li3el3:Sub4:Listee (la liste [3, ["Sub", "List"]]) Dictionarie Préfixé par "d" et terminé par "e" Ex : d3:key5:value6:numberi7ee (le dictionnaire [key : value, number : 7])
Fonctionnement : Structure d’un fichier Torrent Contient les informations concernant les fichiers et le Tracker : announce : URL du Tracker info : informations sur les fichiers name : nom du fichier torrent files : description des fichiers length : taille d’un fichier path : chemin d’un fichier piece length : taille d’une partie pieces : chaîne de taille multiple de 20, représentant le code SHA1 de chaque parties
Fonctionnement : Connexion au Tracker Obtenir des informations concernant les clients connectés Envoi d’une requête HTTP avec les paramètres : peer_id : identifiant du client info_hash : le code SHA1 du dictionnaire "info" ip : adresse IP du client port : port du client
Fonctionnement : Réponse du Tracker Encodée au format BEncoding Dictionnaire contenant : interval : Intervalle à attendre avant de contacter le tracker peers : liste des clients connectés ip : adresse IP d’un client peer_id : identifiant d’un client port : port d’un client Les clients sont renvoyés de manière aléatoire
Fonctionnement : Communication inter clients Basé sur le protocole TCP Notion d’état : "Choked" : toutes les requêtes seront annulées "Interested" : si le client est intéressé Handshake pstrlen : Longueur de l’identifiant de protocole pstr : Identifiant du protocole reserved : 8 zéros info_hash : Code SHA1 du dictionnaire info peer_id : Identifiant du client (20 octets) Messages length prefix : Longueur du message message ID : Identifiant du message payload : Contenu du message
Fonctionnement : Echanges Au début tout le monde est Leecher Objectif : devenir Seeder Lors des échanges, chaque client indique les parties qu’il a récupéré Les Seeders envoient les parties qui ne sont pas présentes Les Leechers s’envoient les parties récupérées Dans la base du protocole, un client est connecté à 4 autres clients.
Fonctionnement : Algorithmes Encouragement au téléchargement Un client envoie en priorité aux clients chez qui il télécharge le plus rapidement Rarest First Envoi en priorité les parties les plus rares Optimistic Unchoking Toutes les 30s, un client devient "Unchoked". Un nouveau client a 3 fois plus de chance d’être sélectionnée.
Démonstration
Export de données Partager ses fichiers sur Bittorrent Création du fichier Torrent par les logiciels clients Choix des fichiers Choix du tracker Envoi à un tracker Diffuser le fichier Torrent Rester connecté
Avantages / Inconvénients Pas de files d’attentes Protocole très rapide Diminution de la charge des serveurs Inconvénients Pas de fonction de recherche Pas de support des clients derrière un Firewall ou un réseau NAT Démarrage lent d’un téléchargement Non persistance des données
Conclusion Protocole très efficace Améliorations possibles Différents clients Azureus BitTornado jAne (bientôt) Concurrence Slurpie PDTP ou Squall Bittorrent 2