Modelování konfiguračních dat v jazyku YANG

Ladislav Lhotka 7. 5. 2012

V předchozím článku jsme se věnovali otevřenému protokolu NETCONF, který umožňuje vzdáleně konfigurovat různé síťové prvky nebo služby bez ohledu na výrobce. Na obsah předchozího článku nyní navážeme a společně si popíšeme nástroje pro modelování konfigurací, stavových dat a dalších informací.

Pracovní skupina NETCONF při IETF se zachovala poměrně moudře, když záměrně ponechala zcela stranou svého zájmu vlastní obsah konfigurací. Oprávněně se obávala, že by se veškeré snažení mohlo snadno utopit v religiózních polemikách o logice a struktuře konfiguračních dat, a soustředila se proto výhradně na konfigurační protokol.

Každému bylo ale zároveň jasné, že jistá standardizace datového obsahu bude muset dříve nebo později přijít na řadu, protože bez sjednocení datových modelů – třeba jen částečného – lze těžko mluvit o neutrálním konfiguračním systému, který nezávisí na konkrétním výrobci. Koncem dubna 2008 proto vznikla nová pracovní skupina IETF s názvem NETMOD. Jejím cílem byla jednak standardizace nástrojů pro modelování konfiguračních dat, následně ale pak také vytvoření základních datových modelů, na něž by mohly navázat jiné pracovní skupiny.

K čemu vlastně takové datové modely slouží? Obrazně řečeno jde o kontrakt mezi serverem (síťovým zařízením) a klientem (manažerskou stanicí), který určuje, jak vypadá validní konfigurace, a umožňuje oběma stranám konfigurační data správně interpretovat a používat.

Minule jsme řekli, že NETCONF je založen na XML a předpokládá informační model XML i u konfiguračních dat, která přenáší. Otázka nástrojů pro modelování dat by se tak mohla jevit jako předem vyřízená: Použijí se osvědčené jazyky pro vytváření schémat XML, například W3C XML Schema nebo RELAX NG pro definování struktury a datových typů, a Schematron pro sémantická pravidla. Tato varianta byla skutečně zvažována a dlouze diskutována ještě před založením skupiny NETMOD. Nakonec se ale dohodla jiná cesta – vytvoření nového specializovaného jazyka pro modelování dat. Důvody byly zhruba čtyři:

  1. Datové modely mají být velmi dobře čitelné pro lidi i software.
  2. Datový model musí přehledně reprezentovat jak schéma a datové typy, tak i nejrůznější sémantická pravidla a omezení.
  3. Datový model musí být schopen definovat i nové operace jako rozšíření protokolu NETCONF.
  4. Datové modely musí být modulární a snadno rozšiřitelné.

Jazyk YANG

Nový jazyk dostal jméno YANG a jeho specifikace je obsahem RFC 6020. Skupina NETMOD si zároveň byla vědoma rizik spojených s vývojem a prosazením nového jazyka, a tak vznikl doprovodný standard RFC 6110, jenž zajišťuje možnost převodu YANGu na rodinu schémových jazyků DSDL, konkrétně RELAX NG, Schematron a DSRL.

Datové modely jsou v jazyce YANG rozděleny do modulů, které mohou být podle potřeby dále členěny do submodulů. Každý modul definuje svůj unikátní jmenný prostor, do něhož patří všechny objekty definované v modulu i všech jeho submodulech. Modul může také importovat jiné moduly a využívat pak jejich definice.

Úplný YANG modul typu „hello, world” vypadá třeba takto:

module hello-world {
  namespace "http://example.org/hello-world";
  prefix hw;
  container world {
    description "This contains everything.";
    leaf greeting {
      type string;
      default "Hello, world!";
    }
  }
}

Jak vidíme, syntaxe YANGu se podobá jazyku C či konfiguračním souborům BSD démonů. Za zmínku stojí, že YANG definuje i alternativní syntaxi zvanou YIN, která moduly zapisuje pomocí XML. Umožňuje se tím zpracování datových modelů běžnými nástroji XML (v mém případě jde konkrétně o skvělý nXML mód pro Emacs).

Pro mnoho vlastností YANGu najdeme ekvivalenty nebo blízké příbuzné v jazycích schémat XML. YANG umí definovat hierarchické schéma dat (kontejnery, jednotlivé datové položky či jejich posloupnosti apod.) a nabízí i škálu základních datových typů, zhruba srovnatelnou s knihovnou datových typů pro W3C XML Schema. Pro specifikaci sémantických pravidel se používají výrazy XPath.

Speciality jazyka YANG

YANG ale také disponuje některými méně obvyklými až exotickými vlastnostmi.

Především: Schémata XML se běžně používají pro definici jedné konkrétní třídy dokumentů, například XHTML stránky. U YANGu je to složitější, protože jeden datový model se může vztahovat hned na několik tříd dokumentů – konfigurační úložiště, stavová data, zprávy protokolu NETCONF, ale také nové operace a notifikace.

Důležitou zásadou jazyka YANG je normativní charakter textových popisů obsažených v příkazech description. Tím se bere v úvahu fakt, že všechna relevantní pravidla datových modelů nelze vyjádřit formalizovaným zápisem.

Z technického hlediska je asi nejzajímavějším prvkem jazyka YANG jeho příkaz augment. Ten umožňuje vzít stávající modul a v libovolném místě jeho hierarchie přidat nové datové elementy nebo i celé podstromy. Podstatné je, že přijímající modul nemusí s takovým rozšířením dopředu nijak počítat. Pro ilustraci uveďme jeden realistický příklad použití:

