3. Control de Flujo por Ventana Deslizante

1. Limitación del método parada y espera

En la unidad anterior se estudió el mecanismo de parada y espera, donde el transmisor envía una única trama y luego debe esperar una confirmación antes de transmitir la siguiente.

Este método es simple, pero presenta una limitación importante: sólo puede haber una trama en tránsito sin confirmar.

Esto significa que, aunque el enlace tenga capacidad disponible, el transmisor permanece detenido durante el tiempo que tarda en recibir el ACK. Esta espera puede ser aceptable en enlaces cortos y de baja latencia, pero se vuelve muy ineficiente en enlaces de alta velocidad o gran retardo.

El problema aparece especialmente cuando:

  • el enlace es largo;
  • la velocidad de transmisión es alta;
  • el retardo de propagación es grande;
  • la trama es pequeña en comparación con la longitud del enlace en bits;
  • el valor de a es mayor que 1.

Recordemos que:

a = \frac{B}{L}

donde:

B = \text{longitud del enlace en bits}
L = \text{longitud de la trama en bits}

Cuando:

a > 1

la longitud del enlace en bits es mayor que la longitud de la trama. En otras palabras, el transmisor puede terminar de enviar una trama antes de que el primer bit llegue al receptor.

En este caso, parada y espera desaprovecha gran parte de la capacidad del medio.

2. Concepto de múltiples tramas en tránsito

La solución al problema anterior consiste en permitir que el transmisor envíe varias tramas consecutivas antes de recibir una confirmación.

Este mecanismo se denomina control de flujo por ventana deslizante.

La idea central es que el transmisor no se detenga después de cada trama, sino que pueda mantener varias tramas circulando por el enlace. De esta manera, mientras las primeras tramas avanzan hacia el receptor y las confirmaciones regresan, el transmisor continúa utilizando el medio.

Representación conceptual:

Parada y espera:

Emisor                              Receptor
 | -------- Trama 0 ----------------> |
 | <---------- ACK ------------------ |
 | -------- Trama 1 ----------------> |
 | <---------- ACK ------------------ |

Ventana deslizante:

Emisor                              Receptor
 | -------- Trama 0 ----------------> |
 | -------- Trama 1 ----------------> |
 | -------- Trama 2 ----------------> |
 | -------- Trama 3 ----------------> |
 | <---------- RR 4 ----------------- |

En este último caso, el receptor confirma que recibió correctamente hasta cierta trama y que espera la siguiente.

La ventana deslizante mejora la eficiencia porque permite canalizar o pipelinear la transmisión de tramas.

3. Enlace full-duplex entre estaciones A y B

Para estudiar el mecanismo de ventana deslizante se considera un enlace entre dos estaciones, A y B, conectadas mediante un enlace full-duplex.

Esto significa que ambas estaciones pueden transmitir y recibir simultáneamente.

Estación A  <========================>  Estación B
            Enlace full-duplex

En este modelo:

  • A puede enviar tramas hacia B;
  • B puede enviar confirmaciones hacia A;
  • B también podría enviar datos hacia A;
  • las confirmaciones pueden viajar en sentido contrario al flujo de datos;
  • en protocolos más avanzados, las confirmaciones pueden incorporarse dentro de tramas de datos mediante piggybacking.

Para simplificar el análisis inicial, se considera que A transmite tramas y B responde con confirmaciones.

4. Tamaño de ventana W

El parámetro fundamental del mecanismo es el tamaño de ventana, representado por "W".

El tamaño de ventana indica la cantidad máxima de tramas que el transmisor puede enviar sin haber recibido confirmación.

W = \text{cantidad máxima de tramas pendientes de confirmación}

Si:
W = 1

el mecanismo se comporta como parada y espera.

Si:
W > 1

el transmisor puede enviar varias tramas antes de detenerse.

Ejemplo:

Si W = 4, el transmisor puede enviar:

Trama 0, Trama 1, Trama 2, Trama 3

sin esperar ACK individual para cada una.

