1 puntos por GN⁺ 2024-06-25 | 1 comentarios | Compartir por WhatsApp

Nunca uses datagrams.

TCP vs UDP

  • Al desarrollar aplicaciones para Internet, hay que elegir entre TCP y UDP.
  • TCP: garantiza una transmisión de datos confiable.
  • UDP: ofrece una transmisión de datos no confiable.
  • Casi nunca se necesita una transmisión no confiable.

Propiedades

  • La ingeniería de software se apoya en varias capas de abstracción.
  • Cada capa ofrece ciertas propiedades para que los desarrolladores no tengan que reconstruir todo desde cero.
  • Los desarrolladores deben elegir qué capa usar.

"No confiable"

  • En una reunión para diseñar un protocolo de video en tiempo real, surgió la opinión de que SUBSCRIBE debía ser no confiable.
  • Lo que realmente se necesita es timeliness.
  • En el video en tiempo real, lo importante es entregar con prioridad los datos más recientes.

Datagrams

  • Un datagram (paquete IP) es una unidad de datos que se envía desde una dirección de origen hacia una dirección de destino.
  • Los datagrams pueden perderse o llegar fuera de orden.
  • La razón para usar datagrams es que, cuando hay congestión en la red, a veces es mejor descartar paquetes.

Las colas en Internet

  • Cuando la red está congestionada, es común descartar paquetes.
  • Poner paquetes en cola para entregarlos después puede provocar el problema de bufferbloat.
  • El bufferbloat hace que todos los paquetes se acumulen en la cola y perjudica la timeliness.

Tú, desarrollador de aplicaciones

  • Si usas UDP directamente, puedes enfrentarte a varios problemas.
  • Si construyes tu propio protocolo de transporte sobre UDP, tendrás que implementar retransmisiones, control de congestión y más.
  • Usar una biblioteca de QUIC es una mejor opción.

Timeliness

  • Se puede usar QUIC para lograr timeliness.
    1. Vaciar los buffers: detectar colas mediante control de congestión y reducir la velocidad de transmisión.
    2. Dividir los datos en streams: cada stream se transmite de forma independiente.
    3. Priorizar streams: entregar primero los streams importantes.

Defensa de los datagrams

  • QUIC y MoQ admiten datagrams.
  • El soporte de datagrams es importante para permitir la experimentación.
  • Sin embargo, usar datagrams puede ser una trampa.

Conclusión

  • No se deben diseñar aplicaciones sobre datagrams.
  • En lugar de crear otro protocolo de video sobre UDP, es mejor participar en Media over QUIC.

Opinión de GN⁺

  1. Importancia de la timeliness: en las aplicaciones en tiempo real, la entrega oportuna de los datos es crucial. UDP puede parecer más adecuado que TCP, pero requiere consideraciones adicionales como el control de congestión.
  2. Ventajas de QUIC: QUIC compensa las desventajas de UDP y aun así ofrece alto rendimiento. Es especialmente adecuado para streaming de video en tiempo real.
  3. Problema del bufferbloat: acumular paquetes en colas cuando hay congestión de red puede dañar la timeliness. Para evitarlo, se necesita control de congestión.
  4. Límites de los datagrams: los datagrams son adecuados para transmisión en tiempo real, pero cuando se necesita confiabilidad y garantía de orden, un protocolo como QUIC es una mejor opción.
  5. Importancia de elegir la tecnología correcta: es fundamental seleccionar el protocolo de transporte adecuado según los requisitos de la aplicación. Una mala elección puede degradar el rendimiento y empeorar la experiencia del usuario.

1 comentarios

 
GN⁺ 2024-06-25
Opiniones de Hacker News
  • Problemas de TCP: TCP tiene muchos problemas en entornos que requieren alto ancho de banda y baja latencia. También es ineficiente en redes de bajo ancho de banda y alta latencia.
  • Casos de uso de UDP: Se está usando UDP para streaming de datos de sensores de alta frecuencia, y también hay casos en los que se resolvieron problemas mediante QUIC.
  • Terminología de UDP: Es más apropiado describir UDP como de "mejor esfuerzo" en lugar de "no confiable".
  • Problemas de la abstracción de flujo: La abstracción de flujo vuelve a los programas más frágiles y hace que la recuperación al desconectarse sea lenta. Un enfoque basado en datagramas puede ser más eficiente.
  • Pérdida de paquetes UDP: Cuando hay congestión de red, los paquetes UDP son los primeros en descartarse. Se menciona el problema de las retransmisiones en QUIC.
  • Título clickbait: Un intento de seguir la guía de Hacker News de usar el título original del artículo.
  • Diferencia entre TCP y UDP: TCP ofrece confiabilidad, mientras que UDP ofrece velocidad y eficiencia. Hay que entender las características de cada protocolo y usarlas en consecuencia.
  • Casos de uso basados en datagramas: El uso de datagramas es adecuado para descubrimiento local, broadcast y encapsulación de paquetes, entre otros.
  • Recomendación de uso de datagramas: Aunque las conexiones basadas en sesión son comunes, usar datagramas también es útil. Es una buena oportunidad para aprender aspectos de bajo nivel del networking.