Resumen

  • Un ACK acumulativo confirma una secuencia continua, pero no describe bien varias pérdidas dentro de la misma ventana.
  • RFC 2018 permitió comunicar rangos discontinuos recibidos; esos rangos siguen siendo información consultiva y no sustituyen al ACK acumulativo.
  • RFC 3517 y RFC 6675 convirtieron el mapa en un proceso prudente de recuperación con un marcador de rangos, una estimación de datos en vuelo y un rescate limitado.

Supongamos que el segundo paquete de una serie se pierde y los seis siguientes llegan. El receptor sabe que conserva casi toda la ráfaga. Sin embargo, el número de ACK no puede saltar el hueco. Cada repetición señala un problema, pero deja al emisor ante una elección costosa: esperar una vuelta de red para descubrir cada pérdida o retransmitir datos que quizá ya estén guardados.

La opción de reconocimiento selectivo nació para reducir esa ignorancia. RFC 2018, publicado en octubre de 1996, retomó una propuesta de RFC 1072 que nunca se había desplegado de forma general. Simplificó su formato y separó la capacidad de su uso. SACK-Permitted se anuncia en el SYN. Una vez acordada, la opción SACK describe bloques contiguos con sus bordes izquierdo y derecho en el espacio de secuencia.

La convivencia de dos formas de reconocimiento es la clave. El ACK acumulativo mantiene una afirmación fuerte: todos los bytes anteriores a su frontera han sido recibidos. Los bloques SACK cuentan qué islas posteriores están en la cola del receptor. No adelantan la frontera. Además, son revocables en la práctica: un receptor con presión de memoria puede descartar datos ya señalados. Por eso el emisor no debe liberar su copia hasta que el ACK ordinario la cubra.

El mapa tampoco puede ser exhaustivo. Solo hay 40 bytes de espacio para opciones TCP. SACK admite como máximo cuatro bloques, y normalmente tres si también viaja una marca temporal. RFC 2018 obliga a colocar primero el bloque correspondiente al segmento más reciente y recomienda repetir bloques previos. Así protege la noticia frente a ACK perdidos, aunque a cambio de seleccionar qué partes del estado merecen entrar en un encabezado estrecho.

RFC 2018 explicó la señal, no una política completa para actuar sobre ella. Conservó las reglas de control de congestión. En abril de 2003, RFC 3517 estableció un algoritmo conservador para el emisor. Un «scoreboard» registra rangos acumulativa o selectivamente reconocidos. El emisor infiere qué huecos están perdidos, estima en Pipe cuántos bytes siguen en la red y elige el siguiente envío dentro de la ventana de congestión.

La ganancia procede de separar conocimiento y autoridad. El receptor aporta una observación más rica. El emisor sigue decidiendo qué retransmitir, cuándo reducir el ritmo y cuánto estado conservar. SACK permite atender varias pérdidas durante una fase de recuperación, pero no convierte cada hueco en permiso para llenar el camino de copias.

RFC 6675 sustituyó a RFC 3517 en agosto de 2012. La revisión usa nueva información SACK para definir mejor los ACK duplicados, corrige la inferencia de pérdida cuando hay segmentos menores que el tamaño máximo y añade RescueRxt. Ese estado autoriza una retransmisión optimista por episodio cuando una pérdida al final de la ventana amenaza con detener el reloj de ACK. La excepción no es abierta: queda limitada a un segmento que no supera el máximo del emisor.

La historia de SACK es, por tanto, una historia sobre los límites de la evidencia distribuida. El receptor observa su cola, pero puede vaciarla. El emisor posee la copia, pero ve la ruta a través de informes tardíos. El encabezado comprime el estado. La expiración de un temporizador puede volver dudoso lo aprendido. Ningún participante posee por sí solo la verdad completa.

El cambio duradero fue convertir el ACK en algo más que una frontera sin convertirlo en una orden. El mapa permitió gastar menos capacidad en repeticiones inútiles y menos tiempo en descubrir huecos uno por uno. Los estándares conservaron, al mismo tiempo, la responsabilidad del emisor sobre el ritmo y la memoria. Esa combinación explica por qué una opción pequeña pudo mejorar la recuperación sin reescribir el contrato social de TCP.

Fuentes