
Dans cet article, je vais expliquer comment configurer OpenDaylight pour travailler avec du matĂ©riel rĂ©seau, et je montrerai Ă©galement comment, avec Postman et des simples RESTCONF requĂȘtes, cet Ă©quipement peut ĂȘtre gĂ©rĂ©. Nous ne travaillerons pas directement sur le matĂ©riel, mais Ă la place, nous allons dĂ©ployer de petites laboratoires virtuels avec un seul routeur, Ă l'aide de Vrnetlab sur Ubuntu 20.04 LTS.
Je vais d'abord montrer la configuration détaillée à partir d'un exemple de routeur Juniper vMX 20.1R1.11, puis nous comparerons cela à la configuration de Cisco xRV9000 7.0.2.
Contenu
- Connaissances nécessaires
- Partie 1: nous discutons briĂšvement de OpenDaylight (ci-aprĂšs ODL), Postman et Vrnetlab et pourquoi nous en aurons besoin
- Partie 2: description du laboratoire virtuel
- Partie 3: configuration de OpenDaylight
- Partie 4: configuration de Vrnetlab
- Partie 5: Ă l'aide de Postman nous connectons le routeur virtuel (Juniper vMX) Ă ODL
- Partie 6: nous obtenons et modifions la configuration du routeur Ă l'aide de Postman et ODL
- Partie 7: ajout de Cisco xRV9000
- Conclusion
- P.S.
- Bibliographie
Connaissances nécessaires
Pour Ă©viter que l'article ne devienne trop long, j'ai omis certains dĂ©tails techniques (avec des liens vers la littĂ©rature oĂč vous pouvez en lire plus).
Par conséquent, je vous propose des sujets que vous devriez idéalement (mais pas nécessairement) connaßtre avant de lire :
- ,
- /
Partie 1 : un peu de théorie

- Plateforme SDN ouverte pour la gestion et l'automatisation de divers réseaux, supportée par Linux Foundation
- Java à l'intérieur
- Basé sur le ModÚle-Niveau d'Abstraction de Service Orienté ModÚle (MD-SAL)
- Utilise les modÚles YANG pour créer automatiquement l'API RESTCONF des dispositifs réseau
Module principal pour la gestion du réseau. C'est à travers lui que nous allons communiquer avec les appareils connectés. Géré via sa propre API.
Vous pouvez lire plus en détail sur OpenDaylight .

- Outil pour tester l'API
- Interface simple et conviviale
Dans notre cas, il nous intĂ©resse en tant qu'outil pour envoyer des requĂȘtes REST Ă l'API d'OpenDaylight. Bien sĂ»r, il est aussi possible d'envoyer des requĂȘtes manuellement, mais dans Postman, tout est trĂšs visuel et convient parfaitement Ă nos objectifs.
Pour ceux qui veulent approfondir : de nombreux matériaux d'apprentissage ont été écrits à ce sujet ().

- Outil pour déployer des routeurs virtuels dans Docker
- Supporte : Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
- Open Source
Un outil trÚs intéressant mais peu connu. Dans notre cas, nous allons utiliser cet outil pour lancer Juniper vMX et Cisco xRV9000 sur une Ubuntu 20.04 LTS classique.
Vous pouvez en lire plus Ă ce sujet sur .
Partie 2 : travaux pratiques
Dans le cadre de ce tutoriel, nous allons configurer le systĂšme suivant :

Comment cela fonctionne
- Juniper vMX est en cours d'élévation dans Docker dans un conteneur (avec les moyens Vrnetlab) et fonctionne comme un routeur virtuel classique.
- ODL connecté au routeur et permet de le gérer.
- Postman exécuté sur une machine séparée et par son intermédiaire nous envoyons des commandes ODL: pour connecter/déconnecter le routeur, modifier la configuration, etc.
Commentaire sur lâappareil du systĂšme
Juniper vMX et ODL nĂ©cessitent pas mal de ressources pour un fonctionnement stable. Un seul vMX demande 6 Go de mĂ©moire vive et 4 cĆurs. Par consĂ©quent, il a Ă©tĂ© dĂ©cidĂ© d'externaliser tous les "lourds" sur une machine sĂ©parĂ©e (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Le routeur, bien sĂ»r, ne "vole" pas dessus, mais pour de petites expĂ©riences, la performance est suffisante.
Partie 3 : configurons OpenDaylight

