Cloudflare active HTTP/3, Chrome et Firefox partenaires de l’opération

Cloudflare active HTTP/3, Chrome et Firefox partenaires de l’opération

Cloudflare active HTTP/3, Chrome et Firefox partenaires de l’opération

Un support préliminaire avait été lancé en septembre 2018. Après plus d’un an de tests divers, notamment avec Google et Mozilla, Cloudflare annonce que HTTP/3 est prêt de son côté. La dernière préversion Canary de Chrome est compatible, Firefox Nightly le sera très bientôt.

HTTP/3 est pour rappel la troisième version majeure du protocole HTTP. La plupart de ses nouveautés proviennent du protocole QUIC, initialement créé par Google. HTTP/3 s’appelait d’ailleurs au départ « HTTP-over-QUIC ».

Principale différence, HTTP/3 est basé sur UDP, et non TCP. Accompagné de nouveaux mécanismes de contrôle, prévu directement pour TLS 1.3 et le chiffrement de bout en bout, HTTP/3 permet notamment une hausse des performances et un passage plus transparent entre les connexions, par exemple lors d’une bascule du Wi-Fi vers la 4G, ou entre plusieurs antennes cellulaires.

L’ensemble reste donc expérimental. Le protocole est toujours à l’état de brouillon entre les mains de l’IETF, mais Cloudflare résume la situation par une analogie au programme de l’œuf et la poule. Il est toujours complexe d’intervenir sur un protocole réseau : qui doit initier le support, le serveur ou le client ?

Les sites inscrits chez Cloudflare peuvent quoi qu’il en soit activer le support de HTTP/3 et commencer à tester le protocole.

Commentaires (35)


Si quelqu’un a déjà vu le truc, ca marche comment derrière un load-balancer ca ? Car autant du HTTP 12, c’est du TCP du coup connecté, autant UDP c’est des paquets indépendants.


Y a que moi que ça surprend que cette techno utilise UDP ?



Va falloir revoir toutes les règles de pare-feu si le HTTP/3 devient la norme ?


De l’UDP. <img data-src=" />

C’est vrai que le web est TELLEMENT lent aujourd’hui.



Si un paquet est perdu, il faudra recharger la page du coup?








dylem29 a écrit :



Si un paquet est perdu, il faudra recharger la page du coup?





Je suppose que c’est le protocole HTTP/3 qui s’occupe de cet aspect et redemande le paquet perdu le cas échéant.



Donc si je comprends bien, quand quelques années avec le HTTP/3, tout le web sera en UDP?


C’est géré par le protocole. Et dis toi que tu n’es pas la cible de ces améliorations de performances. C’est plutôt pour tous les pays aux connexion erratiques ou lentes.


Ca te fait si peur que ça ?


Pour moi l’UDP c’est + pour le streaming et les jeux en ligne, pas pour de l’info texte. <img data-src=" />


On a toujours dit que l’UDP c’était pour les données qui “pouvaient se perdre”, comme le streaming. Mais si tu y repenses, dans le cas du jeu vidéo, t’as pas vraiment envie que les données se perdent, et pourtant ça passe bien par de l’UDP, parce que ce protocole est bien plus rapide.

En fait il suffit de déporter la vérification de réception des données dans une couche supérieure du protocole d’échange et d’utiliser l’UDP. Aujourd’hui on sait faire plus efficace que le TCP pour éviter les pertes de packets, et c’est ce que propose google avec le HTTP/3.








dylem29 a écrit :



Donc si je comprends bien, quand quelques années avec le HTTP/3, tout le web sera en UDP?







Justement, utiliser UDP permet de gérer les erreurs d’une manière qui est propre à HTTP, et du coup plus efficace. Aujourd’hui les browsers font du multiplexing : ils ouvrent une connexion HTTP, et demandent toutes les ressources&nbsp; du site (HTML, CSS, images…). Parce que la gestion d’erreur est au niveau TCP (qui n’a pas de notion de comment HTTP fonctionne), un paquet erroné/manquant sur une ressource bloque tout le reste (du point de vue de TCP, il n’y a qu’un seul stream). UDP permet de gérer soit même les erreurs, et ne pas bloquer le téléchargement de la CSS parce qu’il y a une erreur dans le téléchargement d’une image.

C’est probablement anecdotique sur desktop, mais c’est un vrai gain sur mobile où les erreurs de transmission sont fréquentes.









ErGo_404 a écrit :



On a toujours dit que l’UDP c’était pour les données qui “pouvaient se perdre”, comme le streaming. Mais si tu y repenses, dans le cas du jeu vidéo, t’as pas vraiment envie que les données se perdent, et pourtant ça passe bien par de l’UDP, parce que ce protocole est bien plus rapide.

