Upload
lethuan
View
251
Download
0
Embed Size (px)
Citation preview
NETCONF libnetconf TransAPI Záv�r
Jak funguje protokol NETCONF
Radek Krej�í NETCONF a YANG 29.11. 2014 1 / 28
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
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
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
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
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
NETCONF libnetconf TransAPI Záv�r
Komunikace
Radek Krej�í NETCONF a YANG 29.11. 2014 7 / 28
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&also-supported=report-all,explicit</capability><capability>http://example.net/turing-machine?
module=turing-machine&revision=2013-12-27</capability><capability>urn:cesnet:tmc:netopeer:1.0?
module=netopeer-cfgnetopeer&revision=2013-02-14</capability><capability>urn:ietf:params:xml:ns:yang:ietf-netconf-server?
module=ietf-netconf-server&revision=2014-01-24&features=ssh,inbound-ssh,outbound-ssh</capability>
...</capabilities><session-id>10174</session-id>
</hello>
Radek Krej�í NETCONF a YANG 29.11. 2014 8 / 28
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
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
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
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
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
NETCONF libnetconf TransAPI Záv�r
Knihovna libnetconf a projekt Netopeer
Radek Krej�í NETCONF a YANG 29.11. 2014 14 / 28
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
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
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
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
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
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
NETCONF libnetconf TransAPI Záv�r
TransAPI modulyImplementace Turingova stroje jako TransAPI modulu
Radek Krej�í NETCONF a YANG 29.11. 2014 21 / 28
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
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
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
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
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
NETCONF libnetconf TransAPI Záv�r
Záv�r
Radek Krej�í NETCONF a YANG 29.11. 2014 27 / 28
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
Radek Krej�í[email protected]
Díky za pozornost
NETCONF a YANGNETCONF
29. listopadu 2014
Praha, IT 14.2