En las comunicaciones de datos , el control de flujo es el proceso de gestión de la velocidad de transmisión de datos entre dos nodos para evitar que un transmisor rápido abrume a un receptor lento. El control de flujo debe distinguirse del control de congestión , que se utiliza para controlar el flujo de datos cuando realmente se ha producido una congestión. [1] Los mecanismos de control de flujo se pueden clasificar en función de si el nodo receptor envía o no retroalimentación al nodo emisor.
El control de flujo es importante porque es posible que un ordenador emisor transmita información a una velocidad mayor que la que el ordenador de destino puede recibir y procesar. Esto puede suceder si los ordenadores receptores tienen una carga de tráfico pesada en comparación con el ordenador emisor, o si el ordenador receptor tiene menos capacidad de procesamiento que el ordenador emisor.
El control de flujo de parada y espera es la forma más sencilla de control de flujo. En este método, el mensaje se divide en varios marcos y el receptor indica que está listo para recibir un marco de datos. El emisor espera un acuse de recibo (ACK) después de cada marco durante un tiempo especificado (llamado tiempo de espera). El receptor envía el ACK para informar al emisor de que el marco de datos se recibió correctamente. A continuación, el emisor enviará el siguiente marco solo después del ACK.
Si se pierde una trama o un ACK durante la transmisión, se vuelve a transmitir. Este proceso de retransmisión se conoce como ARQ ( solicitud de repetición automática ).
El problema con el método de parada y espera es que solo se puede transmitir una trama a la vez, y eso suele provocar una transmisión ineficiente, ya que hasta que el remitente no recibe el acuse de recibo no puede transmitir ningún paquete nuevo. Durante este tiempo, tanto el remitente como el canal quedan sin utilizar.
Ventajas
La única ventaja de este método de control de flujo es su simplicidad.
Contras
El remitente debe esperar el acuse de recibo después de cada trama que transmite. Esto es una fuente de ineficiencia y es particularmente malo cuando el retraso de propagación es mucho mayor que el retraso de transmisión . [2]
La función de detener y esperar también puede generar ineficiencias al enviar transmisiones más largas. [3] Cuando se envían transmisiones más largas, hay más probabilidades de que se produzcan errores en este protocolo. Si los mensajes son cortos, es más probable que se detecten los errores de forma temprana. Se genera más ineficiencia cuando los mensajes individuales se dividen en tramas separadas porque esto hace que la transmisión sea más larga. [4]
Método de control de flujo en el que un receptor da permiso a un transmisor para transmitir datos hasta que se llena una ventana. Cuando la ventana está llena, el transmisor debe dejar de transmitir hasta que el receptor anuncie una ventana más grande. [5]
El control de flujo de ventana deslizante se utiliza mejor cuando el tamaño del búfer es limitado y preestablecido. Durante una comunicación típica entre un emisor y un receptor, el receptor asigna espacio en el búfer para n tramas ( n es el tamaño del búfer en tramas). El emisor puede enviar y el receptor puede aceptar n tramas sin tener que esperar un acuse de recibo. Se asigna un número de secuencia a las tramas para ayudar a realizar un seguimiento de aquellas tramas que recibieron un acuse de recibo. El receptor acusa recibo de una trama enviando un acuse de recibo que incluye el número de secuencia de la siguiente trama esperada. Este acuse de recibo anuncia que el receptor está listo para recibir n tramas, comenzando con el número especificado. Tanto el emisor como el receptor mantienen lo que se denomina una ventana. El tamaño de la ventana es menor o igual que el tamaño del búfer.
El control de flujo de ventana deslizante tiene un rendimiento mucho mejor que el control de flujo de parada y espera. Por ejemplo, en un entorno inalámbrico, si las tasas de datos son bajas y el nivel de ruido es muy alto, esperar una confirmación de cada paquete que se transfiere no es muy factible. Por lo tanto, transferir datos en bloque produciría un mejor rendimiento en términos de mayor capacidad de procesamiento.
El control de flujo de ventana deslizante es un protocolo punto a punto que supone que ninguna otra entidad intenta comunicarse hasta que se complete la transferencia de datos actual. La ventana mantenida por el remitente indica qué tramas puede enviar. El remitente envía todas las tramas de la ventana y espera un acuse de recibo (en lugar de confirmarlo después de cada trama). A continuación, el remitente desplaza la ventana al número de secuencia correspondiente, lo que indica que se pueden enviar las tramas dentro de la ventana que comiencen a partir del número de secuencia actual.
Algoritmo de solicitud de repetición automática (ARQ) utilizado para la corrección de errores, en el que un acuse de recibo negativo (NACK) provoca la retransmisión de la palabra con error, así como de las N–1 palabras siguientes. El valor de N suele elegirse de forma que el tiempo necesario para transmitir las N palabras sea menor que el retraso del viaje de ida y vuelta desde el transmisor al receptor y viceversa. Por lo tanto, no se necesita un búfer en el receptor.
El retardo de propagación normalizado (a) = tiempo de propagación (Tp) ⁄ tiempo de transmisión (Tt) , donde Tp = longitud (L) sobre velocidad de propagación (V) y Tt = tasa de bits (r) sobre tasa de cuadros (F). De modo que a = LF ⁄ Vr .
Para obtener la utilización, se debe definir un tamaño de ventana (N). Si N es mayor o igual a 2a + 1, entonces la utilización es 1 (utilización completa) para el canal de transmisión. Si es menor que 2a + 1, entonces se debe utilizar la ecuación N ⁄ 1+2a para calcular la utilización. [6]
La repetición selectiva es un protocolo orientado a la conexión en el que tanto el transmisor como el receptor tienen una ventana de números de secuencia. El protocolo tiene un número máximo de mensajes que se pueden enviar sin acuse de recibo. Si esta ventana se llena, el protocolo se bloquea hasta que se recibe un acuse de recibo para el primer mensaje pendiente. En este punto, el transmisor está listo para enviar más mensajes. [7]
Esta sección está orientada a la idea de comparar la ventana deslizante de parada y espera con los subconjuntos de retroceder N y repetición selectiva .
Libre de errores: . [ cita requerida ]
Con errores: . [ cita requerida ]
Definimos el rendimiento T como el número promedio de bloques comunicados por bloque transmitido. Es más conveniente calcular el número promedio de transmisiones necesarias para comunicar un bloque, una cantidad que denotamos por 0, y luego determinar T a partir de la ecuación . [ cita requerida ]
El control del flujo de transmisión puede ocurrir:
La velocidad de transmisión se puede controlar debido a los requisitos de la red o del DTE. El control del flujo de transmisión puede ocurrir de forma independiente en las dos direcciones de transferencia de datos, lo que permite que las velocidades de transferencia en una dirección sean diferentes de las velocidades de transferencia en la otra dirección. El control del flujo de transmisión puede ser
Se puede realizar el control de flujo
En el protocolo RS-232 hay pares de líneas de control que normalmente se denominan control de flujo de hardware :
El control de flujo de hardware generalmente lo maneja el DTE o "extremo maestro", ya que primero eleva o afirma su línea para ordenar al otro lado:
Un ejemplo de control de flujo de hardware es una interfaz de módem de radio semidúplex con computadora. En este caso, el software de control en el módem y la computadora puede estar escrito para dar prioridad a las señales de radio entrantes, de modo que los datos salientes de la computadora se detengan al reducir el CTS si el módem detecta una recepción.
Por el contrario, XON/XOFF suele denominarse control de flujo de software.
El mecanismo de control de flujo de lazo abierto se caracteriza por no tener retroalimentación entre el receptor y el transmisor. Este sencillo medio de control es ampliamente utilizado. La asignación de recursos debe ser de tipo "reserva previa" o "salto a salto".
El control de flujo de bucle abierto tiene problemas inherentes a la hora de maximizar la utilización de los recursos de la red. La asignación de recursos se realiza en el momento de la configuración de la conexión mediante un CAC ( control de admisión de conexión ) y esta asignación se realiza utilizando información que ya es "noticia vieja" durante la vida útil de la conexión. A menudo hay una sobreasignación de recursos y se desperdician capacidades reservadas pero no utilizadas. ATM utiliza el control de flujo de bucle abierto en sus servicios CBR , VBR y UBR (consulte el contrato de tráfico y el control de congestión ). [1]
El control de flujo de bucle abierto incorpora dos controles: el controlador y un regulador. El regulador puede alterar la variable de entrada en respuesta a la señal del controlador. Un sistema de bucle abierto no tiene mecanismo de retroalimentación o de avance, por lo que las señales de entrada y salida no están directamente relacionadas y hay una mayor variabilidad del tráfico. También hay una tasa de llegada más baja en un sistema de este tipo y una tasa de pérdida más alta. En un sistema de control abierto, los controladores pueden operar los reguladores a intervalos regulares, pero no hay garantía de que la variable de salida pueda mantenerse en el nivel deseado. Si bien puede ser más económico utilizar este modelo, el modelo de bucle abierto puede ser inestable.
El mecanismo de control de flujo de bucle cerrado se caracteriza por la capacidad de la red de informar al transmisor sobre la congestión de red pendiente. Luego, el transmisor utiliza esta información de diversas maneras para adaptar su actividad a las condiciones de red existentes. El control de flujo de bucle cerrado lo utiliza ABR (consulte contrato de tráfico y control de congestión ). [1] El control de flujo de transmisión descrito anteriormente es una forma de control de flujo de bucle cerrado.
Este sistema incorpora todos los elementos básicos de control, como el sensor, el transmisor, el controlador y el regulador. El sensor se utiliza para capturar una variable de proceso. La variable de proceso se envía a un transmisor que traduce la variable al controlador. El controlador examina la información con respecto a un valor deseado e inicia una acción de corrección si es necesario. A continuación, el controlador comunica al regulador qué acción es necesaria para garantizar que el valor de la variable de salida coincida con el valor deseado. Por lo tanto, existe un alto grado de seguridad de que la variable de salida se puede mantener en el nivel deseado. El sistema de control de bucle cerrado puede ser un sistema de retroalimentación o de avance:
Un sistema de bucle cerrado con retroalimentación tiene un mecanismo de retroalimentación que relaciona directamente las señales de entrada y salida. El mecanismo de retroalimentación monitorea la variable de salida y determina si se requiere una corrección adicional. El valor de la variable de salida que se retroalimenta se utiliza para iniciar esa acción correctiva en un regulador. La mayoría de los bucles de control en la industria son del tipo de retroalimentación.
En un sistema de bucle cerrado de alimentación hacia adelante, la variable de proceso medida es una variable de entrada. La señal medida se utiliza de la misma manera que en un sistema de retroalimentación.
El modelo de circuito cerrado produce una tasa de pérdidas y demoras en colas más bajas, y además genera tráfico que responde a la congestión. El modelo de circuito cerrado siempre es estable, ya que el número de niveles bajos activos está limitado.
Ventana corrediza: