# ADR 0003 — Por qué HTTP/2 sobre QUIC para el transporte del túnel de Cloudflare **Estado:** aceptada **Fecha:** 2026-08 (ventana del incidente documentado abajo) > **TODO (fase 2+):** expandir la narrativa; el contexto/decisión ya > están fundamentados en un incidente real, solo falta pulir la > redacción y agregar los datos de validación completos. ## Contexto `cloudflared` (el proceso que abre el túnel hacia Cloudflare) usaba QUIC (UDP) como protocolo de transporte por defecto para sus 4 conexiones hacia el edge de Cloudflare. Una de esas conexiones sufría fallos recurrentes de "control stream" cada 2-6 minutos, causando `504 Gateway Timeout` intermitentes en **todos** los subdominios detrás del túnel (Gitea, Argo CD, la tienda, etc.), no solo uno. Diagnóstico completo en el [playbook del incidente](../playbooks/incidente-504-gitea-tunnel.md). ## Opciones consideradas | Opción | A favor | En contra | |---|---|---| | QUIC (default) | Menor latencia teórica, multiplexing sin head-of-line blocking | Sensible a NAT/firewall doméstico; causaba el 504 intermitente real | | HTTP/2 sobre TCP | Estable en redes domésticas con NAT agresivo | Ligeramente más latencia teórica que QUIC | ## Decisión Forzar `TUNNEL_TRANSPORT_PROTOCOL=http2` en la configuración del contenedor `cloudflared`, en vez de dejar el default (QUIC/UDP). ## Consecuencias - Se eliminaron los `504` intermitentes — validado con curl en loop contra `gitea.cruzcloud.net`: ~0.37–0.4s de latencia estable por 24+ minutos sin un solo error. - Se renuncia a la ventaja teórica de latencia de QUIC, aceptable en un lab doméstico donde la estabilidad importa más que microsegundos. - Si en el futuro cambia el hardware de red (router, NAT) podría valer la pena revisar si QUIC vuelve a ser viable — no hay una razón de fondo para excluirlo para siempre, solo evidencia de que falló en esta red concreta.