Ange P2PFR.com
libtorrent implémente la version 2 du protocole BitTorrent
Europe/Paris Créée le 8 septembre 2020 à 14h46
Par 111110101011
Consultée 25269 fois

libtorrent est la bibliothèque logicielle utilisée par Deluge, qBittorrent, Tonidoplug, Miro, ainsi qu'une multitude de clients BitTorrent généralement minimaux et assez confidentiels.

Ce billet de blog publié le 7 septembre (edit màj: article repris/traduit en français ici) nous rapporte que la spécification BEP 52 (dont le nom complet est "Spécifications du protocole BitTorrent v2") a été implémentée.

Cette spécification n'est pourtant pas nouvelle (créée en 2008, amendée plusieurs fois depuis), mais récemment il semble qu'il y ait volonté de la rendre opérante, sans doute du fait de la pression grandissante autour de l'algorithme SHA-1 qui est utilisé pour garantir que les morceaux des fichiers échangés sont les bons. Ce n'est effectivement plus le cas si l'on parvient à fabriquer facilement des collisions, ce qui commence à être le cas pour SHA-1. Pour le dire plus vulgairement, cette évolution du protocole sert à éviter que le réseau BitTorrent soit vulnérable aux fakes !
Outre libtorrent, BiglyBT prévoit également d'implémenter cette spécification prochainement.

Faire la transition, ses intérêts

Il y aura peu changements visibles pour l'utilisateur/utilisatrice. Mais l'écosystème logiciel devra être mis à jour. Les fichiers .torrent actuels n'utilisent que la V1 du protocole, il faudra donc en générer de nouveaux pour qu'ils prennent en compte la V2.

Bien que la V1 et la V2 ne soient pas compatibles, certains mécanismes ont été prévus pour faciliter la transition. Notamment, des fichiers .torrent hybrides pourront être compatibles à la fois la v1 et la v2. Cependant, les essaims de la v1 et ceux de la v2 seront séparés : les hashs des fichiers qu'ils regroupent ne seront pas identiques, et il ne sera donc pas possible de faire la correspondance. Les clients BitTorrent souscriront donc sans doute à la fois à l'un et l'autre des essaims.

Outre cette protection contre les collisions, de petites améliorations sur le fichier torrent rendront le réseau un peu plus efficace : l'usage de «Merkle Hash Tree» devrait aboutir à une réactivité plus fine du réseau, notamment favorable aux liens magnet qui pourront démarrer plus rapidement. Les «morceaux» (chunks) des fichiers échangés pourront aussi être plus petits sans pénalité, ce qui facilitera leur retéléchargement (outre des problèmes de transfert, des membres malicieux du réseau peuvent actuellement perturber le fonctionnement du réseau : leur impact devrait être réduit par la V2).

Actuellement, des fichiers identitiques mais situés dans des essaims différents sont isolés, car le hash calculé n'est pas le même. Cela ne sera plus le cas avec cette v2 : les clients BitTorrent v2 pourront théoriquement collectiviser plusieurs essaims si des fichiers identiques se trouvent en leur sein.

Enfin, économie de bouts de chandelles, les .torrent pourraient être plus petits dans les cas où ils contiennent de nombreux petits fichiers, car les noms des chemins ne seront plus inscrits en complet pour chaque fichier, mais seront structurés et relatifs. Tandis que les fichiers .torrent hybrides (contenant à la fois les hashs nécessaires à la v1 et la v2) seront fatalement plus gros.

Les liens magnet correspondant au protocole v2 sont identifiés par urn:btmh:, au lieu de urn:btih: pour la v1.

Le monde du P2P bouge très peu en surface, cette évolution pourrait passer inaperçue ou être ignorée et ne pas être adoptée dans le pire des cas.
Il faudrait que d'autres clients emboitent le pas, notamment, nous ne savons pas si les clients transmission et rtorrent prévoient d'adopter cette spécification. Mais il faut voir le positif : ces petites améliorations sont appréciables, et viennent chatouiller l'immobilisme des technologies de téléchargement qui sont encore imparfaites.
Aussi ne faut-il pas se méprendre sur la signification du changement du numéro de version, il témoigne davantage de l'incompatibilité du nouveau protocole avec l'ancien, que d'un réel changement dans son fonctionnement.

Note 1 : mention de la BEP 52 dans des rapports de bug de Transmission : https://github.com/transmission/transmission/issues/458 et https://github.com/transmission/transmi ... ssues/1339
Note 2 : je n'ai pas trouvé de mention de la v2 ou de la BEP 52 dans le Github de rtorrent.