Table des matières de l'article :
Introduction
L'expérience utilisateur est l'un des éléments clés du succès de tout site Web, et la vitesse de chargement est un facteur crucial affectant la perception de l'utilisateur. De plus, la vitesse du site Web a un impact significatif sur le classement des moteurs de recherche, car les moteurs de recherche accordent de plus en plus de poids à la vitesse du site Web dans leur algorithme de classement.
Pour améliorer la vitesse du site web, l'un des facteurs importants à considérer est le TTFB (Time To First Byte), c'est-à-dire le temps écoulé entre la requête du client au serveur et la réception de la première réponse du serveur. Un faible TTFB peut aider à augmenter la vitesse de chargement du site Web et améliorer l'expérience utilisateur.
Cependant, le processus de connexion entre le client et le serveur peut être une limitation majeure pour TTFB. La poignée de main à trois voies de TCP nécessite trois messages pour établir une connexion, et ce processus peut prendre plus de temps, augmentant le TTFB et ralentissant le site Web.
Pour pallier ce problème, il a été développé TCP Fast Open, une technologie qui permet de réduire le temps nécessaire pour établir une connexion TCP, améliorant les performances du réseau et la vitesse de chargement du site Web. En implémentant TCP Fast Open, le serveur peut envoyer des données au client dès la phase de prise de contact, ce qui réduit le temps nécessaire pour établir la connexion et améliore le TTFB et la latence du site Web.
Qu'est-ce que TCP Fast Open ?
TCP Fast Open (TFO) est une technologie d'optimisation des performances réseau du protocole TCP (Transmission Control Protocol) qui permet de réduire le temps nécessaire à l'ouverture des connexions réseau. En pratique, TFO prévoit l'envoi de données critiques pendant la phase d'ouverture de la connexion elle-même, sans avoir à attendre le résultat de la poignée de main à trois, qui a normalement lieu entre le client et le serveur. Cela réduit les délais d'ouverture de connexion, améliorant ainsi les performances globales du réseau.
Objectifs du poste
L'objectif de cet article est de fournir un aperçu complet de TCP Fast Open, en expliquant le fonctionnement de la technologie, ses avantages et ses inconvénients, et comment l'activer sur les serveurs et les clients. En particulier, le billet s'adresse à ceux qui ont une connaissance de base du protocole TCP et qui souhaitent en savoir plus sur le sujet, par exemple pour améliorer les performances de leur réseau ou mieux comprendre les mécanismes de fonctionnement du protocole.
Ce billet vise à avoir à la fois un but d'introduction et de mise en œuvre pour les utilisateurs généraux et les initiés tels que les ingénieurs en systèmes informatiques qui souhaiteraient améliorer l'efficacité de leur réseau, les performances de TCP/IP et améliorer sa vitesse en particulier dans un contexte où vous souhaitez utiliser le protocole HTTP ou HTTP/2 plutôt que HTTP3 ou QUIC qui utilise normalement des connexions UDP plutôt que TCP.
Comprendre le fonctionnement de TCP
Le modèle de communication TCP
Le protocole TCP est l'un des protocoles de communication les plus utilisés au niveau du réseau. Il est basé sur un modèle de communication par flux d'octets, c'est-à-dire que les données sont envoyées et reçues sous la forme d'un flux continu d'octets, sans interruption. Le protocole assure la fiabilité de la communication, c'est-à-dire qu'il garantit que les données sont reçues correctement et dans l'ordre, grâce à l'utilisation de numéros de séquence et d'accusés de réception.
La poignée de main à trois
Pour établir une connexion TCP entre un client et un serveur, un mécanisme de prise de contact à trois voies, appelé « prise de contact à trois voies », est utilisé. Fondamentalement, le client envoie un paquet SYN au serveur, le serveur répond avec un paquet SYN/ACK et enfin le client envoie un paquet ACK pour confirmer la connexion. Ce mécanisme de prise de contact garantit que le client et le serveur sont synchronisés et prêts à échanger des données de manière fiable.
La congestion du réseau
Le protocole TCP dispose également d'un mécanisme de contrôle de la congestion du réseau. En pratique, le protocole surveille en permanence les performances du réseau, pour éviter d'envoyer trop de données en même temps et de provoquer une congestion du réseau. Si le réseau devient congestionné, le protocole réduit la vitesse de transmission des données, pour éviter d'aggraver la situation.
De manière générale, le protocole TCP a été conçu pour assurer une grande fiabilité des communications, mais au détriment des performances du réseau en termes de vitesse de transmission des données.
TCP Fast Open : comment ça marche
La poignée de main à trois de TFO
TCP Fast Open fournit un mécanisme de poignée de main alternatif à la poignée de main traditionnelle à trois voies. En pratique, lors de la phase d'ouverture de connexion, le client envoie un paquet SYN avec un champ de données supplémentaire (cookie TFO), qui contient des informations sur la connexion précédente. Le serveur peut utiliser ces informations pour authentifier la demande du client et répondre immédiatement avec un paquet SYN/ACK, contenant également un cookie TFO. Le client peut alors envoyer immédiatement les données de connexion critiques, sans attendre le résultat de la poignée de main complète en trois étapes.
Comment TFO réduit les délais d'ouverture des connexions
TCP Fast Open réduit les temps d'ouverture de connexion, car il permet au client d'envoyer immédiatement des données de connexion critiques, sans avoir à attendre le résultat de la poignée de main complète à trois. Ce mécanisme est particulièrement utile en cas de requêtes répétitives entre un même client et serveur, par exemple lors du téléchargement de contenu depuis un site Internet. Cela réduit les délais d'ouverture de connexion et améliore les performances globales du réseau.
En général, TCP Fast Open est une technologie d'optimisation des performances réseau du protocole TCP qui permet de réduire le temps d'ouverture des connexions réseau, ce qui améliore les performances globales du réseau.
Implémentation de TCP Fast Open
Prise en charge des systèmes d'exploitation
TCP Fast Open est pris en charge par plusieurs systèmes d'exploitation, dont Linux, macOS et Windows 10. En particulier, à partir de la version 3.6 du noyau Linux, TCP Fast Open est activé par défaut. Dans macOS, TCP Fast Open a été introduit dans la version 10.11. Dans Windows 10, TCP Fast Open est pris en charge à partir de la version 1607.
Activer TCP Fast Open sous Linux
Pour activer TCP Fast Open sous Linux, le système d'exploitation doit disposer d'un noyau prenant en charge cette technologie. En particulier, la prise en charge de TCP Fast Open a été introduite dans la version 3.7 du noyau Linux, il est donc important de vérifier que le noyau de votre système est mis à jour vers cette version ou une version ultérieure.
Une fois la version du noyau vérifiée, TCP Fast Open peut être activé en modifiant les paramètres du noyau via le fichier de configuration /etc/sysctl.conf. Pour ce faire, vous devez ajouter la ligne suivante à votre fichier de configuration :
net.ipv4.tcp_fastopen=3
Ce paramètre active TCP Fast Open sur le système, permettant au serveur d'envoyer des données au client pendant la phase de négociation TCP.
Il est important de noter que pour utiliser TCP Fast Open, le logiciel serveur doit également supporter cette technologie. Par exemple, si vous utilisez apache comme serveur web, vous pouvez activer TCP Fast Open en ajoutant la ligne suivante à votre fichier de configuration :
Accepter le filtre http aucun
Autoriser Ouverture rapide TCP sur NGINX, vous devez vérifier que votre version de NGINX prend en charge cette technologie. En particulier, la prise en charge de TCP Fast Open a été introduite à partir de la version 1.5.7 de NGINX.
Une fois que vous avez vérifié votre version de NGINX, vous pouvez activer TCP Fast Open en ajoutant la ligne suivante à la configuration de votre serveur NGINX :
tcp_fastopen on;
Ce paramètre permet au serveur NGINX d'envoyer des données au client pendant la phase de prise de contact TCP, améliorant ainsi les performances du réseau et la vitesse du site Web.
Il est important de noter que, comme pour Linux, le client doit également prendre en charge TCP Fast Open afin de tirer pleinement parti de cette technologie. Sinon, la technologie sera désactivée.
De plus, vous pouvez configurer des paramètres supplémentaires pour TCP Fast Open dans NGINX, tels que le nombre maximal de connexions TCP Fast Open pour chaque client ou la taille maximale des données pouvant être envoyées pendant la phase de négociation TCP.
De plus, vous devez vérifier que le client prend en charge TCP Fast Open, sinon la technologie ne peut pas être utilisée.
Limites de TCP Fast Open
TCP Fast Open a certaines limitations qui limitent son utilisation dans certains scénarios. Par exemple, TCP Fast Open n'est pas recommandé pour les connexions à des sites Web non fiables, car il peut être vulnérable à l'usurpation d'identité ou aux attaques de l'homme du milieu. De plus, TCP Fast Open nécessite que le serveur prenne en charge cette technologie, sinon elle ne peut pas être utilisée.
Conclusions
Avantages de TCP Fast Open
TCP Fast Open offre plusieurs avantages en termes de performances réseau. Il permet notamment de réduire les temps d'ouverture des connexions réseau et d'améliorer les performances globales du réseau. Cela se traduit par une efficacité accrue des applications qui utilisent le protocole TCP, en particulier celles qui nécessitent une communication rapide et fréquente entre les clients et les serveurs.
Défis liés à la mise en œuvre de TCP Fast Open
Malgré les avantages, la mise en œuvre de TCP Fast Open présente certains défis. En particulier, comme nous l'avons vu, TCP Fast Open nécessite que le serveur prenne en charge cette technologie, ce qui peut limiter son utilité dans certains scénarios. De plus, l'utilisation de TCP Fast Open peut poser des risques de sécurité, en particulier lors de la connexion à des sites Web non fiables.