Le livre "High Performance Browser Networking" d'Ilya Grigorik répond exactement à cela. Il y a tout un chapitre (le 7ème) dédié aux réseaux mobiles. Le livre affirme que le problème de haute performance est presque toujours lié à la latence, nous avons généralement beaucoup de bande passante mais les protocoles s'interposent. Que ce soit le démarrage lent de TCP, le Contrôleur de Ressources Radio (RRC) ou des configurations suboptimales. Si vous rencontrez uniquement des problèmes de latence dans les réseaux mobiles, c'est à cause de leur conception.
Il y a un tableau dans le livre sur les latences typiques :
Tableau 7-2. Débits et latence pour une connexion mobile active
Génération | Débit | Latence
2G | 100-400 Kbit/s | 300-1000 ms
3G | 0.5-5 Mbit/s | 100-500 ms
4G | 1-50 Mbit/s | < 100 ms
Bien que très pertinent pour la latence, les caractéristiques du TCP comme la poignée de main en trois étapes ou le démarrage lent ne répondent pas vraiment à la question, car ils affectent également les connexions câblées de la même manière. Ce qui affecte vraiment la latence dans les réseaux mobiles, c'est la couche sous IP. Si la couche sous IP a une latence d'une demi-seconde, une connexion TCP à un serveur prendra environ 1,5 seconde (0,5s*3), comme vous pouvez le constater, les chiffres s'additionnent très rapidement. Comme dit précédemment, cela suppose que le mobile n'est pas inactif. Si le téléphone est inactif, il doit d'abord "se connecter" au réseau, ce qui nécessite de négocier une réserve de ressources avec la tour (simplifié), et cela prend entre 50 et 100ms en LTE, jusqu'à plusieurs secondes en 3G, et plus dans les réseaux plus anciens.
Figure 7-12. Latences du flux de demandes LTE
- Latence du plan de contrôle : Coût de latence fixe et ponctuel engendré pour la négociation RRC et les transitions d'état : <100 ms pour l'inactif vers l'actif, et <50 ms pour le dormant vers l'actif.
- Latence du plan utilisateur : Coût fixe pour chaque paquet d'application transféré entre le dispositif et la tour radio : <5 ms.
- Latence du réseau cœur : Coût dépendant de l'opérateur pour transporter le paquet de la tour radio à la passerelle de paquet : en pratique, 30-100 ms.
- Latence de routage Internet : Coût de latence variable entre la passerelle de paquets de l'opérateur et l'adresse de destination sur Internet public.
En pratique, la latence de bout en bout de nombreux réseaux 4G déployés tend à être de l'ordre de 30 à 100 ms une fois que le dispositif est dans un état connecté.
Donc, vous avez pour une demande (Figure 8-2. Composants d'une demande HTTP "simple") :
- Négociation RRC 50-2500 ms
- Recherche DNS 1 RTT
- Poignée de main TCP 1 RTT (connexion préexistante) ou 3 RTT (nouvelle connexion)
- Poignée de main TLS 1-2 RTTs
- Demande HTTP 1-n RTTs
Et avec des données réelles:
Tableau 8-1. Surcoût de latence d'une seule demande HTTP
| 3G | 4G
Plan de contrôle | 200-2,500 ms | 50-100 ms
Recherche DNS | 200 ms | 100 ms
Poignée de main TCP | 200 ms | 100 ms
Poignée de main TLS | 200-400 ms | 100-200 ms
Demande HTTP | 200 ms | 100 ms
Total surcoût de latence | 200-3500 ms | 100-600 ms
De plus, si vous avez une application interactive que vous souhaitez faire fonctionner correctement dans un réseau mobile, vous pouvez expérimenter la désactivation de l'algorithme de Nagle (le noyau attend que les données se regroupent en paquets plus gros au lieu d'envoyer de multiples petits paquets) cherchez des moyens de tester cela ici https://stackoverflow.com/a/17843292/869019.
Il est possible de lire l'intégralité du livre gratuitement par tout le monde sur https://hpbn.co/ sponsorisé par la Conférence Velocity. Il s'agit d'un livre très recommandé, non seulement pour les personnes qui développent des sites web, mais aussi pour tous ceux qui envoient des octets sur un réseau à un client.