La version actuelle de l'ODL à l'heure de la rédaction de cet article est - Magnesium SR1
1) Installons Java OpenJDK 11 (pour une installation plus détaillée )
ubuntu:~$ sudo apt install default-jdk2) Trouvons et téléchargeons la derniÚre version ODL
3) Décompressons l'archive téléchargée
4) Allons dans le répertoire obtenu
5) Lançons .\/bin\/karaf
à ce stade ODL devrait se lancer et nous serons dans la console (Pour un accÚs externe, le port 8181 est utilisé, que nous utiliserons plus tard).
Ensuite, installons les fonctionnalités ODL, destinées à travailler avec les protocoles NETCONF et RESTCONF. Pour cela, dans la console ODL nous exécutons :
opendaylight-user@root> feature:install odl-netconf-topology odl-restconf-allĂ ce stade, la configuration la plus simple ODL est terminĂ©e. (Plus de dĂ©tails peuvent ĂȘtre lus ).
Partie 4 : configurons Vrnetlab

Préparation du systÚme
Avant l'installation Vrnetlab il est nécessaire d'installer les paquets requis pour son fonctionnement. Tels que , , :
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt -y install python3-bs4 sshpass make
ubuntu:~$ sudo apt -y install git
ubuntu:~$ sudo apt install -y
apt-transport-https ca-certificates
curl gnupg-agent software-properties-common
ubuntu:~$ curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -
ubunt... stable"
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt install -y docker-ce docker-ce-cli containerd.ioInstallation de Vrnetlab
Pour l'installation Vrnetlab clonons le dépÎt correspondant depuis github :
ubuntu:~$ cd ~
ubunt...$ git clone https:\/\/github.com\/plajjan\/vrnetlab.gitAllons dans le répertoire vrnetlab:
ubuntu:~$ cd ~\/vrnetlabIci, vous pouvez voir tous les scripts nécessaires au lancement. Remarquez qu'un répertoire correspondant a été créé pour chaque type de routeur :
ubuntu:~\/vrnetlab$ ls
CODE_OF_CONDUCT.md config-engine-lite openwrt vr-bgp
CONTRIBUTING.md csr routeros vr-xcon
LICENSE git-lfs-repo.sh sros vrnetlab.sh
Makefile makefile-install.include topology-machine vrp
README.md makefile-sanity.include veos vsr1000
ci-builder-image makefile.include vmx xrv
common nxos vqfx xrv9kCréons l'image du routeur
Chaque routeur supporté Vrnetlab, a sa propre procédure de configuration. Dans ce cas, Juniper vMX il nous suffit de placer l'archive .tgz contenant le routeur (vous pouvez la télécharger depuis ) dans le répertoire vmx et d'exécuter la commande make:
ubuntu:~$ cd ~\/vrnetlab\/vmx
ubuntu:~$ # Copiez l'archive .tgz du routeur dans ce répertoire
ubuntu:~$ sudo makeConstruction de l'image vMX cela prendra environ 10-20 minutes. C'est le moment d'aller préparer un café!
Pourquoi cela prend-il si longtemps, demandez-vous?
Traduction de l'auteur Ă cette question :
"C'est liĂ© au fait qu'au premier dĂ©marrage, le VCP (Control Plane) lit le fichier de configuration qui dĂ©termine s'il fonctionnera en tant que VRR VCP dans vMX. Auparavant, ce dĂ©marrage se faisait lors du lancement de Docker, mais cela signifiait que le VCP redĂ©marrait toujours une fois avant que le routeur virtuel ne soit disponible, ce qui entraĂźnait un long temps de chargement (environ 5 minutes). Maintenant, le premier dĂ©marrage du VCP se fait lors de la construction de l'image Docker, et puisque la construction Docker ne peut pas ĂȘtre exĂ©cutĂ©e avec l'option --privileged, cela signifie que qemu fonctionne sans l'accĂ©lĂ©ration matĂ©rielle KVM et, par consĂ©quent, la construction prend beaucoup de temps. Pendant ce processus, de nombreux journaux sont affichĂ©s, donc au moins vous pourrez voir ce qui se passe. Je pense que la longue construction n'est pas si terrible, car nous crĂ©ons l'image une seule fois, mais la dĂ©marrons plusieurs fois."
AprĂšs, nous pourrons voir l'image de notre routeur dans Docker:
ubuntu:~$ sudo docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab\/vr-vmx 20.1R1.11 b1b2369b453c 3 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MBLançons le conteneur vr-vmx
Nous lançons avec la commande :
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453cEnsuite, nous pouvons voir les informations sur les conteneurs actifs :
ubuntu:~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
120f882c8712 b1b2369b453c "\/launch.py" 2 minutes ago Up 2 minutes (unhealthy) 22\/tcp, 830\/tcp, 5000\/tcp, 10000-10099\/tcp, 161\/udp jun01Connectons-nous au routeur
L'adresse IP de l'interface rĂ©seau du routeur peut ĂȘtre obtenue avec la commande suivante :
ubuntu:~$ sudo docker inspect --format '{{.NetworkSettings.IPAddress}}' jun01
172.17.0.2Par défaut, Vrnetlab crée un utilisateur de routeur vrnetlab/VR-netlab9.
Connectons-nous avec ssh:
ubuntu:~$ ssh vrnetlab@172.17.0.2
L'authenticitĂ© de l'hĂŽte '172.17.0.2 (172.17.0.2)' ne peut pas ĂȘtre Ă©tablie.
L'empreinte de clé ECDSA est SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Ătes-vous sĂ»r de vouloir continuer Ă vous connecter (oui/non/[empreinte])? oui
Avertissement : Ajout permanent de '172.17.0.2' (ECDSA) Ă la liste des hĂŽtes connus.
Mot de passe:
--- JUNOS 20.1R1.11 Noyau 64 bits JNPR-11.0-20200219.fb120e7_buil
vrnetlab> show version
ModĂšle: vmx
Junos: 20.1R1.11Ceci termine la configuration du routeur.
Des recommandations d'installation pour les routeurs de divers fournisseurs sont disponibles sur dans les répertoires correspondants.
Partie 5 : Postman â connexion du routeur Ă OpenDaylight
Installation de Postman
Pour l'installation, il suffit de télécharger l'application .
Connexion du routeur Ă ODL
CrĂ©ons PUT requĂȘte :

