Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

In diesem Artikel werde ich erklären, wie man einrichtet OpenDaylight um mit Netzwerkausrüstung zu arbeiten, und ich werde zeigen, wie man mit Hilfe von Postman und einfachen RESTCONF Anfragen diese Ausrüstung steuern kann. Wir werden nicht mit Hardware arbeiten, sondern stattdessen kleine virtuelle Labore mit einem einzigen Router mithilfe von Vrnetlab auf Ubuntu 20.04 LTS.

Die detaillierte Konfiguration werde ich zunächst am Beispiel des Routers Juniper vMX 20.1R1.11, und dann vergleichen wir sie mit der Konfiguration von Cisco xRV9000 7.0.2.

Inhalt

  • Notwendige Kenntnisse
  • Teil 1: kurz besprechen wir OpenDaylight (im Folgenden ODL), Postman und Vrnetlab und warum wir sie benötigen
  • Teil 2: Beschreibung des virtuellen Labors
  • Teil 3: wir konfigurieren OpenDaylight
  • Teil 4: wir konfigurieren Vrnetlab
  • Teil 5: mithilfe von Postman verbinden wir den virtuellen Router (Juniper vMX) mit ODL
  • Teil 6: wir erhalten und ändern die Konfiguration des Routers mit Hilfe von Postman und ODL
  • Teil 7: fügen wir Cisco xRV9000 hinzu
  • Fazit
  • P.S.
  • Literaturliste

Notwendige Kenntnisse

Damit der Artikel nicht zu einer langen Abhandlung wird, habe ich einige technische Einzelheiten weggelassen (mit Verweisen auf die Literatur, wo man darüber lesen kann).

In diesem Zusammenhang schlage ich Ihnen Themen vor, die gut zu wissen wären (aber nicht unbedingt) vor dem Lesen:

Teil 1: ein wenig Theorie

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

  • Eine offene SDN-Plattform für die Verwaltung und Automatisierung aller Arten von Netzwerken, unterstützt von Linux Foundation
  • Java inside
  • Basierend auf Model-Driven Service Abstraction Level (MD-SAL)
  • Verwendet YANG-Modelle zur automatischen Erstellung von RESTCONF-APIs für Netzwerkgeräte

Das Hauptmodul zur Netzwerkverwaltung. Genau darüber werden wir mit den angeschlossenen Geräten kommunizieren. Wird über die eigene API gesteuert.

Mehr Informationen über OpenDaylight können Sie lesen hier.

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

  • Ein Tool zum Testen von APIs
  • Eine einfache und benutzerfreundliche Oberfläche

In unserem Fall ist es für uns interessant als Mittel zum Senden von REST-Anfragen an die API von OpenDaylight. Man kann natürlich auch Anfragen manuell senden, aber in Postman sieht alles sehr übersichtlich aus und eignet sich am besten für unsere Zwecke.

Für Interessierte: Es gibt viele Lernmaterialien darüber (zum Beispiel).

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

  • Ein Tool zum Bereitstellen virtueller Router in Docker
  • Unterstützt: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR und andere.
  • Open Source

Ein sehr interessantes, aber wenig bekanntes Tool. In unserem Fall werden wir damit Juniper vMX und Cisco xRV9000 auf einem gewöhnlichen Ubuntu 20.04 LTS starten.

Mehr darüber kann man lesen auf Projekseite.

Teil 2: Laborarbeit

Im Rahmen dieses Tutorials werden wir folgende Systeme konfigurieren:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Die DANE-Spezifikation ist in

  • Juniper vMX wird in Docker Container (mit Hilfe von Vrnetlab) und funktioniert wie ein ganz normaler virtueller Router.
  • ODL mit dem Router verbunden und ermöglicht dessen Verwaltung.
  • Postman wird auf einer separaten Maschine ausgeführt und über ihn senden wir Befehle ODL: zur Verbindung/Trennung des Routers, zur Änderung der Konfiguration usw.

Kommentar zum Gerätesystem

