Resumen

  • RFC 3360 registró middleboxes que devolvían TCP RST al ver un SYN ECN con ECE y CWR, aunque un receptor TCP antiguo debía ignorar esos bits y continuar el handshake.
  • La forma correcta del reset, su baja latencia o el éxito posterior de un SYN simple no demuestran quién tomó la decisión ni qué capacidad tenía el servidor.

El paquete de vuelta llevaba dirección correcta, puertos correctos y un ACK capaz de cerrar la tentativa. Llegó demasiado pronto para despertar sospechas y el registro terminó con una frase rotunda: «servidor rechazó conexión».

La topología contenía, sin embargo, un firewall entre la captura y el servidor. Ese firewall podía producir exactamente la misma frase en bytes.

RFC 3360, publicada en agosto de 2002 como BCP 60, se ocupó de firewalls y balanceadores que respondían con reset cuando un SYN utilizaba bits antes reservados. Su ejemplo fue la negociación ECN. El documento no prueba prevalencia actual ni acusa a un producto contemporáneo. Sirve para ordenar una investigación donde un mensaje válido en apariencia no conserva la identidad de la decisión.

La semántica precede al paquete

TCP RST existe para resolver incompatibilidades de estado delimitadas. RFC 793 indicaba que debía emitirse cuando el segmento parecía no pertenecer a una conexión actual, y no cuando esa conclusión no estuviera clara. RFC 9293 conserva el tratamiento estructurado de generación y aceptación de reset.

La fuerza del mensaje nace de esa delimitación. El receptor aborta; la aplicación recibe error; el operador busca el problema en el destino. Si una caja de camino usa el mismo mensaje para congestión, sintaxis desconocida o política local, todas esas acciones heredan autoridad de endpoint sin aportar contexto.

RFC 2979 no niega a un firewall la facultad de bloquear. La frontera está en no causar fallos involuntarios de uso legítimo y en no exigir que los endpoints deformen el protocolo para adaptarse a la caja. RFC 3360 concreta un caso: dejar pasar TCP común pero resetear una variante válida por usar una extensión.

ECN separaba soporte del endpoint y tolerancia del camino

RFC 3168 colocó ECE y CWR en dos posiciones del antiguo campo Reserved. El iniciador anuncia ECN enviando ambas en el SYN. Un peer compatible responde con el patrón previsto; uno no compatible debe ignorarlas y contestar con un SYN-ACK ordinario.

Ese diseño presupone que los observadores no participantes toleran valores que no comprenden. Algunos no lo hicieron. El muestreo histórico citado por RFC 3360 encontró en marzo de 2002 203 resets y 420 silencios entre 12.364 sitios probados con SYN ECN. La proporción no describe Internet hoy. Sí demuestra que «no soportado por el servidor» y «bloqueado antes del servidor» producen observaciones parecidas desde un solo extremo.

TTL, tiempo de ida, ACK y huella IP pueden ayudar a formular hipótesis. No son una cadena de custodia. La atribución necesita capturas en ambos lados del equipo controlado, una ruta alternativa, un bypass, logs del middlebox o una prueba repetible ligada a una regla concreta.

203 resets y 420 silencios son fallos distintos

El reset proporciona una respuesta rápida pero posiblemente falsa en significado. El silencio obliga a esperar RTO y puede corresponder a descarte deliberado, pérdida ordinaria, fallo de ruta o servidor inaccesible. Agruparlos como «error de conexión» impide decidir qué reparar.

RFC 3360 recomienda no usar RST como control de congestión. Un SYN descartado activa la temporización y el backoff normales; un reset puede inducir reintentos agresivos porque implementaciones populares habían aprendido a reenviar SYN inmediatamente. El intento de ahorrar estado en un equipo termina cambiando el comportamiento de muchos emisores.

Así aparece un bucle institucional. La caja emite una señal demasiado fuerte. Los clientes dejan de creer la primera señal y prueban otra forma de paquete. El reset pierde significado. Nuevas cajas observan que los clientes reintentan y asumen que el reset es un mecanismo de negociación aceptable.