El receptor debe reservar memoria suficiente para aceptar las tramas dentro de la ventana. Por lo tanto, el tamaño de ventana está relacionado con:

  • capacidad de buffer del receptor;
  • numeración de tramas;
  • retardo del enlace;
  • velocidad de transmisión;
  • estrategia de confirmación;
  • eficiencia buscada.

5. Numeración de tramas

Para que el receptor pueda identificar qué tramas recibió y cuáles faltan, cada trama debe tener un número de secuencia.

La numeración permite:

  • identificar tramas enviadas;
  • detectar tramas duplicadas;
  • ordenar tramas recibidas;
  • confirmar varias tramas;
  • saber cuál es la próxima trama esperada;
  • desplazar correctamente la ventana.

Si el campo de secuencia tiene n bits, la cantidad de números posibles es:

N = 2^n

Por ejemplo, si el campo de secuencia tiene 3 bits:

N = 2^3 = 8

Los números de secuencia posibles son:

0, 1, 2, 3, 4, 5, 6, 7

Luego de la trama 7, la numeración vuelve a 0. Por eso se dice que la numeración es circular o modular.

0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 0 → 1 → ...

6. Confirmaciones acumulativas

En ventana deslizante no es necesario confirmar cada trama de forma individual. El receptor puede usar confirmaciones acumulativas.

Una confirmación acumulativa indica que se recibieron correctamente todas las tramas hasta cierto punto y que se espera una próxima trama.

Por ejemplo:

RR 3
significa:
Recibí correctamente hasta la trama 2.
Estoy listo para recibir la trama 3.

De esta manera, una sola confirmación puede validar varias tramas al mismo tiempo.

Ejemplo:

A envía: F0, F1, F2
B responde: RR 3

Interpretación:

B recibió F0, F1 y F2.
B espera recibir F3.

Esto reduce la cantidad de confirmaciones necesarias y mejora la eficiencia del enlace.

7. Tramas RR: Receive Ready

La confirmación RR significa Receive Ready, es decir, “receptor preparado”.

Una trama RR indica que el receptor:

  • recibió correctamente las tramas anteriores;
  • está preparado para recibir nuevas tramas;
  • informa cuál es el próximo número de secuencia esperado.

Ejemplo:

RR 4

significa:

He recibido correctamente hasta la trama 3.
Estoy preparado para recibir la trama 4.

La confirmación RR también tiene un efecto sobre la ventana del transmisor: permite liberar del buffer las tramas ya confirmadas y habilita el envío de nuevas tramas.

8. Desplazamiento de la ventana de transmisión

La ventana de transmisión indica qué tramas puede enviar el transmisor en un momento dado.

Supongamos un tamaño de ventana:

W = 4

y números de secuencia:

0, 1, 2, 3, 4, 5, 6, 7

Inicialmente, el transmisor puede enviar:

F0, F1, F2, F3 

Si transmite F0 y F1, pero aún no recibe confirmación, esas tramas quedan pendientes. El transmisor debe conservar una copia de ellas por si fuera necesario retransmitirlas.

Cuando llega una confirmación, por ejemplo:

RR 2

el transmisor interpreta:

F0 y F1 fueron recibidas correctamente.
La próxima esperada es F2.

Entonces puede:

  • descartar F0 y F1 del buffer;
  • desplazar la ventana;
  • habilitar el envío de nuevas tramas.

Representación conceptual:

Antes del ACK:

[ F0 F1 F2 F3 ] F4 F5 F6 F7
 ↑ ventana de transmisión

Después de recibir RR 2:

F0 F1 [ F2 F3 F4 F5 ] F6 F7
       ↑ nueva ventana

 

Por eso el mecanismo se llama ventana deslizante: la ventana avanza a medida que se reciben confirmaciones.

9. Desplazamiento de la ventana de recepción

El receptor también maneja una ventana. La ventana de recepción indica qué tramas está dispuesto a aceptar.

Si el receptor espera la trama 0 y el tamaño de ventana es 4, puede aceptar:

F0, F1, F2, F3