Juniper vMX und ODL benötigt ziemlich viele Ressourcen für einen stabilen Betrieb. Allein vMX erfordert 6 GB RAM und 4 Kerne. Daher wurde beschlossen, alle "schweren" Komponenten auf eine separate Maschine auszulagern (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Der Router läuft darauf zwar nicht "flüssig", aber für kleine Experimente reicht die Leistung aus.

Teil 3: OpenDaylight konfigurieren

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Die aktuelle Version von ODL zum Zeitpunkt des Schreibens des Artikels ist – Magnesium SR1

1) Installieren wir Java OpenJDK 11 (für eine detailliertere Installation hier)

ubuntu:~$ sudo apt install default-jdk

2) Suchen und laden wir die neueste Version herunter ODL von hier
3) Entpacken wir das heruntergeladene Archiv
4) Gehen wir in das erhaltene Verzeichnis
5) Starten wir ./bin/karaf

An dieser Stelle ODL sollte es starten und wir werden in der Konsole sein (Für den externen Zugriff wird Port 8181 verwendet, was wir später nutzen werden).

Dann installieren wir ODL Features, die für die Arbeit mit Protokollen gedacht sind NETCONF und RESTCONF. Dafür führen wir in der Konsole aus: ODL opendaylight-user@root> feature:install odl-netconf-topology odl-restconf-all

Damit ist die einfachste Konfiguration

fertig. (Detailliertere Informationen finden Sie ODL Teil 4: Vrnetlab konfigurieren hier).

Vor der Installation

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Systemvorbereitung

müssen die erforderlichen Pakete für dessen Betrieb installiert werden. Solche wie Vrnetlab sshpass Docker, git, 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 - ubuntu:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ubuntu:~$ sudo apt update ubuntu:~$ sudo apt install -y docker-ce docker-ce-cli containerd.io:

Installation von Vrnetlab

wir klonen das entsprechende Repository von GitHub:

Zur Installation Vrnetlab ubuntu:~$ cd ~ ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git

vrnetlab

Wir navigieren in das Verzeichnis ubuntu:~$ cd ~/vrnetlab:

Hier sind alle Skripte zu sehen, die für den Start benötigt werden. Beachten Sie, dass für jeden Routertyp ein entsprechendes Verzeichnis erstellt wurde:

Здесь можно увидеть все скрипты, необходимые для запуска. Обратите внимание, что для каждого типа роутера сделана соответствующая директория:

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              xrv9k

Erstellen eines Router-Images

Jeder unterstützte Router Vrnetlab, hat sein eigenes einzigartiges Konfigurationsverfahren. Im Falle von Juniper vMX müssen wir lediglich das .tgz-Archiv mit dem Router (das können Sie herunterladen von der offiziellen Website) in das Verzeichnis vmx verschieben und den Befehl ausführen make:

ubuntu:~$ cd ~\/vrnetlab\/vmx
ubuntu:~$ # Kopieren Sie das .tgz-Archiv mit dem Router in dieses Verzeichnis
ubuntu:~$ sudo make

Erstellung des Images vMX dauert etwa 10-20 Minuten. Es ist der perfekte Zeitpunkt, um einen Kaffee zu kochen!

Warum dauert das so lange, fragen Sie sich?

Übersetzung Antwort des Autors auf diese Frage:

"Das liegt daran, dass beim ersten Start VCP (Control Plane) die Konfigurationsdatei liest, die bestimmt, ob es als VRR VCP im vMX arbeiten wird. Früher wurde dieser Start während des Docker-Starts durchgeführt, was bedeutete, dass VCP immer einmal neu gestartet wurde, bevor der virtuelle Router verfügbar wurde, was zu langen Ladezeiten (ca. 5 Minuten) führte. Jetzt erfolgt der erste Start von VCP während des Docker-Image-Baus, und da der Docker-Bau nicht mit der Option --privileged gestartet werden kann, bedeutet dies, dass qemu ohne Hardwarebeschleunigung KVM arbeitet und die Erstellung daher sehr lange dauert. Während dieses Prozesses werden viele Protokolle ausgegeben, sodass Sie zumindest sehen, was passiert. Ich denke, dass eine lange Erstellung nicht so schlimm ist, weil wir das Image einmal erstellen und es viele Male verwenden."

Nach Abschluss können wir das Image unseres Routers sehen in Docker:

