¿Cómo afectan las aplicaciones UDP al tráfico TCP?

(movido de comentario a respuesta)

Como se menciona en otro póster, UDP puede afectar a otro tráfico (tanto UDP como TCP) si el remitente inunda el cable con paquetes. Como no hay negociación o negociación en UDP, el protocolo no tiene una forma natural de controlar la velocidad de envío.

Es absolutamente posible que alguien escriba un programa muy simple que pueda crear más tráfico del que puede manejar la red, lo que provocaría que los dispositivos de red a lo largo del camino llenen potencialmente sus buffers y no puedan reenviar ningún paquete que llegue mientras no haya Más espacio en el búfer.

Los paquetes que se pierden no son deterministas, a menos que los dispositivos estén configurados con QoS o algún otro mecanismo de priorización de tráfico. Todo el tráfico que pasa por el dispositivo es vulnerable a la pérdida.

Los programas UDP que se preocupan por la entrega de mensajes lidiarán con la pérdida en la capa de aplicación

Pero TCP tiene mecanismos incorporados, y cuando se pierden paquetes, el protocolo comienza a retransmitir los paquetes perdidos, puede reducir el tamaño de las ventanas (aumentando el número de veces que el remitente espera acuses de recibo, lo que significa demoras adicionales), y puede volverse incapaz de reconstruir los paquetes enviados en orden antes de que el búfer se llene de datos incompletos. Todo esto significa transmisiones más lentas o posiblemente deshabilitadas mientras continúa la congestión.

Creo que esta pregunta está insinuando el control de flujo presente en TCP que queda en la aplicación en UDP. Algunas aplicaciones, como IBM Aspera, realizan un mejor trabajo de control de flujo para su aplicación que TCP, por lo que se utiliza UDP.

Sin embargo, las aplicaciones ingenuas que simplemente lanzan paquetes a la red tan rápido como pueden, afectarán no solo a las aplicaciones TCP, sino también a otras aplicaciones UDP al reducir la cantidad de ancho de banda disponible. Para las aplicaciones TCP, se mostrará como retransmisiones adicionales que producen un rendimiento más bajo. Para aplicaciones UDP, como RTP o audio, se mostrará como saltos y pausas debido a la pérdida de datos. Si una aplicación se está cerrando, todos pierden.

Si alguna aplicación UDP está sobrecargando la red, afectará a todas las demás aplicaciones de red en el mismo host, así como a otros dispositivos dentro de la misma red. Como UDP no tiene ningún control de flujo, la aplicación puede enviar datos no controlados.

Quizás le interese leer los trabajos de investigación sobre protocolos de redes.

Debe leer documentos de investigación sobre redes de computadoras

EL PASO DE UDP NO ES IMPACTADO POR LA LATENCIA

UDP es un protocolo utilizado para transportar datos a través de redes IP. Uno de los principios de UDP es que suponemos que todos los paquetes enviados son recibidos por la otra parte (o ese tipo de controles se ejecuta en una capa diferente, por ejemplo, por la propia aplicación).

En teoría o para algunos protocolos específicos (donde no se realiza el control en una capa diferente, por ejemplo, transmisiones unidireccionales), la velocidad a la que el remitente puede enviar paquetes no se ve afectada por el tiempo requerido para entregar los paquetes a la otra fiesta (= latencia). Cualquiera que sea ese momento, el remitente enviará un número determinado de paquetes por segundo, que depende de otros factores (aplicación, sistema operativo, recursos, …)

Aquí hay una analogía:

UDP es como una tarjeta de vacaciones de 3 páginas enviada en orden aleatorio. Lanzas el buzón y esperas que lo logre, pero si no lo hace, la tía Maddy no se molestará demasiado. Si por casualidad lo recibe, el cartero seguramente volcará las páginas en sus puertas en orden aleatorio para una entrega más rápida. A UDP no le importa que el perro de tu tía se trate de comerlos o que incluso el cartero lo haya entregado.

TCP es como un currículum de 3 páginas, engrapado en orden de página. Debe asegurarse de que se entregue y garantizar que el destinatario lo lea en el orden que envió. El cartero se asegurará de que entre en el buzón. Si algo sale mal, TCP se preocupa e intentará reenviarlo.

No se impactan tanto entre sí, ya que se usan por diferentes razones. Use TCP para cosas que necesitan confiabilidad. Use UDP para la entrega “tirarlo y a quién le importa si lo hace”.

Un buen ejemplo sería DNS. Las búsquedas desde su PC usan UDP, pero las transferencias de mapas de zona entre servidores DNS usan TCP.

Existe un interesante protocolo intermedio desarrollado por Google llamado QUIC. Intenta imitar la fiabilidad de TCP sin sacrificar la velocidad de UDP. Si usa el navegador Chrome y se conecta a YouTube, ¡encontrará que está usando QUIC! Me divirtió un poco cuando lo vi en un volcado de paquetes desde el enrutador de mi casa.

QUIC, un transporte de flujo multiplexado a través de UDP – The Chromium Projects