Definición y concepto

La repetición selectiva, conocida técnicamente como Selective Repeat (SR), es un protocolo fundamental dentro de los mecanismos de control de errores basados en la respuesta automática de repetición (ARQ). Su función principal en las redes de computadoras y la transmisión de datos es optimizar el rendimiento del canal de comunicación al minimizar la cantidad de paquetes que deben ser reenviados cuando ocurre una falla en la transmisión, diferenciándose así de otros métodos más simples como la repetición continua o el retorno a la ventana anterior.

Mecanismo de funcionamiento básico

Este protocolo opera bajo un principio de eficiencia donde el transmisor no detiene el flujo de datos inmediatamente ante el primer error detectado. En su lugar, se envían paquetes de manera secuencial hasta recibir una señal específica del receptor o hasta que se complete la capacidad máxima definida por la ventana de transmisión. El sistema continúa enviando datos mientras el canal lo permita, lo que permite aprovechar mejor el ancho de banda disponible y reducir el tiempo de inactividad del enlace.

La gestión de los errores se realiza mediante señales de reconocimiento. El protocolo está diseñado para seguir enviando paquetes hasta recibir un Negative Acknowledgement (NACK) o hasta completar la ventana de transmisión activa. Esta característica permite que el transmisor mantenga la iniciativa en el envío, ajustando su tasa de salida basándose en las retroalimentaciones recibidas del receptor, lo cual es crucial para mantener un flujo constante de información en canales con tasas de error variables.

Requisitos de memoria y gestión de ventanas

Una de las características técnicas más distintivas de la repetición selectiva es su exigencia de recursos de memoria tanto en el transmisor como en el receptor. A diferencia de otros protocolos que pueden descartar datos antiguos rápidamente, la repetición selectiva requiere que el transmisor mantenga en memoria todos los datos pertenecientes a la ventana de transmisión actual. Esta memoria es esencial para manejar los tiempos de espera (timeout); si un paquete no es reconocido dentro del plazo establecido, el transmisor debe tener acceso al dato original para reenviarlo sin necesidad de recuperar toda la secuencia anterior.

Además, el protocolo exige una numeración precisa de los acuse de recibo (ACKs). Esta numeración es crítica para distinguir a qué paquete específico corresponde cada confirmación, evitando ambigüedades en la secuencia de datos. Sin una identificación clara mediante números de secuencia, el receptor no podría informar al transmisor exactamente qué paquetes llegaron correctamente y cuáles quedaron pendientes, lo que llevaría a redundancias innecesarias o a la pérdida de datos.

Recepción desordenada y ordenamiento

El mecanismo de repetición selectiva implica inherentemente una recepción desordenada de los paquetes. Dado que los errores pueden afectar a paquetes intermedios sin necesariamente detener a los siguientes, el receptor debe estar preparado para recibir datos que no siguen estrictamente el orden cronológico de envío. Para gestionar esto, el protocolo requiere una ventana de recepción que actúa como un búfer temporal donde se almacenan los paquetes llegados.

Esta ventana en recepción tiene la función vital de ordenar los datos una vez que han sido validados. El receptor utiliza la información contenida en los ACKs y la numeración de los paquetes para colocar cada dato en su posición correcta dentro de la secuencia global. Solo cuando todos los paquetes dentro de la ventana han sido recibidos y ordenados correctamente, el flujo de datos se considera completo y la ventana puede avanzar, liberando espacio de memoria para la siguiente tanda de transmisión. Este proceso de ordenamiento es lo que garantiza la integridad de los datos a pesar de la naturaleza potencialmente caótica del canal de transmisión.

¿Cómo funciona el mecanismo de repetición selectiva?

