Resumen

  • ECN Nonce convertía la elección aleatoria entre ECT(0) y ECT(1) en una comprobación de las respuestas del receptor. Al marcar CE, el router borraba esa elección original.
  • La paridad acumulada tenía límites: una respuesta podía acertarse por azar y la recuperación tras una congestión legítima exigía suspender la comprobación y resincronizarla.
  • El experimento se cerró por su despliegue limitado y el coste de reservar un punto de código, no porque se demostrara que el procedimiento era incorrecto.

La respuesta que no debía exigirse

Un sistema de comprobación puede equivocarse antes de comparar ningún número: basta con exigir un dato que la otra parte no tiene forma de conocer. ECN Nonce evitó ese error de una manera poco vistosa. Cuando el receptor notificaba una congestión real, el emisor dejaba temporalmente de verificar la suma que normalmente le pedía.

No era indulgencia hacia un receptor sospechoso. La congestión había destruido precisamente la información utilizada para verificarlo. Si el control continuaba como si nada hubiera pasado, una respuesta honrada podía parecer incorrecta. La pausa y el posterior restablecimiento de una referencia común eran parte del diseño, no una excepción administrativa.

El mecanismo apareció en junio de 2003 como propuesta Experimental de N. Spring, D. Wetherall y D. Ely, en RFC 3540. Buscaba dificultar que se ocultaran marcas o pérdidas al emisor. No autenticaba a una persona, no certificaba la integridad de toda una conexión y no convertía cada desacuerdo en prueba de engaño.

Dos entradas, una sola salida

La base era el ECN clásico de RFC 3168, publicado en septiembre de 2001. Su campo de dos bits distingue Not-ECT, 00; ECT(1), 01; ECT(0), 10; y CE, 11. Un paquete compatible puede recibir una marca de congestión en vez de ser descartado. El receptor devuelve la indicación mediante ECE y el emisor señala su reacción con CWR.

Para los routers que aplican esa semántica clásica, ambos valores ECT permiten el marcado. El nonce les asignaba además un significado en los extremos: el emisor elegía al azar un cero o un uno y lo representaba con ECT(0) o ECT(1). Conservaba una referencia de lo enviado; el receptor incorporaba lo que realmente había recibido.

Cuando un router reemplazaba cualquiera de las dos posibilidades por CE, desaparecía la diferencia. El contenido del paquete podía seguir hasta su destino, pero ya no era posible recuperar su ECT original mirando el marcado final. Ese borrado, no un secreto criptográfico compartido, generaba la asimetría útil.

Un receptor que quisiera afirmar que no había habido congestión tendría que devolver un resultado coherente con un dato que le faltaba. El emisor podía contrastarlo con su registro. El router no necesitaba decidir quién era fiable ni participar en un nuevo intercambio de autenticación: bastaba con que marcara de la manera habitual.

La memoria mínima de una confirmación acumulativa

TCP no entrega necesariamente una confirmación separada para cada paquete. Las confirmaciones se retrasan, se pierden y abarcan datos de varios segmentos. Si el receptor devolviera solo el último nonce recibido, omitir una confirmación podría borrar también la obligación de dar cuenta de valores anteriores.

RFC 3540 recurre a una suma módulo dos, equivalente a la paridad. El valor inicial es uno. A medida que la confirmación acumulativa avanza sobre datos recibidos en orden, el receptor incorpora sus bits y devuelve el resultado de un bit en NS. El emisor guarda las sumas esperadas asociadas a los números de secuencia finales de los paquetes originales.

Los datos que llegan desordenados contribuyen cuando la confirmación acumulativa alcanza su posición, no simplemente cuando aparecen en la interfaz. Tampoco se trata de una suma independiente para cada bloque SACK ni de un checksum del contenido. Las fronteras de los segmentos forman parte de la interpretación; NS aislado no acredita nada por sí solo.

Si falta un bit aleatorio uniforme, adivinar la paridad correcta tiene una probabilidad de un medio. Por tanto, una respuesta inventada puede pasar una comprobación. Nuevos borrados de información aleatoria independiente pueden ofrecer nuevas oportunidades de detección, pero repetir confirmaciones que dependen del mismo bit desconocido no las convierte automáticamente en ensayos independientes.

Esta precaución importa cuando se pasa del protocolo a una herramienta de análisis. Contar muchas respuestas no basta para afirmar una certeza creciente si todas arrastran la misma incógnita. La evidencia depende de cómo se produjo la información que falta, no solo del volumen de registros.

Recuperar una referencia sin recuperar el pasado

Al encontrar CE, el receptor honrado ignora el valor nonce perdido, como si aportara cero, y activa ECE. El emisor suspende la comprobación durante esa recuperación de congestión. Después de reducir la ventana y enviar nuevos datos con CWR, la confirmación pertinente permite resincronizar la suma con la del receptor.