- Chaine de requĂȘte :
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - Corps de la requĂȘte (onglet Body) :
<node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> <node-id>jun01</node-id> <host xmlns="urn:opendaylight:netconf-node-topology">172.17.0.2</host> <port xmlns="urn:opendaylight:netconf-node-topology">22</port> <username xmlns="urn:opendaylight:netconf-node-topology">vrnetlab</username> <password xmlns="urn:opendaylight:netconf-node-topology">VR-netlab9</password> <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only> <schema-cache-directory xmlns="urn:opendaylight:netconf-node-topology">jun01_cache</schema-cache-directory> </node> - Dans l'onglet Autorisation, il faut paramétrer
Basic Authet le nom d'utilisateur/mot de passe : admin/admin. Cela est nécessaire pour accéder à ODL :

- Dans l'onglet En-tĂȘtes, il faut ajouter deux en-tĂȘtes :
- Accept application/xml
- Content-Type application/xml
Notre requĂȘte est formĂ©e. Nous l'envoyons. Si tout Ă©tait correctement configurĂ©, nous devrions recevoir le statut "201 Created" :
![]()
Que fait cette requĂȘte ?
Nous créons un node à l'intérieur ODL avec les paramÚtres de l'équipement routeur réel auquel nous voulons accéder.
xmlns="urn:TBD:params:xml:ns:yang:network-topology"
xmlns="urn:opendaylight:netconf-node-topology"Ce sont des espaces de noms internes colonnes (espace de nom XML) selon lesquels il crée le node. ODL Ensuite, le nom du routeur est
node-id , l'adresse du routeur estetc. host La ligne la plus intĂ©ressante â la derniĂšre.
Schema-cache-directory crĂ©e un rĂ©pertoire oĂč tous les fichiers YANG Schema de l'Ă©quipement routeur connectĂ© sont extraits. Ils peuvent ĂȘtre trouvĂ©s dans $ODL_ROOT/cache/jun01_cache VĂ©rifions la connexion du routeur.
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
CrĂ©ons GET requĂȘte :
- Chaine de requĂȘte :
et le nom d'utilisateur/mot de passe : admin/admin. - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge.
Envoyons. Nous devrions obtenir le statut "200 OK" et la liste de tous les dispositifs pris en charge. de l'Ă©quipement routeur connectĂ© sont extraits. Ils peuvent ĂȘtre trouvĂ©s dans:

Commentaire: Pour voir la derniÚre, dans mon cas, il a fallu attendre environ 10 minutes aprÚs l'exécution PUT, pendant que tout le schéma YANG se chargeait sur ODL. Avant cela, lors de l'exécution de cette GET demande, le message suivant sera affiché :