El mecanismo de repetición selectiva opera mediante el envío continuo de paquetes de datos desde el transmisor hacia el receptor, manteniendo un flujo constante hasta que se recibe una señal de control específica o se agota el espacio disponible en la ventana de transmisión. Este proceso no detiene el flujo global ante cada error individual, lo que optimiza el uso del canal de comunicación. El transmisor mantiene una memoria activa para almacenar los datos correspondientes a la ventana de transmisión actual, permitiendo gestionar los tiempos de espera o timeout sin necesidad de detener toda la secuencia de envío.

Gestión de acuses de recibo y reenvío

La distinción precisa de los paquetes se logra mediante la numeración de los acuses de recibo (ACK). Esta numeración es fundamental para que el transmisor pueda identificar a qué paquete específico corresponde cada confirmación, evitando la ambigüedad en la recepción. Cuando el receptor detecta un error en un paquete, puede enviar un Negative Acknowledgement (NACK) para solicitar su reenvío inmediato. Al recibir este NACK, el transmisor reenvía únicamente el paquete con errores, en lugar de repetir toda la secuencia subsiguiente, y el flujo de datos continúa su avance natural.

La eficiencia de este protocolo radica en la capacidad del receptor para manejar una recepción desordenada. Para lograr esto, se requiere una ventana de recepción que permita almacenar los paquetes que llegan fuera de su orden cronológico original. Una vez que todos los paquetes de la ventana han sido recibidos y ordenados correctamente, se entregan a la capa superior, garantizando la coherencia de los datos transmitidos.

Comparación de flujos de transmisión

Estado del flujo Acción del transmisor Acción del receptor Resultado en la ventana
Flujo normal Envío continuo de paquetes hasta completar la ventana Recepción y emisión de ACKs numerados Avance ordenado de la ventana de transmisión
Flujo con error (NACK) Reenvío selectivo del paquete con error tras recibir NACK Almacenamiento en ventana de recepción para ordenar Continuación del flujo sin detener paquetes subsiguientes

Esta estructura permite que el control de errores sea más eficiente que los métodos de repetición en bloque, ya que solo los paquetes defectuosos consumen ancho de banda adicional, mientras que los paquetes correctos se mantienen en la memoria del receptor hasta completar la secuencia.

Requisitos de memoria y gestión de ventanas

El protocolo de repetición selectiva impone requisitos específicos de gestión de memoria tanto en el extremo transmisor como en el receptor, diferenciándose de otros esquemas de control de errores por su capacidad para manejar la concurrencia de paquetes. La eficiencia de este mecanismo depende directamente de cómo se almacenan y recuperan los datos durante el intervalo de tiempo de espera, conocido como timeout.

Memoria del transmisor y ventana de envío

El transmisor debe mantener en memoria los datos de todos los paquetes que han sido enviados pero que aún no han sido confirmados mediante un acuse de recibo (ACK). Esta necesidad surge porque, al enviarse múltiples paquetes antes de recibir una respuesta, el transmisor debe estar preparado para reenviar cualquier paquete específico que haya sufrido un NACK o que haya superado el tiempo de espera. Por lo tanto, el tamaño de la memoria del transmisor debe ser al menos equivalente al tamaño de la ventana de transmisión multiplicado por el tamaño de cada paquete de datos.

Componente Requisito de Memoria Propósito
Transmisor Almacenamiento de la ventana completa Mantener copias de los paquetes enviados pendientes de confirmación para posibles retransmisiones selectivas.
Receptor Buffer de recepción ordenada Almacenar paquetes que llegan fuera de orden cronológico hasta que se complete la secuencia inicial.

Esta estructura permite que, si un paquete intermedio se pierde, solo ese paquete específico se reenvía, mientras que los paquetes subsiguientes ya fueron recibidos y almacenados. Sin esta memoria intermedia, el transmisor tendría que volver a enviar todos los paquetes posteriores al primero perdido, lo que reduciría la eficiencia del enlace.

Gestión de la ventana de recepción y ordenación