Puede hacerse mediante un desplazamiento de un bit. No se reconstruye lo que el router borró; se establece una base desde la que volver a comparar. Sin este paso, una pérdida legítima de información seguiría contaminando las comprobaciones de datos posteriores.

Las reglas del experimento de 2003 hacían que las retransmisiones fueran Not-ECT y no transportaran nonce. Los intervalos no-ECT elegidos por el emisor también requerían tratar la sincronización. Son condiciones históricas, no una prohibición inmutable para cualquier experimento moderno con retransmisiones o paquetes de control: los documentos posteriores ampliaron el espacio de experimentación.

De ahí que una discordancia cerca de una recuperación no pueda interpretarse antes de reconstruir su estado. ¿Se estaba comprobando? ¿Había llegado la confirmación que permitía reiniciar la referencia? ¿Se estaban comparando los mismos límites de datos? Sin esas respuestas, el número no constituye una acusación.

Qué podía decidir el emisor

La especificación separó la comprobación, que era opcional, de la reacción, que quedaba en manos de la política local. Al actuar frente a una suma incorrecta, contemplaba al menos la respuesta correspondiente a ECE, y también reducciones mayores o dejar de usar ECT. No establecía un castigo uniforme para toda la red.

Además, había causas técnicas que reducían la fuerza de la inferencia. Un fragmento IPv4 sin marcar podía revelar el nonce original aunque otro fragmento hubiera recibido CE. Los errores de bits en la cabecera IPv6 podían alterar el campo y producir una suma equivocada. Las confirmaciones de una parte de un segmento exigían interpretar los límites del segmento original.

La aleatoriedad tampoco equivalía a criptografía. No se exigía calidad criptográfica, pero la secuencia no debía ser fácilmente predecible a partir de bits ya observados ni reutilizarse con otro fin. El mecanismo no añadía protección a la integridad de la conexión, y un emisor que no cooperara quedaba fuera de lo que podía garantizar.

Incluso la detección inicial del soporte era limitada. Un NS distinto de cero en las respuestas del establecimiento permitía inferir que el receptor conocía la función; RFC 3540 aclaraba que aquello no era negociación. Presentarlo como una capacidad de autenticación negociada atribuiría al intercambio algo que no contenía.

Lo que sí ofrecía era útil: el emisor podía poner a prueba una afirmación de ausencia de congestión y ajustar su propia conducta. La distancia entre esa decisión local y la identificación de un culpable era una frontera deliberada.

La historia posterior de ECT(1)

El campo ECN siguió planteando otros problemas. RFC 4774, de noviembre de 2006, examinó semánticas alternativas, identificación, despliegue gradual y convivencia con routers clásicos, equipos sin ECN y otros tráficos. Compartir un par de bits exige que las implementaciones entiendan de forma compatible qué significan.

En agosto de 2015, RFC 7560 abordó requisitos para información de congestión más precisa. Mencionaba que no se conocían despliegues del nonce en pilas TCP en aquel momento. Pedía atender a la integridad y a los incentivos de cooperación, sin convertir el nonce en la única respuesta admisible. Una paridad no cuenta todas las marcas: precisión e integridad son dimensiones distintas.

RFC 8311, publicado en enero de 2018, reconoció que el nonce funcionaba conforme a lo especificado y se había desplegado en entornos limitados. A la vez, constató que no se había materializado un uso amplio. Explicó la conclusión del experimento y la reclasificación de RFC 3540 de Experimental a Historic. No declaró que el algoritmo hubiera sido refutado ni que jamás hubiera existido una implementación.

El documento relató una medición con datos de 2014: ninguno de 581.711 servidores IPv4 probados empleaba ambos valores ECT tras negociar ECN. Entre 17.028 servidores IPv6, cuatro lo hacían, pero podía tratarse de nonce o de un remarcado erróneo. Son cifras históricas con muestra y ambigüedad, no un censo actual de Internet ni una reproducción propia del estudio.

Con otros usos experimentales y otros métodos de integridad en perspectiva, reservar ECT(1) exclusivamente para aquel experimento ya no resultaba justificado. Liberarlo no significaba autorizar cualquier incompatibilidad: RFC 8311 exigía los RFC Experimental adecuados del ámbito de IETF y mantenía las obligaciones de control de congestión y coexistencia.

En enero de 2023, el Experimental RFC 9331 definió ECT(1) como identificador L4S, un significado diferente del bit aleatorio. El registro de campos ECN de IANA conserva los cuatro códigos y remite a los documentos experimentales correspondientes. Ver ECT(1) hoy no demuestra que se esté ejecutando el nonce de 2003. Este cambio documentado tampoco basta para afirmar una difusión universal o unas prestaciones determinadas de L4S.

El experimento deja así dos límites complementarios. Una comprobación debe retirarse cuando ya no dispone de una comparación válida. Una reserva experimental también puede retirarse cuando su uso no justifica seguir cerrando otras posibilidades. Ninguna de las dos retiradas obliga a negar el valor de lo que antes funcionó.