ProHoster > Blog > Verwaltung > Automatisierung von Netzwerkdiensten oder Aufbau eines virtuellen Labors mit OpenDaylight, Postman und Vrnetlab
Automatisierung von Netzwerkdiensten oder Aufbau eines virtuellen Labors mit OpenDaylight, Postman und Vrnetlab
In diesem Artikel zeige ich Ihnen, wie Sie es einrichten OpenDaylight um mit Netzwerkgeräten zu arbeiten und auch deren Verwendung zu zeigen Postman und einfach RESTKONF Auf Wunsch kann dieses Gerät gesteuert werden. Wir werden nicht mit Hardware arbeiten, sondern kleine virtuelle Labore mit einem einzigen Router einrichten Vrnetlab über Ubuntu LTS 20.04.
Die detaillierten Einstellungen zeige ich zunächst am Beispiel eines Routers Juniper vMX 20.1R1.11, und dann vergleichen wir es mit der Einstellung Cisco xRV9000 7.0.2.
Inhalt
Erforderliches Wissen
Часть 1: kurz besprechen OpenDaylight (im Folgenden: ODL), Postman и Vrnetlab und warum brauchen wir sie
Часть 2: Beschreibung des virtuellen Labors
Часть 3: anpassen OpenDaylight
Часть 4: anpassen Vrnetlab
Часть 5: mit Hilfe Postman Virtuellen Router verbinden (Juniper vMX) bis ODL
Часть 6: Rufen Sie die Router-Konfiguration ab und ändern Sie sie mit Postman и ODL
Часть 7: Cisco xRV9000 hinzufügen
Abschluss
PS
Referenzliste
Erforderliches Wissen
Damit der Artikel nicht zu einem Blatt wird, habe ich einige technische Details weggelassen (mit Links zu Literatur, in der Sie darüber lesen können).
In diesem Zusammenhang biete ich Ihnen Themen an, die Sie vor dem Lesen kennen sollten (aber fast nicht notwendig sind):
In unserem Fall sind wir daran interessiert, REST-Anfragen an die OpenDaylight-API zu senden. Sie können Anfragen natürlich auch manuell versenden, aber in Postman sieht alles sehr übersichtlich aus und passt perfekt zu unseren Zwecken.
Für diejenigen, die graben wollen: Es wurden viele Schulungsmaterialien darauf geschrieben (beispielsweise).
Tool zum Bereitstellen virtueller Router in Docker
Unterstützt: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR usw.
Open Source
Ein sehr interessantes, aber wenig bekanntes Instrument. In unserem Fall werden wir damit Juniper vMX und Cisco xRV9000 auf einem regulären Ubuntu 20.04 LTS ausführen.
In diesem Tutorial richten wir das folgende System ein:
Wie funktioniert das
Juniper vMX steigt ein Docker Behälter (mittels Vrnetlab) und fungiert als der am häufigsten verwendete virtuelle Router.
ODL mit dem Router verbunden und ermöglicht Ihnen die Steuerung.
Postman auf einem separaten Computer gestartet und über ihn senden wir Befehle ODL: Zum Anschließen/Entfernen des Routers, Ändern der Konfiguration usw.
Kommentar zum Gerät des Systems
Juniper vMX и ODL erfordern für ihren stabilen Betrieb recht viele Ressourcen. Nur einer vMX verlangt 6 GB RAM und 4 Kerne. Daher wurde beschlossen, alle „Schwergewichte“ auf eine separate Maschine zu verlagern (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Der Router „fliegt“ darauf natürlich nicht, aber die Leistung reicht für kleine Experimente.
Teil 3: OpenDaylight einrichten
Die zum Zeitpunkt des Schreibens dieses Artikels aktuelle Version von ODL ist Magnesium SR1
1) Installieren Java-OpenJDK 11 (für eine detailliertere Installation hierher)
ubuntu:~$ sudo apt install default-jdk
2) Suchen Sie den neuesten Build und laden Sie ihn herunter ODLdaher
3) Entpacken Sie das heruntergeladene Archiv
4) Gehen Sie in das resultierende Verzeichnis
5) Starten ./bin/karaf
Bei diesem Schritt ODL sollte starten und wir befinden uns in der Konsole (Port 8181 wird für den Zugriff von außen verwendet, den wir später nutzen werden).
Als nächstes installieren ODL-FunktionenEntwickelt, um mit Protokollen zu arbeiten NETKONF и RESTKONF. Tun Sie dies in der Konsole ODL wir führen aus:
Jeder Router, der unterstützt wird Vrnetlabverfügt über ein eigenes einzigartiges Einrichtungsverfahren. Im Fall von Juniper vMX Wir müssen nur das .tgz-Archiv mit dem Router hochladen (Sie können es herunterladen von offizielle Seite) in das vmx-Verzeichnis und führen Sie den Befehl aus make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Ein Bild aufbauen vMX wird etwa 10-20 Minuten dauern. Es ist Zeit, einen Kaffee zu trinken!
„Das liegt daran, dass das VCP (Control Plane) beim ersten Start eine Konfigurationsdatei liest, die bestimmt, ob es als VRR-VCP in vMX ausgeführt wird. Zuvor erfolgte dieser Start während des Docker-Starts, aber das bedeutete, dass das VCP wurde immer einmal neu gestartet, bevor der virtuelle Router verfügbar wurde, was zu einer langen Startzeit führte (ca. 5 Minuten). Jetzt erfolgt die erste Ausführung des VCP während des Builds des Docker-Images, und da der Docker-Build nicht mit dem ausgeführt werden kann – -privilegierte Option, das bedeutet, dass qemu ohne KVM-Hardwarebeschleunigung arbeitet und der Build daher sehr lange dauert. Während dieses Prozesses werden viele Protokolle ausgegeben, sodass man zumindest sehen kann, was vor sich geht. Ich denke, ein langer Build Es ist nicht so beängstigend, weil wir ein Image einmal erstellen, aber wir starten viele.“
Danach können Sie das Bild unseres Routers sehen 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 101MB
Starten Sie den VR-VMX-Container
Wir beginnen mit dem Befehl:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Als nächstes können wir Informationen zu aktiven Containern sehen:
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 jun01
Verbindung zum Router herstellen
Die IP-Adresse der Netzwerkschnittstelle des Routers kann mit folgendem Befehl ermittelt werden:
Default, Vrnetlab erstellt einen Benutzer auf dem Router vrnetlab/VR-netlab9.
Verbinden mit ssh:
ubuntu:~$ ssh [email protected]
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
ECDSA key fingerprint is SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.2' (ECDSA) to the list of known hosts.
Password:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> show version
Model: vmx
Junos: 20.1R1.11
Damit ist die Router-Einrichtung abgeschlossen.
Installationsempfehlungen für Router verschiedener Hersteller finden Sie unter Github-Projekt in den jeweiligen Verzeichnissen.
Teil 5: Postman – Router mit OpenDaylight verbinden
Postman-Installation
Zur Installation laden Sie einfach die Anwendung herunter daher.
Anschließen eines Routers an ODL
Lasst uns kreieren SETZEN Anfrage:
Abfragezeichenfolge:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin. Dies ist für den Zugriff auf das ODL erforderlich:
Auf der Registerkarte „Header“ müssen Sie zwei Header hinzufügen:
Akzeptieren Sie application/xml
Inhaltstyp application/xml
Unsere Anfrage wurde gestellt. Wir senden. Wenn alles richtig konfiguriert wurde, sollten wir den Status „201 erstellt“ zurückgeben:
Was bewirkt diese Anfrage?
Wir erstellen einen Knoten im Inneren ODL mit den Parametern des realen Routers, auf den wir zugreifen möchten.
Dies sind interne Namensräume XML (XML-Namespace) Für ODL nach dem es Knoten erstellt.
Weiter ist jeweils der Name des Routers Knoten-ID, Router-Adresse - Gastgeber und so weiter.
Die interessanteste Zeile ist die letzte. Schema-Cache-Verzeichnis erstellt ein Verzeichnis, in das alle Dateien heruntergeladen werden YANG-Schema angeschlossenen Router. Du findest sie in $ODL_ROOT/cache/jun01_cache.
Überprüfen Sie die Verbindung des Routers
Lasst uns kreieren BESTELLE Anfrage:
Abfragezeichenfolge:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Wir senden. Sollte den Status „200 OK“ und eine Liste aller vom Gerät unterstützten Geräte erhalten YANG-Schema:
Kommentar: Um Letzteres zu sehen, musste in meinem Fall nach der Hinrichtung etwa 10 Minuten gewartet werden SETZENBis alle YANG-Schema entladen auf ODL. Bis zu diesem Punkt, als ich dies durchführte BESTELLE Die Abfrage zeigt Folgendes an:
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Teil 6: Ändern Sie die Router-Konfiguration
Konfiguration abrufen
Lasst uns kreieren BESTELLE Anfrage:
Abfragezeichenfolge:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Wir senden. Sollte den Status „200 OK“ und die Router-Konfiguration erhalten:
Erstellen Sie eine Konfiguration
Als Beispiel erstellen wir die folgende Konfiguration und ändern sie:
protocols {
bgp {
disable;
shutdown;
}
}
Lasst uns kreieren jetzt lesen Anfrage:
Abfragezeichenfolge:
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
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Auf der Registerkarte „Header“ müssen Sie zwei Header hinzufügen:
Akzeptieren Sie application/xml
Inhaltstyp application/xml
Nach dem Absenden sollten sie den Status „204 No Content“ erhalten.
Um zu überprüfen, ob sich die Konfiguration geändert hat, können Sie die vorherige Abfrage verwenden. Aber wir werden zum Beispiel ein weiteres erstellen, das nur Informationen zu den auf dem Router konfigurierten Protokollen anzeigt.
Lasst uns kreieren BESTELLE Anfrage:
Abfragezeichenfolge:
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
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Nach der Ausführung der Anfrage sehen wir Folgendes:
Ändern Sie die Konfiguration
Lassen Sie uns die Informationen zum BGP-Protokoll ändern. Nach unseren Aktionen wird es so aussehen:
protocols {
bgp {
disable;
}
}
Lasst uns kreieren SETZEN Anfrage:
Abfragezeichenfolge:
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
Vergessen Sie nicht, die Überschriften auf der Registerkarte „Überschriften“ zu ändern:
Akzeptieren Sie application/json
Inhaltstypanwendung/json
Nach dem Absenden erhalten wir folgendes Ergebnis (Wir betrachten die Antwort mit BESTELLE Anfrage):
Teil 7: Hinzufügen des Cisco xRV9000
Worum geht es uns bei Juniper, ja Juniper? Reden wir über Cisco!
Ich habe xRV9000 Version 7.0.2 gefunden (ein Biest, das 8 GB RAM und 4 Kerne benötigt. Es ist nicht frei verfügbar, also wenden Sie sich an Cisco) – lass es uns ausführen.
Ausführen eines Containers
Der Prozess der Erstellung eines Docker-Containers unterscheidet sich praktisch nicht von Juniper. Ebenso legen wir die .qcow2-Datei mit dem Router in dem 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 Bild erstellt wurde:
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 101MB
Wir starten den Container:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Nach einer Weile sehen wir, dass der Container gestartet ist:
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 xrv01
Per SSH verbinden:
ubuntu@ubuntu:~$ ssh [email protected]
Password:
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 by Cisco Systems, Inc.
Build Information:
Built By : ahoang
Built On : Fri Mar 13 22:27:54 PDT 2020
Built Host : iox-ucs-029
Workspace : /auto/srcarchive15/prod/7.0.2/xrv9k/ws
Version : 7.0.2
Location : /opt/cisco/XR/packages/
Label : 7.0.2
cisco IOS-XRv 9000 () processor
System uptime is 3 hours 22 minutes
Den Router mit OpenDaylight verbinden
Das Hinzufügen erfolgt bei vMX ganz ähnlich. Wir müssen nur die Namen ändern. SETZEN Anfrage:
Rufen Sie nach einer Weile an BESTELLE Abfrage, um zu überprüfen, ob alles verbunden ist:
Ändern Sie die Konfiguration
Lassen Sie uns die folgende Konfiguration einrichten:
!
router ospf LAB
mpls ldp auto-config
!
Lasst uns kreieren jetzt lesen Anfrage:
Abfragezeichenfolge:
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
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Auf der Registerkarte „Header“ müssen Sie zwei Header hinzufügen:
Akzeptieren Sie application/json
Inhaltstypanwendung/json
Nach der Ausführung sollten sie den Status „204 No Content“ erhalten.
Schauen wir mal, was wir haben.
Dazu erstellen wir BESTELLE Anfrage:
Abfragezeichenfolge:
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
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Nach der Ausführung sollten Sie Folgendes sehen:
Um die Konfiguration zu entfernen, verwenden Sie LÖSCHEN:
Auf der Registerkarte Autorisierung müssen Sie den Parameter festlegen Basic Auth und Login/Passwort: admin/admin.
Abschluss
Insgesamt unterscheiden sich die Verfahren zur Anbindung von Cisco und Juniper an OpenDaylight, wie Sie vielleicht bemerkt haben, nicht – dies eröffnet einen recht großen Spielraum für Kreativität. Angefangen beim Konfigurationsmanagement aller Netzwerkkomponenten bis hin zur Erstellung eigener Netzwerkrichtlinien.
In diesem Tutorial habe ich die einfachsten Beispiele dafür gegeben, wie Sie mit OpenDaylight mit Netzwerkgeräten interagieren können. Ohne Zweifel lassen sich die Abfragen aus den oben genannten Beispielen deutlich komplexer gestalten und ganze Dienste mit einem Mausklick einrichten – alles ist nur durch Ihre Vorstellungskraft begrenzt *
To be continued ...
PS
Wenn Sie das alles plötzlich schon wissen oder im Gegenteil in die Seele von ODL eingetaucht sind, empfehle ich Ihnen, sich mit der Entwicklung von Anwendungen auf dem ODL-Controller zu befassen. Du kannst anfangen daher.