ubuntu:~$ sudo docker image list
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
vrnetlab\/vr-vmx     20.1R1.11           b1b2369b453c        vor 3 Wochen       4.43GB
debian              stretch             614bb74b620e        vor 7 Wochen       101MB

Starten des vr-vmx Containers

Starten mit dem Befehl:

ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c

Anschließend können wir die Informationen über die aktiven Container anzeigen:

ubuntu:~$ sudo docker container list
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS                                                 NAMES
120f882c8712        b1b2369b453c        "\/launch.py"        vor 2 Minuten      Läuft seit 2 Minuten (unhealthy)   22\/tcp, 830\/tcp, 5000\/tcp, 10000-10099\/tcp, 161\/udp   jun01

Verbinden mit dem Router

Die IP-Adresse der Netzwerkschnittstelle des Routers kann mit dem folgenden Befehl erhalten werden:

ubuntu:~$ sudo docker inspect --format '{{.NetworkSettings.IPAddress}}' jun01
172.17.0.2

Standardmäßig Vrnetlab erzeugt beim Router des Benutzers vrnetlab/VR-netlab9.
Wir verbinden uns über ssh:

ubuntu:~$ ssh vrnetlab@172.17.0.2
Die Authentizität des Hosts '172.17.0.2 (172.17.0.2)' kann nicht bestätigt werden.
ECDSA-Schlüssel-Fingerprint ist SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein/[Fingerprint])? ja
Warnung: '172.17.0.2' (ECDSA) wurde permanent zur Liste der bekannten Hosts hinzugefügt.
Passwort:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> show version
Modell: vmx
Junos: 20.1R1.11

Damit ist die Konfiguration des Routers abgeschlossen.

Installationstipps für Router verschiedener Anbieter finden Sie unter github Projekt in den entsprechenden Verzeichnissen.

Teil 5: Postman - Router mit OpenDaylight verbinden

Installation von Postman

Für die Installation genügt es, die Anwendung herunterzuladen von hier.

Anschluss des Routers an ODL

für das Init-System SystemD: PUT Anfrage:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

  1. Anfragestruktur:
    PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
  2. Anfragetext (Reiter Body):
    jun01
    172.17.0.2
    22
    vrnetlab
    VR-netlab9
    false
    jun01_cache
  3. Im Reiter Authorization muss der Parameter Basic Auth und Benutzername/Passwort: admin/admin angegeben werden. Dies ist erforderlich, um auf ODL zuzugreifen:
    Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut
  4. Im Reiter Headers müssen zwei Header hinzugefügt werden:
    • Accept application/xml
    • Content-Type application/xml

Unsere Anfrage ist formuliert. Wir senden sie ab. Wenn alles richtig konfiguriert war, sollten wir den Status "201 Created" zurückbekommen:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Was bewirkt diese Anfrage?

Wir erstellen einen Node innerhalb ODL mit den Parametern des echten Routers, auf den wir zugreifen möchten.

xmlns="urn:TBD:params:xml:ns:yang:network-topology"
xmlns="urn:opendaylight:netconf-node-topology"

Dies sind interne Namensräume XML (XML-Namespace) gemäß denen es den Node erstellt. ODL Darüber hinaus ist der Name des Routers -

node-id , die Adresse des Routers -usw. host Die interessanteste Zeile ist die letzte.

Schema-cache-directory erstellt ein Verzeichnis, in das alle Dateien YANG-Schema des angeschlossenen Routers heruntergeladen werden. Diese finden Sie unter $ODL_ROOT/cache/jun01_cache Überprüfen wir die Verbindung des Routers.

GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/

für das Init-System SystemD: GET Anfrage:

  1. Anfragestruktur:
    und Benutzername/Passwort: admin/admin.
  2. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.

Отправляем. Должны получить статус "200 OK" и список всех поддерживаемых устройством des angeschlossenen Routers heruntergeladen werden. Diese finden Sie unter:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Kommentar: Um das Neueste zu sehen, musste ich in meinem Fall etwa 10 Minuten nach der Ausführung warten PUT, bis alles YANG-Schema aufgeladen wird. ODLBis zu diesem Zeitpunkt wird bei der Ausführung dieser GET Anfrage Folgendes ausgegeben:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Router löschen

