NETCONF: Porovnání verzí

Smazaný obsah Přidaný obsah
Robot: Opravuji 1 zdrojů a označuji 0 zdrojů jako nefunkční #IABot (v2.0beta15)
m Robot: oprava RFC; kosmetické úpravy
Řádek 1:
'''Network Configuration Protocol''' ('''NETCONF''') je standardem [[Internet Engineering Task Force|IETF]] pro správu síťových zařízení. První verze byla pracovní skupinou NETCONF publikována v prosinci 2006 jako [[rfc:4741|RFC 4741]]. Pozdější, revidovaná, verze protokolu byla zveřejněna v červnu 2011 jako [[rfc:6241|RFC 6241]], které protokol označuje jako ''Proposed Standard''. Na začátku roku 2013 se pracovní skupina shodla na záměru posunout specifikaci protokolu na úroveň ''Internet Standard''<ref>{{Citace elektronického periodika |titul=Archivovaná kopie |url=http://www.internetsociety.org/articles/successful-netconf-interoperability-testing-announced-ietf-85 |datum přístupu=2013-09-23 |url archivu=https://web.archive.org/web/20130509214452/http://www.internetsociety.org/articles/successful-netconf-interoperability-testing-announced-ietf-85 |datum archivace=2013-05-09 |nedostupné=ano }}</ref>.
 
'''Network Configuration Protocol''' ('''NETCONF''') je standardem [[Internet Engineering Task Force|IETF]] pro správu síťových zařízení. První verze byla pracovní skupinou NETCONF publikována v prosinci 2006 jako RFC 4741. Pozdější, revidovaná, verze protokolu byla zveřejněna v červnu 2011 jako RFC 6241, které protokol označuje jako ''Proposed Standard''. Na začátku roku 2013 se pracovní skupina shodla na záměru posunout specifikaci protokolu na úroveň ''Internet Standard''<ref>{{Citace elektronického periodika |titul=Archivovaná kopie |url=http://www.internetsociety.org/articles/successful-netconf-interoperability-testing-announced-ietf-85 |datum přístupu=2013-09-23 |url archivu=https://web.archive.org/web/20130509214452/http://www.internetsociety.org/articles/successful-netconf-interoperability-testing-announced-ietf-85 |datum archivace=2013-05-09 |nedostupné=ano }}</ref>.
 
NETCONF poskytuje mechanismus, kterým je manipulováno s konfiguračními daty síťového zařízení. Jednotlivé operace jsou prováděny na principu [[Remote procedure call|vzdáleného volání procedur]] (RPC), kdy klient specifikuje požadovanou operaci a její parametry, zatímco NETCONF server tuto operaci provede a klientovi vrátí odpověď s výsledkem. Komunikační zprávy jsou kódované pomocí [[Extensible Markup Language|XML]] a přenášeny pomocí transportního protokolu ([[Secure Shell|SSH]] nebo [[Transport Layer Security|TLS]]), který zajišťuje bezpečnost. Obsah přenášených konfiguračních dat je nad rámec protokolu NETCONF. Pro specifikaci konkrétních datových modelů konfiguračních dat jednotlivých zařízení je vhodné používat jazyk [[YANG]], který byl vyvinut přímo pro tyto potřeby.
Řádek 11 ⟶ 10:
Další komunikace mezi klientem a serverem je synchronní. Klient odesílá zprávu <rpc>, ve které specifikuje svůj požadavek. Server pak po vykonání požadované operace vrací zprávu <rpc-reply>, která podle typu požadavku obsahuje v případě úspěchu element &lt;data> s vyžádaným obsahem nebo <ok>, v případě chyby pak element <rpc-error> s dalšími informacemi o problému. Server může komunikovat s více klienty najednou, ale požadavky jsou vždy zpracovávány sériově.
 
[[rfc:5277|RFC 5277]] rozšiřuje základní protokol o asynchronní zprávy, tzv. notifikace. V tomto případě se klient přihlašuje k odběru (specifikované podmnožiny) notifikací, které server generuje na základě konkrétních událostí (přihlášení uživatele, změna konfiguračních dat apod.). Notifikace jsou pak klientovi doručovány asynchronně.
 
=== Transportní protokoly ===
 
NETCONF vyžaduje od transportního protokolu vytvoření dlouho-trvajícího, spojově orientovaného spojení. Transportní vrstva navíc poskytuje možnost zabezpečeného spojení včetně autentizace uživatele a kontroly integrity dat. Každá implementace protokolu NETCONF musí podporovat transport pomocí protokolu SSH ([[rfc:6242|RFC 6242]]). Jako další jsou (nebo historicky byly) podporovány:
 
* Simple Object Access Protocol (SOAP) - [[rfc:4743|RFC 4743]] (historic)
* Blocks Extensible Exchange Protocol (BEEP) - [[rfc:4744|RFC 4744]] (historic)
* Transport Layer Security (TLS) - [[rfc:5539|RFC 5539]]
 
=== Konfigurační data ===
Řádek 28 ⟶ 27:
* <candidate> - pracovní sada konfiguračních dat
 
NETCONF předpokládá, že obsahem datových úložišť je správně strukturovaný (well-formed) XML dokument. Pro definici obsahu těchto dokumentů vznikl v rámci pracovní skupiny NETMOD modelovací jazyk YANG ([[rfc:6020|RFC 6020]]). V rámci stejné pracovní skupiny pak probíhá i standardizace některých obecných datových modelů pro konfiguraci síťových zařízení.
 
Z pohledu NETCONF se data v úložišti dělí na stavová (nelze je konfigurovat) a konfigurační (uživatel může změnit jejich hodnotu).
Řádek 34 ⟶ 33:
=== Základní operace ===
 
[[rfc:6241|RFC 6241]] definuje základní sadu operací pro manipulaci s konfiguračními daty konfigurovaného zařízení:
 
* <get> - získání všech konfiguračních i stavových dat zařízení
Řádek 52 ⟶ 51:
=== Rozšíření ===
 
Protokol může být dále rozšiřován pomocí tzv. ''capabilities'', které umožňují zejména přidávat nové operace a případně měnit chování operací stávajících. Při navazování spojení oznamuje server v rámci své <hello> zprávy sadu podporovaných rozšíření a popisuje tak klientovi své chování během další komunikace. Již [[rfc:6241|RFC 6241]], definující základní chování protokolu NETCONF, obsahuje i následující sadu rozšíření:
 
* Writable-Running - umožňuje zápis do datového úložiště <running>
Řádek 65 ⟶ 64:
Mezi další významná rozšíření patří:
 
* Event Notifications - doručování asynchronních zpráv ([[rfc:5277|RFC 5277]])
* With-Defaults - práce s výchozími hodnotami definovanými v datovém modelu ([[rfc:6243|RFC 6243]])
* Partial Locking - zamykání přístupu k samostatným částem datových úložišť ([[rfc:5717|RFC 5717]])
* Access Control - řízení přístupu uživatelů ke konfiguračním datům a operacím ([[rfc:6536|RFC 6536]])
 
 
== Historie ==
 
Od 80. let 20. století se pro potřeby správy sítí využíval hlavně protokol [[Simple Network Management Protocol|SNMP]]. Oproti svému původnímu účelu byl však tento protokol využíván hlavně k monitoringu a detekci chyb (fault management). Úlohu konfigurace však přebraly zejména proprietární rozhraní jednotlivých výrobců. V roce 2002 se vzniklou situaci rozhodlo řešit IETF. [[Internet Architecture Board|IAB]] uspořádalo pracovní setkání se síťovými operátory a jako výsledek vzniklo [[rfc:3535|RFC 3535]], které popisuje požadavky a podněty operátorů ke správě sítí a síťových zařízení.
 
V rámci IETF byl vznik nové pracovní skupiny iniciován hned v polovině roku 2002. Pracovní skupina NETCONF pak oficiálně vznikla v dubnu 2003.
Při vývoji nového protokolu byl jako základ použit JUNOScript, společnosti [[Juniper Networks]]. Specifikace protokolu NETCONF pak byla zveřejněna v prosinci 2006. Společně s [[rfc:4741|RFC 4741]] byly vydány i další RFC, které popisují použití protokolu NETCONF s využitím [[Secure Shell|SSH]] ([[rfc:4742|RFC 4742]]), [[Simple Object Access Protocol|SOAP]] ([[rfc:4743|RFC 4743]]) a [[Blocks Extensible Exchange Protocol|BEEP]] ([[rfc:4744|RFC 4744]]). V květnu 2009 pak byla zveřejněna ještě specifikace použití protokolu NETCONF společně s [[Transport Layer Security|TLS]] ([[rfc:5539|RFC 5539]]), naopak RFC dokumenty popisující použití s protokoly SOAP a BEEP byly v říjnu 2012 označeny jako ''Historic''.
 
== Dostupné implementace ==
 
Pracovní skupina NETCONF se snaží udržovat přehled všech implementací protokolu NETCONF<ref>http://trac.tools.ietf.org/wg/netconf/trac/wiki#NetconfImplementations</ref>. Následující seznam obsahuje [[Otevřený software|open-source]] implementace protokolu NETCONF podle [[rfc:6241|RFC 6241]].
 
;libnetconf
:* Sdílená knihovna v jazyce C pro prostředí GNU/Linux, umožňuje implementaci jak NETCONF klienta, tak i NETCONF serveru. Součástí jsou i ukázkové aplikace a rozhraní pro tvorbu serverových modulů.
:* licence: BSD
:* web: https://code.google.com/p/libnetconf/
;ncclient
:Python knihovna pro vývoj klientských aplikací.
:* licence: Apache License 2.0
:* web: https://github.com/vbajpai/ncclient
;net-netconf
:* Implementace klientské strany v Ruby.
:* licence: BSD
:* web: https://github.com/Juniper/net-netconf
;NetconfX 2.0
:* Implementace klientské strany v Javě.
:* licence: GNU GPL v3
:* web: https://web.archive.org/web/20130517120555/http://www.centeredlogic.com/netconfx_main.html
;OpenYuma
:* Klon zaniklého projektu Yuma, obsahuje NETCONF klient, server a YANG kompilátor pro tvorbu serverových modulů. Určeno pro prostředí GNU/Linux a jazyk C.
:* licence: BSD
:* web: https://github.com/OpenClovis/OpenYuma
;yuma123
:* Další klon zaniklého projektu Yuma.
:* web: http://sourceforge.net/projects/yuma123/
:* licence: BSD