Cuando recibe correctamente F0, la ventana puede desplazarse y ahora el receptor queda preparado para aceptar:

F1, F2, F3, F4

En esquemas simples con confirmación acumulativa, el receptor puede exigir que las tramas lleguen en orden. En esquemas más avanzados, como rechazo selectivo, puede almacenar tramas fuera de orden.

En esta unidad se analiza la ventana deslizante desde el punto de vista del control de flujo; en unidades posteriores se estudiará su relación con mecanismos ARQ, como vuelta atrás N y rechazo selectivo.

10. Ejemplo con campo de secuencia de 3 bits

Supongamos un campo de secuencia de 3 bits.

La cantidad de números posibles es:

 N = 2^3 = 8 

Los números disponibles son:

0, 1, 2, 3, 4, 5, 6, 7

Para evitar ambigüedades, el tamaño máximo de ventana se toma como:

W_{\max} = 2^n - 1 

Entonces:

W_{\max} = 2^3 - 1 = 7

Por lo tanto, con 3 bits se pueden numerar 8 tramas, pero se permite una ventana máxima de 7 tramas.

Desarrollo del ejemplo

Inicialmente, la estación A puede transmitir siete tramas comenzando por F0:

F0, F1, F2, F3, F4, F5, F6

Supongamos que A transmite:

F0, F1, F2

Aún no recibió confirmación, por lo tanto debe conservar copias de esas tres tramas.

La ventana de A se reduce temporalmente porque ya utilizó tres posiciones. Si el tamaño era 7, quedan cuatro posiciones disponibles.

Luego B envía:

RR 3

Esto significa:

Recibí correctamente F0, F1 y F2.
Estoy preparado para recibir F3.

Cuando A recibe RR 3:

  • descarta F0, F1 y F2 de su buffer;
  • desplaza la ventana;
  • puede transmitir nuevamente hasta siete tramas comenzando por F3.

A continuación, A puede enviar:

F3, F4, F5, F6 

Si B responde:

RR 4 

significa que recibió F3 y espera F4.

Si A ya transmitió F4, F5 y F6, entonces sólo desplaza el extremo derecho de la ventana y queda habilitado para enviar nuevas tramas según la ventana disponible.

11. Tamaño máximo de ventana: 2^n - 1

Cuando se utilizan números de secuencia de n bits, se pueden representar:

2^n 

valores distintos.

Sin embargo, para evitar ambigüedad en algunos esquemas de ventana deslizante, se limita el tamaño máximo de ventana a:

W_{\max} = 2^n - 1

Donde:

W_{\max} = \text{tamaño máximo de ventana}

n = \text{cantidad de bits del campo de secuencia}

Ejemplos:

n = 3
W_{\max} = 2^3 - 1 = 7
n = 4
W_{\max} = 2^4 - 1 = 15
n = 5
W_{\max} = 2^5 - 1 = 31

Esta restricción evita confundir tramas nuevas con tramas antiguas cuando la numeración vuelve a cero.

12. Problema de ambigüedad en la numeración circular

La numeración de tramas es circular. Esto significa que, después del último número disponible, la numeración vuelve a comenzar.

Con 3 bits:

0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2...

Si se usaran las 8 posiciones como ventana completa, podría aparecer una ambigüedad.

Por ejemplo, si el receptor envía una confirmación esperando la trama 0, el transmisor podría no saber si:

  • se confirmaron todas las tramas anteriores y se espera un nuevo ciclo;
  • o se está solicitando nuevamente una trama vieja.

Por esta razón, en el esquema estudiado, aunque con 3 bits se pueden representar 8 números, la ventana máxima se limita a 7.

La regla general usada en esta unidad es:

W_{\max} = 2^n - 1

13. Comparación entre parada y espera y ventana deslizante

La diferencia central entre ambos mecanismos es la cantidad de tramas que pueden estar en tránsito.

Característica

Parada y espera

Ventana deslizante

Tramas en tránsito

Una sola

Varias

Complejidad

Baja

Media o alta

Uso de buffers

Bajo

Mayor

