ProHoster > blog > administratie > Automatisering van netwerkdiensten of hoe een virtueel laboratorium te bouwen met behulp van OpenDaylight, Postman en Vrnetlab
Automatisering van netwerkdiensten of hoe een virtueel laboratorium te bouwen met behulp van OpenDaylight, Postman en Vrnetlab
In dit artikel laat ik je zien hoe je het instelt OpenDaylight om te werken met netwerkapparatuur, en laat ook zien hoe te gebruiken Postbode en eenvoudig RESTCONF verzoeken, kan deze apparatuur worden gecontroleerd. We zullen niet met hardware werken, maar in plaats daarvan kleine virtuele laboratoria met één enkele router inzetten Vrnetlab over Ubuntu LTS 20.04.
Ik zal eerst de gedetailleerde instellingen laten zien aan de hand van het voorbeeld van een router Jeneverbes vMX 20.1R1.11, en dan vergelijken we het met de instelling Cisco xRV9000 7.0.2.
Inhoud
Vereiste kennis
Часть 1: kort bespreken OpenDaylight (hierna OAO), Postbode и Vrnetlab en waarom hebben we ze nodig
Часть 2: beschrijving van het virtuele laboratorium
Часть 3: configureren OpenDaylight
Часть 4: configureren Vrnetlab
Часть 5: door het gebruiken van Postbode virtuele router verbinden (Juniper vMX) Tot OAO
Часть 6: haal en wijzig de routerconfiguratie met behulp van Postbode и OAO
Часть 7: voeg Cisco xRV9000 toe
Conclusie
PS
Bibliografie
Vereiste kennis
Om ervoor te zorgen dat het artikel geen blad wordt, heb ik enkele technische details weggelaten (met links naar literatuur waar je erover kunt lezen).
In dit verband bied ik u onderwerpen aan waarvan het goed zou zijn (maar bijna niet noodzakelijk) om te weten voordat u gaat lezen:
In ons geval zijn we hierin geïnteresseerd als middel om REST-verzoeken naar de OpenDaylight API te sturen. Je kunt natuurlijk handmatig verzoeken versturen, maar in Postman ziet alles er heel duidelijk uit en past het perfect bij onze doeleinden.
Voor wie wil graven: er is veel trainingsmateriaal op geschreven (bij voorbeeld).
Tool voor het implementeren van virtuele routers in Docker
Ondersteunt: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, enz.
Open Source
Een zeer interessant maar weinig bekend instrument. In ons geval zullen we het gebruiken om Juniper vMX en Cisco xRV9000 op een gewone Ubuntu 20.04 LTS uit te voeren.
In deze tutorial gaan we het volgende systeem opzetten:
Hoe werkt dit
Juniper vMX stijgt naar binnen havenarbeider bak (via Vrnetlab) en functioneert als de meest voorkomende virtuele router.
OAO verbonden met de router en stelt u in staat deze te bedienen.
Postbode gelanceerd op een aparte machine en hierdoor sturen we commando's OAO: om de router aan te sluiten/verwijderen, de configuratie te wijzigen, enz.
Commentaar op het apparaat van het systeem
Juniper vMX и OAO vereisen nogal wat middelen voor hun stabiele werking. Slechts één vMX vraagt om 6 Gb RAM en 4 cores. Daarom werd besloten om alle "zwaargewichten" naar een aparte machine te verplaatsen (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). De router "vliegt" er natuurlijk niet op, maar de prestaties zijn voldoende voor kleine experimenten.
Deel 3: OpenDaylight opzetten
De huidige versie van ODL op het moment van schrijven is Magnesium SR1
1) Installeer Java Open JDK 11 (voor meer gedetailleerde installatie hier)
ubuntu:~$ sudo apt install default-jdk
2) Zoek en download de nieuwste versie OAOvandaar
3) Pak het gedownloade archief uit
4) Ga naar de resulterende map
5) Lanceren ./bin/karaf
Bij deze stap OAO zou moeten starten en we bevinden ons in de console (poort 8181 wordt gebruikt voor toegang van buitenaf, die we later zullen gebruiken).
Installeer vervolgens ODL-functiesontworpen om met protocollen te werken NETCONF и RESTCONF. Om dit in de console te doen OAO wij voeren uit:
Elke router die wordt ondersteund Vrnetlab, heeft zijn eigen unieke instellingsprocedure. Wanneer Juniper vMX we hoeven alleen het .tgz-archief met de router te uploaden (je kunt het downloaden van officiële website) naar de vmx-directory en voer de opdracht uit make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Een imago opbouwen vMX duurt ongeveer 10-20 minuten. Het is tijd om koffie te gaan halen!
"Dit komt omdat de eerste keer dat de VCP (Control Plane) wordt gestart, het een configuratiebestand leest dat bepaalt of het zal draaien als een VRR VCP in vMX. Voorheen gebeurde deze lancering tijdens het opstarten van Docker, maar dit betekende dat de VCP werd altijd een keer opnieuw opgestart voordat de virtuele router beschikbaar kwam, wat resulteerde in een lange opstarttijd (ongeveer 5 minuten) Nu wordt de eerste run van de VCP gedaan tijdens het bouwen van de Docker-image, en aangezien de Docker-build niet kan worden uitgevoerd met de - -bevoorrechte optie, dit betekent dat qemu werkt zonder KVM-hardwareversnelling en dat het bouwen dus erg lang duurt. Tijdens dit proces worden veel logboeken uitgevoerd, dus je kunt tenminste zien wat er aan de hand is. Ik denk een lange bouw is niet zo eng omdat we één keer een afbeelding maken, maar we lanceren er veel."
Nadat u de afbeelding van onze router kunt zien in havenarbeider:
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 de vr-vmx-container
We beginnen met de opdracht:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Vervolgens kunnen we informatie zien over actieve containers:
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
Verbinding maken met de router
Het IP-adres van de netwerkinterface van de router kan worden verkregen met het volgende commando:
Standaard, Vrnetlab maakt een gebruiker aan op de router vrnetlab/VR-netlab9.
Verbinden met 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
Hiermee is de configuratie van de router voltooid.
Installatie-aanbevelingen voor routers van verschillende leveranciers zijn te vinden op github-project in de respectievelijke mappen.
Deel 5: Postbode - verbind de router met OpenDaylight
Postbode installatie
Om te installeren, downloadt u gewoon de applicatie vandaar.
Een router verbinden met ODL
Laten we creëren PUT verzoek:
Zoekreeks:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Dit zijn interne naamruimten XML (XML-naamruimte) voor OAO volgens welke het een knooppunt creëert.
Verder is respectievelijk de naam van de router knooppunt-id, routeradres - gastheer en zo verder.
De meest interessante regel is de laatste. Schema-cache-map creëert een map waar alle bestanden worden gedownload YANG-schema aangesloten router. Je kunt ze vinden in $ODL_ROOT/cache/jun01_cache.
De verbinding van de router controleren
Laten we creëren GET verzoek:
Zoekreeks:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Op het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
We sturen. Moet de status "200 OK" ontvangen en een lijst met alle ondersteund door het apparaat YANG-schema:
Commentaar: Om dat laatste te zien, moest ik in mijn geval ongeveer 10 minuten wachten na de executie PUTtot alles YANG-schema lossen op OAO. Tot dit punt, wanneer u dit uitvoert GET query geeft het volgende weer:
Op het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
Deel 6: Wijzig de routerconfiguratie
De configuratie ophalen
Laten we creëren GET verzoek:
Zoekreeks:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Op het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
We sturen. Moet de status "200 OK" en de routerconfiguratie krijgen:
Maak een configuratie
Laten we als voorbeeld de volgende configuratie maken en deze wijzigen:
protocols {
bgp {
disable;
shutdown;
}
}
Laten we creëren POST verzoek:
Zoekreeks:
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 het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
Op het tabblad Kopteksten moet u twee kopteksten toevoegen:
Accepteer applicatie/xml
Inhoudstype applicatie/xml
Na verzending zouden ze de status "204 No Content" moeten krijgen
Om te controleren of de configuratie is gewijzigd, kunt u de vorige query gebruiken. Maar we zullen er bijvoorbeeld nog een maken die alleen informatie weergeeft over de protocollen die op de router zijn geconfigureerd.
Laten we creëren GET verzoek:
Zoekreeks:
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 het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
Na het uitvoeren van het verzoek zien we het volgende:
Wijzig de configuratie
Laten we de informatie over het BGP-protocol wijzigen. Na onze acties ziet het er zo uit:
protocols {
bgp {
disable;
}
}
Laten we creëren PUT verzoek:
Zoekreeks:
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
Vergeet niet de kopteksten op het tabblad Kopteksten te wijzigen in:
Accepteer applicatie/json
Inhoudstype toepassing/json
Na het verzenden krijgen we het volgende resultaat (we kijken naar het antwoord met behulp van GET verzoek):
Deel 7: De Cisco xRV9000 toevoegen
Waar hebben we het allemaal over Juniper, ja Juniper? Laten we het over Cisco hebben!
Ik vond xRV9000 versie 7.0.2 (een beest dat 8Gb RAM en 4 cores nodig heeft. Het is niet vrij verkrijgbaar, dus neem contact op Cisco) - laten we het uitvoeren.
Een container laten draaien
Het proces van het maken van een Docker-container verschilt praktisch niet van Juniper. Op dezelfde manier plaatsen we het .qcow2-bestand met de router in de map die overeenkomt met de naam (in dit geval xrv9k) en voeren we de opdracht uit make docker-image.
Na een paar minuten zien we dat de afbeelding is gemaakt:
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
We starten de container:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Na een tijdje zien we dat de container is gestart:
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
Verbinden via 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 verbinden met OpenDaylight
Toevoegen gebeurt op een volledig vergelijkbare manier met vMX. We moeten alleen de namen veranderen. PUT verzoek:
Bel na een tijdje GET vraag om te controleren of alles is aangesloten:
Wijzig de configuratie
Laten we de volgende configuratie instellen:
!
router ospf LAB
mpls ldp auto-config
!
Laten we creëren POST verzoek:
Zoekreeks:
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 het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
Op het tabblad Kopteksten moet u twee kopteksten toevoegen:
Accepteer applicatie/json
Inhoudstype toepassing/json
Na de uitvoering zouden ze de status "204 Geen inhoud" moeten krijgen.
Laten we eens kijken wat we hebben.
Om dit te doen, zullen we creëren GET verzoek:
Zoekreeks:
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 het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
Na uitvoering zou u het volgende moeten zien:
Gebruik om de configuratie te verwijderen VERWIJDEREN:
Op het tabblad Autorisatie moet u de parameter instellen Basic Auth en login/wachtwoord: admin/admin.
Conclusie
In totaal, zoals je misschien hebt gemerkt, verschillen de procedures voor het verbinden van Cisco en Juniper met OpenDaylight niet - dit biedt vrij veel ruimte voor creativiteit. Beginnend met het configuratiebeheer van alle netwerkcomponenten en eindigend met het creëren van uw eigen netwerkbeleid.
In deze zelfstudie heb ik de eenvoudigste voorbeelden gegeven van hoe u kunt communiceren met netwerkapparatuur met behulp van OpenDaylight. Ongetwijfeld kunnen de vragen uit de bovenstaande voorbeelden veel complexer worden gemaakt en hele services opzetten met één muisklik - alles wordt alleen beperkt door uw verbeeldingskracht *
Wordt vervolgd ...
PS
Als je dit alles ineens al weet of integendeel bent doorgedrongen en bent verzonken in de ziel van OAO, dan raad ik aan om te kijken naar het ontwikkelen van applicaties op de OAO-controller. Je kan beginnen vandaar.