1 points par GN⁺ 2024-06-25 | 1 commentaires | Partager sur WhatsApp

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.
    1. Vider les buffers : détecter les files via le contrôle de congestion et réduire le débit d’envoi.
    2. Découper les données en flux : chaque flux est transmis indépendamment.
    3. 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⁺

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

 
GN⁺ 2024-06-25
Avis sur Hacker News
  • Problèmes de TCP : TCP pose de nombreux problèmes dans les environnements qui exigent une bande passante élevée et une faible latence. Il est aussi inefficace sur les réseaux à faible bande passante et forte latence.
  • Cas d’usage d’UDP : certains utilisent UDP pour le streaming de données de capteurs haute fréquence, et il existe aussi des cas où les problèmes ont été résolus via QUIC.
  • Terminologie d’UDP : il est plus approprié de décrire UDP comme du « best effort » plutôt que comme « non fiable ».
  • Problèmes de l’abstraction de flux : l’abstraction de flux rend les programmes plus fragiles, et la reprise après une déconnexion est lente. Une approche fondée sur les datagrammes peut être plus efficace.
  • Perte de paquets UDP : en cas de congestion réseau, les paquets UDP sont les premiers à être abandonnés. Le problème des retransmissions de QUIC est aussi mentionné.
  • Titre putaclic : tentative de respecter la règle de Hacker News selon laquelle le titre doit être repris de l’original.
  • Différence entre TCP et UDP : TCP apporte la fiabilité, tandis qu’UDP privilégie la vitesse et l’efficacité. Il faut comprendre les caractéristiques de chaque protocole pour bien les utiliser.
  • Cas d’usage fondés sur les datagrammes : l’usage des datagrammes convient à la découverte locale, au broadcast, à l’encapsulation de paquets, etc.
  • Recommandation d’utiliser les datagrammes : les connexions fondées sur des sessions sont courantes, mais l’usage des datagrammes est également utile. C’est une bonne occasion d’apprendre les aspects bas niveau du réseau.