Numeración de tramas

Simple

Necesaria

Confirmaciones

Una por trama

Pueden ser acumulativas

Eficiencia en enlaces cortos

Aceptable

Alta

Eficiencia en enlaces largos

Baja

Mucho mayor

Aplicación didáctica

Introducción al control de flujo

Aprovechamiento eficiente del enlace

La ventana deslizante mejora la eficiencia porque permite que el transmisor siga enviando tramas mientras espera las confirmaciones de las primeras.

14. Aplicación al caso de fibra óptica

En la unidad anterior se estudió un enlace de fibra óptica de 200 m a 1 Gbps con una trama de 8.000 bits.

Los valores obtenidos fueron:

T_{tx} = 8 \mu s

T_p = 1 \mu s

a = 0{,}125

Con parada y espera, el ACK de la primera trama llega aproximadamente a los 10 μs. Como transmitir una trama demora 8 μs, el transmisor queda poco tiempo detenido.

La cantidad aproximada de tramas que podrían transmitirse antes de recibir el ACK de la primera es:

N_{\text{tramas}} =\frac{T_{tx} + 2T_p}{T_{tx}}

Como:

T_{tx} + 2T_p = 8 \mu s + 2 \cdot 1 \mu s = 10 \mu s

Entonces:

N_{\text{tramas}} = \frac{10}{8} = 1{,}25 

Para mantener el enlace ocupado de manera continua, se necesita una ventana de al menos 2 tramas.

W \geq 2 

Esto coincide con la interpretación del ejemplo: en este caso, una ventana pequeña ya mejora el uso del enlace.

15. Aplicación al caso satelital

En la unidad anterior se estudió un enlace satelital geoestacionario con:

R = 1 \text{ Mbps}

L = 8000 \text{ bits}

T_{tx} = 8 \text{ ms}

T_p = 240 \text{ ms}

a = 30 

El tiempo total aproximado hasta recibir el ACK de la primera trama es:

T_{\text{ciclo}} = T_{tx} + 2T_p

T_{\text{ciclo}} = 8 \text{ ms} + 2 \cdot 240 \text{ ms}

T_{\text{ciclo}} = 488 \text{ ms} 

Durante ese tiempo, el transmisor podría haber enviado:

N_{\text{tramas}} =\frac{488 \text{ ms}}{8 \text{ ms}}

N_{\text{tramas}} = 61 

Esto significa que, para mantener el enlace ocupado continuamente, se necesita una ventana cercana a 61 tramas.

W \geq 61

Si sólo se usara una ventana de 7 tramas, el transmisor enviaría esas 7 tramas y luego tendría que esperar.

La eficiencia aproximada con ventana puede estimarse como:

\eta =\min \left(1,\frac{W}{1+2a}\right)

Para:

W = 7

a = 30

se obtiene:

\eta =\frac{7}{1 + 2 \cdot 30}

\eta =\frac{7}{61}

\eta \approx 0{,}1147

\eta(\%) \approx 11{,}47\%

Aunque es mejor que parada y espera, todavía no aprovecha completamente el enlace.

16. Relación entre tamaño de ventana, retardo y eficiencia

La eficiencia del protocolo depende fuertemente de la relación entre el tamaño de ventana y el producto retardo-velocidad del enlace.

Una aproximación útil es:

\eta =\min \left(1,\frac{W}{1+2a}\right)

Donde:

\eta = \text{eficiencia normalizada}

W = \text{tamaño de ventana}

a = \frac{T_p}{T_{tx}}

Para lograr transmisión continua:

W \geq 1 + 2a

 

Interpretación:

  • Si W es pequeño, el transmisor se queda sin tramas para enviar y debe esperar.
  • Si W es suficientemente grande, el transmisor puede mantener el enlace ocupado.
  • Cuanto mayor sea el retardo de propagación, mayor deberá ser la ventana.
  • Cuanto menor sea el tamaño de trama, mayor será el efecto del retardo.
  • En enlaces satelitales o de larga distancia, la ventana debe ser mayor que en enlaces locales.