En el lado del receptor, la repetición selectiva exige una ventana de recepción capaz de manejar la llegada desordenada de los datos. A diferencia de la repetición continua, donde los paquetes posteriores al primero perdido se descartan, en este protocolo cada paquete recibido se almacena en un buffer temporal. Esto requiere que el receptor tenga memoria suficiente para sostener los paquetes que llegan "adelantados" respecto al siguiente paquete esperado en la secuencia numérica.

La numeración de los ACKs es fundamental en este proceso, ya que permite al transmisor distinguir a qué paquete específico corresponde cada confirmación. El receptor debe mantener el estado de cada paquete dentro de la ventana activa, marcando cuáles han llegado correctamente y cuáles aún faltan. Una vez que todos los paquetes dentro de la ventana han sido recibidos, se ordenan según su número de secuencia y se entregan a la capa superior del modelo de transmisión de datos.

La coordinación entre la ventana de transmisión y la ventana de recepción asegura que no haya duplicaciones innodiosas ni pérdidas de información, optimizando el uso del ancho de banda disponible. La memoria requerida en ambas capas debe ser gestionada cuidadosamente para evitar el desbordamiento de buffers y la fragmentación excesiva de los datos transmitidos.

¿Qué papel juegan los ACKs numerados?

En el protocolo de repetición selectiva, la numeración de los acuses de recibo (ACKs) constituye un mecanismo fundamental para garantizar la integridad de la transmisión de datos. A diferencia de otros esquemas de control de errores donde la confirmación puede ser implícita o acumulativa, este método exige que cada ACK esté explícitamente asociado a un paquete específico. Esta exigencia nace de la necesidad de distinguir claramente a qué unidad de información está asintiendo el receptor, eliminando así las ambigüedades inherentes a los flujos de datos continuos.

Eliminación de la ambigüedad en la confirmación

La principal función de la numeración de los ACKs es resolver el problema de la identificación única en la ventana de transmisión. Cuando el transmisor envía paquetes hasta recibir un NACK o completar la ventana, múltiples unidades de datos pueden estar en tránsito simultáneamente. Sin una numeración precisa, un ACK recibido podría referirse a cualquier paquete dentro del rango de la ventana actual, lo que generaría incertidumbre sobre qué datos pueden ser liberados de la memoria del transmisor.

Al asignar un número de secuencia a cada ACK, el receptor indica exactamente qué paquete ha sido recibido correctamente. Esto permite al transmisor actualizar su estado interno con precisión, sabiendo qué elementos de la ventana de transmisión han sido confirmados y cuáles aún requieren atención. Esta claridad es esencial para evitar que el transmisor libere prematuramente los datos almacenados, lo cual podría resultar en pérdidas de información si ocurren retardos en la red.

Relación con la recepción desordenada

La numeración de los ACKs trabaja en sinergia con el mecanismo de recepción desordenada. Dado que el protocolo implica que los paquetes pueden llegar al receptor en un orden distinto al de su envío, cada ACK numerado ayuda a mapear la posición correcta de cada paquete dentro de la secuencia general. El receptor utiliza esta información para ordenar los datos en su propia ventana de recepción, asegurando que la secuencia lógica de la transmisión se mantenga intacta a pesar de los desajustes temporales en la llegada de los paquetes.

Este enfoque permite que el protocolo sea más eficiente que otros métodos de control de errores, ya que solo los paquetes específicos que han sufrido errores o pérdidas necesitan ser repetidos. La precisión proporcionada por los ACKs numerados minimiza la cantidad de redundancia en la transmisión, optimizando el uso del ancho de banda y reduciendo la latencia general del proceso de comunicación.

Desafíos de la recepción desordenada

La recepción desordenada constituye el desafío técnico central que diferencia a la repetición selectiva de otros protocolos de control de errores. A diferencia de los mecanismos donde un solo error detiene el flujo completo, este protocolo permite que los paquetes lleguen al destino en un orden no estrictamente secuencial. Esta característica introduce una complejidad significativa en el receptor, el cual debe gestionar la llegada de datos que pueden estar adelantados o rezagados respecto a la posición esperada en la secuencia general.