En fait il suffit de déporter la vérification de réception des données dans une couche supérieure du protocole d’échange et d’utiliser l’UDP. Aujourd’hui on sait faire plus efficace que le TCP pour éviter les pertes de packets, et c’est ce que propose google avec le HTTP/3.









KooKiz a écrit :



Justement, utiliser UDP permet de gérer les erreurs d’une manière qui est propre à HTTP, et du coup plus efficace. Aujourd’hui les browsers font du multiplexing : ils ouvrent une connexion HTTP, et demandent toutes les ressources&nbsp; du site (HTML, CSS, images…). Parce que la gestion d’erreur est au niveau TCP (qui n’a pas de notion de comment HTTP fonctionne), un paquet erroné/manquant sur une ressource bloque tout le reste (du point de vue de TCP, il n’y a qu’un seul stream). UDP permet de gérer soit même les erreurs, et ne pas bloquer le téléchargement de la CSS parce qu’il y a une erreur dans le téléchargement d’une image.

C’est probablement anecdotique sur desktop, mais c’est un vrai gain sur mobile où les erreurs de transmission sont fréquentes.





Ok, je comprends mieux.

Merci. <img data-src=" />



J’ai eu la même question.

Apparemment les LB comment à intégrer une option pour (je n’ai trouvé que le lien, pas regardé le contenu en détail):https://cloud.google.com/blog/products/gcp/introducing-quic-support-https-load-b…

Je vais quand même creuser le sujet dans la semaine.








Vekin a écrit :



Je suppose que c’est le protocole HTTP/3 qui s’occupe de cet aspect et redemande le paquet perdu le cas échéant.





Moi ce qui m’inquiète c’est la sécurité.



Il y a une tendance lourde des acteurs du web (cloudflare ici pour le CDN , mozilla pour DOH) à intégrer dans le navigateur des services auparavant dédié à l’OS . D’abord le DNS, puis là carrément TCP (UDP n’étant utilisé QUE parce que c’est le plus léger des protocoles qui passent partout : NAT, firewalls, … . Ils auraient pu créer directement un protocole au dessus d’IP, mais il aurait fallu mettre à jour beaucoup des box chez les gens).



Donc, on réinvente plein de chose, avec du nouveau code non testé. C’est sur ça donne du boulot à plein de gens.

Mais bon, après ça donne ça :https://www.bleepingcomputer.com/news/security/new-http-2-flaws-expose-unpatched… , et c’est sans doute que le début.

L’implémentation des OS , même si on y trouve encore des faille, a le mérite d’être testé par des milliards d’usages quotidiens.



En plus ça peux servir à aucun autre logiciel - sauf à faire du HTTP/3 , ce qui reste un overhead pour un grand nombre d’usage.



Autant DOH jepeux comprendre, lié aux problèmes de vie privée & censure (et dans ce cas j’aurais préféré un programme séparé, qui fait du DOH pour tout l’OS et pas que le navigateur. Ainsi qu’une grande distribution des serveurs , un mécanisme de rotation des serveurs) , mais ça amène quand même une sacré concentration d’infos dans les mains d’une poigné d’acteurs.

&nbsp;



L’avantage de TCP c’est que ça garde http très simple vu que TCP s’occupe de la partie retransmission, remise en l’ordre des segments, checksum, etc…

Si on deporte cette complexité dans le protocole http directement , les lib http vont être plus grosses, plus complexes, et donc plus buggé. Autant pour firefox et chrome, ça ne sera pas un problème pour patcher. Autant pour les milliards d’objets connectés, j’ai plus de doute.


100% d’accord.



Pour compléter ton commentaire sur le Doh, autant pour un pays surveillé ou censuré, c’est une évolution.

Autant pour un pays libre, c’est une régression. Doh est sensé protéger la vie privée, mais le seul truc que ça fait, c’est de centraliser toutes les requêtes DNS chez le géant américain cloudflare… Pour la protection de la vie privée, on a vu mieux…