También puede relacionarse con el producto ancho de banda-retardo:

BDP = R \cdot RTT

Donde:

BDP = \text{Bandwidth-Delay Product}

R = \text{velocidad del enlace}

RTT = \text{tiempo de ida y vuelta}

Si el ACK vuelve después de un tiempo aproximado:

RTT \approx 2T_p

entonces:

BDP \approx R \cdot 2T_p

El tamaño de ventana en bits debería ser suficiente para cubrir los bits que pueden estar “en vuelo” durante ese tiempo:

W_{\text{bits}} \geq R \cdot RTT 

Si se desea expresar la ventana en cantidad de tramas:

W_{\text{tramas}} \geq \frac{R \cdot RTT}{L} 

En muchos análisis de Capa de Enlace se suma además la trama que se está transmitiendo:

W_{\text{tramas}} \geq 1 + 2a

17. Relación con protocolos actuales

Aunque la ventana deslizante se estudia clásicamente dentro de la Capa de Enlace de Datos, el concepto también aparece en otros niveles de la arquitectura de red.

En TCP, por ejemplo, se utiliza una ventana para indicar cuántos datos está preparado para aceptar el receptor. Esta ventana está relacionada con el espacio disponible en buffer y permite regular el flujo de información extremo a extremo.

En Ethernet moderno, el control de flujo puede implementarse mediante tramas de pausa IEEE 802.3x. En ese caso no se utiliza exactamente el mismo mecanismo de ventana deslizante, pero el objetivo sigue siendo evitar que el receptor sea sobrecargado.

En enlaces satelitales actuales de baja órbita, como los sistemas LEO, la menor distancia reduce la latencia respecto de enlaces geoestacionarios. Esto disminuye el valor de T_p, reduce el valor de a y permite mejorar el rendimiento de los protocolos que dependen de confirmaciones.

18. Resumen de la unidad

La ventana deslizante es una técnica de control de flujo que permite mejorar la eficiencia frente al método de parada y espera.

Su principio fundamental es permitir que el transmisor envíe varias tramas antes de recibir confirmación.

Cada trama debe estar numerada para que el transmisor y el receptor puedan identificar cuáles fueron enviadas, recibidas y confirmadas.

Las confirmaciones acumulativas permiten validar varias tramas con una sola respuesta.

El tamaño máximo de ventana depende de la cantidad de bits usados para numerar las tramas.

Para el caso estudiado:

W_{\max} = 2^n - 1

Con 3 bits:

W_{\max} = 7 

La eficiencia depende de la relación entre el tamaño de ventana, el retardo de propagación y el tiempo de transmisión de la trama.

En enlaces cortos, una ventana pequeña puede ser suficiente.

En enlaces satelitales o de alta latencia, se requieren ventanas mucho mayores para aprovechar el enlace.

19. Actividades de comprensión

La idea central es que la ventana deslizante permite enviar varias tramas antes de recibir confirmación, mejorando la eficiencia respecto de parada y espera, especialmente cuando a > 1. El receptor puede reservar memoria para W tramas y que el transmisor puede enviar W tramas sin esperar confirmación inmediata. Este concepto también aparece en protocolos actuales como TCP, donde la ventana de recepción informa cuántos datos está preparado para aceptar el receptor. 

Actividad 1

Explique con sus palabras por qué parada y espera es ineficiente cuando a > 1.

Actividad 2

Indique si las siguientes afirmaciones son verdaderas o falsas.

Afirmación

V/F

Justificación

En ventana deslizante puede haber varias tramas en tránsito.

   

El tamaño de ventana se representa con W.

   

Si W = 1, el mecanismo se parece a parada y espera.

   

Las tramas no necesitan número de secuencia.

   

Una confirmación RR indica la próxima trama esperada.

   

Con 3 bits de secuencia se pueden representar 8 valores.

   

En el esquema estudiado, con 3 bits se usa una ventana máxima de 7 tramas.

   
Actividad 3

Un protocolo usa un campo de secuencia de 4 bits.

Calcule:

