Zusammenfassung

  • draft-ietf-netmod-yang-packages-09 führt Includes, Ausschlüsse, Abhängigkeiten, implementierte und reine Importmodule, Features, Abweichungen und Mounts zu einem resolved package schema zusammen.
  • Validierung, Zyklenfreiheit, complete: true und eine YANG-Library-Bindung sind aussagekräftige Schema-Belege. Sie beweisen weder unveränderte Bytes noch den tatsächlichen Load, identische Client- und Servermengen oder einen sicheren Mischbetrieb.

Der trügerische Befund lautet nicht „Fehler“, sondern „vollständig aufgelöst“. Name und Version sind eindeutig. Die JSON-Datei ist gültig. Der Include-Graph enthält keinen Kreis. Alle Locations sind erreichbar. Doch der Controller verwendet eine ältere Cachekopie, während der Server unter derselben Identität eine neuere Definition meldet. Beide Auflösungen können intern korrekt und untereinander verschieden sein.

Revision 09 stammt vom 6. Juli 2026. Sie ist ein aktiver NETMOD-Internet-Draft für den Standards Track und läuft am 7. Januar 2027 ab. Sie bleibt „work in progress“. Ihr praktischer Wert besteht darin, implizite Sammlungen durch benannte, versionierte und hierarchisch berechenbare Schemata zu ersetzen.

Auflösung bedeutet Eingriff

includes nimmt Pakete, implementierte Module, Importmodule und verpflichtende Features auf. excludes entfernt geerbte Module oder Features. depends-on beschreibt Kontext für unvollständige Pakete, ohne ihn in deren eigenes Ergebnis aufzunehmen. Ein Mount kann geerbte Pakete erweitern oder sie mit inherit-packages=false vollständig verwerfen.

Zuerst wird jedes enthaltene Paket rekursiv aufgelöst. Danach werden Kindresultate und lokale Angaben verschmolzen. Implementierte Module werden vereinigt, Konflikte entschieden, lokal überschrieben und anschließend gefiltert. Import-only-Module dürfen mehrere Versionen behalten. Features werden vereinigt, hinzugefügt und entfernt; mit einem ausgeschlossenen Modul verschwinden auch dessen Features.

Locations werden in Include-Reihenfolge zusammengeführt, wobei das erste Auftreten erhalten bleibt. Das macht die Auswahl nachvollziehbar, authentisiert aber nicht den Inhalt der URI. Bei Mounts kann ein einzelnes false einen geerbten Unterschema-Satz ersetzen, obwohl die oberste Paketbezeichnung gleich bleibt.

Der automatische Gewinner kennt den Verbraucher nicht

Bei konfligierenden implementierten Modulversionen vergleicht die Semver-Regel nur Major, Minor und Patch. Kompatibilitätsmodifikatoren, Prerelease- und Build-Informationen werden ignoriert. Ein Semver-Label gewinnt gegen ein anderes Format; ohne Semver entscheidet das neuere Revisionsdatum. Ein lokaler Moduleintrag kann das Ergebnis ausdrücklich überschreiben.

Die Regel ist deterministisch, aber sie kennt weder generierte Clientbindungen noch die Freigabeabsicht. Ein belastbarer Beleg nennt daher Kandidaten, Vergleich, Gewinner, Overrides, Ausschlüsse und Warnungen. Ein erfolgreicher Prozessausgang ist kein Konfliktprotokoll.

Die Klassifizierung von Schemadifferenzen ist Gegenstand eines benachbarten Beitrags. Sie ersetzt weder die Identität der Eingabebytes noch einen Verbrauchertest.

complete schließt Imports, nicht Vertrauen

Referentielle Vollständigkeit liegt vor, wenn jeder Import aller direkt und indirekt enthaltenen Module auf eine im Paket definierte Modulversion zeigt. Unvollständige Hotfix-Pakete können mit depends-on ihren erwarteten Kontext angeben.

Damit sind Mirror-Integrität, Cachefrische, Submodule-Bytes und Instanzverhalten nicht bewiesen. Submodule werden vor allem wegen ihrer Locations aufgeführt; die Auflösung entscheidet auf Modulebene und kann bei gleichen Versionen Gleichwertigkeit annehmen. Der Betrieb muss die tatsächlichen Submodule dennoch einfrieren und prüfen.

Auch die globale Eindeutigkeit von name/version ist eine Herausgeberregel, keine Inhaltsadressierung. Wenn zwei Locations abweichen, entscheidet die erwartete Gleichwertigkeit nicht, welche Bytes stimmen.

Bekannt, gebunden und geladen sind verschiedene Zustände

Die oberste Paketliste eines Servers ist ein Katalog. Ein Eintrag muss weder implementiert noch in einem Datastore aktiv sein. Erst die YANG-Library-Erweiterung bindet Pakete und zusätzliche Features an ein bestimmtes Datastore-Schema.

Eine solche Bindung muss vollständig sein und genau zum YANG-Library-module-set passen. Das ist ein starker Konsistenztest, aber beide Aussagen stammen vom Server. Der Client sollte sie vergleichen und Zeit sowie content-id festhalten. Diese ID ist servergeneriert und daher kein systemübergreifender Digest.

.ypkg transportiert Pakete als JSON-Instanzdaten. Ein Client darf die Serverkopie, eine Location oder einen Cache mit gleichem name/version verwenden. Formvalidität belegt weder Urheberschaft noch Frische, rekursive Wahl oder Aktivierung. RFC 9195 trennt Instanzdateien ausdrücklich von Protokollen zur Änderung lebender Konfiguration und Zustände.

Konformität endet vor der Dienstwirkung

Ein abweichender Server kann ein eigenes Implementierungspaket publizieren, das ein Standardpaket einschließt und durch andere Versionen, Deviations sowie Modul- oder Feature-Ausschlüsse verfeinert. Das beschreibt Abweichungen ehrlich, beweist aber keine Clientverträglichkeit.

Getrennte Nachweise bleiben nötig: Herausgeber und Identität; URI, Zeitpunkt und Byte-Digest; Struktur; rekursiver Pfad; Konfliktentscheidung; Import- und Submodule-Abschluss; resolved schema; Datastore-Bindung; Prozess-Load; Client- und Serversatz; Konfigurations-, Zustands-, RPC-, Notification- und Zugriffstests; Rollout und Rollback; Laufzeit; externe Wirkung.

Primärquellen

Grundlage sind Revision 09 samt Datatracker-Status und -Historie sowie RFC 7950, RFC 8525, RFC 9195, RFC 8528, RFC 8342, YANG Module Versioning Revision 17, YANG Semantic Versioning Revision 28 und das NETMOD-Protokoll der IETF 122: https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-packages-09; https://datatracker.ietf.org/doc/draft-ietf-netmod-yang-packages/; https://datatracker.ietf.org/doc/draft-ietf-netmod-yang-packages/history/; https://www.rfc-editor.org/rfc/rfc7950.html; https://www.rfc-editor.org/rfc/rfc8525.html; https://www.rfc-editor.org/rfc/rfc9195.html; https://www.rfc-editor.org/rfc/rfc8528.html; https://www.rfc-editor.org/rfc/rfc8342.html; https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-module-versioning-17; https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-semver-28; https://datatracker.ietf.org/doc/minutes-122-netmod-202503190600/00/.