Quelques rappels :




  • HTTP/2 et ses streams réinventait quasiment TCP. C’est loin d’être un protocole simple comme HTTP/1.x (et 0.9).

  • HTTP/3 se base sur QUIC. QUIC se base sur UDP avant tout pour éviter d’avoir à changer tous les OS des clients et sans doutes éviter au maximum les problèmes avec les middleboxes. Pour le reste, pas grand’chose à voir (cfhttps://tools.ietf.org/html/draft-ietf-quic-transport-23 )


La description « HTTP/3 est basé sur UDP, et non TCP » est à la fois exacte et très trompeuse. Et cela explique beaucoup des questions posées ici. QUIC est un concurrent de TCP. Il en assure toutes les fonctions (dont la réémission en cas de perte de paquet).



QUIC devrait, dans un monde idéal, fonctionner directement sur IP. Mais comme les « middleboxes » à la c… l’empêchent, il tournera sur UDP, comme tout autre protocole de transport nouveau (SCTP avait déjà montré le chemin). UDP n’est donc qu’une très mince couche entre IP et QUIC, le « vrai » protocole de transport.


Non, en QUIC. UDP n’est là que pour calmer les middleboxes stupides.


Il n’est pas prévu de faire traiter les problèmes de congestion, de réémission, etc, par HTTP. C’est QUIC qui le fera. « HTTP/3 » n’est qu’une étiquette marketing, sans significtaion technique. (Le passage de HTTP/1 à HTTP/2 avait entrainé bien plus de changements.)


Euh non, rien à voir. Vous confondez DoH (un protocole) avec Cloudflare (une société).https://www.bortzmeyer.org/doh-et-ses-adversaires.html


C’est possible d’activer le http3 sur son propre serveur ou il faut absolument s’appeler Cloudflare pour le faire ? Je trouve aucune info sur le sujet. Je veux pas mettre ça en prod mais j’aimerai bien voir les résultats sur mes benchs de performance pour voir si c’est vraiment plus rapide.


Non, tout dépend du protocole. UDP n’indique n’a









stratic a écrit :



Non, tout dépend du protocole. UDP n’indique n’a





<img data-src=" />



NXI est rapidement passé au HTTP/3. <img data-src=" />



Personnellement, je trouve que l’usa








Nilav a écrit :



C’est possible d’activer le http3 sur son propre serveur ou il faut absolument s’appeler Cloudflare pour le faire ? Je trouve aucune info sur le sujet. Je veux pas mettre ça en prod mais j’aimerai bien voir les résultats sur mes benchs de performance pour voir si c’est vraiment plus rapide.

&nbsp;



Heureusement qu’on peux le faire… il n’y aurait pas un si grand intérêt sinon.



Il y a plein d’implémentations, un simple exemple :https://facebookexperimental.github.io/doh-proxy/ ,https://www.dnscrypt.org/ , ….



On parle de cloudflare car 1) c’est un grand promoteur du DoH , mais c’est aussi un très gros acteur…. américian, ce qui à tout le moins est suspiceux, et 2) parceque firefox a dit qu’ils voulaient placer le serveur de cloudflare par défaut dans firefox - google, qui supporte doh aussi, veux quant à lui placer son propre serveur doh dans chrome.



Va lire l’article de bortz, c’est très instructif.

&nbsp;



<img data-src=" />



Apparement, sur NXI, les corrections de commentaires ne sont plus prises en compte depuis le passage à UDP <img data-src=" />


Le RFC n’est pas encore sorti. Il existe des mises en œuvre en logiciel libre (dont une de Cloudflare) mais rien de très intégré aux serveurs HTTP existants, je crois.


L’hybridation de protocole existe déjà en entreprise. Pour avoir un peu bossé sur le protocole de citrix , dtls/ edt, basé sur udt, la partie tcp s’occupe du checksum et rentransmission.l’udp s’occupe de la données. Et si il y a un problème sur la connexion, la données bascule en tcp (retour en udp possible quand la connexions le permet). C’est actif par défaut depuis 2ans chez les clients. Ça marche bien et le troubleshooting n’est pas trop compliqué. Et de mémoire udt fonctionne de la même manière que quic (je serais curieux de savoir quels sont les différences)


Il se passe dans les protocole de niveau 4 du modèle OSI ce qui s’est passé pour les couches les plus basses il y a (oups, déjà!) quelques décennies.



Le fait que la couche 1 a largement progressé en terme de fiabilité de transmission du signal qu’on a pu alléger les contrôles faits sur la couche 2, ce qui a accéléré les protocoles. En allégeant X25 on a fait Frame Relay, et ISDN (RNIS en français) est à la base de l’ATM. Le taux de perte de trames dont il faut demander la retransmission est suffisamment faible pour garder l’avantage apporté par l’abandon du CRC. En ATM, les équipements réseau commencent à transmettre au peer suivant dès l’en-tête reçu: puisqu’on se moque de tester la trame, pourquoi attendre qu’elle soit complètement reçue? Dès que’on peut faire un check de l’en-tête, c’est bon. En terme de latence, le gain est la différence entre émettre un en-tête et émettre tout une trame, environ 10 fois plus rapide.



