netconf et yang

17
NETCONF & YANG M. ANTITENE Laboratoire Informatique Paris VI (LIP6)

Upload: makhlouf-antitene

Post on 19-Jan-2017

107 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: Netconf et Yang

NETCONF & YANG

M. ANTITENELaboratoire Informatique Paris VI (LIP6)

Page 2: Netconf et Yang

Motivations Un protocole pour le management du réseau

Séparer entre un état de configuration et un état opérationnel

Assurer la persistance des configurations

Notifications, dump and restore

Page 3: Netconf et Yang

Configuration Management Protocol

SNMPLargement utilisé, monitoringComplexité de la gestion des configurations

NETCONFXML-based encoding protocolMécanisme RPCSécurisé (SSH, SSL …)Utilise un modèle pour structurer les données (YANG)

Page 4: Netconf et Yang

Configuration Management Protocol

Description SNMP NETCONFConfig vs operationnel state - +

Multiple Configs - +

Persistance of config state ° +

Configs change & Notification Events

- +

Config dump & restore - +

Support of standard tools - +

Page 5: Netconf et Yang

NETCONF Protocole en couches

CouchesExemple Content

Operations

RPC

Transport Protocol

Configuration Data

<get-config>, <edit-config>

<rpc>, <rpc-reply>

BEEP, SSH, SSL,

console

Page 6: Netconf et Yang

NETCONF Transport Messages encodé en XML

Messages crypté en SSHNetconf over SSH, SOAP, BEEP Authentification, intégrité et confidentialité

Orienté connexion TCPPlusieurs ports TCP sont définit : 830, 831, 832, 833, 6513 / tcp

<?xml version="1.0" encoding="UTF-8"?> <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">

<capabilities> <capability>urn:ietf:params:netconf:base:1.0</capability> </capabilities> </hello>]]>]]>

Page 7: Netconf et Yang

NETCONF RPC Model Les méthodes RPC sont insérées dans le corps d’un message XML

RPC Elements:

<rpc message-id="101"  xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <some-method> <!-- method parameters here... --> </some-method> </rpc>

<rpr-reply><rpc-reply message-id="101"  xmlns="urn:ietf:params:xml:ns:netconf:base:1.0«  xmlns:ex="http://example.net/content/1.0" ex:user-id="fred"> <data> <!-- contents here... --> </data> </rpc-reply>

<rpr-error><rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <rpc-error> <error-type>rpc</error-type> <error-tag>missing-attribute</error-tag> <error-severity>error</error-severity> <error-info> <bad-attribute>message-id</bad-attribute> <bad-element>rpc</bad-element> </error-info> </rpc-error> </rpc-reply>

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

Page 8: Netconf et Yang

NETCONF Configuration Data Store

Etats du système

Définit par des Capabilities :running, :startup, :candidate, :writable-running

Informe sur les capacités supportées par la database

Startup

Running

Candidate

Page 9: Netconf et Yang

NETCONF Configuration Data Store

<running/>Représente l’état active des configurations actuellesPermet à cette base de donnée d’être directement modiféeContient les informations sur l’état de l’équipement

<candidate/>Regroupe les configurations à appliquer après qu’elle soient validé par le serveurLes changements fait sur cette BDD ne s’applique pas immédiatementUtilisation d’opérations: <lock>, <commit> pour validation

<Startup/>Représente les Configs à appliquer lors du prochain redémarrage

Opération <copy-config> pour copier la dernière sauvegarde de config

Page 10: Netconf et Yang

NETCONF Base OperationsOpérations Descriptionget Récupérer les infos de configs à partir de la running database

ou des statistiques get-config Récupérer les infos de configs à partir de la running database edit-config Modifier les configurations dans la databasecopy-config Copier les configurationsdelete-config Supprimer les configurationscommit Commit du contenu de la config de <candidate/> ver

<running/> database lock Bloquer l’écriture sur la database par d’autres sessionsunlock Débloquer l’écriture sur la database par d’autres sessionsvalidate Valider tout le contenu de la databaseclose-session Fermer la session activekill-session Fermer d’autres sessions

Page 11: Netconf et Yang

NETCONF Base Operations Before Editing: Quelle database utilisé ?

Options de sauvegarde

if ':candidate' capability supported: target = <candidate/>else if ':writable-running' capability supported: target = <running/> else if ':url' capability supported: target = <url>file://path/to/file</url> else: target = None # Server is non-complaint

if ':startup' capability supported: save_fn = <copy-config>

<target><startup/></target> <source><running/></source>

</copy-config> Else save_fn = None # automatic NV-update

Page 12: Netconf et Yang

Candidate Configuration Example <rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <lock> <target><running/></target> </lock> </rpc># server returns <ok/> status

<rpc message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <lock> <target><candidate/></target> </lock> </rpc> # server returns <ok/> status

<rpc message-id="103" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <edit-config> <target><candidate/></target> <default-operation>none</default-operation> <test-option>test-then-set</test-option> <config> <interface xmlns= " urn:ietf:params:xml:ns:yang:ietf-interfaces "  

<name>eth1</name><ipv4-address>192.168.1.3</ipv4-address><macaddr>ab:cd:ef:gh:ij:kl</macaddr>

</config> </edit-config> </rpc> # server returns <ok/> status #Commit then Unlock Candidate and Running DataBase

L’ensemble des RPC à exécuter:1. lock <running/> database

2. lock <candidate/> database

3. edit <candidate/> database

4. commit <candidate/> database

5. unlock <candidate/> database

6. unlock <running/> database

NETCONF Base Operations

Page 13: Netconf et Yang

YANG Langage pour la modélisation des données Utilisé par NETCONF (couche content)

• Configuration data• State data

Description hiérarchique des données Interaction entre les modules et sous-modules

• Include• import

Module 1

Submodule A

Module 2

Submodule Z Submodule Y Submodule X

Include import

Page 14: Netconf et Yang

Modules & Submodules

Header Information

Imports & Includes

Type definition

Config, operational data declaration

RPC, notification declaration

YANG Module Content

Page 15: Netconf et Yang

Data Modeling Data nodes:

leaf, leaf-list, container, list Yang data types :

Base types : Int8/16/32/64, uint8/6/32/64, string, enumeration, boolean … Derived types (typedef), reusable nodes (grouping) …

container system { list user { key name; leaf name {

type string; } leaf uid {

type uint32; } leaf full-name {

tyoe string; } leaf hostname{ type string; mandatory true; config true;}

user

name uid full-name

hostname

system

Page 16: Netconf et Yang

YANG module example module acme-system { namespace "http://acme.example.com/system"; prefix "acme"; organization "ACME Inc."; contact "[email protected]"; description "The module for entities implementing the ACME system."; revision 2007-11-05 { description "Initial revision."; } container system { leaf host-name { type string; description "Hostname for this system"; } leaf-list domain-search { type string; description "List of domain names to search"; } list interface { key "name"; description "List of interfaces in the system"; leaf name { type string; } leaf type { type string; } leaf mtu { type int32; } } } }

Page 17: Netconf et Yang