Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances

Le protocole QUIC est extrĂȘmement intĂ©ressant Ă  observer, c’est pourquoi nous aimons Ă©crire Ă  son sujet. Mais si les publications prĂ©cĂ©dentes sur QUIC Ă©taient plutĂŽt de nature historique (histoire locale, si vous prĂ©fĂ©rez) et matĂ©rielle, nous sommes heureux de publier aujourd'hui une traduction d'un genre diffĂ©rent - nous parlerons de l'application rĂ©elle du protocole en 2019. De plus, nous ne parlons pas d’une petite infrastructure basĂ©e dans un soi-disant garage, mais d’Uber, qui opĂšre presque partout dans le monde. Comment les ingĂ©nieurs de l'entreprise ont pris la dĂ©cision d'utiliser QUIC en production, comment ils ont effectuĂ© les tests et ce qu'ils ont vu aprĂšs son dĂ©ploiement en production - en dessous de la limite.

Les images sont cliquables. Bonne lecture!

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances

Uber a une envergure mondiale, à savoir 600 villes de présence, dans chacune desquelles l'application s'appuie entiÚrement sur l'Internet sans fil de plus de 4500 XNUMX opérateurs cellulaires. Les utilisateurs s'attendent à ce que l'application soit non seulement rapide, mais aussi en temps réel. Pour y parvenir, l'application Uber a besoin d'une faible latence et d'une connexion trÚs fiable. Hélas, mais la pile HTTP / 2 ne fonctionne pas bien dans les réseaux sans fil dynamiques et sujets aux pertes. Nous avons réalisé que dans ce cas, les faibles performances sont directement liées à l'implémentation de TCP dans les noyaux du systÚme d'exploitation.

Pour résoudre le problÚme, nous avons appliqué QUIC, un protocole de multiplexage de canaux moderne qui nous donne plus de contrÎle sur les performances du protocole de transport. Actuellement, le groupe de travail IETF normalise QUIC comme HTTP / 3.

AprĂšs des tests approfondis, nous avons conclu que la mise en Ɠuvre de QUIC dans notre application entraĂźnerait des latences de queue infĂ©rieures Ă  celles de TCP. Nous avons observĂ© une rĂ©duction de l’ordre de 10 Ă  30 % du trafic HTTPS dans les applications conducteur et passager. QUIC nous a Ă©galement donnĂ© un contrĂŽle de bout en bout sur les packages utilisateur.

Dans cet article, nous partageons notre expérience dans l'optimisation de TCP pour les applications Uber à l'aide d'une pile prenant en charge QUIC.

La derniĂšre technologie : TCP

