Ca se traine!

Le forum des offres internet et des modems disponibles chez SFR, Red by SFR.

Modérateurs : QSonic, Odo, Nico!, Macpeace, David M, Frédéric Fellague, Esteban, Maxximum, BARNABE

Répondre
Worse
Messages : 10
Enregistré le : jeu. 23 nov. 2006, 01:36
Localisation : Noos

Le test

Message par Worse » jeu. 23 nov. 2006, 17:01

Voici la preuve que Noos effectue un filtrage du protocole Bittorrent. Pour les sceptiques qui voudraient faire le test chez eux, la procédure suit. Le résultat du test est à la fin.

Le test :

J'ai utilisé deux machines : mon ordinateur avec sa connexion Noos (que j'appellerai par la suite "client"), et un gros serveur dans un data center qui a une connexion bien plus grosse que ma connexion Noos (que j'appellerai "serveur").

Le but : établir une connexion TCP entre le client et le serveur, et faire transiter divers type de données, toujours dans le sens serveur -> client, pour étudier la vitesse de transfert. Sur le client comme sur le serveur, les deux connexions sont "au repos", presque rien ne transite à part les données du test.

On va utiliser un fichier de 100 Mo de données binaires relativement aléatoires, et on va faire 3 tests:
- téléchargement par protocole HTTP;
- téléchargement direct dès la connexion TCP;
- téléchargement via protocole Bittorrent.

Le port utilisé sur le serveur est le port 8080. Mon port 80 est déjà utilisé, et cela reste un port assez courant sur le web, donc allons-y pour le 8080.

Étape 1: créer le fichier de données
On crée un fichier de 100 Mo de données binaires aléatoires (ou suffisament aléatoires). Il y a mille et une méthodes, j'ai choisi celle-ci.

Code : Tout sélectionner

bash$ perl -MDigest::SHA1=sha1 -e 'for (1 .. 5242880) {print sha1($_)}' > bigfile.dat
On obtient un fichier bigfile.dat de 100 Mo de tout et n'importe quoi.


Étape 2: téléchargement du fichier en HTTP
Sur le serveur, je configure un serveur Web pour qu'il écoute sur le port 8080 et je place le fichier bigfile.dat à un endroit accessible. Puis, sur le client, je télécharge le fichier avec wget (je masque l'adresse IP, je suis pudique):

Code : Tout sélectionner

bash$ wget http://xx.xx.xx.xx:8080/bigfile.dat
Résultat, wget me dit avoir téléchargé ce fichier à la vitesse de 1,13 Mo/s. Conclusion: lorsque Noos voit qu'il s'agit de HTTP, on peut télécharger le fichier rapidement.


Étape 3: téléchargement direct sans encapsulation dans un quelconque protocole
À l'aide de netcat.
Sur le serveur:

Code : Tout sélectionner

bash$ cat bigfile.dat | nc -l -p 8080 -q 0
Ensuite seulement, sur le client:

Code : Tout sélectionner

bash$ date; nc xx.xx.xx.xx 8080 > big.dat; date
Le client affiche alors l'heure, puis télécharge le fichier, puis ré-affiche l'heure. Cela donne à l'écran:

Code : Tout sélectionner

jeudi 23 novembre 2006, 15:28:20 (UTC+0100)
jeudi 23 novembre 2006, 15:29:52 (UTC+0100)
Le téléchargement a duré 92 secondes. On prend sa calculatrice, on divise 100 par 92, et on obtient la vitesse: 1,08 Mo/s. Conclusion: lorsque Noos ne peut pas savoir ce qui est en cours de transfert, on télécharge rapidement.


Étape 4: téléchargement via le protocole Bittorrent
Là, il ne faut pas se tromper. Pour être sûr de ce qu'on fait, on ne va pas utiliser de client Bitorrent. En effet, l'algorithme du client pourrait être la cause d'une vitesse trop faible. On va donc utiliser exactement la même méthode qu'à l'étape précédente, mais en maquillant grossièrement les données pour qu'elles aient l'air d'un échange entre 2 peers via Bittorrent.

On récupère le début d'un transfert Bittorrent à l'aide d'un sniffer tel que ethereal. On lance ethereal, puis on lance son client bittorrent avec n'importe quel torrent susceptible de générer du traffic. On attend un peu, puis on stoppe la capture des paquets, et on peut fermer son client Bittorrent. Dans le traffic capturé, on cherche le début d'un transfert de fichier. Ethereal est pratique, il connaît le protocole Bittorrent et on peut lui demander de n'afficher que le transfert lié à Bittorrent. Il affiche même les paquets qui correspondent à l'initialisation d'un transfert, qu'il présente comme "Bittorrent handshake". On regarde le contenu d'un tel paquet, on lui demande de sauvegarder, en binaire, la partie qui concerne le protocole Bittorrent (c'est-à-dire tout ce qui est au-dessus de TCP dans le paquet).

J'ai appelé ce fichier bittorrent.dat, voici son contenu:

Code : Tout sélectionner

bash$ hexdump -C bit.dat 
00000000  13 42 69 74 54 6f 72 72  65 6e 74 20 70 72 6f 74  |.BitTorrent prot|
00000010  6f 63 6f 6c 00 00 00 00  00 00 00 00 f3 d8 05 8c  |ocol........óØ..|
00000020  bc b8 9e 64 d2 ca 77 1e  6e 63 bd 7f db 1d 6c 69  |Œž.dÒÊw.ncœ.Û.li|
00000030  2d 6c 74 30 41 34 30 2d  78 f0 64 c5 f9 cc 18 60  |-lt0A40-xðdÅùÌ.`|
00000040  07 57 23 ec                                       |.W#ì|
00000044
En utilisant un éditeur hexadécimal, vous pouvez même le créer de toutes pièces à partir des données ci-dessus.

On insère le contenu de ce fichier au début de notre bigfile.dat, par exemple comme ceci:

Code : Tout sélectionner

bash$ cat bigfile.dat >> bittorent.dat
bash$ mv bittorrent.dat bigfile.dat
Maintenant bigfile.dat fait 100 Mo + quelques octets, et quand on va le télécharger, ça va ressembler à du protocole Bittorrent. Je dis bien ressembler, car en fait on a là que le début de l'échange entre deux vrais peers bittorrent, et l'envoi des données n'est pas sensé intervenir juste après. Mais bon, si une machine analyse le traffic, elle va voir que le début est du Bittorrent, donc elle va probablement ne pas faire attention à la suite.

Donc, avec notre nouveau fichier bigfile.dat, on refait l'étape précédente. Et là... on attend, on attend, longtemps. on regarde la taille du fichier en local pour voir à quelle vitesse il grandit. Résultat: 2 Ko/s. C'est-à-dire 500 fois moins vite que tout à l'heure. Conclusion: lorsque Noos voit que le traffic correspond au protocole Bittorrent, eh bien il vous met des batons dans les roues, et vous vous dîtes "ça allait plus vite avec mon modem 56K".

Conclusion
Télécharger 100 Mo en HTTP ou en n'importe quoi, depuis le port 8080 d'un serveur, ça va vite. Faire pareil avec juste quelques octets au début du transfert qui ressemblent à du Bittorrent, et vous passez de 1000 Ko/s à 2 Ko/s.

Donc je ne sais pas qui sont ces personnes chez Noos qui prétendent qu'il n'y a pas de filtrage et qu'il n'y en a jamais eu, mais ce que je sais c'est que c'est faux. Elles ne mentent peut-être pas, c'est peut-être ce qu'on leur fait croire chez Noos. Ou bien on leur a interdit de dire qu'il y a du filtrage, car si une source officielle le disait, ça se répandrait trop vite, alors que là, on l'a vu, le doute subsiste. Enfin subsistait.

Avatar du membre
Nico!
Team GC
Messages : 20962
Enregistré le : jeu. 01 avr. 2004, 09:46
Localisation : FTTH @BoulBi'
Contact :

Message par Nico! » jeu. 23 nov. 2006, 17:13

Je m'en vais transmettre ta très bonne démonstration aux personnes concernées.
Image

The Yoda
Messages : 3187
Enregistré le : jeu. 06 oct. 2005, 16:01

Message par The Yoda » jeu. 23 nov. 2006, 19:18

Merci pour le test worse... pourrais tu éclairer un neuronne qui ne fonctionne pas en tcp/ip :

1/ le fichier que tu envoies est juste maquillé pour ressembler à du torrent mais n'en est pas ... ai-je bien compris ?

2/ celà veut-il dire que le mode de connection de noos vers internet ne peut pas être la cause du ralentissement (comme le suggérait waterfront en réponse à mes interrogations précédentes) ?

Worse
Messages : 10
Enregistré le : jeu. 23 nov. 2006, 01:36
Localisation : Noos

Message par Worse » jeu. 23 nov. 2006, 19:46

yoda75013 a écrit :le fichier que tu envoies est juste maquillé pour ressembler à du torrent mais n'en est pas ... ai-je bien compris ?
En quelque sorte. C'est vrai que j'ai pas expliqué pourquoi j'ai choisi ces 3 tests là et pas d'autres, pas plus que je n'ai expliqué en détail pourquoi cette façon de procéder, dans la dernière étape, allait être comprise comme étant du Bittorrent par une éventuelle machine de filtrage. Mon but était simplement qu'on ne puisse pas nier qu'il y a bel et bien un filtrage. Et si quelqu'un me dit "mais il est erroné ton test", il sera toujours temps d'entrer dans les détails :-).
yoda75013 a écrit :celà veut-il dire que le mode de connection de noos vers internet ne peut pas être la cause du ralentissement (comme le suggérait waterfront en réponse à mes interrogations précédentes) ?
Le test prouve une seule chose: Noos détecte Bittorrent et fait chuter le débit. Dans le cadre de ce test, on a un téléchargement depuis la même machine, sur le même port, du même volume, dans les mêmes conditions, au même moment de la journée. La seule chose qu'on fait varier, c'est que pour le dernier test on ajoute au début du transfert un minuscule bout de données insignifiant (68 octets par rapports aux 104 857 600 octets transférés) qui veut dire en langage Bittorrent "bonjour, je suis un client Bittorrent et je veux des données".

Le test ne prouve pas qu'un traffic crypté va déjouer le filtrage, et d'ailleurs en pratique on a constaté que ce n'est pas le cas. Si on admet qu'un traffic Bittorrent crypté ne va pas à sa vitesse normale, alors on peut déduire de ce test que la détection du P2P se fait aussi sur d'autres critères. Il faudrait faire d'autres tests pour déterminer quels sont ces critères, mais c'est plus compliqué. Peut-être en ferai-je un, un de ces quatres.

Waterfront
Messages : 459
Enregistré le : jeu. 31 août 2006, 15:43

Message par Waterfront » ven. 24 nov. 2006, 10:39

Worse a écrit :Et si quelqu'un me dit "mais il est erroné ton test", il sera toujours temps d'entrer dans les détails :-).
Non !
Désolé, Worse …
Non, tu ne peux pas t'arrêter là, ici avec nous : pas possible !
Parce que ce qui se cache derrière les "détails" est exactement ce que nous souhaitons tous comprendre... Tu le sais bien :lol:

Et il n'y a pas besoin de prétendre que ton test soit erroné pour que ça vaille le coup que tu expliques, en espérant que nous puissions comprendre 8)

S'il te plaît…?
A mon niveau, quand ce qui était une conviction est totalement renversé par un début de démonstration, je ne tiens plus en place tant que je n'ai pas compris totalement le dessous des choses.

Merci,

Waterfront
--

Worse
Messages : 10
Enregistré le : jeu. 23 nov. 2006, 01:36
Localisation : Noos

Message par Worse » ven. 24 nov. 2006, 16:04

Waterfront a écrit :Et il n'y a pas besoin de prétendre que ton test soit erroné pour que ça vaille le coup que tu expliques, en espérant que nous puissions comprendre 8)
Y'a pas grand chose à comprendre. Moi-même je ne suis pas un spécialiste d'Internet. Je ne connais pas TCP/IP par coeur, et j'ai juste jetté un oeil aux spécifications du protocole Bittorrent pour faire ce test.

Pour bien comprendre le test, il est utile de savoir ce qu'est TCP. Voir par exemple cette explication assez simple. Quand monsieur tout-le-monde utilise Internet, les données qu'il envoie et qu'il reçoit son presque toujours placées (encapsulées) dans le protocole TCP. Il y a plusieurs couches qui entrent en jeu dans les communications entre ordinateurs sur Internet, tout comme il y a plusieurs couches quand on écrit une lettre à quelqu'un. Il y a le message, que l'on écrit sur une feuille de papier, que l'on place dans une enveloppe, que l'on place sur le circuit postal. Ce qui fait 4 couches. Celle tout en haut (la plus spécifique, tous les messages n'ont pas le même contenu) c'est le message, celle tout en dessous (la plus générale, toutes les lettres passent par La Poste) c'est le circuit postal.

Donc, comme TCP est utilisé pour tout ce que l'utilisateur lambda va faire (web, mail, ftp, etc.), il est évident que Noos ne va pas ralentir ce protocole, mais va s'intéresser, éventuellement, aux couches situées au dessus. Imagine que La Poste veuille gêner ceux qui s'échangent des lettres disant du mal de La Poste. Elle ne va pas s'intéresser à l'enveloppe, ni à la feuille de papier utilisée, mais au message lui-même. Si elle gêne tout ce qui passe par une lettre, elle va gêner presque tout le monde.

En l'occurence, ce qui permet de distinguer le Web, le mail, ou le peer-to-peer, c'est la couche située juste au-dessus de TCP. Juste au-dessus de TCP, on trouve le protocole HTTP pour le web (que tu viens d'utiliser pour avoir cette page), le protocole SMTP pour le mail, le protocole Bittorrent pour... Bittorrent, et bien d'autres.

Il faut noter que si ton fournisseur d'accès veut bloquer les pages web qui disent du mal de lui, il ne va pas pouvoir se contenter de détecter le protocole HTTP (au-dessus de TCP), sinon il va bloquer tous les gens qui font du Web. Il devra aller encore une couche au-dessus, pour analyser les données qui sont transmises via ce protocole HTTP, et qui représentent la page Web. La feuille de papier contient un message intelligible pour un humain dans un langage appelé "français". Le HTTP contient un message intelligible pour un navigateur web dans un langage appelé "HTML". Dans les deux cas, le but est d'avoir le message qui signifie quelque chose pour nous. Le reste sert au transport.

Lorsqu'on veut ralentir Bittorrent, on peut s'arrêter à la détection du protocole Bittorrent. Si on va une couche au-dessus, on va voir si l'utilisateur télécharge le dernier CD de Johnny Hallyday ou bien le dernier film de Spielberg. Bref, on va voir le message qui signifie quelque chose pour l'utilisateur, et ça Noos s'en moque un peu. Noos veut simplement éviter que ses clients utilisent trop de bande-passante. Surtout qu'il serait à peu près impossible de concevoir une machine capable de dire quel est le contenu du fichier échangé, car en l'occurence c'est un message intelligible pour un humain. Du moins pour simplifier, parce qu'en réalité le message est lui-même contenu dans un fichier informatique intelligible par une machine, donc Noos pourrait dire s'il s'agit d'un fichier AVI ou d'un fichier MP3. Que de couches, on se croirait devant des poupées russes.

Sachant tout cela, on veut savoir si Noos ralentit Bittorrent ou pas. Mais si ça se trouve, Noos ralentit tout, sauf les utilisations de base d'Internet telles que le Web ou le mail. C'est peu probable, mais ça serait un moyen de ralentir même le traffic P2P crypté après tout, alors autant vérifier. Pour savoir ça, j'ai téléchargé un fichier quelconque sur le Web, comme des millions de gens le font chaque jour. Le protocole peut être reconnu par Noos, c'est du HTTP. J'ai obtenu un débit de 1 Mo par seconde. Ensuite j'ai inventé pour l'occasion un protocole qui n'est pas du HTTP, qui n'existe pas, et qui ne veut rien dire. J'établis une connexion TCP avec un serveur, et je fais en sorte que le serveur balance ce protocole bidon à ma machine. Ça pourrait très bien être du P2P crypté mais Noos ne peut pas le savoir. Or il se trouve que j'ai obtenu le même débit. Conclusion, l'hypothèse selon laquelle Noos ne laisse passer que le Web et les quelques protocoles de base est fausse. Un téléchargement suspect car de nature inconnue va à la même vitesse qu'un téléchargement banal sur le Web.

Et si ce téléchargement de nature inconnue devenait un téléchargement Bittorrent identifiable ? Je vais établir à nouveau une connexion TCP avec mon serveur, et cette fois je vais faire passer non pas des données bidons, mais des données qui constituent un échange via le protocole Bittorrent (ou presque). Pour que le test soit valide de manière claire, il ne faut changer qu'un seul paramètre du test précédant. Je fais donc la même chose dans les mêmes conditions. Je m'arrange juste pour bricoler de manière grossière mon protocole bidon de tout à l'heure, afin que le début de l'échange ressemble au protocole Bittorrent. Les premières données envoyées signifient en langage Bittorrent "je suis un client Bittorrent", ensuite le reste ne correspond plus tu tout au protocole Bittorrent. C'était bien plus facile de faire comme ça, et le résultat prouve que ça a suffit pour que Noos considère ça comme un vrai téléchargement avec Bittorrent. Alors qu'il m'a fallu 92 secondes pour télécharger 100 Mo de données en HTTP et dans un protocole bidon, il me faut maintenant attendre presque 6 jours pour recevoir la même quantité de données. J'ai pas attendu évidemment.

Toutes les lignes de commandes que j'ai donné ne sont qu'un moyen de faire ce test, il y en a d'autres. Je les ai donné pour pas me ramener avec mon total de 2 messages en disant "j'ai fait un test, j'ai la preuve que Noos bride Bittorrent, croyez-moi sur parole". Là il est possible pour quelqu'un de mettre le doigt sur un point erroné ou de confirmer le test.

Bon, c'est à moitié du hors-sujet tout ça, mais après tout c'est une bonne chose que d'être sûr que Noos bride le débit. Mais je ne me fais pas d'illusions, on entendra probalement bientôt que Noos ne bride rien. Ou alors que c'est temporaire, que bientôt le réseau aura une capacité suffisante, comme il est dit par un monsieur de chez Noos dans une interview de 2005 sur ce site. On est presque en 2007, et mon upload ne dépasse toujours pas 30 Ko/s. Je pense qu'on peut arrêter d'avoir de l'espoir maintenant.

Waterfront
Messages : 459
Enregistré le : jeu. 31 août 2006, 15:43

Message par Waterfront » ven. 24 nov. 2006, 16:21

Merci de cette réponse; Worse. Sympa d'avoir pris le temps !
Toutes tes analogies sont claires, c'est compréhensible.
Merci encore :wink:

Waterfront
--

The Yoda
Messages : 3187
Enregistré le : jeu. 06 oct. 2005, 16:01

Message par The Yoda » ven. 24 nov. 2006, 16:30

Worse a écrit : Y'a pas grand chose à comprendre. .
Bah si justement. Après avoir lu tes explications, j'ai l'impression d'avoir compris (ce que j'avais besoin de comprendre...) et je me sens moins bête.

Merci d'avoir pris le temps pour l'explication, et d'avoir eu l'intelligence de nous faire la traduction en langage commun.

En même temps c'est la contribution la plus violente contre Nc que j'ai jamais lue... parce qu'elle est reproductible avec certitude... (alors que pour la hotline, même si nous avons tous le sentiment d'être pris pour des pigeons, ce n'est pas systématique...)

Passionnant...

Worse
Messages : 10
Enregistré le : jeu. 23 nov. 2006, 01:36
Localisation : Noos

Message par Worse » ven. 24 nov. 2006, 16:36

Ah ben si ça a pu vous servir, alors tant mieux :).

Waterfront
Messages : 459
Enregistré le : jeu. 31 août 2006, 15:43

Message par Waterfront » ven. 24 nov. 2006, 17:14

Worse a écrit :Ah ben si ça a pu vous servir, alors tant mieux :).
Pour nos "comprenettes" respectives, Worse !
Voilà à quoi ça a été utile :wink:
Ça fait partir nos dernières illusions d'enfants, mais c'est pas grave !
On a un doute en moins.

Waterfront
--

Répondre