Summary

  • draft-ietf-netconf-yang-notifications-versioning-14 añade restricciones de revisión o versión a las suscripciones YANG-Push y contexto de módulos a los avisos subscription-started y subscription-modified.
  • La revisión, la versión opcional y yang-library-content-id describen el contexto del publicador. No demuestran cómo se ordenaron los mensajes en tránsito, qué decodificador trató cada registro ni si las reglas posteriores conservaron su significado.
  • Daniel Kade propone un acta de relevo de esquema para unir aviso, conjuntos de módulos antes/después, último y primer registro decodificados, colas y repetición, pruebas, pausas aguas abajo, decisión y cierre. No es una obligación propuesta por el IETF.

Hay más de una hora de cambio

El equipo de plataforma anota la hora en que instaló el software. El servidor conoce la hora en que cambió su biblioteca YANG. La notificación contiene un eventTime. El receptor registra la llegada. Un proceso aparte descarga los módulos y activa el decodificador. Después, una migración ajusta el esquema de almacenamiento. Finalmente, el propietario de una automatización vuelve a permitir decisiones.

Todas esas horas pueden ser correctas y distintas.

Elegir una como “momento de migración” sin decir qué representa crea una autoridad ficticia. El reloj del publicador no gobierna la cola del colector. La llegada de la notificación no gobierna el despliegue del mapa de almacenamiento. El verde del panel no gobierna la interpretación de un modelo que se entrenó con la versión anterior.

El problema de gobierno aparece precisamente porque cada sistema dice la verdad sobre una parte pequeña y una interfaz las convierte en una sola verdad total.

Qué resuelve el borrador

La revisión 14 mejora una situación real. En el flujo actual, un receptor puede tener que consultar ietf-yang-library después de una notificación de cambio de estado para saber si ha cambiado la semántica de los módulos utilizados por la suscripción. La consulta adicional separa la noticia del contexto y puede encontrar una biblioteca que ya volvió a cambiar.

El nuevo módulo ietf-yang-push-revision permite que el abonado asocie nombres de módulos con una revisión concreta o una versión semántica. Una petición no admitida debe recibir un error RPC. Si la restricción de una suscripción configurada deja de coincidir con la biblioteca YANG, el publicador no debe enviar notificaciones.

Además, subscription-started y subscription-modified pueden incluir los módulos pertinentes, sus revisiones, versiones cuando existen y el identificador de contenido de la biblioteca. El receptor obtiene una referencia semántica junto al cambio de estado. La extensión de capacidades permite descubrir si el servidor ofrece este comportamiento.

Es una mejora importante: impide tratar un identificador de suscripción estable como prueba de una semántica estable. También permite rechazar datos fuera de la restricción solicitada. Pero el borrador no afirma que la notificación vacíe colas, instale software o valide cálculos posteriores.

El content ID no es la huella que algunos querrían ver

yang-library-content-id es un identificador propio de la implementación que representa la información vigente de la biblioteca del servidor. Si cambia, uno o varios módulos cambiaron. El cambio puede afectar un módulo ajeno al filtro de la suscripción. Tampoco se define el identificador como un hash portable de los bytes exactos usados por el colector.

Por eso conviene conservar dos piezas sin mezclarlas. Una es el content ID que afirma el servidor. Otra es la huella que el operador calcula sobre los módulos realmente adquiridos, con importaciones, features y desviaciones. La primera ayuda a detectar movimiento; la segunda fija el material que probó un consumidor determinado.

La lista de módulos de la notificación acota mejor el objeto, pero no resuelve por sí sola las dependencias. Un colector puede tener la revisión nombrada y otra configuración de features. Puede cargarla correctamente y mantener un mapa de base de datos antiguo. Puede validar la sintaxis y cambiar sin querer la unidad que alimenta una alarma.

Conocer el nombre de la regla no demuestra que todos la aplicaron.

El orden lógico no garantiza el orden de procesamiento

Supongamos que A y B se generaron con el esquema viejo, C es el aviso y D pertenece al nuevo. Un diagrama muestra A-B-C-D. El receptor puede observar A-C-B-D si el control y los datos usan colas distintas. Una repetición puede entregar B después de D. Un trabajador puede empezar B con el decodificador antiguo y terminar cuando otro trabajador ya proyectó D con el nuevo.

