ProHoster > blogg > administration > Automatisering av nätverkstjänster eller hur man bygger ett virtuellt laboratorium med OpenDaylight, Postman och Vrnetlab
Automatisering av nätverkstjänster eller hur man bygger ett virtuellt laboratorium med OpenDaylight, Postman och Vrnetlab
I den här artikeln kommer jag att visa dig hur du ställer in öppet dagsljus att arbeta med nätverksutrustning, och även visa hur man använder Postman och enkelt RESTCONF begäran kan denna utrustning styras. Vi kommer inte att arbeta med hårdvara, utan istället kommer vi att distribuera små virtuella laboratorier med en enda router som använder Vnetlab över Ubuntu LTS 20.04.
Jag kommer att visa de detaljerade inställningarna först med exemplet på en router Juniper vMX 20.1R1.11, och sedan jämför vi det med inställningen Cisco xRV9000 7.0.2.
Innehåll
Krävd kunskap
Часть 1: diskutera kort OpenDaylight (nedan ODL), Postman и Vnetlab och varför behöver vi dem
Часть 2: beskrivning av det virtuella laboratoriet
Часть 3: konfigurera öppet dagsljus
Часть 4: konfigurera Vnetlab
Часть 5: genom att använda Postman anslut virtuell router (Juniper vMX) Till ODL
Часть 6: hämta och ändra routerns konfiguration med Postman и ODL
Часть 7: lägg till Cisco xRV9000
Slutsats
PS
Bibliografi
Krävd kunskap
För att artikeln inte ska förvandlas till ett blad har jag utelämnat några tekniska detaljer (med länkar till litteratur där du kan läsa om dem).
I detta sammanhang erbjuder jag dig ämnen som det skulle vara bra (men nästan inte nödvändigt) att känna till innan du läser:
I vårt fall är vi intresserade av det som ett sätt att skicka REST-förfrågningar till OpenDaylight API. Du kan naturligtvis skicka förfrågningar manuellt, men i Postman ser allt väldigt tydligt ut och passar våra syften perfekt.
För den som vill gräva: mycket utbildningsmaterial har skrivits på den (exempelvis).
Verktyg för att distribuera virtuella routrar i Docker
Stöder: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
Open Source
Ett mycket intressant men föga känt instrument. I vårt fall kommer vi att använda den för att köra Juniper vMX och Cisco xRV9000 på en vanlig Ubuntu 20.04 LTS.
I den här handledningen kommer vi att ställa in följande system:
Hur fungerar den här
Juniper vMX stiger in Hamnarbetare behållare (med hjälp av Vnetlab) och fungerar som den vanligaste virtuella routern.
ODL ansluten till routern och låter dig styra den.
Postman startas på en separat maskin och genom den skickar vi kommandon ODL: för att ansluta/ta bort routern, ändra konfigurationen etc.
Kommentar om systemets enhet
Juniper vMX и ODL kräver ganska mycket resurser för att de ska fungera stabilt. Bara en vMX ber om 6 Gb RAM och 4 kärnor. Därför beslutades det att flytta alla "tungviktarna" till en separat maskin (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Routern "flyger" förstås inte på den, men prestandan räcker för små experiment.
Del 3: Ställ in OpenDaylight
Den nuvarande versionen av ODL när detta skrivs är Magnesium SR1
1) Installera Java Open JDK 11 (för mer detaljerad installation här)
ubuntu:~$ sudo apt install default-jdk
2) Hitta och ladda ner den senaste versionen ODLhence
3) Packa upp det nedladdade arkivet
4) Gå till den resulterande katalogen
5) Starta ./bin/karaf
I detta steg ODL bör starta och vi kommer att befinna oss i konsolen (Port 8181 används för åtkomst utifrån, vilket vi kommer att använda senare).
Installera sedan ODL-funktionerdesignad för att fungera med protokoll NETCONF и RESTCONF. För att göra detta i konsolen ODL vi kör:
Varje router som stöds Vnetlab, har sin egen unika installationsprocedur. När Juniper vMX vi behöver bara ladda upp .tgz-arkivet med routern (du kan ladda ner det från officiell plats) till vmx-katalogen och kör kommandot make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Att bygga en bild vMX tar cirka 10-20 minuter. Det är dags att gå och dricka kaffe!
"Detta beror på att första gången VCP (Control Plane) startas läser den en konfigurationsfil som avgör om den kommer att köras som en VRR VCP i vMX. Tidigare gjordes denna lansering under Docker-starten, men detta innebar att VCP:n startades alltid om en gång innan den virtuella routern blev tillgänglig, vilket resulterade i en lång uppstartstid (ca 5 minuter) Nu görs den första körningen av VCP under byggandet av Docker-avbildningen, och eftersom Docker-bygget inte kan köras med - -privilegierad alternativ, detta betyder att qemu fungerar utan KVM-hårdvaruacceleration och därför tar bygget väldigt lång tid.Under denna process matas många loggar ut, så du kan åtminstone se vad som pågår.Jag tror att det är ett långt bygge är inte så skrämmande för att vi skapar en bild en gång, men vi lanserar många."
Efter att du kan se bilden av vår router i Hamnarbetare:
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
Starta vr-vmx-behållaren
Vi börjar med kommandot:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Därefter kan vi se information om aktiva behållare:
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
Ansluter till routern
IP-adressen för routerns nätverksgränssnitt kan erhållas med följande kommando:
Standard, Vnetlab skapar en användare på routern vrnetlab/VR-netlab9.
Ansluter med 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
Detta slutför routerinstallationen.
Installationsrekommendationer för routrar från olika leverantörer finns på github-projekt i respektive katalog.
Del 5: Postman - anslut routern till OpenDaylight
Postman installation
För att installera, ladda bara ner applikationen hence.
Ansluta en router till ODL
Låt oss skapa SÄTTA begäran:
Frågesträng:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Dessa är interna namnutrymmen XML (XML-namnutrymme) För ODL enligt vilken den skapar nod.
Vidare är respektive namnet på routern nod-id, routeradress - värd och så vidare.
Den mest intressanta raden är den sista. Schema-cache-katalog skapar en katalog där alla filer laddas ner YANG Schema ansluten router. Du kan hitta dem i $ODL_ROOT/cache/jun01_cache.
Kontrollerar routerns anslutning
Låt oss skapa FÅ begäran:
Frågesträng:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
Vi skickar. Bör få statusen "200 OK" och en lista över alla som stöds av enheten YANG Schema:
Kommentar: För att se det senare var det i mitt fall nödvändigt att vänta cirka 10 minuter efter avrättningen SÄTTAtills alla YANG schema lossa på ODL. Fram till denna punkt, när du utför detta FÅ fråga kommer att visa följande:
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
Del 6: Ändra routerkonfigurationen
Hämta konfigurationen
Låt oss skapa FÅ begäran:
Frågesträng:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
Vi skickar. Bör få statusen "200 OK" och routerns konfiguration:
Skapa en konfiguration
Som ett exempel, låt oss skapa följande konfiguration och ändra den:
protocols {
bgp {
disable;
shutdown;
}
}
Låt oss skapa POST begäran:
Frågesträng:
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
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
På fliken Rubriker måste du lägga till två rubriker:
Acceptera ansökan/xml
Content-Type application/xml
Efter sändning bör de få statusen "204 Inget innehåll"
För att kontrollera att konfigurationen har ändrats kan du använda föregående fråga. Men till exempel kommer vi att skapa en annan som endast visar information om de protokoll som konfigurerats på routern.
Låt oss skapa FÅ begäran:
Frågesträng:
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
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
Efter att ha utfört begäran kommer vi att se följande:
Ändra konfigurationen
Låt oss ändra informationen om BGP-protokollet. Efter våra handlingar kommer det att se ut så här:
protocols {
bgp {
disable;
}
}
Låt oss skapa SÄTTA begäran:
Frågesträng:
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
Glöm inte att ändra rubrikerna på fliken Rubriker till:
Acceptera applikation/json
Content-Type application/json
Efter att ha skickat kommer vi att få följande resultat (Vi tittar på svaret med hjälp av FÅ begäran):
Del 7: Lägga till Cisco xRV9000
Vad handlar vi om Juniper, ja Juniper? Låt oss prata om Cisco!
Jag hittade xRV9000 version 7.0.2 (en best som behöver 8Gb RAM och 4 kärnor. Den är inte fritt tillgänglig, så kontakta Cisco) - låt oss köra det.
Köra en container
Processen att skapa en Docker-behållare skiljer sig praktiskt taget inte från Juniper. På liknande sätt släpper vi .qcow2-filen med routern i katalogen som motsvarar dess namn (i det här fallet xrv9k) och kör kommandot make docker-image.
Efter några minuter ser vi att bilden har skapats:
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
Vi startar behållaren:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Efter ett tag ser vi att behållaren har startat:
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
Anslut 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
Ansluter routern till OpenDaylight
Addering sker på ett helt liknande sätt med vMX. Vi behöver bara byta namn. SÄTTA begäran:
Ring efter ett tag FÅ fråga för att kontrollera att allt är anslutet:
Ändra konfigurationen
Låt oss ställa in följande konfiguration:
!
router ospf LAB
mpls ldp auto-config
!
Låt oss skapa POST begäran:
Frågesträng:
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
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
På fliken Rubriker måste du lägga till två rubriker:
Acceptera applikation/json
Content-Type application/json
Efter dess körning bör de få statusen "204 Inget innehåll".
Låt oss kolla vad vi har.
För att göra detta kommer vi att skapa FÅ begäran:
Frågesträng:
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
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
På fliken Auktorisering måste du ställa in parametern Basic Auth och inloggning/lösenord: admin/admin.
Slutsats
Totalt sett skiljer sig inte procedurerna för att ansluta Cisco och Juniper till OpenDaylight, som du kanske har märkt – detta öppnar upp för ett ganska stort utrymme för kreativitet. Börjar från konfigurationshantering av alla nätverkskomponenter och slutar med skapandet av dina egna nätverkspolicyer.
I den här handledningen har jag gett de enklaste exemplen på hur du kan interagera med nätverksutrustning med OpenDaylight. Utan tvekan kan frågorna från ovanstående exempel göras mycket mer komplexa och konfigurera hela tjänster med ett musklick - allt begränsas bara av din fantasi *
Fortsättning ...
PS
Om du plötsligt redan vet allt detta eller tvärtom har gått igenom och sjunkit in i ODLs själ, så rekommenderar jag att du ser till att utveckla applikationer på ODL-kontrollern. Du kan börja hence.