Gestión de la ventana de recepción

Para abordar la desordenación inherente a la transmisión, el protocolo exige la implementación de una ventana en recepción. Esta ventana actúa como un búfer de memoria especializado donde se almacenan los paquetes que llegan fuera de su orden cronológico ideal. Sin esta estructura de almacenamiento temporal, los paquetes que llegan correctamente pero después de un paquete perdido quedarían expuestos a ser descartados prematuramente o duplicados innecesariamente.

La función principal de mantener esta ventana es permitir que el receptor pueda ordenar los datos antes de pasarlos a la capa superior del modelo de comunicación. El receptor debe identificar qué paquetes están presentes dentro de los límites de la ventana activa y cuáles faltan, coordinando así la entrega final de información coherente. Este mecanismo asegura que, aunque la transmisión física presente interrupciones o retrasos variables, la secuencia lógica presentada al usuario final mantenga su integridad estructural.

La interacción entre la ventana de transmisión y la de recepción es crítica para la eficiencia del sistema. Mientras el transmisor mantiene memoria para almacenar datos sujetos a un posible timeout, el receptor utiliza su propia ventana para validar la llegada de los paquetes numerados. Esta dualidad permite que ambos extremos sincronicen su estado sin necesidad de detener completamente el flujo de información ante cada imperfección detectada en el canal.

Ejercicios resueltos

Ejercicio 1: Manejo de NACK y retransmisión selectiva

Considere un enlace con una ventana de transmisión de tamaño 4. Los paquetes P1, P2, P3 y P4 se envían secuencialmente. El receptor confirma P1 y P3, pero P2 sufre un error. El receptor envía un NACK para P2. El transmisor, que mantiene memoria de la ventana activa, retransmite únicamente P2. Al recibirlo, el receptor ordena los datos y envía un ACK para P2. Este proceso ilustra cómo la numeración de ACKs permite al transmisor distinguir qué paquete requiere retransmisión, evitando enviar P3 y P4 nuevamente.

Ejercicio 2: Cálculo de memoria requerida

Si la ventana de transmisión tiene un tamaño de 8 paquetes y cada paquete contiene 100 bytes, el transmisor debe reservar memoria para almacenar los datos de la ventana completa hasta recibir confirmación. La memoria necesaria es 8 × 100 = 800 bytes. Esta reserva permite manejar tiempos de espera (timeout) y retransmisiones sin perder los datos originales, asegurando que la recepción desordenada pueda ser ordenada correctamente en el receptor.

Ejercicio 3: Ventana de recepción y ordenamiento

En un escenario con ventana de recepción de tamaño 6, llegan los paquetes P1, P3, P4, P5, P6 y P2 en ese orden. El receptor utiliza su ventana para almacenar los paquetes desordenados. Una vez que llega P2, el receptor ordena la secuencia completa (P1 a P6) y envía los ACKs correspondientes. Este ejemplo demuestra cómo la ventana de recepción permite manejar la llegada desordenada, requiriendo memoria proporcional al tamaño de la ventana para almacenar los paquetes pendientes de ordenamiento.

Aplicaciones prácticas en redes

El protocolo de repetición selectiva encuentra su utilidad principal en entornos de red donde la eficiencia en el uso del ancho de banda es crítica y el costo de retransmitir paquetes individuales es menor que el de reiniciar toda la transmisión. A diferencia de mecanismos más simples, este enfoque permite que el receptor continúe aceptando paquetes que llegan después de una pérdida inicial, aprovechando así la naturaleza a menudo desordenada de las transmisiones de datos. Esta capacidad de manejar la recepción desordenada mediante una ventana de recepción específica resulta fundamental para mantener un flujo constante de información sin necesidad de detener el transmisor por completo ante cada error puntual.

