ProHoster > Blog > Administratioun > Automatisatioun vun Netzwierkservicer oder wéi ee virtuelle Laboratoire mat OpenDaylight, Postman a Vrnetlab bauen
Automatisatioun vun Netzwierkservicer oder wéi ee virtuelle Laboratoire mat OpenDaylight, Postman a Vrnetlab bauen
An dësem Artikel wäert ech Iech weisen wéi Dir opstellt opendaylight mat Reseau Equipement ze schaffen, an och weisen wéi ze benotzen Bréifdréier an einfach RESTCONF Ufroen, kann dës Ausrüstung kontrolléiert ginn. Mir wäerten net mat Hardware schaffen, mee amplaz wäerte mir kleng virtuell Laboratoiren mat engem eenzege Router benotzen Vnetlab Buedem Ubuntu 20.04 LTS.
Ech weisen déi detailléiert Astellunge fir d'éischt mam Beispill vun engem Router Juniper vMX 20.1R1.11, an da vergläichen mir et mat der Astellung Cisco xRV9000 7.0.2.
Inhalt
Noutwendeg Wëssen
Deel vun 1: kuerz diskutéieren OpenDaylight (nach ODL), Bréifdréier и Vnetlab a firwat brauche mir se
Deel vun 2: Beschreiwung vum virtuelle Labo
Deel vun 3: personaliséiere opendaylight
Deel vun 4: personaliséiere Vnetlab
Deel vun 5: duerch benotzt Bréifdréier konnektéieren virtuelle Router (Juniper vMX) k ODL
Deel vun 6: kréien an änneren d'Router Konfiguratioun benotzt Bréifdréier и ODL
Deel vun 7: dobäizemaachen Cisco xRV9000
Konklusioun
PS
Bibliographie
Noutwendeg Wëssen
Fir den Artikel net zu engem Blat ze ginn, hunn ech e puer technesch Detailer ewechgelooss (mat Linken op d'Literatur, wou Dir iwwer se kënnt liesen).
An dësem Zesummenhang bidden ech Iech Themen un, déi et gutt wier (awer bal net néideg) ze wëssen ier Dir liest:
An eisem Fall si mir interesséiert et als Mëttel fir REST Ufroen un d'OpenDaylight API ze schécken. Dir kënnt natierlech Ufroe manuell schécken, awer am Postman gesäit alles ganz kloer aus a passt eis Zwecker perfekt.
Fir déi, déi wëllen graven: vill Trainingsmaterial ass drop geschriwwen (zum Beispill).
Tool fir virtuell Router an Docker z'installéieren
Ënnerstëtzt: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
Open Source
E ganz interessant awer wéineg bekannt Instrument. An eisem Fall benotze mir et fir Juniper vMX a Cisco xRV9000 op engem normale Ubuntu 20.04 LTS ze lafen.
An dësem Tutorial setzen mir de folgende System op:
Wéi heescht dat Aarbecht
Juniper vMX klëmmt an Docker Behälter (mat Mëttel Vnetlab) a funktionnéiert als de meeschte verbreet virtuelle Router.
ODL verbonne mam Router an erlaabt Iech et ze kontrolléieren.
Bréifdréier lancéiert op enger separater Maschinn an duerch et schécken mir Kommandoen ODL: fir de Router ze verbannen / ewechzehuelen, d'Konfiguratioun z'änneren, etc.
Commentaire op den Apparat vum System
Juniper vMX и ODL erfuerderen zimlech vill Ressourcen fir hir stabil Operatioun. Nëmmen een vMX freet 6 Gb RAM an 4 Kären. Dofir gouf beschloss all "Schwéiergewiicht" op eng separat Maschinn ze plënneren (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). De Router, natierlech, "fléien" net drop, awer d'Performance ass genuch fir kleng Experimenter.
Deel 3: Ariichten OpenDaylight
Déi aktuell Versioun vun ODL am Moment vun dësem Schreiwen ass Magnesium SR1
1) Installéieren Java Open JDK 11 (fir méi detailléiert Installatioun hei)
ubuntu:~$ sudo apt install default-jdk
2) Fannt an eroflueden déi lescht Build ODLvun hei
3) Unzip den erofgelueden Archiv
4) Gitt an de resultéierende Verzeichnis
5) Start ./bin/karaf
Op dësem Schrëtt ODL soll ufänken a mir wäerten eis an der Konsole fannen (Port 8181 gëtt fir Zougang vu baussen benotzt, wat mir spéider benotzen).
Als nächst, installéieren ODL Fonctiounenentwéckelt fir mat Protokoller ze schaffen NETCONF и RESTCONF. Fir dëst an der Konsole ze maachen ODL mir maachen aus:
All Router deen ënnerstëtzt gëtt Vnetlab, huet seng eege eenzegaarteg Konfiguratiounsprozedur. Wéini Juniper vMX mir brauche just den .tgz Archiv mam Router eropzelueden (Dir kënnt et eroflueden offizielle Site) an de vmx Verzeichnis a lafen de Kommando make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Bauen en Bild vMX wäert ongeféier 10-20 Minutten huelen. Et ass Zäit fir Kaffi ze drénken!
"Dëst ass well d'éischt Kéier de VCP (Kontrollplane) gestart gëtt, liest et eng Configuratiounsdatei déi bestëmmt ob et als VRR VCP an vMX leeft. Virdru gouf dëse Start während dem Docker Startup gemaach, awer dëst bedeit datt de VCP war ëmmer eemol nei gestart ier de virtuelle Router verfügbar ass, wat zu enger laanger Bootzäit resultéiert (ongeféier 5 Minutten) Elo gëtt den éischte Laf vum VCP wärend dem Bau vum Docker Bild gemaach, a well den Docker Build net mat der - -privilegéiert Optioun, dat heescht datt qemu ouni KVM Hardware Beschleunigung funktionnéiert an domat de Bau ganz laang dauert.Während dësem Prozess gi vill Logbicher erausginn, also op d'mannst kënnt Dir gesinn wat lass ass.Ech mengen e laange Bau ass net sou grujeleg well mir eng Kéier e Bild kreéieren, awer mir lancéiere vill."
Nodeems Dir d'Bild vun eisem Router an 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
Start vr-vmx Container
Mir starten mam Kommando:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Als nächst kënne mir Informatioun iwwer aktive Container gesinn:
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
Uschloss un de Router
D'IP Adress vum Netzwierk Interface vum Router kann mat dem folgenden Kommando kritt ginn:
Standard, Vnetlab erstellt e Benotzer um Router vnetlab/VR-netlab9.
Verbindung mat 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
Dëst fäerdeg de Router Setup.
Installatioun Empfehlungen fir Router vu verschiddene Verkeefer fannt Dir op github Projet an de jeeweilege Verzeichnisser.
Deel 5: Postman - verbënnt de Router op OpenDaylight
Postman Installatioun
Fir ze installéieren, luet just d'Applikatioun erof vun hei.
E Router un ODL verbannen
Loosst eis schafen PUT Ufro:
Query String:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Dëst sinn intern Nummraim XML (XML Nummraum) fir ODL no deem et schaaft Node.
Weider, respektiv, den Numm vum Router ass node-id, Router Adress - Provider an esou weider.
Déi interessantst Linn ass déi lescht. Schema-Cache-Verzeichnis erstellt en Dossier wou all Dateien erofgeluede ginn YANG Schema verbonne Router. Dir fannt se an $ODL_ROOT/cache/jun01_cache.
Iwwerpréift d'Verbindung vum Router
Loosst eis schafen GET Ufro:
Query String:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Mir schécken. Sollt e Status vun "200 OK" kréien an eng Lëscht vun all ënnerstëtzt vum Apparat YANG Schema:
Commentaire: Fir dat lescht ze gesinn, a mengem Fall war et néideg ongeféier 10 Minutten no der Hiriichtung ze waarden PUTbis all YANG Schema auslueden an ODL. Bis zu dësem Zäitpunkt, wann Dir dëst ausféiert GET Ufro wäert déi folgend weisen:
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Deel 6: Änneren d'Router Konfiguratioun
Kréien d'Konfiguratioun
Loosst eis schafen GET Ufro:
Query String:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Mir schécken. Sollt de Status "200 OK" an d'Routerkonfiguratioun kréien:
Schafen eng Configuratioun
Als Beispill, loosst eis déi folgend Konfiguratioun erstellen an se änneren:
protocols {
bgp {
disable;
shutdown;
}
}
Loosst eis schafen POST Ufro:
Query String:
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
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Op der Header Tab musst Dir zwee Header addéieren:
Akzeptéieren Applikatioun / xml
Inhalt-Typ Applikatioun/xml
Nom Verschécken solle se de Status "204 No Content" kréien
Fir ze kontrolléieren ob d'Konfiguratioun geännert huet, kënnt Dir déi viregt Ufro benotzen. Awer zum Beispill wäerte mir en aneren erstellen deen Informatioun nëmmen iwwer d'Protokoller weist, déi um Router konfiguréiert sinn.
Loosst eis schafen GET Ufro:
Query String:
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
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Nodeems mir d'Ufro ausgefouert hunn, gesi mir déi folgend:
Ännert d'Konfiguratioun
Loosst eis d'Informatioun iwwer de BGP Protokoll änneren. No eisen Aktiounen wäert et esou ausgesinn:
protocols {
bgp {
disable;
}
}
Loosst eis schafen PUT Ufro:
Query String:
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
Vergiesst net d'Header op der Header Tab z'änneren op:
Akzeptéieren Applikatioun / json
Content-Type Applikatioun/json
Nom Schécken kréie mir dat folgend Resultat (Mir kucken d'Äntwert mat GET Ufro):
Deel 7: Dobäi Cisco xRV9000
Wat si mir alles iwwer Juniper, jo Juniper? Loosst eis iwwer Cisco schwätzen!
Ech hunn xRV9000 Versioun 7.0.2 fonnt (e Béischt deen 8Gb RAM brauch an 4 Kären. Et ass net fräi verfügbar, also kontaktéiert Cisco) - loosst eis et lafen.
Lafen engem Container
De Prozess fir en Docker Container ze kreéieren ass praktesch net anescht wéi Juniper. Ähnlech fale mir d'.qcow2-Datei mam Router an de Verzeichnis entspriechend sengem Numm (an dësem Fall xrv9k) an ausféieren de Kommando make docker-image.
No e puer Minutten gesi mir datt d'Bild erstallt gouf:
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
Mir starten de Container:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
No enger Zäit kucke mir datt de Container ugefaang huet:
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
Connect iwwer ssh:
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
De Router an OpenDaylight verbannen
Adding geschitt op eng komplett ähnlech Manéier mat vMX. Mir mussen just d'Nimm änneren. PUT Ufro:
Call no enger Zäit GET Ufro fir ze kontrolléieren ob alles verbonnen ass:
Ännert d'Konfiguratioun
Loosst eis déi folgend Konfiguratioun opsetzen:
!
router ospf LAB
mpls ldp auto-config
!
Loosst eis schafen POST Ufro:
Query String:
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
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Op der Header Tab musst Dir zwee Header addéieren:
Akzeptéieren Applikatioun / json
Content-Type Applikatioun/json
No hirer Ausféierung sollten se de Status "204 No Content" kréien.
Loosst eis kucken wat mir hunn.
Fir dëst ze maachen, wäerte mir erstellen GET Ufro:
Query String:
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
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Op der Autorisatioun Tab musst Dir de Parameter setzen Basic Auth an Login / Passwuert: admin / admin.
Konklusioun
Am Ganzen, wéi Dir vläicht gemierkt hutt, sinn d'Prozedure fir Cisco a Juniper mat OpenDaylight ze verbannen net ënnerschiddlech - dëst mécht e ganz breet Spillraum fir Kreativitéit op. Vun der Konfiguratiounsmanagement vun all Netzwierkkomponenten unzefänken a mat der Schafung vun Ärer eegener Netzwierkpolitik ophalen.
An dësem Tutorial hunn ech déi einfachst Beispiller ginn wéi Dir mat Netzwierkausrüstung mat OpenDaylight interagéiere kënnt. Ouni Zweifel kënnen d'Ufroen aus den uewe genannte Beispiller vill méi komplex gemaach ginn a ganz Servicer mat engem Mausklick opbauen - alles ass nëmme vun Ärer Fantasi limitéiert *
Fir weidergitt ...
PS
Wann Dir op eemol all dëst scho wësst oder am Géigendeel, duerchgaang an an d'Séil vum ODL ënnergaangen ass, da empfeelen ech Iech ze kucken fir Uwendungen um ODL Controller z'entwéckelen. Dir kënnt ufänken vun hei.