Ni la autenticidad de C ni la precisión de su hora clasifican automáticamente B. Para eso hacen falta pruebas sobre el transporte, la cola, la asignación del trabajador y el resultado del decodificador.

No es necesario convertir la extensión en una transacción distribuida. Un estándar limitado puede ser más desplegable. Lo que no puede hacer el operador es tomar el límite normativo del estándar como excusa para declarar resuelto el límite operativo.

Compatible para el módulo no significa seguro para cada uso

Las revisiones YANG tradicionales esperan compatibilidad. El versionado semántico YANG también puede indicar cambios no retrocompatibles. Son señales útiles para resolver conjuntos y establecer políticas de suscripción.

Un consumidor concreto tiene otras dependencias. Un cambio compatible puede activar un fallo de parser, descubrir una desviación no ensayada o alterar la cardinalidad que esperaba una regla. Un campo nuevo puede ser ignorado cuando debía participar en un cálculo. La interpretación puede fallar aunque el mensaje sea válido.

Hay que registrar por separado la clasificación del cambio, la aceptación de la política y el ensayo del resultado. Llamar “compatible” a los tres oculta quién se responsabiliza de cada uno.

El silencio protegido sigue siendo silencio ambiguo

Cuando una restricción configurada deja de coincidir, detener las notificaciones evita que el publicador entregue datos no autorizados por la política semántica. Es una propiedad valiosa.

Desde el exterior, no obstante, la ausencia puede parecerse a una suscripción on-change sin cambios, una avería de transporte, una pérdida de autorización, un colector detenido o un filtro sin resultados. La última lectura no debe mantenerse indefinidamente como si fuera una observación fresca.

El acta de relevo debe decir cuál era la cadencia o expectativa válida, qué condición se observó, cuándo se distinguió de otras causas y quién aprobó la reanudación. De lo contrario, una protección normativa termina degradada a una mancha silenciosa en un gráfico.

Un acta pequeña para una frontera importante

El registro propuesto no almacena otra copia de la telemetría. Une referencias que ya existen, pero suelen quedar separadas:

  • identidad del publicador, suscripción, filtro exacto y restricción solicitada;
  • content IDs antes/después y huellas locales separadas de los conjuntos exactos de módulos, imports, features y desviaciones;
  • hash del aviso autenticado y horas de evento, llegada y procesamiento;
  • último registro que se probó bajo el decodificador anterior y primero probado bajo el nuevo;
  • secuencia, repetición, resincronización y destino de intervalos en cola, perdidos, aislados o reprocesados;
  • versión del decodificador y del mapa de almacenamiento, vectores de ensayo y resultados;
  • alertas, controles, informes y modelos detenidos o revalidados;
  • responsable de la decisión, excepción, duda residual, objetivo de reversión y cierre.

La expresión “último registro” debe limitarse a lo demostrable en el colector. Puede no ser el último que generó el publicador. Si esa diferencia no puede cerrarse, se conserva como incertidumbre en vez de completar el relato con una suposición.

Seguridad de acceso y seguridad de significado

El borrador señala correctamente que los nodos escribibles de la política de versión son sensibles. NETCONF y RESTCONF necesitan transporte seguro y autenticación mutua; NACM debe limitar quién establece o modifica las restricciones. Un cambio abusivo podría parar un flujo o cambiar el contexto admitido.

Esas medidas protegen actores y mensajes. No prueban el drenaje de una cola, la instalación de un decodificador ni la validez de un modelo analítico. La integridad del aviso impide que alguien lo altere; no amplía el contenido de lo que el aviso afirma.

La respuesta sensata a un cambio es una pausa acotada. Se identifican los módulos exactos, se prueban decodificadores, se concilian colas y repetición, se comparan proyecciones y se reabre cada uso cuando alcanza su umbral. Si el cambio de biblioteca no toca el filtro, el cierre puede ser rápido. Si cambia una semántica usada para accionar la red, la prueba debe ser mayor.

La notificación hace visible la frontera. El acta impide que la organización finja haberla cruzado.

Fuentes