Suppression du routeur
CrĂ©ons SUPPRIMER requĂȘte :
- Chaine de requĂȘte :
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge.
Partie 6 : Modifier la configuration du routeur
Obtenons la configuration
CrĂ©ons GET requĂȘte :
- Chaine de requĂȘte :
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/ - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge.
Envoyons. Nous devons obtenir le statut "200 OK" et la configuration du routeur :

Créons une configuration
à titre d'exemple, créons la configuration suivante et modifions-la :
protocols {
bgp {
disable;
shutdown;
}
}CrĂ©ons POST requĂȘte :
- Chaine de requĂȘte :
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols - Corps de la requĂȘte (onglet Body) :
- Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge. - Dans l'onglet En-tĂȘtes, il faut ajouter deux en-tĂȘtes :
- Accept application/xml
- Content-Type application/xml
AprĂšs l'envoi, nous devons obtenir le statut "204 No Content"
Pour vérifier que la configuration a été modifiée, on peut utiliser la demande précédente. Mais à titre d'exemple, nous en créerons une autre qui nous affichera uniquement les protocoles configurés sur le routeur.
CrĂ©ons GET requĂȘte :
- Chaine de requĂȘte :
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge.
AprÚs l'exécution de la demande, nous verrons ceci :

Modifier la configuration
Modifions les informations sur le protocole BGP. AprĂšs nos actions, cela apparaĂźtra comme suit :
protocols {
bgp {
disable;
}
}CrĂ©ons PUT requĂȘte :
- Chaine de requĂȘte :
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols - Corps de la requĂȘte (onglet Body) :
- Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge. - Dans l'onglet En-tĂȘtes, il faut ajouter deux en-tĂȘtes :
- Accept application/xml
- Content-Type application/xml
En utilisant la demande précédente, nous voyons les modifications : GET Supprimer la configuration

DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols
CrĂ©ons SUPPRIMER requĂȘte :
- Chaine de requĂȘte :
Pour la demande avec des informations sur les protocoles, nous verrons ceci : - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge.
Lors de l'appel GET Pour modifier la configuration, il n'est pas nécessaire d'envoyer le corps de la demande au format

La vulnérabilité a été confirmée dans de nombreuses images officielles Docker, y compris les images couchbase, elasticsearch, flink, solr, storm, etc.
. On peut le faire au format colonnesPour cela, par exemple, dans la demande JSON.
pour modifier la configuration, nous remplacerons le corps de la demande par : PUT { "junos-conf-protocols:protocols": { "bgp": { "description" : "Changé dans Postman" } } }
N'oubliez pas de changer les en-tĂȘtes sur l'onglet Headers Ă :Accept application/json
- Content-Type application/json
- AprÚs l'envoi, nous obtiendrons le résultat suivant (Voir la réponse en utilisant
AprĂšs l'envoi, nous obtiendrons le rĂ©sultat suivant (Regardons la rĂ©ponse en utilisant GET requĂȘte):

Partie 7 : ajout de Cisco xRV9000
Que savons-nous tous de Juniper, oui de Juniper ? Parlons de Cisco !
J'ai trouvĂ© une version xRV9000 7.0.2 (une bĂȘte qui nĂ©cessite 8 Go de RAM et 4 cĆurs. Elle n'est pas disponible librement, donc contactez ) â nous allons l'exĂ©cuter.
Lancer un conteneur
Le processus de crĂ©ation d'un conteneur Docker n'est pratiquement pas diffĂ©rent de Juniper. De la mĂȘme maniĂšre, nous plaçons le fichier .qcow2 avec le routeur dans le rĂ©pertoire correspondant Ă son nom, (dans ce cas xrv9k) et exĂ©cutons la commande make docker-image.
AprÚs quelques minutes, nous voyons que l'image a été créée :
ubuntu:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab\/vr-xrv9k 7.0.2 54debc7973fc 4 hours ago 1.7GB
vrnetlab\/vr-vmx 20.1R1.11 b1b2369b453c 4 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MBNous lançons le conteneur :
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fcAprÚs un certain temps, nous vérifions que le conteneur a démarré :
ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
058c5ecddae3 54debc7973fc "\/launch.py" 4 hours ago Up 4 hours (healthy) 22\/tcp, 830\/tcp, 5000-5003\/tcp, 10000-10099\/tcp, 161\/udp xrv01Nous nous connectons via ssh :
ubuntu@ubuntu:~$ ssh vrnetlab@172.17.0.2
Mot de passe :
RP\/0\/RP0\/CPU0:ios#show version
Mon Jul 6 12:19:28.036 UTC
Cisco IOS XR Software, Version 7.0.2
Copyright (c) 2013-2020 par Cisco Systems, Inc.
Informations de build :
Construit par : ahoang
Construit le : Ven Mar 13 22:27:54 PDT 2020
HĂŽte de build : iox-ucs-029
Espace de travail : \/auto\/srcarchive15\/prod\/7.0.2\/xrv9k\/ws
Version : 7.0.2
Emplacement : \/opt\/cisco\/XR\/packages\/\n Label : 7.0.2
cisco IOS-XRv 9000 () processeur
Le temps de fonctionnement du systĂšme est de 3 heures 22 minutesNous connectons le routeur Ă OpenDaylight
L'ajout se fait de maniĂšre totalement similaire Ă l'image vMX. Il suffit de changer les noms.
PUT requĂȘte :