Optimización del ancho de banda

En sistemas de control de errores, la necesidad de eficiencia en el reenvío de paquetes específicos impulsa la adopción de este tipo de respuesta usada en control de errores (ARQ). Al permitir que se envíen paquetes hasta recibir un NACK o completar la ventana de transmisión, el protocolo minimiza el tiempo de inactividad del canal. Esto es particularmente ventajoso cuando la tasa de error en el enlace es moderada, ya que evita la penalización excesiva asociada a las retransmisiones masivas. La exigencia de numeración de los ACKs para distinguir a qué paquete corresponden permite al transmisor identificar con precisión qué datos han sido confirmados y cuáles requieren atención, optimizando así el uso de la memoria en el transmisor para almacenar datos de la ventana de transmisión durante el tiempo de timeout.

Requisitos de implementación

La implementación práctica de este protocolo requiere recursos específicos tanto en el extremo de transmisión como en el de recepción. La implicación de recepción desordenada, requiriendo una ventana en recepción para ordenar los datos, añade complejidad al buffer del receptor, que debe mantener los paquetes llegados fuera de orden hasta que el paquete perdido sea retransmitido y colocado en su posición correcta. Esta estructura garantiza que la secuencia de datos entregada a la capa superior sea coherente, manteniendo la integridad de la información transmitida a través del medio físico o lógico.

Preguntas frecuentes

¿Cuál es la diferencia principal entre repetición selectiva y retorno N-1?

En la repetición selectiva, solo se retransmiten los paquetes específicos que han sufrido errores o pérdidas, mientras que en el retorno N-1, al perder un paquete, se retransmiten todos los paquetes posteriores a ese punto, incluso si ya fueron recibidos correctamente por el receptor.

¿Por qué es importante el uso de ACKs numerados en este protocolo?

Los ACKs numerados permiten al emisor identificar exactamente qué paquetes han llegado correctamente al receptor. Esto es crucial para determinar cuáles paquetes necesitan ser retransmitidos y cuáles pueden considerarse como recibidos, facilitando la gestión eficiente de la ventana de envío.

¿Qué desafíos presenta la recepción desordenada en la repetición selectiva?

La recepción desordenada requiere que el receptor tenga suficiente memoria para almacenar los paquetes que llegan fuera de orden hasta que todos los paquetes anteriores hayan sido recibidos. Esto implica una gestión más compleja de la memoria y puede aumentar la sobrecarga del receptor en comparación con otros protocolos más simples.

¿En qué tipo de redes es más ventajoso utilizar la repetición selectiva?

La repetición selectiva es especialmente ventajosa en redes con tasas de error moderadas a altas y latencias variables, como las redes inalámbricas o las redes de área extensa (WAN), donde la eficiencia en el uso del ancho de banda es crítica para mantener un rendimiento óptimo.

Resumen

La repetición selectiva es un protocolo esencial en el control de flujo y errores en redes de computadoras, destacándose por su capacidad para retransmitir solo los paquetes necesarios, lo que optimiza el uso del ancho de banda. Su funcionamiento depende de una gestión eficiente de las ventanas de envío y recepción, así como del uso de ACKs numerados para mantener la sincronización entre el emisor y el receptor.

Aunque presenta desafíos como la necesidad de mayor memoria en el receptor para manejar la recepción desordenada, su aplicación práctica en redes con tasas de error y latencias variables lo convierte en una opción preferente en muchos escenarios de comunicación de datos. Entender sus mecanismos y requisitos es clave para implementar soluciones de red eficientes y robustas.

Véase también

Referencias

  1. «Repetición selectiva» en Wikipedia en español
  2. TCP Selective Acknowledgment (SACK) - RFC 2018 (Estándar IETF)
  3. Data Communications and Networking - Forouzan (Libro de referencia académica)
  4. Selective Repeat Protocol - GeeksforGeeks (Explicación técnica detallada)