für das Init-System SystemD: DELETE Anfrage:

  1. Anfragestruktur:
    DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
  2. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.

Teil 6: Routerkonfiguration ändern

Konfiguration abrufen

für das Init-System SystemD: GET Anfrage:

  1. Anfragestruktur:
    GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
  2. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.

Senden. Wir sollten den Status "200 OK" und die Routerkonfiguration erhalten:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Konfiguration erstellen

Als Beispiel erstellen wir die folgende Konfiguration und ändern sie:

protocols {
    bgp {
        disable;
        shutdown;
    }
}

für das Init-System SystemD: POST Anfrage:

  1. Anfragestruktur:
    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
  2. Anfragetext (Reiter Body):
  3. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.
  4. Im Reiter Headers müssen zwei Header hinzugefügt werden:
    • Accept application/xml
    • Content-Type application/xml

Nach dem Senden sollten wir den Status "204 No Content" erhalten.

Um zu überprüfen, ob die Konfiguration geändert wurde, können wir die vorherige Anfrage verwenden. Aber als Beispiel erstellen wir eine weitere, die uns nur Informationen über die auf dem Router konfigurierten Protokolle ausgeben wird.

für das Init-System SystemD: GET Anfrage:

  1. Anfragestruktur:
    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
  2. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.

Nach der Ausführung der Anfrage sehen wir Folgendes:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Konfiguration ändern

Wir ändern die Informationen über das BGP-Protokoll. Nach unseren Änderungen wird sie folgendermaßen aussehen:

protocols {
    bgp {
        disable;
    }
}

für das Init-System SystemD: PUT Anfrage:

  1. Anfragestruktur:
    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
  2. Anfragetext (Reiter Body):
  3. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.
  4. Im Reiter Headers müssen zwei Header hinzugefügt werden:
    • Accept application/xml
    • Content-Type application/xml

Mit der vorherigen GET Anfrage sehen wir die Änderungen:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Konfiguration löschen

für das Init-System SystemD: DELETE Anfrage:

  1. Anfragestruktur:
    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
  2. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.

Beim Aufruf von GET Bei der Anfrage mit Informationen zu den Protokollen sehen wir Folgendes:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Zusatz:

Um die Konfiguration zu ändern, ist es nicht erforderlich, den Anfragekörper im Format XMLzu senden. Das kann auch im Format JSON.

gemacht werden. Zum Beispiel ersetzen wir im Anfrage PUT zur Änderung der Konfiguration den Anfragekörper durch:

{
    "junos-conf-protocols:protocols": {
        "bgp": {
            "description" : "In Postman geändert"
        }
    }
}

Vergessen Sie nicht, die Header auf der Registerkarte auf Folgendes zu ändern:

  • Accept application/json
  • Content-Type application/json

Nach dem Senden erhalten wir folgendes Ergebnis (Antwort überprüfen wir mit GET Anfrage):

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Teil 7: Cisco xRV9000 hinzufügen

Was haben wir alle über Juniper gesprochen, ja über Juniper? Lassen Sie uns über Cisco reden!
Ich habe ein xRV9000 in der Version 7.0.2 gefunden (ein Monster, das 8 GB RAM und 4 Kerne benötigt. Es ist nicht öffentlich verfügbar, daher wenden Sie sich an Cisco) — damit werden wir es starten.

Starten eines Containers

Der Prozess zur Erstellung eines Docker-Containers unterscheidet sich kaum von dem bei Juniper. Ebenso legen wir die .qcow2-Datei des Routers in das Verzeichnis ab, das seinem Namen entspricht (in diesem Fall xrv9k) und führen den Befehl aus make docker-image.

Nach ein paar Minuten sehen wir, dass das Image erstellt wurde:

ubuntu:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-xrv9k 7.0.2 54debc7973fc vor 4 Stunden 1.7GB
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c vor 4 Wochen 4.43GB
debian stretch 614bb74b620e vor 7 Wochen 101MB

Wir starten den Container:

ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc

Nach einiger Zeit sehen wir, dass der Container gestartet wurde:

ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
058c5ecddae3 54debc7973fc "/launch.py" vor 4 Stunden 4 Stunden (gesund) 22/tcp, 830/tcp, 5000-5003/tcp, 10000-10099/tcp, 161/udp xrv01