Aujourd'hui, TCP est le protocole de transport le plus utilisĂ© pour acheminer le trafic HTTPS sur Internet. TCP fournit un flux d'octets fiable, faisant ainsi face Ă  la congestion du rĂ©seau et aux pertes de couche de liaison. L'utilisation gĂ©nĂ©ralisĂ©e de TCP pour le trafic HTTPS est due Ă  l'omniprĂ©sence du premier (presque tous les systĂšmes d'exploitation contiennent TCP), Ă  la disponibilitĂ© sur la plupart des infrastructures (telles que les Ă©quilibreurs de charge, les proxys HTTPS et les CDN) et aux fonctionnalitĂ©s prĂȘtes Ă  l'emploi disponibles. sur presque la plupart des plateformes et rĂ©seaux.

La plupart des utilisateurs utilisent notre application en dĂ©placement, et les latences de queue TCP Ă©taient loin de rĂ©pondre aux exigences de notre trafic HTTPS en temps rĂ©el. En termes simples, les utilisateurs du monde entier en ont fait l'expĂ©rience. La figure 1 montre les retards dans les grandes villes :

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 1 : La latence de queue varie selon les principales villes d'Uber.

Bien que la latence sur les rĂ©seaux indiens et brĂ©siliens soit plus Ă©levĂ©e qu'aux États-Unis et au Royaume-Uni, la latence de queue est nettement supĂ©rieure Ă  la latence moyenne. Et cela est vrai mĂȘme aux États-Unis et au Royaume-Uni.

Performances TCP en direct

TCP a Ă©tĂ© créé pour filaire rĂ©seaux, c’est-Ă -dire en mettant l’accent sur des liens hautement prĂ©visibles. Cependant, sans fil Les rĂ©seaux ont leurs propres caractĂ©ristiques et difficultĂ©s. PremiĂšrement, les rĂ©seaux sans fil sont sensibles aux pertes dues aux interfĂ©rences et Ă  l’attĂ©nuation du signal. Par exemple, les rĂ©seaux Wi-Fi sont sensibles aux micro-ondes, au Bluetooth et Ă  d’autres ondes radio. Les rĂ©seaux cellulaires souffrent de perte de signal (chemin perdu) en raison de la rĂ©flexion/absorption du signal par les objets et les bĂątiments, ainsi que par ingĂ©rence du voisin tours de tĂ©lĂ©phonie cellulaire. Cela conduit Ă  des rĂ©sultats plus importants (4 Ă  10 fois) et plus diversifiĂ©s. Temps d'aller-retour (RTT) et la perte de paquets par rapport Ă  une connexion filaire.

Pour lutter contre les fluctuations et les pertes de bande passante, les rĂ©seaux cellulaires utilisent gĂ©nĂ©ralement de grandes mĂ©moires tampon pour les rafales de trafic. Cela peut entraĂźner des files d’attente excessives, ce qui signifie des dĂ©lais plus longs. TrĂšs souvent, TCP traite cette file d'attente comme un gaspillage en raison d'un dĂ©lai d'attente prolongĂ©, donc TCP a tendance Ă  relayer et ainsi Ă  remplir le tampon. Ce problĂšme est connu sous le nom ballonnement tampon (mise en mĂ©moire tampon rĂ©seau excessive, gonflement de la mĂ©moire tampon), et c'est trĂšs ProblĂšme sĂ©rieux Internet moderne.

Enfin, les performances du rĂ©seau cellulaire varient selon l'opĂ©rateur, la rĂ©gion et l'heure. Dans la figure 2, nous avons collectĂ© les dĂ©lais mĂ©dians du trafic HTTPS entre les cellules dans un rayon de 2 kilomĂštres. DonnĂ©es collectĂ©es pour deux principaux opĂ©rateurs de tĂ©lĂ©phonie mobile Ă  Delhi, en Inde. Comme vous pouvez le constater, les performances varient d’une cellule Ă  l’autre. De plus, la productivitĂ© d'un opĂ©rateur diffĂšre de la productivitĂ© du second. Ceci est influencĂ© par des facteurs tels que les modĂšles d'entrĂ©e dans le rĂ©seau prenant en compte l'heure et le lieu, la mobilitĂ© des utilisateurs, ainsi que l'infrastructure rĂ©seau prenant en compte la densitĂ© des tours et le ratio des types de rĂ©seaux (LTE, 3G, etc.).

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 2. Retards en utilisant un rayon de 2 km comme exemple. Delhi, Inde.

De plus, les performances des rĂ©seaux cellulaires varient dans le temps. La figure 3 montre la latence mĂ©diane par jour de la semaine. Nous avons Ă©galement observĂ© des diffĂ©rences Ă  plus petite Ă©chelle, au sein d’une mĂȘme journĂ©e et d’une mĂȘme heure.

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 3. Les retards peuvent varier considĂ©rablement d'un jour Ă  l'autre, mais pour le mĂȘme opĂ©rateur.

Tout ce qui précÚde rend les performances TCP inefficaces dans les réseaux sans fil. Cependant, avant de chercher des alternatives au TCP, nous avons souhaité développer une compréhension précise sur les points suivants :

  • TCP est-il le principal responsable des latences de queue dans nos applications ?
  • Les rĂ©seaux modernes prĂ©sentent-ils des dĂ©lais aller-retour (RTT) importants et variĂ©s ?
  • Quel est l’impact du RTT et de la perte sur les performances TCP ?

Analyse des performances TCP

Pour comprendre comment nous avons analysé les performances de TCP, examinons rapidement comment TCP transfÚre les données d'un expéditeur à un destinataire. Tout d'abord, l'expéditeur établit une connexion TCP, effectuant une communication à trois poignée de main: L'expéditeur envoie un paquet SYN, attend un paquet SYN-ACK du récepteur, puis envoie un paquet ACK. Une deuxiÚme et une troisiÚme passe supplémentaires sont consacrées à l'établissement de la connexion TCP. Le destinataire accuse réception de chaque paquet (ACK) pour garantir une livraison fiable.

Si un paquet ou un ACK est perdu, l'expéditeur retransmet aprÚs un délai d'attente (RTO, délai de retransmission). Le RTO est calculé dynamiquement en fonction de divers facteurs, tels que le délai RTT attendu entre l'expéditeur et le destinataire.

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 4. L'échange de paquets sur TCP/TLS inclut un mécanisme de retransmission.

Pour déterminer les performances de TCP dans nos applications, nous avons surveillé les paquets TCP à l'aide de tcpdump pendant une semaine sur le trafic de combat provenant des serveurs Edge indiens. Nous avons ensuite analysé les connexions TCP en utilisant tracerDe plus, nous avons créé AndroidUne application envoyait du trafic simulé vers un serveur de test, imitant au mieux le trafic réel. Des smartphones équipés de cette application ont été distribués à plusieurs employés qui ont collecté des journaux d'activité pendant plusieurs jours.

Les rĂ©sultats des deux expĂ©riences Ă©taient cohĂ©rents les uns avec les autres. Nous avons constatĂ© des latences RTT Ă©levĂ©es ; les valeurs extrĂȘmes Ă©taient presque 6 fois supĂ©rieures Ă  la valeur mĂ©diane ; la moyenne arithmĂ©tique des retards est supĂ©rieure Ă  1 seconde. De nombreuses connexions Ă©taient avec perte, ce qui obligeait TCP Ă  retransmettre 3,5 % de tous les paquets. Dans les zones encombrĂ©es comme les aĂ©roports et les gares, nous avons constatĂ© des pertes de 7 %. Ces rĂ©sultats remettent en question l'idĂ©e reçue selon laquelle ceux utilisĂ©s dans les rĂ©seaux cellulaires circuits de retransmission avancĂ©s rĂ©duire considĂ©rablement les pertes au niveau du transport. Ci-dessous les rĂ©sultats des tests de l'application « simulateur Â» :

Métriques du réseau
Les valeurs

RTT, millisecondes [50 %, 75 %, 95 %, 99 %]
[350, 425, 725, 2300]

Divergence RTT, secondes
En moyenne ~1,2 s

Perte de paquets sur des connexions instables
Moyenne ~3.5% (7% dans les zones surchargées)

PrÚs de la moitié de ces connexions ont subi au moins une perte de paquet, la plupart étant des paquets SYN et SYN-ACK. La plupart des implémentations TCP utilisent une valeur RTO de 1 seconde pour les paquets SYN, qui augmente de façon exponentielle en cas de pertes ultérieures. Les temps de chargement des applications peuvent augmenter car TCP met plus de temps à établir les connexions.

Dans le cas des paquets de donnĂ©es, des valeurs RTO Ă©levĂ©es rĂ©duisent considĂ©rablement l'utilisation utile du rĂ©seau en prĂ©sence de pertes transitoires dans les rĂ©seaux sans fil. Nous avons constatĂ© que le temps moyen de retransmission est d'environ 1 seconde avec un retard de prĂšs de 30 secondes. Ces latences Ă©levĂ©es au niveau TCP ont provoquĂ© des dĂ©lais d'attente et des nouvelles requĂȘtes HTTPS, augmentant encore la latence et l'inefficacitĂ© du rĂ©seau.

Alors que le 75e centile du RTT mesurĂ© Ă©tait d'environ 425 ms, le 75e centile du TCP Ă©tait de prĂšs de 3 secondes. Cela laisse entendre que la perte a amenĂ© TCP Ă  effectuer 7 Ă  10 passes pour transmettre avec succĂšs les donnĂ©es. Cela peut ĂȘtre une consĂ©quence d'un calcul RTO inefficace, de l'incapacitĂ© de TCP Ă  rĂ©pondre rapidement aux pertes. derniers forfaits dans la fenĂȘtre et l'inefficacitĂ© de l'algorithme de contrĂŽle de congestion, qui ne fait pas de distinction entre les pertes sans fil et les pertes dues Ă  la congestion du rĂ©seau. Vous trouverez ci-dessous les rĂ©sultats des tests de perte TCP :

Statistiques de perte de paquets TCP
Valeur

Pourcentage de connexions avec au moins 1 perte de paquet
45 %

Pourcentage de connexions avec pertes lors de l'établissement de la connexion
30 %

Pourcentage de connexions avec pertes lors de l'échange de données
76 %

Distribution des délais de retransmission, secondes [50 %, 75 %, 95 %, 99 %]
[1, 2.8, 15, 28]

Répartition du nombre de retransmissions pour un paquet ou un segment TCP
[1,3,6,7]

Application de QUIC

Développé à l'origine par Google, QUIC est un protocole de transport moderne multithread qui s'exécute sur UDP. Actuellement, QUIC est en processus de normalisation (nous avons déjà écrit qu'il existe en quelque sorte deux versions de QUIC, curieux je peux suivre le lien - environ. traducteur). Comme le montre la figure 5, QUIC est placé sous HTTP/3 (en fait, HTTP/2 au-dessus de QUIC est HTTP/3, qui fait actuellement l'objet d'une normalisation intensive). Il remplace partiellement les couches HTTPS et TCP en utilisant UDP pour former des paquets. QUIC ne prend en charge que le transfert de données sécurisé car TLS est entiÚrement intégré à QUIC.

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 5 : QUIC s'exĂ©cute sous HTTP/3, remplaçant TLS, qui s'exĂ©cutait auparavant sous HTTP/2.

Voici les raisons qui nous ont convaincu d’utiliser QUIC pour l’amplification TCP :

  • Établissement de la connexion 0-RTT. QUIC permet la rĂ©utilisation des autorisations des connexions prĂ©cĂ©dentes, rĂ©duisant ainsi le nombre de poignĂ©es de main de sĂ©curitĂ©. Dans le futur TLS1.3 prendra en charge 0-RTT, mais une nĂ©gociation TCP Ă  trois voies sera toujours requise.
  • surmonter le blocage HoL. HTTP/2 utilise une connexion TCP par client pour amĂ©liorer les performances, mais cela peut conduire Ă  un blocage HoL (tĂȘte de ligne). QUIC simplifie le multiplexage et transmet les requĂȘtes Ă  l'application de maniĂšre indĂ©pendante.
  • contrĂŽle des embouteillages. QUIC rĂ©side au niveau de la couche application, ce qui facilite la mise Ă  jour de l'algorithme de transport principal qui contrĂŽle l'envoi en fonction des paramĂštres du rĂ©seau (nombre de pertes ou RTT). La plupart des implĂ©mentations TCP utilisent l'algorithme CUBIQUE, ce qui n'est pas optimal pour le trafic sensible Ă  la latence. Des algorithmes rĂ©cemment dĂ©veloppĂ©s comme BBR, modĂ©lisez plus prĂ©cisĂ©ment le rĂ©seau et optimisez la latence. QUIC vous permet d'utiliser BBR et de mettre Ă  jour cet algorithme au fur et Ă  mesure de son utilisation. amĂ©lioration.
  • reconstitution des pertes. QUIC appelle deux TLP (sonde de perte de queue) avant le dĂ©clenchement du RTO - mĂȘme lorsque les pertes sont trĂšs perceptibles. Ceci est diffĂ©rent des implĂ©mentations TCP. TLP retransmet principalement le dernier paquet (ou le nouveau, s'il y en a un) pour dĂ©clencher un rĂ©approvisionnement rapide. La gestion des retards est particuliĂšrement utile pour la maniĂšre dont Uber exploite son rĂ©seau, notamment pour les transferts de donnĂ©es courts, sporadiques et sensibles Ă  la latence.
  • ACK optimisĂ©. Puisque chaque paquet possĂšde un numĂ©ro de sĂ©quence unique, il n’y a aucun problĂšme distinctions paquets lors de leur retransmission. Les paquets ACK contiennent Ă©galement du temps pour traiter le paquet et gĂ©nĂ©rer un ACK cĂŽtĂ© client. Ces fonctionnalitĂ©s garantissent que QUIC calcule le RTT avec plus de prĂ©cision. ACK dans QUIC prend en charge jusqu'Ă  256 bandes NACK, aidant l'expĂ©diteur Ă  ĂȘtre plus rĂ©silient au brassage des paquets et Ă  utiliser moins d'octets dans le processus. ACK sĂ©lectif (SAC) dans TCP ne rĂ©sout pas ce problĂšme dans tous les cas.
  • migration de connexion. Les connexions QUIC sont identifiĂ©es par un ID de 64 bits, donc si un client change d'adresse IP, l'ancien ID de connexion peut continuer Ă  ĂȘtre utilisĂ© sur la nouvelle adresse IP sans interruption. Il s'agit d'une pratique trĂšs courante pour les applications mobiles oĂč l'utilisateur bascule entre les connexions Wi-Fi et cellulaires.

Alternatives Ă  QUIC

Nous avons envisagé des approches alternatives pour résoudre le problÚme avant de choisir QUIC.

La premiĂšre chose que nous avons essayĂ©e a Ă©tĂ© de dĂ©ployer des PoP (Points de prĂ©sence) TPC pour terminer les connexions TCP plus prĂšs des utilisateurs. Essentiellement, les PoP mettent fin Ă  une connexion TCP avec un appareil mobile plus proche du rĂ©seau cellulaire et renvoient le trafic vers l'infrastructure d'origine. En terminant TCP plus prĂšs, nous pouvons potentiellement rĂ©duire le RTT et garantir que TCP soit plus rĂ©actif Ă  un environnement sans fil dynamique. Cependant, nos expĂ©riences ont montrĂ© que la majeure partie du RTT et des pertes proviennent des rĂ©seaux cellulaires et que l’utilisation de PoP n’apporte pas d’amĂ©lioration significative des performances.

Nous avons Ă©galement examinĂ© le rĂ©glage des paramĂštres TCP. La configuration d'une pile TCP sur nos serveurs pĂ©riphĂ©riques hĂ©tĂ©rogĂšnes Ă©tait difficile car TCP a des implĂ©mentations disparates selon les diffĂ©rentes versions de systĂšme d'exploitation. Il Ă©tait difficile de mettre en Ɠuvre cela et de tester diffĂ©rentes configurations rĂ©seau. La configuration de TCP directement sur les appareils mobiles n'Ă©tait pas possible en raison du manque d'autorisations. Plus important encore, des fonctionnalitĂ©s telles que les connexions 0-RTT et la prĂ©diction RTT amĂ©liorĂ©e sont essentielles Ă  l'architecture du protocole et il est donc impossible d'obtenir des avantages significatifs en rĂ©glant uniquement TCP.

Enfin, nous avons évalué plusieurs protocoles basés sur UDP permettant de résoudre les problÚmes de streaming vidéo. Nous voulions voir si ces protocoles seraient utiles dans notre cas. Malheureusement, ils manquaient cruellement de nombreux paramÚtres de sécurité et nécessitaient également une connexion TCP supplémentaire pour les métadonnées et les informations de contrÎle.

Nos recherches ont montrĂ© que QUIC est peut-ĂȘtre le seul protocole capable de rĂ©soudre le problĂšme du trafic Internet, tout en prenant en compte Ă  la fois la sĂ©curitĂ© et les performances.

Intégration de QUIC dans la plateforme

Pour intégrer avec succÚs QUIC et améliorer les performances des applications dans des environnements de connectivité médiocre, nous avons remplacé l'ancienne pile (HTTP/2 sur TLS/TCP) par le protocole QUIC. Nous avons utilisé la bibliothÚque réseau Cronet de Projets Chrome, qui contient la version originale de Google du protocole - gQUIC. Cette implémentation est également constamment améliorée pour suivre la derniÚre spécification de l'IETF.

Nous avons d'abord intĂ©grĂ© Cronet Ă  notre Android-applications pour ajouter la prise en charge de QUIC. L'intĂ©gration a Ă©tĂ© mise en Ɠuvre afin de minimiser les coĂ»ts de migration. Au lieu de remplacer complĂštement l'ancienne pile rĂ©seau qui utilisait la bibliothĂšque OkHttp, nous avons intĂ©grĂ© Cronet SOUS le framework API OkHttp. En procĂ©dant Ă  l'intĂ©gration de cette façon, nous avons Ă©vitĂ© de modifier nos appels rĂ©seau (qui sont utilisĂ©s par RĂ©novation) au niveau de l'API.

Similaire à l'approche de Android-appareils, nous avons implémenté Cronet dans les applications Uber iOS, interceptant le trafic HTTP provenant du réseau APIUtilisation Protocole NSURL. Cette abstraction, fournie par la Fondation iOS, gÚre les données URL spécifiques au protocole et garantit que nous pouvons intégrer Cronet dans nos applications iOS sans coûts de migration importants.

Compléter QUIC sur les Google Cloud Balancers

CĂŽtĂ© backend, la complĂ©tion QUIC est assurĂ©e par l'infrastructure d'Ă©quilibrage de charge Google Cloud, qui utilise alt-svc en-tĂȘtes dans les rĂ©ponses pour prendre en charge QUIC. En gĂ©nĂ©ral, l'Ă©quilibreur ajoute un en-tĂȘte alt-svc Ă  chaque requĂȘte HTTP, ce qui valide dĂ©jĂ  la prise en charge de QUIC pour le domaine. Lorsqu'un client Cronet reçoit une rĂ©ponse HTTP avec cet en-tĂȘte, il utilise QUIC pour les requĂȘtes HTTP ultĂ©rieures vers ce domaine. Une fois que l'Ă©quilibreur a terminĂ© le QUIC, notre infrastructure envoie explicitement cette action via HTTP2/TCP Ă  nos centres de donnĂ©es.

Performance : rĂ©sultats

Les performances de sortie sont la principale raison de notre recherche d’un meilleur protocole. Pour commencer, nous avons créé un stand avec Ă©mulation de rĂ©seaupour savoir comment QUIC se comportera sous diffĂ©rents profils de rĂ©seau. Pour tester les performances de QUIC sur les rĂ©seaux du monde rĂ©el, nous avons menĂ© des expĂ©riences en conduisant autour de New Delhi en utilisant un trafic rĂ©seau Ă©mulĂ© trĂšs similaire aux appels HTTP dans l'application passagers.

expérience 1

Matériel pour l'expérience :

  • appareils de test sur Android avec les piles OkHttp et Cronet pour garantir que nous acheminons le trafic HTTPS via TCP et QUIC respectivement ;
  • un serveur d'Ă©mulation basĂ© sur Java qui envoie le mĂȘme type d'en-tĂȘtes HTTPS dans les rĂ©ponses et charge les appareils clients pour recevoir des requĂȘtes de leur part ;
  • des proxys cloud physiquement situĂ©s Ă  proximitĂ© de l'Inde pour mettre fin aux connexions TCP et QUIC. Alors que pour la terminaison TCP, nous avons utilisĂ© un proxy inverse sur Nginx, il Ă©tait difficile de trouver un proxy inverse open source pour QUIC. Nous avons nous-mĂȘmes construit un proxy inverse pour QUIC en utilisant la pile QUIC de base de Chromium et ont publiĂ© en chrome en open source.

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performancesLe protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 6. La feuille de route pour les tests TCP vs QUIC comprenait : Android- des appareils avec OkHttp et Cronet, des proxys cloud pour la terminaison des connexions et un serveur d'Ă©mulation.

expérience 2

Lorsque Google a rendu QUIC disponible avec Équilibrage de charge Google Cloud, nous avons utilisĂ© le mĂȘme inventaire, mais avec une modification : au lieu de NGINX, nous avons utilisĂ© les Ă©quilibreurs de charge Google pour mettre fin aux connexions TCP et QUIC des appareils, ainsi que pour acheminer le trafic HTTPS vers le serveur d'Ă©mulation. Les Balancers sont distribuĂ©s partout dans le monde, mais utilisent le serveur PoP le plus proche de l'appareil (grĂące Ă  la gĂ©olocalisation).

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 7. Dans la deuxiĂšme expĂ©rience, nous voulions comparer la latence d'achĂšvement de TCP et QUIC : en utilisant Google Cloud et en utilisant notre proxy cloud.

De ce fait, plusieurs révélations nous attendaient :

  • la terminaison via PoP a amĂ©liorĂ© les performances TCP. Étant donnĂ© que les Ă©quilibreurs terminent les connexions TCP plus prĂšs des utilisateurs et sont hautement optimisĂ©s, cela se traduit par des RTT plus faibles, ce qui amĂ©liore les performances TCP. Et mĂȘme si QUIC a Ă©tĂ© moins affectĂ©, il a tout de mĂȘme surpassĂ© TCP en termes de rĂ©duction de la latence de queue (de 10 Ă  30 %).
  • les queues sont affectĂ©es sauts de rĂ©seau. Bien que notre proxy QUIC soit plus Ă©loignĂ© des appareils (latence environ 50 ms plus Ă©levĂ©e) que les Ă©quilibreurs de charge de Google, il a fourni des performances similaires : une rĂ©duction de 15 % de la latence contre une rĂ©duction de 20 % du 99e centile pour TCP. Cela suggĂšre que la transition du dernier kilomĂštre constitue un goulot d’étranglement dans le rĂ©seau.

Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performancesLe protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 8 : Les rĂ©sultats de deux expĂ©riences montrent que QUIC surpasse considĂ©rablement TCP.

Combattre le trafic

InspirĂ©s par ces expĂ©riences, nous avons implĂ©mentĂ© la prise en charge de QUIC dans notre Android et les applications iOS. Nous avons menĂ© des tests A/B pour dĂ©terminer l'impact de QUIC dans les villes oĂč Uber est prĂ©sent. Globalement, nous avons constatĂ© une rĂ©duction significative de la latence de queue, tous opĂ©rateurs et types de rĂ©seaux confondus.

Les graphiques ci-dessous montrent les amĂ©liorations en pourcentage des queues (95 et 99 centiles) par macro-rĂ©gion et diffĂ©rents types de rĂ©seaux : LTE, 3G, 2G.
Le protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performancesLe protocole QUIC en action : comment Uber l'a mis en Ɠuvre pour optimiser les performances
Figure 9. Lors des tests de combat, QUIC a surpassé TCP en termes de latence.

Transférer seulement

Ce n'est peut-ĂȘtre qu'un dĂ©but : la mise en production de QUIC a offert d'incroyables opportunitĂ©s d'amĂ©liorer les performances des applications dans les rĂ©seaux stables et instables, Ă  savoir :

Couverture accrue

AprĂšs avoir analysĂ© les performances du protocole sur le trafic rĂ©el, nous avons constatĂ© qu'environ 80 % des sessions utilisaient avec succĂšs QUIC pour tous requĂȘtes, tandis que 15 % des sessions utilisaient une combinaison de QUIC et TCP. Nous supposons que cette combinaison est due au dĂ©lai d'attente de la bibliothĂšque Cronet vers TCP, car elle ne peut pas faire la distinction entre les Ă©checs UDP rĂ©els et les mauvaises conditions du rĂ©seau. Nous recherchons actuellement une solution Ă  ce problĂšme alors que nous travaillons Ă  la mise en Ɠuvre ultĂ©rieure de QUIC.

Optimisation QUIC

Le trafic provenant des applications mobiles est sensible Ă  la latence, mais pas Ă  la bande passante. De plus, nos applications sont principalement utilisĂ©es sur les rĂ©seaux cellulaires. D'aprĂšs les expĂ©riences, les latences de queue sont toujours Ă©levĂ©es mĂȘme si l'on utilise un proxy pour terminer TCP et QUIC Ă  proximitĂ© des utilisateurs. Nous recherchons activement des moyens d'amĂ©liorer la gestion de la congestion et d'amĂ©liorer l'efficacitĂ© des algorithmes de rĂ©cupĂ©ration des pertes QUIC.

GrĂące Ă  ces amĂ©liorations et Ă  plusieurs autres, nous prĂ©voyons d’amĂ©liorer l’expĂ©rience utilisateur quels que soient le rĂ©seau et la rĂ©gion, rendant ainsi le transport de paquets pratique et transparent plus accessible dans le monde entier.

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster