Resumen

  • Careful Resume conserva parámetros observados en una conexión anterior para acelerar con cautela una conexión posterior; no convierte aquella observación en ancho de banda reservado.
  • RFC 9959 exige que una saved_cwnd tenga un solo usuario simultáneo. En servidores balanceados, la exclusividad debe cumplirse entre procesos y réplicas, no solo dentro de cada conexión.
  • Un arrendamiento técnico de reutilización puede enlazar una versión del estado con un único consumidor, su vigencia, la comprobación del camino, el salto, las fases y la invalidación. Es una propuesta editorial de Daniel Kade, no una obligación del IETF.

El cambio decisivo está en el tiempo verbal

Una ventana de congestión resume una conversación reciente entre un emisor y la red. Los acuses de recibo confirman cuánto salió del vuelo; la pérdida y ECN revelan presión; el controlador adapta la cantidad de datos pendientes. La cifra tiene contexto, hora y trayectoria.

Cuando se cierra la conexión, ese contexto no queda reservado. Puede empezar otro flujo, variar la ruta o cambiar el cuello de botella. Aun así, descartar toda la experiencia obliga a cada transferencia a reconstruir desde una ventana inicial pequeña algo que quizá siga siendo cierto.

RFC 9959 diseña una vía intermedia. Una conexión establecida puede guardar la capacidad utilizada como saved_cwnd, junto con el RTT mínimo, el Remote Endpoint y una vida útil. La conexión siguiente no recibe directamente esa ventana. Arranca con control de congestión normal, reconoce el camino y, si la evidencia sigue siendo compatible, realiza un aumento limitado y espaciado.

La diferencia es crucial. Careful Resume no dice “ayer había 50, hoy tienes 50”. Dice “ayer se observaron 50 bajo esta identidad; hoy puedes probar una fracción si primero no aparece evidencia contraria”. La ficha del RFC lo presenta como Proposed Standard, no como certificación de capacidad ni informe de despliegue.

Además, la cifra guardada debe representar uso, no un máximo accidental. Al final de slow start, cwnd puede sobrepasar la capacidad necesaria. Si la aplicación estaba limitada, tampoco todo lo permitido fue validado. La memoria ya contiene una decisión de medición antes de llegar al siguiente flujo.

Una dirección no identifica necesariamente un camino

Remote Endpoint es una etiqueta deliberadamente flexible. Incluye la interfaz emisora y un destino unicast o anycast; también puede incorporar DSCP u otros datos. Cuantos más campos, mejor diferenciación y menos oportunidades de reutilizar. Cuantos menos, más aciertos de caché y más riesgo de juntar caminos distintos.

El destino puede conservar la IP mientras ECMP elige otro enlace. Anycast puede terminar en otra ubicación. NAT puede cambiar el trayecto y la movilidad puede conservar parte de la identidad mientras sustituye el acceso. Por eso el Remote Endpoint es la hipótesis del emisor sobre el camino, no una huella criptográfica de todos los saltos.

La fase de reconocimiento comprueba la hipótesis sin acelerar todavía. La conexión usa la ventana inicial, obtiene acuses y mide el RTT actual. Pérdida, ECN-CE, expiración, un cambio conocido o una diferencia significativa hacen que Careful Resume se abandone. El RFC utiliza un RTT actual superior a diez veces el mínimo guardado como señal de cambio; no afirma que toda diferencia menor sea segura.

Una revisión de configuración puede volver obsoletas claves que aún parecen válidas. Cambiar la interfaz de origen, el uso de DSCP, la topología anycast o el balanceador altera qué significa “mismo”. La exigencia de poder vaciar los parámetros guardados después de un cambio protege esa frontera semántica.

Un límite por conexión no basta para una flota

RFC 9959 establece que una misma ventana guardada solo puede utilizarse por una conexión a la vez. Es la regla que evita multiplicar una observación.

Imaginemos una saved_cwnd de 30. Dos workers reciben conexiones nuevas y recuperan copias idénticas. Cada uno limita el salto a 15. Los dos cumplen la mitad de manera local, pero el cuello recibe 30 de aumento tentativo. Si una docena de procesos actúa igual, el límite deja de describir la carga agregada.

La solución no consiste en reducir ciegamente la mitad. Hay que asignar un solo derecho de uso. En un proceso, una tabla puede marcar el estado como adquirido. Tras un balanceador, el cliente puede llegar a procesos diferentes; una réplica atrasada, un reintento o un failover puede presentar la misma generación como libre dos veces.

Leer el registro y consumirlo deben ser operaciones distintas. La lectura informa. El consumo otorga una autorización temporal y excluyente. Si la adquisición falla o su resultado es incierto, el comportamiento seguro es el arranque normal, no otra tentativa.

Aquí la norma y la arquitectura se encuentran. El IETF expresa la propiedad de seguridad. El operador decide el mecanismo de coordinación y el alcance coherente. El código de cada controlador puede ejecutar perfectamente las fases y, aun así, la flota incumplir la exclusividad.

La mitad de ayer no es una cuota de hoy

La fase no validada permite elevar cwnd, pero el salto queda acotado por max_jump y por la mitad de saved_cwnd. Además se pauta con el RTT actual para no descargar una ráfaga a velocidad de línea.

Esas cantidades controlan el experimento; no reparten la red. Otros flujos pueden haber ocupado la capacidad. La ruta puede haber cambiado. La medición anterior puede contener un exceso de slow start. Solo los acuses actuales pueden validar la nueva tasa.

Por eso Careful Resume separa reconocimiento, no validado, validación, normal y retirada segura. Dos ventanas del mismo tamaño tienen estatutos distintos si una procede de una conjetura histórica y otra de acuses presentes. Guardar únicamente la cifra final borra qué autoridad la sustentaba.

El borrador Careful Resume para qlog ofrece nombres de transición y campos para el estado restaurado. Puede hacer visible cuándo un controlador saltó o retrocedió. La revisión 02 sigue siendo trabajo en curso, y un evento local no demuestra que otra réplica no consumiera el mismo registro.

Safe Retreat es revocación, no solo recuperación

Cuando aparecen pérdida, ECN o cambio de camino durante el uso tentativo, la premisa ha fallado. RFC 9959 invalida y elimina los parámetros y entra en Safe Retreat. La reducción es más intensa que una respuesta corriente porque el salto pudo desplazar paquetes de flujos que ya se habían adaptado al cuello.

El criterio ético es explícito: probar y fallar no debe perjudicar indebidamente a las conexiones existentes. Una optimización no queda justificada solo porque mejore al flujo que la invoca; debe limitar el daño que su error exporta.

En una flota, invalidar una copia no basta. El evento debe revocar la generación en todos los lugares autorizados a consumirla. Si un worker detecta pérdida y otro, desconectado, vuelve a ofrecer la misma ventana, Safe Retreat ha funcionado como algoritmo local pero no como política del sistema.

La vida útil crea otra revocación. El RFC propone duraciones breves, del orden de minutos, para caminos dinámicos y admite horas en condiciones estables y poco compartidas. Son ejemplos dependientes del contexto. Un valor largo aumenta los aciertos y también el intervalo en que la realidad puede separarse de la observación.

Arrendamiento de reutilización del estado

“Arrendamiento” es aquí una metáfora de sistemas: exclusividad durante un plazo. No es propiedad, contrato ni reserva de ancho de banda.

Un recibo mínimo debería unir:

  1. una identidad rotativa del alcance Remote Endpoint y la versión de la regla que la formó;
  2. generación y hash del estado, hora de observación, saved_cwnd, saved_rtt y vida útil;
  3. worker y conexión que pidieron adquisición atómica, resultado y vencimiento;
  4. evidencia de ventana inicial, RTT actual y criterio de coincidencia del camino;
  5. controlador base, max_jump, límite de mitad, pauta y salto realmente enviado;
  6. transiciones de fase y disparadores;
  7. liberación, sustitución, expiración, vaciado por configuración o invalidación por Safe Retreat, incluida su propagación;
  8. agregados de pérdida, ECN, conflictos, sobrepaso e impacto sobre flujos existentes.

No hace falta guardar contenido, URL, cuenta, cookie, credencial ni dirección permanente del cliente. La clave puede ser hash con rotación y retención corta. Hacia fuera bastan estadísticas por versión y cohorte: conflictos de adquisición, intentos vencidos, discrepancias de camino, retiradas seguras y latencia de revocación.

Minimum Initial Specification no obliga a una base central. Se puede serializar, particionar cada clave hacia un propietario o desactivar la función en anycast. Lo compartido es la proposición verificable: una generación, un consumidor autorizado, una tentativa.

Límites

Las fuentes no indican adopción actual, proveedor, servicio ni incidente. No contienen una cifra de rendimiento ni prueban que la coordinación distribuida falle en la práctica. También es correcto no guardar ventanas pequeñas, acortar la vigencia o no utilizar Careful Resume donde no exista una identidad de camino prudente.

RFC 2914 aporta principios generales contra el colapso y la inanición. RFC 7661 trata ventanas no validadas en TCP limitado por la aplicación; RFC 9002 describe el contexto de congestión en QUIC; RFC 9040 estudia la interdependencia entre bloques TCP. Ninguno cambia una observación pasada en capacidad propia.

La disciplina de Reality, Not Advocacy exige mantener el verbo correcto. La red permitió aquella tasa. La nueva conexión puede ensayar una parte. Solo la evidencia nueva puede afirmar que la capacidad sigue ahí.

Sources