El segundo SYN no resuelve el primer hecho

El workaround de ECN permite reenviar sin ECE ni CWR tras el reset. Si esa tentativa funciona, hay conectividad sin ECN. Si recibe otro reset, la conexión se aborta.

La secuencia produce una evidencia útil pero limitada. Prueba que el servicio aceptó una forma reducida a través del camino observado. No prueba que el servidor originó el primer reset, que carecía de ECN, que el firewall aplicó una política aprobada o que el fallo inicial no fue pérdida.

Además, la recuperación puede tardar varios segundos cuando el primer SYN simplemente desaparece. Algunos implementadores rechazaron incorporar el fallback porque ocultaba el equipo roto y podía desactivar ECN en rutas sanas. La compatibilidad inmediata y la capacidad futura tenían incentivos opuestos.

RFC 7413 conserva el mismo tipo de tensión con TCP Fast Open: si un camino elimina SYN con datos u opciones desconocidas, se regresa al handshake normal. El usuario obtiene respuesta; el operador necesita otra métrica para saber que la extensión nunca llegó.

Una validación de reset no autentica su razón

RFC 5961 protege mejor las conexiones establecidas contra resets ciegos mediante challenge ACK. Un segmento dentro de ventana pero sin coincidencia exacta de secuencia no derriba inmediatamente la conexión. El verdadero peer puede confirmar.

La mejora no convierte RST en un mensaje autenticado ni identifica el motivo en SYN-SENT. Incluso documenta interacciones adversas con middleboxes que borran estado, repiten resets o descartan el challenge. La comprobación numérica responde «¿puede este segmento ser aceptado por la máquina de estados?». No responde «¿tenía este actor autoridad para declarar cerrado al peer?».

La intolerancia acumulada congela el campo

La tesis larga de RFC 3360 es que una pequeña regla, repetida en suficientes caminos, puede impedir futuras extensiones de TCP. La asignación por un estándar no abre los dispositivos ya instalados. Los endpoints terminan retirando la función para mantener alcance.

RFC 6709 insiste en diseñar extensiones tolerables; RFC 9170 añade que el diseño no basta. Los valores nuevos deben circular y los fallos deben ser visibles. RFC 8701 usa GREASE en TLS para ejercitar espacios de negociación con valores que no serán seleccionados. Es una comparación arquitectónica, no un mandato para TCP.

La regla de Heng Lu sobre decisión futura localizada aporta la dimensión de poder. Una organización puede elegir qué permite en su red. Lo que no debería ocurrir es que su caja convierta esa elección en una aparente decisión del servidor para todos los usuarios. Una política local sin identidad ni vía de revisión se vuelve ley del camino.

Cómo probar una reparación

Primero se conserva la tentativa original con flags, opciones, dirección, hora y objetivo. Después se enumeran los puntos de observación y las versiones de cada middlebox. El RST se valida sin sobreinterpretar su procedencia.

Si existe una regla, se registra propietario, razón, aprobación, alcance, fecha y condición de retirada. El fallback queda etiquetado por disparador. La comparación usa el mismo destino y controla la ruta.

La reparación requiere volver a enviar el SYN con extensión. Debe observarse antes y después del equipo, llegar al endpoint y recibir una respuesta coherente con su capacidad. Luego se verifica transferencia de datos y resultado de aplicación. Un cambio de configuración sin esa repetición no demuestra efecto.

En redes multipath, el informe no puede declarar reparación global tras un solo éxito. Cada salida relevante conserva su propia combinación de reglas, firmware y estado.

Límites

El expediente no demuestra que todos los resets ECN sean impropios ni que todo valor desconocido deba pasar. No identifica un despliegue actual. Tampoco convierte ECN negociado en prueba de marcado, feedback, respuesta del sender o mejora para la aplicación.

Su conclusión es sobre atribución: una organización no debe transformar «recibimos un reset» en «el servidor negó» sin evidencia del actor. Y no debe transformar «el fallback funcionó» en «la ruta está sana» cuando la capacidad original desapareció.

Fuentes