3.2 YANG
3.2 YANG
YANG je jazyk pre modelovanie dát (RFC 6020 ) určený pre definovanie dát posielaných prostredníctvom protokolu NETCONF. Môže byť použitý na:
- modelovanie:
- konfiguračných dát,
- údajov o stave sieťových prvkoch.
- definovanie formátu upozornení o udalostiach posielaných sieťovými prvkami
YANG je nezávislý na protokole a môže byť konvertovaný do akéhokoľvek kódovacieho formátu, napr. XML alebo JSON. Jazyk YANG používa moduly a submoduly. Modul obsahuje definície:
- hlavičky modulu - opisujú modul a poskytujú informácie o samotnom module,
- revízie - poskytujú informácie o histórii modul
- príkazov - sú časťou modulu, kde je dátový model definovaný
NETCONF server môže implementovať viacero modulov, ktoré umožňujú rôzne zobrazenia tých istých údajov alebo viaceré zobrazenia disjunktných podsekcií údajov zo zariadenia. Alternatívne môže server implementovať iba jeden modul, ktorý definuje všetky dostupné dáta.
Modul môže byť rozdelený na submoduly. Príkaz "include" umožňuje modulu alebo submodulu odkazovať na materiál v submoduloch. Príkaz "import" umožňuje odkazy na materiál definovaný v iných moduloch.
YANG definuje štyri typy uzlov pre modelovanie dát.
a) Leaf node - obsahuje jednoduché údaje ako celé číslo alebo reťazec. Má presne jednu hodnotu konkrétneho typu a žiadnych potomkov.
Zápis
Leaf node v YANG:
leaf host-name {
type string;
description
"Hostname for this system";
}
NETCONF XML kódovanie:
<host-name>my.example.com</host-name>
b) Leaf-List node - je to sekvencia uzlov typu list s presnou hodnotou konkrétneho typu pre každý list
YANG zápis:
leaf-list domain-search {
type string;
description "List
of domain names to search"; }
NETCONF XML zápis:
<domain-search>high.example.com</domain-search>
<domain-search>low.example.com</domain-search>
<domain-search>everywhere.example.com</domain-search>
c) Container node - uzol kontajnera sa používa na zoskupenie súvisiacich uzlov v podstrome. Kontajner obsahuje iba uzly potomkov a žiadnu hodnotu. Kontajner môže obsahovať akýkoľvek počet uzlov potomkov akéhokoľvek druhu (vrátane listov, zoznamov, kontajnerov a listových zoznamov).
YANG
zápis:
container system {
container login {
leaf message {
type string;
description
"Message given at
start of login session"; } } }
d) List node - zoznam definuje postupnosť záznamov v zozname.
Každý záznam je ako štruktúra alebo inštancia záznamu a je
jednoznačne identifikovaná hodnotami jej kľúčových listov. Zoznam môže
definovať viac kľúčových listov a môže obsahovať ľubovoľný počet uzlov
potomkov akéhokoľvek druhu (vrátane listov,
zoznamov, kontajnerov atď.).
Príklad
– YANG zápis:
list
user {
key "name";
leaf name { type string; }
leaf full-name { type string; }
leaf class { type string; } }