30
Radek Krejčí [email protected] NETCONF a YANG NETCONF 29. listopadu 2014 Praha, IT 14.2

NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

  • Upload
    lethuan

  • View
    251

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

Radek Krej�í[email protected]

NETCONF a YANGNETCONF

29. listopadu 2014

Praha, IT 14.2

Page 2: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Jak funguje protokol NETCONF

Radek Krej�í NETCONF a YANG 29.11. 2014 1 / 28

Page 3: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Základní charakteristiky

klient-server protokolXML kódování zprávRPC mechanismusdefinuje komunikace mezi klientem a serveremdefinuje zp�sob manipulace s konfigura�ními daty a úloûiötmiRFC 6241 (v1.1) a dalöí

Radek Krej�í NETCONF a YANG 29.11. 2014 2 / 28

Page 4: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Vrstvy protokolu

Transportní vrstvaspojovaná komunikace (TCP) mezi klientem (NMS) aserverem (spravované za�ízení)zabezpe�ení (autentizace, integrita, d�v�rnost a ochrana protip�ehrání)SSH, TLS

Radek Krej�í NETCONF a YANG 29.11. 2014 3 / 28

Page 5: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Vrstvy protokolu

Vrstva zprávmechanismus RPC<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<close-session/></rpc>

<rpc-reply message-id="101"xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<ok/></rpc-reply>

<rpc>, <rpc-reply>, <notification>zahrnuje i framing

v1.0: pomocí sekvence ]]>]]>v1.1: po�et znak� ke �tení\n#22\n<rpc message-id="102"\n#79\nxmlns="urn:ietf:params:xml:ns:netconf:base:1.0">\n

<close-session/>\n</rpc>

\n##\nRadek Krej�í NETCONF a YANG 29.11. 2014 4 / 28

Page 6: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Vrstvy protokolu

Vrstva operacíRPC metody proveditelné serveremrozöi�itelná základní sada operací:<get>, <get-config>, <edit-config>, <copy-config>, <delete-config>,<lock>, <unlock>, <close-session>, <kill-session>

XML formátpárování poûadavek/odpov�� pomocí message-id

<rpc message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><close-session/>

</rpc>

Radek Krej�í NETCONF a YANG 29.11. 2014 5 / 28

Page 7: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Vrstvy protokolu

Vrstva obsahukonfigura�ní a stavová datapopis pomocí YANG model�

Radek Krej�í NETCONF a YANG 29.11. 2014 6 / 28

Page 8: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Komunikace

Radek Krej�í NETCONF a YANG 29.11. 2014 7 / 28

Page 9: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Rozöi�itelnost (capabilities)

moûnost rozöí�it základní funkcionalituseznam podporovan˝ch rozöí�ení sou�ástí <hello> zprávy

<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><capabilities>

<capability>urn:ietf:params:netconf:base:1.0</capability><capability>urn:ietf:params:netconf:base:1.1</capability>...<capability>urn:ietf:params:netconf:capability:with-defaults:1.0?

basic-mode=explicit&amp;also-supported=report-all,explicit</capability><capability>http://example.net/turing-machine?

module=turing-machine&amp;revision=2013-12-27</capability><capability>urn:cesnet:tmc:netopeer:1.0?

module=netopeer-cfgnetopeer&amp;revision=2013-02-14</capability><capability>urn:ietf:params:xml:ns:yang:ietf-netconf-server?

module=ietf-netconf-server&amp;revision=2014-01-24&amp;features=ssh,inbound-ssh,outbound-ssh</capability>

...</capabilities><session-id>10174</session-id>

</hello>

Radek Krej�í NETCONF a YANG 29.11. 2014 8 / 28

Page 10: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Konfigura�ní úloûiöt�

running (zapisovatelné s :writable-running)startup (:startup)candidate (:candidate)

Radek Krej�í NETCONF a YANG 29.11. 2014 9 / 28

Page 11: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Konfigura�ní vs. Stavová data

dáno datov˝m modelem (config false/true)stavová data pouze pomocí <get>

jednou operací lze m�nit více konfigura�ních poloûeknajednou, klient se nemusí starat o správné po�adí

Radek Krej�í NETCONF a YANG 29.11. 2014 10 / 28

Page 12: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Manipulace s konfigura�ními daty

získání konfigurace<get> nebo <get-config>

moûnost filtrování

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"><get-config>

<source><running/></source><filter type="subtree">

<turing-machine/></filter>

</get-config></rpc>

Radek Krej�í NETCONF a YANG 29.11. 2014 11 / 28

Page 13: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Manipulace s konfigura�ními daty

editace dat<edit-config>

operace merge, replace, create, delete, remove

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"><edit-config>

<target><running/></target><config>

<turing-machine xmlns="http://example.net/turing-machine"xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">

<transition-function><delta>

<label>1</label><input><state>1</state></input>

</delta><delta nc:operation="delete">

<label>2</label></delta>

</transaction-function></turing-machine>

</config></edit-config>

</rpc>Radek Krej�í NETCONF a YANG 29.11. 2014 12 / 28

Page 14: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Notifikace

rozöí�ení protokolu (RFC 5277)asynchronní zprávy o událostechpouze po p�edchozím p�ihláöení k odb�ru (subscribe)