N = 2^n

y:

W_{\max} = 2^n - 1

Luego explique qué significa cada resultado.

Actividad 4

Un enlace tiene:

T_{tx} = 2 \text{ ms}

T_p = 20 \text{ ms}

Calcule:

a = \frac{T_p}{T_{tx}}

y determine el tamaño mínimo de ventana aproximado para transmisión continua:

W \geq 1 + 2a
Actividad 5

Compare el comportamiento de ventana deslizante en un enlace de fibra óptica corto y en un enlace satelital geoestacionario. Explique por qué el tamaño de ventana requerido es diferente.

20. Problema integrador resuelto

Un enlace tiene los siguientes datos:

R = 50 \text{ Mbps}

d = 100 \text{ km}

V = 2 \times 10^8 \frac{m}{s}

L = 10.000 \text{ bits}
Paso 1: convertir unidades

R = 50 \times 10^6 \frac{bits}{s}

d = 100.000 \text{ m}

Paso 2: calcular tiempo de propagación
T_p = \frac{d}{V}

T_p = \frac{100.000}{2 \times 10^8}

T_p = 5 \times 10^{-4} \text{ s}

T_p = 0{,}5 \text{ ms}
Paso 3: calcular tiempo de transmisión
T_{tx} = \frac{L}{R}

T_{tx} = \frac{10.000}{50 \times 10^6}

T_{tx} = 2 \times 10^{-4} \text{ s}

T_{tx} = 0{,}2 \text{ ms}
Paso 4: calcular "a"
a = \frac{T_p}{T_{tx}}

a = \frac{0{,}5}{0{,}2}

a = 2{,}5
Paso 5: calcular tamaño mínimo de ventana
W \geq 1 + 2a

W \geq 1 + 2 \cdot 2{,}5

W \geq 6
Resultado

Para mantener el enlace ocupado de forma continua, se necesita una ventana mínima aproximada de:

\boxed{W = 6 \text{ tramas}}
Interpretación

Si la ventana fuera menor que 6, el transmisor enviaría todas las tramas permitidas y luego tendría que esperar confirmaciones.

Si la ventana es igual o mayor que 6, el transmisor puede mantener el enlace ocupado de forma continua, bajo las hipótesis simplificadas del modelo.

21. Cierre de la unidad

El control de flujo por ventana deslizante permite superar la principal limitación del método parada y espera.

Al permitir varias tramas en tránsito, mejora el aprovechamiento del enlace, especialmente cuando existe gran retardo de propagación o alta velocidad de transmisión.

El análisis del tamaño de ventana permite relacionar conceptos físicos del enlace, como distancia y velocidad de propagación, con conceptos lógicos de Capa de Enlace, como tramas, confirmaciones y números de secuencia.

En la próxima unidad se estudiará el control de errores, donde se analizará qué ocurre cuando una trama se pierde, llega dañada o debe retransmitirse.

5 links interesantes para los alumnos

  1. IBM — OSI Model: referencia general para ubicar la Capa de Enlace dentro del modelo OSI y recordar que esta capa se ocupa de la transferencia entre dispositivos de una misma red. (IBM)
  2. GeeksforGeeks — Sliding Window Protocol: material didáctico actualizado que explica que la ventana deslizante permite enviar múltiples tramas antes de recibir ACK, mejorando la eficiencia en enlaces de alta latencia. (GeeksforGeeks)
  3. IETF RFC 9293 — TCP: útil para ver cómo el concepto de ventana también aparece en TCP; el documento explica que la ventana indica el rango de números de secuencia que el receptor está preparado para aceptar. (IETF Datatracker)
  4. Nokia — IEEE 802.3x Flow Control: ejemplo real de control de flujo en puertos Ethernet mediante tramas de pausa, útil para conectar la teoría de buffers y receptor saturado con equipos de red. (infocenter.nokia.com)
  5. Starlink — Technology: recurso para relacionar la importancia del retardo de propagación con enlaces satelitales LEO, donde la baja órbita reduce la latencia frente a GEO. (Starlink)