Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Mon livre « Cyberstructure »

Ève

Peut-on « débrider » sa connexion YouTube avec le DNS ?

Première rédaction de cet article le 11 février 2013


Une société vient de clamer qu'elle pouvait « débrider gratuitement l'accès à certains sites comme Youtube qui est bridé par votre fournisseur d'accès à internet ». Est-ce possible ? Et, si oui comment font-ils ?

On comprend le modèle d'affaires de cette société. Un grand nombre d'internautes sont en effet très mécontents du peu de fluidité des flux vidéo avec certains services comme YouTube. En effet, le conflit entre les fournisseurs de service comme Google (propriétaire de YouTube) et les FAI (comme Free ou Orange) autour du problème « qui va payer ? » amène parfois à ne pas augmenter la capacité du réseau qui relie le fournisseur de services au FAI, voire à restreindre délibérement cette capacité (« bridage »). (C'est l'une des facettes de la question dite de « neutralité du réseau ».) Depuis de nombreux mois, par exemple, regarder des vidéos YouTube depuis Free est très pénible, avec des arrêts soudains, des dizaines de secondes passées à regarder tourner un indicateur de chargement, etc. Les dirigeants de Free clamant bien fort qu'ils ne résoudront le problème que lorsque Google aura cédé et les paiera, il est logique que les « freenautes » cherchent des solutions, ce que leur FAI ne fait pas.

