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.
- Vaciar los buffers: detectar colas mediante control de congestión y reducir la velocidad de transmisión.
- Dividir los datos en streams: cada stream se transmite de forma independiente.
- 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⁺
- 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.
- 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.
- 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.
- 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.
- 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
Opiniones de Hacker News