Radek Krej�í NETCONF a YANG 29.11. 2014 13 / 28

Page 15: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Knihovna libnetconf a projekt Netopeer

Radek Krej�í NETCONF a YANG 29.11. 2014 14 / 28

Page 16: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

libnetconf

http://libnetconf.googlecode.com

implementace NETCONFu pro Linuxrozhraní pro jazyk C (a Python)implementace klientské i serverové �ásti

vlastnosti:verze 1.0 (RFC 4741) i 1.1 (RFC 6241)SSH i TLS transportNotifikaceNETCONF Access ControlCall Home:writable-running, :candidate, :startup, :startup, :validate,:url, :with-defaults

Radek Krej�í NETCONF a YANG 29.11. 2014 15 / 28

Page 17: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Netopeer

http://netopeer.googlecode.comhttps://github.com/CESNET/Netopeer-GUI

NETCONF aplikace pro Linux

tran

sAPI

mod

ul

tran

sAPI

mod

ul ...

Netopeer agent

Netopeer agent

Netopeerserver

...

Netopeer GUI

Netopeer CLI

network

Netopeer configurator

Netopeer manager

Radek Krej�í NETCONF a YANG 29.11. 2014 16 / 28

Page 18: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

netopeer-cli

jednoduchá p�íkazová �ádka

NMSUI

libne

tcon

fnetwork

libssh2

OpenSSH

Radek Krej�í NETCONF a YANG 29.11. 2014 17 / 28

Page 19: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Netopeer GUI

PHP frontend s backendem udrûujícím persistentní spojení

Web GUI(PHP, Sympfony)

libnetconf

network

libssh2

SSH server

NETCONFserver

Apache module

SSH server

NETCONFserver

Radek Krej�í NETCONF a YANG 29.11. 2014 18 / 28

Page 20: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

netopeer-server

systémov˝ daemon s moduly pro jednotlivá za�ízení

SSH

serv

er

network ...

datastorelibnetconf

agent

libnetconf

agentSSH

Subsystem tran

sAPI

mod

ul

tran

sAPI

mod

ul ...

libnetconf

libnetconf

netopeer-server

Radek Krej�í NETCONF a YANG 29.11. 2014 19 / 28

Page 21: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

TransAPI moduly

ietf-netconf-serverietf-systemietf-interfaces, ietf-ip

toaster, turing-machine

Radek Krej�í NETCONF a YANG 29.11. 2014 20 / 28

Page 22: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

TransAPI modulyImplementace Turingova stroje jako TransAPI modulu

Radek Krej�í NETCONF a YANG 29.11. 2014 21 / 28

Page 23: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

TransAPI

sou�ást knihovny libnetconfmechanismus callback� spojen˝ch s konkrétním datov˝mmodelemgenerátor lnctool(1)

Radek Krej�í NETCONF a YANG 29.11. 2014 22 / 28

Page 24: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

TransAPI

Globální prom�nné a inicializacepro �tení

transapi_version (r)config_modified (w)

pro zápiscallbacks_order (w)erropt (r)

int transapi_init(xmlDocPtr *running);

void transapi_close(void);

Radek Krej�í NETCONF a YANG 29.11. 2014 23 / 28

Page 25: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

TransAPI

Datové callbackyvolané p�i zm�n� v konkrétním míst� konfigura�ního stromuinformace o typu zm�ny – p�idání, smazání, zm�na,zpracovaná zm�na v potomku, zm�na po�adí sourozenc�,zm�na po�adí potomk�int callback(void **data, XMLDIFF_OP op, xmlNodePtr node,

struct nc_err **error);

speciální callback pro získání stavov˝ch informaci:xmlDocPtr get_state_data(xmlDocPtr model, xmlDocPtr running,

struct nc_err **err);

Radek Krej�í NETCONF a YANG 29.11. 2014 24 / 28

Page 26: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

TransAPI

RPC callbackyimplementace RPC metod definovan˝ch datov˝m modelemnc_reply *rpc(xmlNodePtr input[]);

Radek Krej�í NETCONF a YANG 29.11. 2014 25 / 28

Page 27: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

TransAPI

Souborové callbackycallback je vyvolan˝ zm�nou externího souboruint file_callback(const char *filepath, xmlDocPtr *edit_config,

int *exec);

Radek Krej�í NETCONF a YANG 29.11. 2014 26 / 28

Page 28: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Záv�r

Radek Krej�í NETCONF a YANG 29.11. 2014 27 / 28

Page 29: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

NETCONF libnetconf TransAPI Záv�r

Záv�r

Zdroje informací a komunika�ní kanálystránky projekt�mailing listy

Dalöí plánytransAPI modul pro Open vSwitchknihovna libyangodstran�ní závislosti na libxml2

Radek Krej�í NETCONF a YANG 29.11. 2014 28 / 28

Page 30: NETCONF a YANG - NETCONF · NETCONF libnetconf TransAPI Závr Základní charakteristiky klient-server protokol XML kódování zpráv RPC mechanismus definuje komunikace mezi klientem

Radek Krej�í[email protected]

Díky za pozornost

NETCONF a YANGNETCONF

29. listopadu 2014

Praha, IT 14.2