Transmisión de paquetes confiable con UDP







Yuan-Ping Chang  |  Ingeniero de software







I. Introducción

UDP (User Datagram Protocol) es un protocolo de capa de transporte no conectado en el modelo de referencia OSI (Open System Interconnection), que proporciona un servicio de transferencia de información simple no confiable orientado a transacciones. Se llama "no confiable" porque no hay apretón de manos ni verificación de la transferencia de datos.

No es un protocolo de tipo de conexión, por lo que tiene las ventajas de un bajo consumo de recursos y una rápida velocidad de procesamiento. Por lo tanto, el audio, el video y los datos normales generalmente usan UDP al transmitir, porque perder incluso uno o dos paquetes de datos ocasionalmente no es tan importante. Apenas notamos si un paquete cae de una transmisión de video o una llamada.

UDP no tiene protocolo de enlace TCP, reconocimiento, ventana, retransmisión, control de congestión, etc. UDP es un protocolo de transporte sin estado, por lo que es muy rápido al pasar datos. Sin los mecanismos de TCP, UDP es menos vulnerable a exploits que TCP.



II - Antecedentes

Debido a la falta de fiabilidad de UDP, se ha limitado en algunas aplicaciones. Por lo tanto, hemos propuesto un mecanismo de transmisión UDP confiable para resolver este problema. También se puede aplicar a otras aplicaciones además de la transmisión de datos de alta velocidad, como la tecnología punto a punto (P2P), la penetración de firewall, la transmisión de datos multimedia, etc.


III - Cómo funciona la transmisión confiable de paquetes con UDP

Las partes emisora y receptora se dividen en un iniciador de conexión y un receptor, y la transmisión de datos se realiza a través de la transmisión confiable de paquetes con UDP.

El iniciador de la conexión envía primero un paquete UDP con un tipo de paquete de HOLA al extremo receptor, y el número de secuencia de origen es un número de secuencia no repetido generado por el iniciador de la conexión, que solo es aplicable a la conversación. El número de secuencia del paquete es 0.

Al recibir el paquete UDP cuyo tipo de paquete es HOLA, el extremo receptor responde con un paquete UDP cuyo tipo de paquete es HOLA ACK. El número de secuencia de origen es el número de secuencia enviado por el iniciador de la conexión y el número de secuencia del paquete es 0.

Después de recibir el paquete UDP con el tipo de paquete HELLO ACK, el iniciador de la conexión envía una respuesta al paquete UDP del mismo contenido y se establece la conexión. El iniciador de la conexión puede comenzar a enviar el paquete UDP con el tipo de paquete DATA.

Al final de la conexión, cualquier extremo puede enviar un paquete UDP con un tipo de paquete BYE. El número de secuencia de origen es el número de secuencia de la fase de sesión y el número de secuencia del paquete es 0. La otra parte responderá al mismo paquete UDP de contenido después de recibirlo, y ambas partes pueden finalizar la fase de diálogo. Esto se ilustra en la figura 1.



IV - Fase de transmisión de datos

Tanto el extremo de origen como el receptor pueden transmitir el paquete de datos a la otra parte. El paquete UDP del tipo de paquete es DATOS, el número de serie de origen es el número de secuencia de la fase de diálogo, la longitud del paquete es la longitud de los datos a transmitir y el número de secuencia del paquete comienza desde 0, incrementalmente en orden. Después de recibir el paquete de datos transmitido por la otra parte, debe responder al paquete UDP cuyo tipo de paquete es DATA ACK. El número de secuencia de origen es el número de secuencia de la fase de sesión y el número de secuencia de paquete es el número de secuencia de paquete del paquete de datos recibido en ese momento.



Figura 1






Detección y corrección de ERRORES

En la fase de transmisión de datos, después de que se envía el paquete de datos, si el paquete de datos no se recibe, el paquete DATA ACK para el paquete de datos debe reenviarse para evitar la pérdida del paquete de datos durante la transmisión. El extremo receptor de datos establecerá una cola. Después de recibir el paquete UDP del tipo de paquete DATA, los datos se almacenan temporalmente en la cola de acuerdo con el número de serie del paquete. Si se encuentra que el número de serie está desalineado, los datos pueden ajustarse y luego leerse secuencialmente. Así es como se evitan errores de datos causados por diferentes órdenes de llegada de paquetes de datos debido al retraso de la red.

Enviar ventana

En la fase de transmisión de datos, el transmisor de datos define el tamaño de la ventana de envío y envía varios paquetes de datos en secuencia. Después de recibir el paquete DATA ACK del extremo receptor, continúa transmitiendo múltiples paquetes de datos dentro del rango de tamaño de la ventana de envío en lugar de transmitir un solo paquete de datos y esperar a que se envíe un DATA ACK antes de enviar el siguiente paquete de datos. Cuando la red se retrasa, la ventana de envío puede reducir en gran medida el tiempo perdido por el remitente de datos esperando el paquete DATA ACK. Esto se ilustra en la figura 2.

ACK lento

En la fase de transmisión de datos, el extremo receptor de datos no devuelve el paquete DATA ACK para cada paquete de datos, pero después de un tiempo fijo, el paquete DATA ACK se envía de ida y vuelta al último paquete de datos recibido, y la ventana de envío puede reducir la transmisión de una gran cantidad de datos.



Figura 2






El tráfico de paquetes DATA ACK causado por la hora. Esto se ilustra en la figura 3.



figura 3






Comienzo lento

El tamaño de la ventana de envío del remitente de datos se ajustará al tamaño apropiado de acuerdo con las condiciones de la red. Al comienzo de la transferencia de datos, el tamaño de la ventana de envío del remitente de datos aumentará desde el valor mínimo definido hasta el valor máximo con el tiempo, pero el tamaño de la ventana de envío se reducirá moderadamente cuando la parte de la transferencia de datos detecte que se produce una pérdida de paquete. Para evitar la congestión de la red, el transmisor de datos continúa enviando una gran cantidad de paquetes de datos para empeorar la situación de la red.



Conclusión V

Se pueden seleccionar diferentes tecnologías de acuerdo con diferentes escenarios de transmisión. Es posible elegir un modo de congestión flexible o un modo de retransmisión específico, pero no importa cómo elija, se basa en Gastos, Latencia y Calidad. Las compensaciones entre los tres pueden ayudar a los desarrolladores a encontrar una mejor solución combinando los escenarios y equilibrando el equilibrio triangular.



Descargar PDF>





Ver todos los artículos técnicos>