augment "/if:interfaces/if:interface" {
  when "if:type = 'ethernet'";
  container ethernet {
    ...
  }
}

Obecný modul pro síťová rozhraní (jehož jmenný prostor je reprezentován prefixem if) je zde rozšířen o kontejner ethernet, v němž jsou definovány konfigurační parametry specifické pro rozhraní typu Ethernet. Přesné místo v datovém stromě, kam se má kontejner umístit, je uvedeno jako parametr příkazu augment ( /if:interfaces/if:interface). Povšimněte si také, že rozšíření je podmíněné – platí pouze pro rozhraní, které mají v elementu if:type uvedený typ  ethernet.

Základní datové modely

Po dokončení specifikace jazyka YANG a souvisejících standardů se pracovní skupina NETMOD vrhla na vývoj souboru základních (core) datových modelů pro obecně užitečné subsystémy. Měly by sloužit jako východisko pro jiné pracovní skupiny IETF, aby na nich mohly začít budovat své specializované datové modely, kupříkladu pro konfiguraci směrovacích protokolů.

Během roku 2012 budou dokončeny následující datové modely:

Implementace

Nástroje pro práci s datovými modely v jazyce YANG jsou implementovány ve dvou open source programech: Yuma a pyang. Kromě kontroly správnosti YANG modulů například převádějí datové modely do jiných podob (RELAX NG/Schematron, UML) a také umějí proti datovým modelům validovat XML dokumenty různých typů.

Závěr

Jazyk YANG je poměrně mladý a trpí proto obvyklými problémy typu slepice-vejce. Jeho přijetí v komunitě IETF i mimo ni bylo ale celkem příznivé a několik projektů již YANG také ve větší míře využívá:

  • OpenFlow – správa a konfigurace přepínačů s technologií OpenFlow;
  • IPFIX – konfigurace zařízení pro sběr a zpracování informací o IP tocích;
  • DNSCCM – správa a konfigurace serverů DNS.

Může se stát, že jazyk YANG v dlouhodobější perspektivě přesáhne svým významem rámec protokolu NETCONF, pro který byl výslovně vytvořen. NETCONF je totiž přece jen poplatný situaci v době svého vzniku, tedy téměř před deseti lety. Opakovaně se například objevují diskuse o možnosti použití YANGu v moderních aplikačních programových rozhraních typu REST.

Ohodnoťte jako ve škole:

Průměrná známka 1,00

Našli jste v článku chybu?
Zasílat nově přidané příspěvky e-mailem
Měšec.cz: Nové tarify? Výsměch všem šetřílkům

Nové tarify? Výsměch všem šetřílkům

Podnikatel.cz: Sick day ve hře. Ale s přísnými pravidly

Sick day ve hře. Ale s přísnými pravidly

Lupa.cz: Tip: tucet užitečných shieldů pro Arduino

Tip: tucet užitečných shieldů pro Arduino

Podnikatel.cz: Daň z příjmů: online formulář

Daň z příjmů: online formulář

Lupa.cz: Osmý plán na stavbu rychlých sítí je nedodělek

Osmý plán na stavbu rychlých sítí je nedodělek

Podnikatel.cz: First minute funguje. Čím dřív, tím levněji

First minute funguje. Čím dřív, tím levněji

Vitalia.cz: Pro otrlé: 42 obrázků, které budou na cigaretách

Pro otrlé: 42 obrázků, které budou na cigaretách

Lupa.cz: Stream koupil Červeného trpaslíka a další seriály

Stream koupil Červeného trpaslíka a další seriály

Vitalia.cz: Kouzlo generik: Jak se liší Paralen a Paralen Grip?

Kouzlo generik: Jak se liší Paralen a Paralen Grip?

Root.cz: Tails: superbezpečný systém nejen pro Snowdena

Tails: superbezpečný systém nejen pro Snowdena

Podnikatel.cz: Podal přiznání, má přeplatek. Nevrátí mu ho

Podal přiznání, má přeplatek. Nevrátí mu ho

Podnikatel.cz: Není jim to, tak to vrátí. Víme, jak na ně

Není jim to, tak to vrátí. Víme, jak na ně

Root.cz: Orange Pi Plus: malý počítač s Wi-Fi a SATA

Orange Pi Plus: malý počítač s Wi-Fi a SATA

120na80.cz: Domácí homeopatická lékárnička

Domácí homeopatická lékárnička

Měšec.cz: Braňte se zdražování elektřiny. Pošlete úřadu svůj názor

Braňte se zdražování elektřiny. Pošlete úřadu svůj názor

Podnikatel.cz: Kontrola ze sociálky se nedozvonila, má průšvih

Kontrola ze sociálky se nedozvonila, má průšvih

Podnikatel.cz: Legální fotka za cenu kávy. Na to máte, ne?

Legální fotka za cenu kávy. Na to máte, ne?

Podnikatel.cz: Co všechno se mění v účetnictví?

Co všechno se mění v účetnictví?

Podnikatel.cz: Nechtějí vrátit odpočet DPH? Chtějte úrok

Nechtějí vrátit odpočet DPH? Chtějte úrok

Vitalia.cz: Pozor na potraviny s atropinem

Pozor na potraviny s atropinem

Ušetřete