Pourquoi la latence du réseau stimule les performances numériques

Chaque fois qu’un paquet traverse un réseau pour atteindre une destination, cela prend du temps! La latence du réseau améliore les performances.

Comme l’ explique cet article de blog , la latence est le délai d’un paquet pour voyager sur un réseau d’un point à un autre. Différents facteurs tels que le traitement, la sérialisation et la mise en file d’attente entraînent cette latence. Lorsque vous utilisez de nouvelles fonctionnalités matérielles et logicielles, vous pouvez potentiellement réduire l’impact de ces éléments sur la latence. Mais il y a une chose que vous n’améliorerez jamais: la vitesse de la lumière!

Comme Einstein l’a souligné dans sa théorie de la relativité restreinte, la vitesse de la lumière est la vitesse maximale à laquelle toute énergie, matière et information peuvent voyager. Avec la fibre optique moderne, vous pouvez atteindre environ 200 000 000 mètres par seconde, la vitesse maximale théorique de la lumière (dans le vide) étant de 299 792 458 mètres par seconde. Pas mal!

Compte tenu d’une communication entre New York et Sydney, la latence est d’environ 80 ms. Cette valeur suppose un lien direct entre les deux villes, ce qui, bien entendu, ne sera généralement pas le cas. Les paquets traverseront plusieurs sauts, chacun introduisant des délais supplémentaires de routage, de traitement, de mise en file d’attente et de transmission. Vous vous retrouverez probablement avec une latence comprise entre 100 et 150 ms. Toujours assez rapide, non?

Eh bien, la latence reste le goulot d’étranglement des performances pour la plupart des sites Web! Voyons pourquoi.

La pile de protocoles TCP / IP

À partir d’aujourd’hui, la pile de protocoles TCP / IP domine Internet. IP (Internet Protocol) est ce qui fournit le routage et l’adressage de nœud à nœud, tandis que TCP (Transmission Control Protocol) est ce qui fournit l’abstraction d’un réseau fiable fonctionnant sur un canal non fiable.

TCP et IP ont été publiés respectivement sous RFC 791 et RFC 793 , en septembre 1981. Des  protocoles assez anciens…

Même si de nouveaux protocoles basés sur UDP font leur apparition, comme HTTP / 3 discuté dans l’un de nos futurs articles, TCP est toujours utilisé aujourd’hui pour les applications les plus populaires: World Wide Web, courrier électronique, transferts de fichiers, et bien d’autres.

On pourrait soutenir que TCP ne peut pas faire face aux exigences de performance des systèmes modernes d’aujourd’hui. Expliquons pourquoi.

La poignée de main à trois

Comme indiqué précédemment, TCP fournit une abstraction efficace d’un réseau fiable fonctionnant sur un canal non fiable. L’idée de base derrière cela est que TCP garantit la livraison des paquets. Il se soucie donc de la retransmission des données perdues, de la livraison dans l’ordre, du contrôle et de l’évitement de la congestion, de l’intégrité des données, etc.

Pour que tout cela fonctionne, TCP attribue à chaque paquet un numéro de séquence. Pour des raisons de sécurité, le premier paquet ne correspond pas au numéro de séquence de 1. Chaque côté d’une conversation TCP (une session TCP) envoie un ISN (Initial Sequence Number) généré aléatoirement à l’autre côté, fournissant le premier numéro de paquet .

Cet échange d’informations se produit dans ce que l’on appelle la «prise de contact à trois» TCP:

Le processus d’établissement de session TCP explique pourquoi la latence du réseau détermine les performances
  • Étape 1 (SYN) : le client veut établir une connexion avec le serveur, il envoie donc un paquet (appelé segment au niveau de la couche TCP) avec le bit de signal SYN (Synchronize Sequence Number) défini, qui informe le serveur qu’il a l’intention de démarrer communicant. Ce premier segment comprend l’ISN (Initial Sequence Number).
  • Étape 2 (SYN / ACK) : Le serveur répond à la demande du client avec les bits de signal SYN / ACK définis. Il fournit au client son propre ISN et confirme la bonne réception du premier segment client (ACK).
  • Étape 3 (ACK) : Le client reconnaît enfin la bonne réception du segment SYN / ACK du serveur.

À ce stade, la session TCP est établie.

L’impact de TCP sur la latence totale

L’établissement d’une session TCP coûte 1,5 aller-retour . Ainsi, en prenant l’exemple d’une communication entre New York et Sydney, cela introduit un délai de configuration typiquement compris entre 450 et 600ms!

Ceci sans prendre en compte les communications sécurisées (HTTPS via TLS), ce qui introduit des allers-retours supplémentaires pour négocier les paramètres de sécurité. Cette partie sera traitée dans un prochain article.

Comment réduire l’impact de la latence sur les performances?

Alors, comment réduire l’impact de la latence sur les performances si vous ne pouvez pas améliorer la vitesse de transmission?

En fait, vous pouvez tirer parti de deux facteurs:

  1. La distance entre le client et le serveur
  2. Le nombre de paquets à transmettre sur le réseau

Il existe différentes manières de réduire la distance entre le client et le serveur. Tout d’abord, vous pouvez utiliser les services de réseau de diffusion de contenu (CDN) pour fournir des ressources plus proches des utilisateurs. Deuxièmement , la  mise en cache des ressources rend les données disponibles directement à partir de l’appareil de l’utilisateur.  Aucune donnée à transférer sur le réseau dans ce cas.

En plus de réduire la distance entre le client et le serveur, vous pouvez également réduire le nombre de paquets à transmettre sur un réseau. L’un des meilleurs exemples est l’utilisation de techniques de compression .

Néanmoins, l’optimisation que vous pouvez réaliser a quelques limites, en raison du fonctionnement des protocoles de transmission… Le processus de prise de contact TCP nécessite 1,5 aller-retour. La seule solution pour éviter cela serait de remplacer TCP par un autre protocole, ce que nous verrons certainement dans le futur.