AprĂšs un certain temps, nous invoquons GET la requĂȘte pour vĂ©rifier que tout est connectĂ© :

Modifier la configuration
Nous allons configurer la configuration suivante :
!
routeur ospf LAB
mpls ldp auto-config
!CrĂ©ons POST requĂȘte :
- Chaine de requĂȘte :
POST http:\/\/10.132.1.202:8181\/restconf\/config\/network-topology:network-topology\/topology\/topology-netconf\/node\/xrv01\/yang-ext:mount\/Cisco-IOS-XR-ipv4-ospf-cfg:ospf - Corps de la requĂȘte (onglet Body) :
{ "processes": { "process": [ { "process-name": "LAB", "default-vrf": { "process-scope": { "ldp-auto-config": [ null ] } } } ] } } - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge. - Dans l'onglet En-tĂȘtes, il faut ajouter deux en-tĂȘtes :
- Content-Type application/json
- AprÚs l'envoi, nous obtiendrons le résultat suivant (Voir la réponse en utilisant
AprÚs son exécution, nous devrions obtenir le statut "204 No Content".
Vérifions ce que nous avons obtenu.
Pour cela, nous allons crĂ©er GET requĂȘte :
- Chaine de requĂȘte :
GET http:\/\/10.132.1.202:8181\/restconf\/config\/network-topology:network-topology\/topology\/topology-netconf\/node\/xrv01\/yang-ext:mount\/Cisco-IOS-XR-ipv4-ospf-cfg:ospf - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge.
AprÚs exécution, nous devrions voir ce qui suit :

Pour supprimer la configuration, nous utilisons SUPPRIMER:
- Chaine de requĂȘte :
SUPPRIMER http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf - Dans l'onglet Autorisation, il faut paramétrer
Basic AuthNous l'envoyons. Nous devrions recevoir le statut "200 OK" et la liste de tous les appareils pris en charge.
Conclusion
Comme vous avez pu le constater, les procĂ©dures de connexion de Cisco et Juniper Ă OpenDaylight ne diffĂšrent pas â cela ouvre un large champ de crĂ©ativitĂ©. Cela va de la gestion des configurations de tous les composants du rĂ©seau Ă la crĂ©ation de vos propres politiques rĂ©seau.
Dans ce tutoriel, j'ai fourni des exemples simples de la maniĂšre d'interagir avec des Ă©quipements rĂ©seau Ă l'aide d'OpenDaylight. Il ne fait aucun doute que les requĂȘtes des exemples prĂ©sentĂ©s peuvent devenir beaucoup plus complexes et permettre de configurer des services entiers d'un simple clic â tout est limitĂ© uniquement par votre imagination.
Ă suivre...
P.S.
Si vous connaissez dĂ©jĂ tout cela ou, au contraire, si vous ĂȘtes tombĂ© sous le charme d'ODL, je vous recommande de vous intĂ©resser au dĂ©veloppement d'applications sur le contrĂŽleur ODL. Vous pouvez commencer ici. .
Je vous souhaite de bons essais !
Bibliographie
- / Brian Linkletter
- OpenDaylight Cookbook / Mathieu Lemay, Alexis de Talhouet, Et al.
- Programmabilité Réseau avec YANG / Benoßt Claise, Loe Clarke, Jan Lindblad
- Apprendre XML, DeuxiĂšme Ădition / Erik T. Ray
- DevOps Efficace / Jennifer Davis, Ryn Daniels
Source : habr.com

