Resumen

  • QUIC autoriza un número acumulado de aperturas para cada tipo de flujo.
  • Cerrar un flujo no devuelve su apertura ni crea un espacio reutilizable.
  • La autorización de transporte debe separarse de la concurrencia de la aplicación, de los trabajadores disponibles y de la capacidad operativa real.

El error habitual aparece cuando un panel trata initial_max_streams_bidi, initial_max_streams_uni o MAX_STREAMS como una métrica de concurrencia. El panel resta los flujos cerrados y presenta el resultado como trabajo disponible. Esa resta no existe en el modelo de QUIC. La cifra autoriza cuántos flujos de un tipo puede abrir el par a lo largo de la vida de la conexión; no informa de cuántos siguen abiertos en este instante.

Los identificadores codifican iniciador y dirección. Los espacios bidireccional y unidireccional tienen límites independientes. La autorización de un tipo no se transfiere al otro, y la autoridad de un iniciador no se convierte en autoridad del otro. Por eso, una medición debe guardar siempre tipo e iniciador antes de combinar números.

Un parámetro inicial ausente o igual a cero impide abrir ese tipo hasta que llegue un MAX_STREAMS posterior. Las actualizaciones pueden aumentar la autorización acumulada. No pueden reducirla: un valor no creciente no tiene efecto y se ignora. La cuenta correcta se compara con el ordinal máximo ya abierto, no con el número de flujos actualmente vivos.

El registro debe anotar por separado la autorización acumulada, el ordinal máximo abierto, los estados abierto y cerrado, la concurrencia solicitada por la aplicación, el trabajo en cola, los trabajadores disponibles, la memoria, la CPU, los recursos posteriores, el rendimiento alcanzable, la latencia, la finalización y el resultado operativo o de negocio. El cierre de un flujo cambia su estado, pero no devuelve una apertura. No se recicla el número de un flujo cerrado.

Superar la autorización acumulada causa STREAM_LIMIT_ERROR. Los valores superiores a 2^60 tampoco son válidos porque no encajan con la codificación del identificador de flujo. Son reglas de validez y de exposición de estado, no promesas de capacidad desplegable ni de capacidad operativa. Un límite bajo puede dificultar una aplicación que necesita muchos flujos; uno alto puede exponer más estado del extremo al par. El equilibrio es de control de recursos de transporte.

STREAMS_BLOCKED demuestra algo más limitado: el emisor quiso crear un flujo nuevo y el límite de transporte se lo impidió. No concede autoridad ni demuestra por qué la aplicación lo quería. Tampoco prueba que hubiera trabajo suficiente, trabajadores libres, recursos posteriores, rendimiento, éxito o capacidad operativa. Es una señal de demanda bloqueada en la frontera del transporte.

La separación de cinco dimensiones evita confusiones. TR-046 trata del permiso de control de flujo en bytes. TR-057 trata del tamaño final y su contabilidad. TR-054 trata de STOP_SENDING y de cancelar una dirección. TR-053 trata del cierre de la conexión. TR-040 trata de los identificadores de conexión y el enrutamiento. TR-058 trata de aperturas acumuladas; ninguno de los otros cinco campos sustituye ese registro.