La société Speed-DNS prétend qu'elle a une telle solution, qu'elle peut « [garantir] une vitesse de streaming aussi importante que chez les autres opérateurs.  ». Or, Speed-DNS est simplement un service de résolveurs DNS. Elle fournit deux résolveurs, identifiés par leurs adresses IP, 178.33.182.34 et 5.135.158.150, qu'on peut utiliser à la place de ceux normalement fournis par son FAI (voir la documentation de Speed-DNS). Quel est l'intérêt ? Un résolveur DNS est un composant quasi-indispensable d'un accès à l'Internet. C'est le serveur auquel on donne un nom de domaine comme www.bouletcorp.com ou www.ati.tn et qui répond par l'adresse IP du serveur correspondant, adresse qui sera utilisée par les machines pour communiquer. Normalement, un résolveur en vaut un autre, car ils donnent tous la même réponse. L'internaute typique se sert donc de ceux fournis par son FAI, configurés automatiquement via la box. Toutefois, depuis quelque temps, deux facteurs ont mené à l'apparition de services de résolveurs DNS publics, distincts de ceux du FAI. Le plus connu est Google Public DNS. D'abord, certains FAI offrent un service médiocre, en fiabilité ou en temps de réponse, poussant certains à aller voir ailleurs un meilleur service (souvent sans mesurer, en faisant une confiance aveugle à la publicité du service). Mais certains FAI font pire. Normalement, un résolveur DNS n'est qu'un relais : il transmet les questions de l'utilisateur aux serveurs DNS faisant autorité (par exemple, pour www.ati.tn aux serveurs de l'ATI) et relaie les réponses vers l'utilisateur. Or, certains FAI modifient les réponses DNS dans le résolveur, pour servir aux utilisateurs de fausses informations. Ce sont les DNS menteurs. Un exemple est le service AdGate de Free (désormais désactivé par défaut, donc ne mentant que si l'utilisateur l'a explicitement réclamé). Ce mensonge peut être imposé par la loi, à des fins de censure, comme le fait l'ARJEL. Utiliser un résolveur DNS public situé dans une autre juridiction peut donc permettre de contourner ces mensonges. (Mais attention, certains résolveurs DNS publics ont leurs propres mensonges.)

Et qu'est-ce que cela change pour YouTube ? Faisons un petit détour vers le fonctionnement de YouTube. Lorsque l'utilisateur se connecte à YouTube, le point de départ est le nom de domaine youtube.com. Via le résolveur DNS, il est ensuite traduit en un groupe d'adresses IP, le navigateur Web va alors se connecter à une de ces adresses (en utilisant HTTP), récupérer une page contenant à son tour des informations sur la source du flux vidéo (où on trouve des noms comme r12---sn-25g7rn7l.c.youtube.com), le navigateur se connectera à ces sources et recevra la vidéo. Le résolveur DNS ne peut rien faire sur le flux vidéo lui-même qui ne passe pas par le DNS. Un résolveur DNS comme celui de Speed-DNS n'a pas de possibilité d'action ici. Que peut-il donc faire ? Speed-DNS répond « on ne va pas dévoiler nos systèmes internes en public ». Qui peut être assez naïf pour avaler un tel argument ? « J'ai mis au point un système pour faire des recherches sur le Web dix fois plus vite qu'avec Google. Je ne vais pas le dévoiler car je ne veux pas me faire piquer l'idée mais il me faut 20 M€ pour le financer, merci de m'envoyer un chèque. »

Pourtant, un résolveur DNS a des possibilités : il peut mentir (pour la bonne cause), en donnant comme adresse IP de YouTube une autre adresse IP que l'officielle. Quel intérêt ? Cette adresse IP pourrait être, par exemple, celle d'un service de relais, comme il en existe déjà pour contourner les bridages.

J'ai mis tout cela au conditionnel : en effet, il faut d'abord tester que l'interrogation des résolveurs DNS de Speed-DNS montre un tel effet. Par exemple, depuis Free, en utilisant l'outil de débogage dig, la réponse renvoyée par le résolveur standard (dans la Freebox) est (j'ai abrégé pour simplifier) :

% dig youtube.com
...
;; ANSWER SECTION:
youtube.com.			74.125.230.229
youtube.com.			74.125.230.225
youtube.com.			74.125.230.230
youtube.com.			74.125.230.231
youtube.com.			74.125.230.233
youtube.com.			74.125.230.224
youtube.com.			74.125.230.227
youtube.com.			74.125.230.228
youtube.com.			74.125.230.232
youtube.com.			74.125.230.226
youtube.com.			74.125.230.238

;; Query time: 40 msec
;; SERVER: 192.168.2.254#53(192.168.2.254)           <--- Le résolveur dans la Freebox
;; WHEN: Mon Feb 11 08:44:20 2013

Alors que celle renvoyée par le résolveur de Speed-DNS est :

% dig @178.33.182.34 youtube.com
...
;; ANSWER SECTION:
youtube.com.			173.194.41.78
youtube.com.			173.194.41.64
youtube.com.			173.194.41.65
youtube.com.			173.194.41.66
youtube.com.			173.194.41.67
youtube.com.			173.194.41.68
youtube.com.			173.194.41.69
youtube.com.			173.194.41.70
youtube.com.			173.194.41.71
youtube.com.			173.194.41.72
youtube.com.			173.194.41.73
...
;; Query time: 58 msec
;; SERVER: 178.33.182.34#53(178.33.182.34)
;; WHEN: Mon Feb 11 08:52:08 2013

D'autres adresses, miraculeusement plus rapides ? Non. Comme on peut le tester avec whois, ces adresses sont également chez Google et une recherche de leur connectivité avec traceroute montrent qu'on les atteint par la même route, en passant par les mêmes tuyaux. L'adresse donnée par le résolveur de Free :

% traceroute  74.125.230.229 
traceroute to 74.125.230.229 (74.125.230.229), 30 hops max, 60 byte packets
 1  192.168.2.254 (192.168.2.254)  0.460 ms  0.469 ms  0.380 ms
 2  88.189.152.254 (88.189.152.254)  22.790 ms  23.970 ms  24.443 ms
 3  78.254.1.62 (78.254.1.62)  25.469 ms  25.563 ms  25.525 ms
 4  rke75-1-v900.intf.nra.proxad.net (78.254.255.42)  26.754 ms  26.797 ms  28.618 ms
 5  cev75-1-v902.intf.nra.proxad.net (78.254.255.46)  28.611 ms  29.653 ms  29.885 ms
 6  p16-6k-1-po12.intf.nra.proxad.net (78.254.255.50)  30.920 ms  26.093 ms *
 7  th2-crs16-1-be1002.intf.routers.proxad.net (212.27.57.217)  27.883 ms  25.887 ms  29.845 ms
 8  cbv-9k-1-be1002.intf.routers.proxad.net (212.27.59.9)  31.298 ms  31.328 ms  32.510 ms
 9  74.125.50.116 (74.125.50.116)  91.574 ms google-pni-3.routers.proxad.net (212.27.40.102)  92.001 ms 74.125.50.116 (74.125.50.116)  93.148 ms
10  72.14.238.228 (72.14.238.228)  34.098 ms  35.280 ms  35.603 ms
11  209.85.242.51 (209.85.242.51)  49.916 ms  50.083 ms  49.745 ms
12  par08s10-in-f5.1e100.net (74.125.230.229)  38.188 ms  39.238 ms  23.775 ms

Et celle donnée par Speed-DNS :

% traceroute  173.194.34.8
traceroute to 173.194.34.8 (173.194.34.8), 30 hops max, 60 byte packets
 1  192.168.2.254 (192.168.2.254)  0.578 ms  0.467 ms  0.419 ms
 2  88.189.152.254 (88.189.152.254)  24.557 ms  25.586 ms  25.731 ms
 3  78.254.1.62 (78.254.1.62)  27.030 ms  27.066 ms  27.057 ms
 4  rke75-1-v900.intf.nra.proxad.net (78.254.255.42)  28.425 ms  28.408 ms  29.838 ms
 5  cev75-1-v902.intf.nra.proxad.net (78.254.255.46)  29.904 ms  30.903 ms  30.968 ms
 6  * p16-6k-1-po12.intf.nra.proxad.net (78.254.255.50)  60.155 ms *
 7  th2-crs16-1-be1002.intf.routers.proxad.net (212.27.57.217)  60.847 ms  25.848 ms  34.256 ms
 8  cbv-9k-1-be1002.intf.routers.proxad.net (212.27.59.9)  34.233 ms  35.785 ms  35.815 ms
 9  google-pni-3.routers.proxad.net (212.27.40.102)  94.137 ms 72.14.216.98 (72.14.216.98)  95.981 ms google-pni-3.routers.proxad.net (212.27.40.102)  95.775 ms
10  72.14.238.234 (72.14.238.234)  38.538 ms  109.822 ms  39.354 ms
11  209.85.242.45 (209.85.242.45)  42.286 ms  42.052 ms  42.013 ms
12  par03s02-in-f8.1e100.net (173.194.34.8)  42.321 ms  23.875 ms  23.746 ms

On voit qu'on suit la même route, on passe par les mêmes endroits (google-pni-3.routers.proxad.net est à l'interconnexion de Google et de Free, PNI veut dire Private Network Interconnection et elle est toujours surchargée). Et la cible se trouve probablement dans le même bâtiment (dans par03s02-in-f8.1e100.net, par désigne sans doute Paris, vus les temps de réponse en milli-secondes indiqués ensuite).

Mais attention, rappelez-vous la description du fonctionnement de YouTube : ce n'est pas lors de la connexion avec le serveur Web de YouTube que des problèmes peuvent se produire, c'est lors de l'envoi de la vidéo, qui se fait sur une connexion différente et via des noms différents. Testons ceux-ci. Sans Speed-DNS :

% dig A r12---sn-25g7rn7l.c.youtube.com
...
;; ANSWER SECTION:
r12---sn-25g7rn7l.c.youtube.com. --->	r12.sn-25g7rn7l.c.youtube.com.
r12.sn-25g7rn7l.c.youtube.com. 173.194.20.49
...
;; Query time: 34 msec
;; SERVER: 192.168.2.254#53(192.168.2.254)
;; WHEN: Mon Feb 11 09:11:29 2013

Et avec Speed-DNS :

% dig @178.33.182.34 A r12---sn-25g7rn7l.c.youtube.com
...
;; ANSWER SECTION:
r12---sn-25g7rn7l.c.youtube.com.  178.33.182.34
...
;; Query time: 37 msec
;; SERVER: 178.33.182.34#53(178.33.182.34)
;; WHEN: Mon Feb 11 09:12:37 2013

Cette fois, on voit un effet, l'adresse IP renvoyée est chez OVH, pas chez Google (c'est la même adresse que le serveur de noms de Speed-DNS). Si on configure sa machine pour utiliser les serveurs de noms de Speed-DNS, et qu'on examine son trafic avec tcpdump, on voit en effet que, lors du visionnage d'une vidéo YouTube, un important trafic TCP sur le port 80 a lieu avec 178.33.182.34 : le trafic vidéo a été détourné vers la machine de Speed-DNS à OVH, contournant ainsi le bridage. Rien de miraculeux ou d'innovant, donc, c'est exactement la même chose que les services de VPN qu'on achète ou qu'on fait soi-même.

Maintenant, est-ce que cela accélère les choses ? Une seule machine à OVH, qui sert aussi bien de serveur DNS que de relais vidéo ne va pas pouvoir encaisser beaucoup de trafic. Ça marche pour l'instant car il y a peu de clients, mais, en pratique, il reste à voir si cela tiendra la charge.

Il y a d'autres choses à raconter sur Speed-DNS, sur l'état de leur réseau ou sur les autres caractéristiques de leurs résolveurs mais, ici, je me suis focalisé sur leur prétention à accélérer YouTube.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)