Wer sich mit Netzwerkautomatisierung, YANG, NETCONF, RESTCONF oder strukturierten Konfigurationsdaten beschäftigt, stößt sehr schnell auf die Begriffe Hierarchie und Container. Für viele Network Engineers wirken diese Konzepte zunächst abstrakt, obwohl sie in der Praxis sehr logisch sind. Netzwerke bestehen aus Objekten, die in Beziehung zueinander stehen: Geräte enthalten Interfaces, Interfaces besitzen Adressen, Routing-Prozesse enthalten Nachbarn, VLAN-Daten gehören zu Standorten oder Rollen. Genau solche Beziehungen werden in Datenmodellen durch Hierarchien und Container sauber beschrieben. Sie helfen dabei, Konfigurations- und Statusdaten logisch zu ordnen, wiederverwendbar zu machen und für Automatisierung, Validierung und API-basierte Prozesse maschinenlesbar bereitzustellen.
Warum Hierarchien in Datenmodellen überhaupt notwendig sind
Netzwerkdaten sind nicht flach organisiert
Ein Netzwerkgerät besteht nicht aus einer ungeordneten Liste einzelner Werte. Es besitzt verschiedene funktionale Bereiche, die wiederum untergeordnete Informationen enthalten. Ein Router hat Interfaces, diese Interfaces haben IP-Adressen, Beschreibungen und Statuswerte. Ein Switch hat VLANs, Trunks und Access-Ports. Ein Routing-Prozess enthält Netzdefinitionen, Nachbarschaften und Timer. Genau deshalb reicht eine flache Liste von Parametern nicht aus.
- Ein Hostname steht auf Geräteebene.
- Eine Beschreibung gehört oft zu einem Interface.
- Eine IP-Adresse hängt von einem bestimmten Interface ab.
- Ein OSPF-Parameter gehört zu einem Routing-Prozess.
- Ein NTP-Server ist meist ein globaler Systemparameter.
Diese logischen Zusammenhänge müssen in einem Datenmodell sichtbar werden. Hierarchien schaffen genau diese Ordnung.
Automatisierung braucht klare Beziehungen
Für Menschen ist oft intuitiv klar, dass eine IP-Adresse zu einem bestimmten Port gehört oder dass ein VLAN in einem Layer-2-Kontext verwendet wird. Ein Automatisierungssystem braucht diese Zusammenhänge jedoch explizit. Wenn Daten ohne Hierarchie gespeichert werden, wird der Code komplizierter, fehleranfälliger und schlechter wartbar.
- Welche IP gehört zu welchem Interface?
- Welche Interfaces gehören zu welchem Gerät?
- Welche Parameter sind global, welche lokal?
- Welche Objekte enthalten andere Objekte?
Hierarchische Modelle beantworten diese Fragen direkt durch ihre Struktur.
Was mit Hierarchie in einem Datenmodell gemeint ist
Hierarchie als Baumstruktur
In Datenmodellen werden Informationen häufig als Baum organisiert. Oben stehen allgemeinere Objekte, darunter folgen spezifischere Elemente. Dieses Prinzip ähnelt einem Dateisystem: Ein Hauptordner enthält Unterordner, diese wiederum weitere Inhalte. In Netzwerken ist das genauso sinnvoll.
Eine vereinfachte Struktur könnte so aussehen:
- device
- system
- interfaces
- interface
- routing
- ospf
- bgp
Diese Struktur zeigt sofort, dass Interfaces ein Teil des Geräts sind und Routing-Prozesse ebenfalls zum Gerät gehören, aber einen anderen Bereich bilden.
Hierarchie erzeugt Kontext
Ein Datenwert wird erst durch seinen Kontext wirklich aussagekräftig. Das Wort description allein sagt noch nicht, ob es sich um eine Gerätebeschreibung, eine Interface-Beschreibung oder die Beschreibung einer ACL handelt. Innerhalb einer Hierarchie ist das eindeutig.
Beispiel:
device:
interfaces:
interface:
name: GigabitEthernet0/1
description: Uplink-to-Core
Hier ist sofort klar, dass sich die Beschreibung auf ein Interface bezieht und nicht auf das Gerät als Ganzes.
Was ein Container in Datenmodellen ist
Container als logische Gruppierung
Ein Container ist ein strukturelles Element, das zusammengehörige Daten bündelt. Er selbst ist in der Regel kein einzelner Endwert, sondern eine Klammer um weitere Objekte, Werte oder Listen. In YANG und anderen strukturierten Modellen ist der Container eines der wichtigsten Grundelemente, weil er Daten logisch organisiert.
Ein Container kann zum Beispiel folgende Gruppen bilden:
- Globale Systemeinstellungen
- Interface-Daten
- Routing-bezogene Parameter
- SNMP- oder Logging-Einstellungen
- Statusinformationen zu einem Funktionsbereich
Ein einfaches Beispiel:
system:
hostname: fra-core-rtr01
domain-name: example.local
Hier fungiert system als Container für mehrere zusammengehörige Parameter.
Container sind keine Listen von Wiederholungen
Ein häufiger Denkfehler ist die Verwechslung von Containern mit Listen. Ein Container gruppiert logisch zusammengehörige Daten. Eine Liste beschreibt dagegen mehrere gleichartige Einträge. Ein Gerät hat typischerweise genau einen Systembereich, aber viele Interfaces. Deshalb ist system oft ein Container, während interfaces meist einen Container enthält, unter dem eine Liste von Interfaces liegt.
Wie Hierarchien und Container zusammenarbeiten
Container bilden die Knoten der Hierarchie
Eine Hierarchie entsteht in der Praxis häufig dadurch, dass Container und untergeordnete Elemente schrittweise ineinander verschachtelt werden. Container bilden dabei die logischen Ebenen des Baums.
Beispielhaft:
device:
system:
hostname: ham-dist-sw01
interfaces:
interface:
name: GigabitEthernet1/0/48
description: Uplink-to-Core
Hier ist device die oberste Ebene, darunter folgen die Container system und interfaces. Innerhalb von interfaces liegen dann die eigentlichen Interface-Daten.
Ohne Hierarchie entstehen unklare Modelle
Würde man dieselben Daten flach speichern, sähe das möglicherweise so aus:
hostname: ham-dist-sw01
interface_name: GigabitEthernet1/0/48
interface_description: Uplink-to-Core
Das funktioniert bei kleinen Beispielen, skaliert aber schlecht. Schon bei mehreren Interfaces oder zusätzlichen Funktionen wird die Struktur unübersichtlich. Hierarchien und Container verhindern genau dieses Problem.
Praxisbezug: Hierarchien in Netzwerkkonfigurationen
Auch die CLI ist oft hierarchisch aufgebaut
Viele Network Engineers kennen Hierarchien bereits aus der CLI, auch wenn sie sie nicht immer so benennen. In Cisco IOS wechselt man beispielsweise vom globalen Konfigurationsmodus in einen Interface-Kontext oder in einen Routing-Kontext. Genau das ist im Grunde eine hierarchische Struktur.
Ein Interface-Kontext in der CLI:
conf t
interface GigabitEthernet0/1
description Uplink-to-Core
ip address 192.0.2.2 255.255.255.252
no shutdown
Hier ist interface GigabitEthernet0/1 funktional ein Container-Kontext, in dem untergeordnete Parameter gesetzt werden.
Ein Routing-Kontext:
router ospf 10
router-id 10.255.0.1
passive-interface default
no passive-interface GigabitEthernet0/1
Auch hier wird deutlich: Bestimmte Werte gehören logisch zu einem bestimmten Funktionsbereich. Datenmodelle machen diese Struktur explizit und maschinenlesbar.
Der Unterschied zur CLI-Struktur
Obwohl die CLI oft hierarchisch wirkt, ist sie primär für Menschen und Gerätebedienung gemacht. Datenmodelle hingegen sind explizit für strukturierte Datenrepräsentation gedacht. Sie beschreiben nicht nur, in welchem Kontext ein Befehl steht, sondern formal, welche Objekte existieren, welche Werte sie haben dürfen und wie sie zueinander in Beziehung stehen.
Typische Hierarchieebenen in Netzwerkdatenmodellen
Geräteebene
Auf der obersten Ebene stehen meist Daten, die für das gesamte Gerät gelten. Dazu zählen globale Systemparameter, Management-Einstellungen oder Plattforminformationen.
- Hostname
- Standort
- Rolle
- Management-IP
- NTP-Server
- Syslog-Ziele
- AAA-Parameter
Beispiel:
device:
hostname: ber-edge-rtr01
role: edge-router
mgmt_ip: 192.0.2.5
Funktionsbereiche unterhalb des Geräts
Darunter folgen typische Funktionsbereiche, die als Container modelliert werden können.
- system
- interfaces
- vlans
- routing
- security
- services
Jeder dieser Bereiche kann wiederum eigene Unterstrukturen enthalten.
Objektebene innerhalb eines Funktionsbereichs
Innerhalb eines Containers befinden sich oft konkrete Objekte. Im Interface-Bereich sind das die einzelnen Ports, im Routing-Bereich einzelne Protokolle oder Instanzen, im VLAN-Bereich konkrete VLAN-Einträge.
Beispiel:
interfaces:
- name: GigabitEthernet1/0/10
description: User-LAN-Floor3
mode: access
access_vlan: 30
Hier ist der Bereich interfaces die logische Klammer, darunter folgen die einzelnen Interface-Objekte.
Container in YANG einfach erklärt
Der Container als formales Modellierungselement
In YANG ist der container ein definierter Baustein, um Daten zu gruppieren. Er wird verwendet, wenn ein Bereich logisch zusammengehörige Unterelemente enthält. Das ist besonders hilfreich bei Systemdaten, Routing-Bereichen oder Interface-Sammlungen.
Ein stark vereinfachtes YANG-Beispiel:
container system {
leaf hostname {
type string;
}
leaf domain-name {
type string;
}
}
Der Container system gruppiert hier zwei zusammengehörige Konfigurationswerte.
Container und Untercontainer
Container können wiederum weitere Container enthalten. Dadurch entstehen saubere Hierarchien. Das ist sinnvoll, wenn ein Bereich groß genug ist, um nochmals logisch unterteilt zu werden.
Beispielhaft:
container routing {
container ospf {
leaf process-id {
type uint16;
}
}
}
Hier enthält der Container routing den Untercontainer ospf. So bleibt das Modell sauber gegliedert.
Warum diese Struktur für Automatisierung wichtig ist
Klare Datenpfade für APIs und Tools
Automatisierungssysteme müssen Daten gezielt lesen und schreiben können. Hierarchien und Container sorgen dafür, dass ein bestimmter Wert einen klaren Pfad besitzt. Statt nach freiem Text zu suchen, kann ein Tool gezielt auf einen definierten Bereich zugreifen.
Beispielsweise logisch:
- device/system/hostname
- device/interfaces/interface/name
- device/routing/ospf/process-id
Solche Pfade machen strukturierte APIs, Validierung und gezielte Änderungen überhaupt erst praktikabel.
Wiederverwendbarkeit und Wartbarkeit
Wenn Modelle sauber hierarchisch aufgebaut sind, lassen sie sich leichter erweitern. Ein neuer Bereich für Telemetrie, QoS oder VRFs kann in die bestehende Struktur integriert werden, ohne andere Teile unübersichtlich zu machen.
- Neue Objekte lassen sich logisch an bestehende Bereiche anfügen.
- Validierung bleibt auf den jeweiligen Bereich begrenzt.
- Templates und Automatisierungscode bleiben übersichtlich.
Genau das ist ein großer Unterschied zu flachen Datenstrukturen oder hartkodierten Skripten.
Beispiele aus der Praxis
Interface-Daten in einer sinnvollen Hierarchie
Ein sauber modelliertes Interface ist selten nur ein einzelner Name. Meist gehört es in eine Hierarchie mit mehreren Attributen.
device:
interfaces:
- name: GigabitEthernet1/0/24
description: Uplink-to-fra-dist-sw01
mode: trunk
native_vlan: 99
allowed_vlans:
- 10
- 20
- 30
Diese Struktur zeigt:
- Die Interfaces gehören zum Gerät.
- Jedes Interface ist ein eigenes Objekt.
- Trunk-Parameter sind dem jeweiligen Interface eindeutig zugeordnet.
Daraus kann dann CLI generiert werden:
interface GigabitEthernet1/0/24
description Uplink-to-fra-dist-sw01
switchport mode trunk
switchport trunk native vlan 99
switchport trunk allowed vlan 10,20,30
Routing-Daten logisch gruppieren
Auch Routing eignet sich hervorragend für hierarchische Modelle. Globale Routingdaten gehören in einen eigenen Bereich, darunter folgen Protokolle und deren spezifische Parameter.
device:
routing:
ospf:
process_id: 10
router_id: 10.255.0.1
passive_default: true
Die zugehörige CLI könnte so aussehen:
router ospf 10
router-id 10.255.0.1
passive-interface default
Die Hierarchie macht deutlich, dass diese Werte nicht allgemein zum Gerät, sondern speziell zum OSPF-Bereich gehören.
Hierarchien bei Konfigurations- und Statusdaten
Konfigurationsdaten hierarchisch beschreiben
Konfigurationsdaten folgen meist einer klaren funktionalen Gliederung. Das hilft bei Provisionierung, Standardisierung und Versionsverwaltung.
- Globale Systemparameter unter
system - Portbezogene Werte unter
interfaces - Routingparameter unter
routing - Sicherheitsregeln unter
security
Dadurch wird das Modell besser lesbar und kann direkt als Grundlage für Templates oder API-Calls dienen.
Statusdaten ebenfalls strukturiert ordnen
Auch Statusdaten profitieren stark von Hierarchien. Ein Gerät besitzt Statusdaten auf globaler Ebene und innerhalb einzelner Funktionsbereiche. Interfaces haben Link-Status und Fehlerzähler, Routing-Prozesse haben Nachbarschaften, NTP hat Synchronisationsstatus.
Typische operative Prüfungen per CLI:
show ip interface brief
show interfaces counters errors
show ip ospf neighbor
show ntp associations
In einem Modell können solche Informationen logisch ähnlich angeordnet sein wie die Konfigurationsdaten. Das erleichtert Soll-Ist-Vergleiche erheblich.
Typische Fehler beim Verständnis von Hierarchien und Containern
Alles auf einer Ebene speichern
Ein häufiger Fehler besteht darin, alle Werte flach nebeneinander abzulegen. Das mag bei sehr kleinen Datensätzen funktionieren, wird aber schnell unübersichtlich.
- Beziehungen zwischen Objekten bleiben unklar.
- Wiederholbare Strukturen werden schwer handhabbar.
- Validierung und Erweiterung werden komplizierter.
Gerade bei mehreren Interfaces, VLANs oder Routinginstanzen ist ein flaches Modell langfristig kaum wartbar.
Container mit echten Datenwerten verwechseln
Ein Container ist in der Regel keine eigentliche Nutzinformation wie Hostname oder IP-Adresse. Er ist die logische Gruppierung für solche Informationen. Wer Container und Werte nicht sauber trennt, baut unklare oder inkonsistente Modelle.
Zu tiefe Verschachtelung ohne echten Nutzen
Hierarchien sind sinnvoll, aber nicht jede zusätzliche Ebene ist automatisch gut. Wenn Modelle ohne fachlichen Mehrwert zu tief verschachtelt werden, leidet die Lesbarkeit. Die Struktur sollte logisch, aber pragmatisch bleiben.
- Nur dann neue Ebenen einführen, wenn sie echte Ordnung schaffen.
- Wiederkehrende Muster konsistent halten.
- Komplexität nicht künstlich erhöhen.
Best Practices für Hierarchien und Container in Datenmodellen
- Daten nach fachlicher Zugehörigkeit und nicht nach Zufall gruppieren.
- Globale, geräteweite Werte klar von Interface-, Routing- oder Security-Daten trennen.
- Container für logische Bereiche nutzen, nicht für einzelne Werte.
- Wiederholbare Objekte wie Interfaces oder VLANs als Listen innerhalb passender Container modellieren.
- Hierarchien so gestalten, dass Beziehungen zwischen Objekten sofort erkennbar sind.
- Die Modellstruktur an realen Automatisierungs- und Validierungs-Use-Cases ausrichten.
- CLI-Kontexte als Denkhilfe nutzen, aber nicht blind in Datenmodelle kopieren.
- Konfigurations- und Statusdaten strukturell ähnlich aufbauen, wenn Soll-Ist-Vergleiche geplant sind.
- Flache Datenstrukturen nur für sehr einfache Anwendungsfälle verwenden.
- Modelle übersichtlich halten und unnötige Verschachtelung vermeiden.
Damit werden Hierarchien und Container von abstrakten Modellbegriffen zu einem sehr praktischen Werkzeug für Network Engineers: Sie schaffen Ordnung in komplexen Netzwerkinformationen, machen Zusammenhänge maschinenlesbar und bilden die Grundlage für saubere Automatisierung, strukturierte APIs und verlässliche Soll-Ist-Vergleiche im täglichen Netzwerkbetrieb.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