Wir verbinden uns per SSH:

ubuntu@ubuntu:~$ ssh vrnetlab@172.17.0.2
Passwort:

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 von Cisco Systems, Inc.

Build-Information:
 Erstellt von : ahoang
 Erstellt am : Fr 13. März 2020 22:27:54 PDT
 Erstellungs-Host : iox-ucs-029
 Arbeitsbereich : /auto/srcarchive15/prod/7.0.2/xrv9k/ws
 Version : 7.0.2
 Ort : /opt/cisco/XR/packages/
 Label : 7.0.2

cisco IOS-XRv 9000 () Prozessor
Systemlaufzeit beträgt 3 Stunden 22 Minuten

Wir verbinden den Router mit OpenDaylight

Das Hinzufügen erfolgt ganz ähnlich wie beim vMX-Image. Es müssen nur die Namen geändert werden.
PUT Anfrage:
Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Nach einer Weile rufen wir GET eine Anfrage auf, um zu überprüfen, ob alles verbunden ist:
Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Konfiguration ändern

Wir konfigurieren die folgende Einstellung:

!
router ospf LAB
 mpls ldp auto-config
!

für das Init-System SystemD: POST Anfrage:

  1. Anfragestruktur:
    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
  2. Anfragetext (Reiter Body):
    {
        "processes": {
            "process": [
                {
                    "process-name": "LAB",
                    "default-vrf": {
                        "process-scope": {
                            "ldp-auto-config": [
                                null
                            ]
                        }
                    }
                }
            ]
        }
    }
  3. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.
  4. Im Reiter Headers müssen zwei Header hinzugefügt werden:
    • Accept application/json
    • Content-Type application/json

Nach seiner Ausführung sollten wir den Status "204 No Content" erhalten.

Überprüfen wir, was wir erreicht haben.
Dafür erstellen wir GET Anfrage:

  1. Anfragestruktur:
    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
  2. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.

Nach der Ausführung sollten wir Folgendes sehen:

Automatisierung von Netzwerkdiensten oder wie man ein virtuelles Labor mit OpenDaylight, Postman und Vrnetlab aufbaut

Zur Löschung der Konfiguration verwenden wir DELETE:

  1. Anfragestruktur:
    LÖSCHEN 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
  2. Im Reiter Authorization muss der Parameter Basic Auth Senden wir ab. Wir sollten den Status "200 OK" und eine Liste aller vom Gerät unterstützten Geräte erhalten.

Fazit

Wie Sie sehen können, unterscheiden sich die Anschlussverfahren von Cisco und Juniper an OpenDaylight nicht — das eröffnet einen weiten Spielraum für Kreativität. Vom Management der Konfigurationen aller Netzwerkkomponenten bis hin zur Erstellung eigener Netzwerkpolitiken.
In diesem Tutorial habe ich einfachste Beispiele aufgeführt, wie man mit Netzwerkausrüstung über OpenDaylight interagieren kann. Zweifellos können die Anfragen aus den gegebenen Beispielen erheblich komplexer gestaltet werden, und ganze Dienste können mit einem Mausklick konfiguriert werden — alles hängt nur von Ihrer Fantasie ab.

Fortsetzung folgt…

P.S.

Falls Sie bereits alles darüber wissen oder umgekehrt, ODL für sich entdeckt haben, empfehle ich, einen Blick auf die Anwendungsentwicklung mit dem ODL-Controller zu werfen. Der Einstieg ist einfach. von hier.

Viel Erfolg bei Ihren Experimenten!

Literaturverzeichnis

  1. Vrnetlab: Netzwerke emulieren mit KVM und Docker / Brian Linkletter
  2. OpenDaylight Cookbook / Mathieu Lemay, Alexis de Talhouet, Et al
  3. Netzwerkprogrammierung mit YANG / Benoît Claise, Loe Clarke, Jan Lindblad
  4. XML lernen, zweite Ausgabe / Erik T. Ray
  5. Effektives DevOps / Jennifer Davis, Ryn Daniels

Quelle: habr.com

60GB SSD 8Gb DDR4