N’utilisez jamais de datagrams.
TCP vs UDP
- Lors du développement d’applications Internet, il faut choisir entre TCP et UDP.
- TCP : garantit un transfert de données fiable.
- UDP : fournit un transfert de données non fiable.
- Les cas où un transport non fiable est réellement nécessaire sont rares.
Propriétés
- L’ingénierie logicielle repose sur plusieurs couches d’abstraction.
- Chaque couche fournit certaines propriétés, ce qui évite aux développeurs de tout reconstruire depuis zéro.
- Les développeurs doivent choisir quelle couche utiliser.
« Non fiable »
- Lors d’une réunion de conception d’un protocole de vidéo en temps réel, certains estimaient que SUBSCRIBE devait être non fiable.
- En réalité, ce dont on a besoin, c’est de timeliness.
- En vidéo en temps réel, il est important de livrer en priorité les données les plus récentes.
Datagrams
- Un datagram (paquet IP) est une unité de données transmise d’une adresse source vers une adresse de destination.
- Un datagram peut être perdu ou arriver dans le désordre.
- Si l’on utilise des datagrams, c’est parce qu’en cas de congestion réseau, il vaut mieux supprimer des paquets.
Les files d’attente de l’Internet
- Lorsque le réseau est congestionné, il est courant de supprimer des paquets.
- Mettre les paquets en file d’attente pour les livrer plus tard peut provoquer un problème de bufferbloat.
- Le bufferbloat nuit à la timeliness, car tous les paquets s’accumulent dans la file.
Vous, développeur d’applications
- Si vous utilisez UDP directement, vous risquez de vous heurter à plusieurs problèmes.
- Pour construire votre propre protocole de transport au-dessus d’UDP, il faut implémenter les retransmissions, le contrôle de congestion, etc.
- Mieux vaut utiliser une bibliothèque QUIC.
Timeliness
- Il est possible d’atteindre la timeliness avec QUIC.
- Vider les buffers : détecter les files via le contrôle de congestion et réduire le débit d’envoi.
- Découper les données en flux : chaque flux est transmis indépendamment.
- Prioriser les flux : livrer en priorité les flux importants.
Défense des datagrams
- QUIC et MoQ prennent en charge les datagrams.
- Cette prise en charge est importante pour permettre l’expérimentation.
- Mais l’usage des datagrams peut être un piège.
Conclusion
- Il ne faut pas concevoir des applications au-dessus des datagrams.
- Au lieu de créer encore un autre protocole vidéo sur UDP, mieux vaut participer à Media over QUIC.
L’avis de GN⁺
- L’importance de la timeliness : dans les applications en temps réel, la rapidité de mise à disposition des données est essentielle. UDP peut être plus adapté que TCP, mais cela exige des considérations supplémentaires, comme le contrôle de congestion.
- Les avantages de QUIC : QUIC compense les inconvénients d’UDP tout en offrant de hautes performances. Il convient particulièrement bien au streaming vidéo en temps réel.
- Le problème du bufferbloat : en cas de congestion réseau, empiler les paquets dans des files d’attente peut nuire à la timeliness. Un contrôle de congestion est nécessaire pour l’éviter.
- Les limites des datagrams : les datagrams sont adaptés au transport en temps réel, mais lorsqu’il faut de la fiabilité et des garanties d’ordre, un protocole comme QUIC est un meilleur choix.
- L’importance du choix technologique : il est essentiel de sélectionner le protocole de transport adapté aux besoins de l’application. Un mauvais choix peut dégrader les performances et l’expérience utilisateur.
1 commentaires
Avis sur Hacker News