L’intérêt de ces avancées y compris maintenant sur la couche 4 permet d’avoir le support de protocoles hauts dans lesquels on ajoute des mécanismes de sécurité qui ont pour conséquence d’alourdir les échanges.








Stéphane Bortzmeyer a écrit :



Il n’est pas prévu de faire traiter les problèmes de congestion, de réémission, etc, par HTTP. C’est QUIC qui le fera. « HTTP/3 » n’est qu’une étiquette marketing, sans significtaion technique. (Le passage de HTTP/1 à HTTP/2 avait entrainé bien plus de changements.)







Prendre la leçon de Monsieur DNS en personne, c’est un honneur :) Merci pour la précision, je n’avais pas compris le fonctionnement de QUIC comme ça. Pour moi, il était parti intégrante et ne serait que pour HTTP/3. Alors qu’en faite, non, c’est un layer à part entière.







Stéphane Bortzmeyer a écrit :



Euh non, rien à voir. Vous confondez DoH (un protocole) avec Cloudflare (une société).https://www.bortzmeyer.org/doh-et-ses-adversaires.html







Sur ce point la, je suis moins d’accord. Bien que DoH et Cloudflare n’ont rien à voir, évidement, il n’empêche qu’aujourd’hui, dans Firefox, le provider DoH par défaut est Cloudflare.

Par contre dans Chrome, rien à dire puisqu’il regarde quel serveur DNS est configuré dans l’OS et passe en DoH s’il s’avère que le serveur fait partie de la liste CF, Q9, etc…



Les gars de Firefox d’ailleurs le disent eux même ici:https://support.mozilla.org/en-US/kb/firefox-dns-over-https#w_risks



Pour moi, le DoH aurait été bien meilleur si le browser faisait la résolution complète lui même en TLS sans passer par un resolver tiers, autrement dit, en partant de la racine directement.




Le navigateur ne peut pas faire la résolution en TLS, il n’y a pas (encore ?) de norme pour parler en TLS aux serveurs faisant autorité. (Le RFC 7858, DNS sur TLS, est pour le lien entre M. Michu et le résolveur.)

&nbsp;








Stéphane Bortzmeyer a écrit :



Non, en QUIC. UDP n’est là que pour calmer les middleboxes stupides.







Merci pour ces précisions. Mais je me pose tout de même une question.



&nbsp;Même si les middlebox laissaient passer ces paquets. Comment QUIC peut-il se passer d’un protocol de niveau 4 déjà enregistré s’il n’a pas lui même un numéro assigné par l’IANA ?



http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml



Est-ce que ce choix de passer par l’UDP a été fait pour éviter la procédure d’enregistrement ? Est-ce que c’est en prévision des difficultés déjà rencontrés par d’autres protocoles moins supportés que TCP/UDP par les firewalls, etc ?



QUIC utilise le numéro d’UDP.



Le choix d’UDP a été fait parce que c’etait le seul dispo avec TCP de facon universelle dans les stacks IP des OS.



QUIC est né du fait qu’il est très lent de faire évoluer les stacks réseaux des OS. Chacun a sa mis en oeuvre avec des fois des optimisations bas niveau dans les drivers des cartes réseaux (offload udp et tcp par exemple, calcul de checksum etc).



Faire évoluer les couches basses et communes des réseaux est donc tres lent , trop lent pour des sociétés comme Google et Cloudflare. L’objectif initial de QUIC était de remplacer TCP par quelque chose de plus moderne, performant et adapter au débit et contraintes des liaisons réseau actuelles. La solution retenue est donc d’utiliser UDP qui est dispo, géré et optimisé partout et de batir dessus un “nouveau TCP”. C’est plus immédiat et ne dépend pas du bon vouloir des autres acteurs du réseau (OS, drivers, routeurs, FAI, etc).



Le problème de ce qui est disponible dans les systèmes d’exploitation est secondaire (tout le monde utilise un Unix donc a SCTP depuis longtemps, par exemple) par rapport au problème des middleboxes (boitiers intermédiaires) qui bloquent tout ce qu’ils ne connaissent pas.


c’est toute la chaine pas que les middlesboxes. je ne suis pas certain que le SCTP dispo sur certains OS soit aussi optimisé que le sont TCP et UDP (notamment par les optis dans les drivers). et y’a pas que Unix, le gros des clients est sur Windows.

Apres je ne reprenais que les propos des créateurs de QUIC pas les miens. Il est certain que c’est plusieurs facteurs qui ont contribué a ce choix.


Fermer