ProHoster > Log > administrasjon > Automatisering av nettverkstjenester eller hvordan bygge et virtuelt laboratorium ved hjelp av OpenDaylight, Postman og Vrnetlab
Automatisering av nettverkstjenester eller hvordan bygge et virtuelt laboratorium ved hjelp av OpenDaylight, Postman og Vrnetlab
I denne artikkelen vil jeg fortelle deg hvordan du setter opp OpenDaylight for arbeid med nettverksutstyr, og vil også vise hvordan man bruker Postbud og enkelt RESTCONF forespørsler, kan dette utstyret kontrolleres. Vi vil ikke jobbe med maskinvare, men i stedet vil vi distribuere små virtuelle laboratorier med en enkelt ruter som bruker Vrnetlab løpet Ubuntu LTS 20.04.
Jeg vil først vise det detaljerte oppsettet ved å bruke eksempelet på en ruter Juniper vMX 20.1R1.11, og så sammenligner vi det med innstillingen Cisco xRV9000 7.0.2.
Innhold
Nødvendig kunnskap
Часть 1: diskutere kort OpenDaylight (heretter referert til som ODL), Postbud и Vrnetlab og hvorfor trenger vi dem
Часть 2: beskrivelse av det virtuelle laboratoriet
Часть 3: tilpasse OpenDaylight
Часть 4: tilpasse Vrnetlab
Часть 5: ved bruk av Postbud koble til en virtuell ruter (Juniper vMX) Til ODL
Часть 6: hent og endre ruterkonfigurasjonen ved hjelp av Postbud и ODL
Часть 7: legg til Cisco xRV9000
Konklusjon
PS
Bibliografi
Nødvendig kunnskap
For å unngå at artikkelen blir til et ark, har jeg utelatt noen tekniske detaljer (med lenker til litteratur hvor du kan lese om dem).
I denne forbindelse foreslår jeg deg emner som det ville være bra (men nesten ikke nødvendig) å vite før du leser:
I vårt tilfelle er vi interessert i det som et middel for å sende REST-forespørsler til OpenDaylight API. Du kan selvfølgelig sende forespørsler manuelt, men i Postman ser alt veldig oversiktlig ut og er perfekt for våre formål.
For de som vil fordype seg i det: det er skrevet mye undervisningsmateriell på det (for eksempel).
Et verktøy for å distribuere virtuelle rutere i Docker
Støtter: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
Open Source
Et veldig interessant, men lite kjent instrument. I vårt tilfelle vil vi med dens hjelp kjøre Juniper vMX og Cisco xRV9000 på vanlig Ubuntu 20.04 LTS.
I denne opplæringen skal vi sette opp følgende system:
Hvordan fungerer det
Juniper vMX stiger til Docker beholder (ved hjelp Vrnetlab) og fungerer som den vanligste virtuelle ruteren.
ODL koblet til ruteren og lar deg kontrollere den.
Postbud lansert på en egen maskin og gjennom den sender vi kommandoer ODL: for å koble til/fjerne en ruter, endre konfigurasjon osv.
Kommentar til systemdesign
Juniper vMX и ODL krever ganske mye ressurser for stabil drift. Bare en vMX Ber om 6 GB RAM og 4 kjerner. Derfor ble det besluttet å flytte alle "tungvekter" til en egen maskin (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ruteren "flyr" selvfølgelig ikke på den, men det er nok ytelse for små eksperimenter.
Del 3: Sette opp OpenDaylight
Den nåværende versjonen av ODL i skrivende stund er Magnesium SR1
1) Installer Java OpenJDK 11 (for mer detaljert installasjon her)
ubuntu:~$ sudo apt install default-jdk
2) Finn og last ned den nyeste versjonen ODLderav
3) Pakk ut det nedlastede arkivet
4) Gå til den resulterende katalogen
5) Lansering ./bin/karaf
På dette trinnet ODL skal starte og vi vil finne oss selv i konsollen (For ekstern tilgang brukes port 8181, som vi vil bruke senere).
Deretter installerer vi ODL-funksjoner, designet for å fungere med protokoller NETCONF и RESTCONF. For å gjøre dette i konsollen ODL gjøre:
Hver ruter som støttes Vrnetlab, har sin egen unike oppsettsprosedyre. Når Juniper vMX Alt vi trenger å gjøre er å laste opp .tgz-arkivet med ruteren (du kan laste det ned fra offisielle nettsted) til vmx-katalogen og utfør kommandoen make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Bygg bildet vMX vil ta ca. 10-20 minutter. Det er på tide å gå og lage kaffe!
Hvorfor så lenge, spør du?
oversettelse respons forfatterens svar på dette spørsmålet:
"Dette er fordi når VCP (Control Plane) først starter, leser den en konfigurasjonsfil som bestemmer om den skal kjøres som en VRR VCP i vMX. Tidligere ble denne oppstarten gjort under Docker-oppstart, men dette betydde at VCP alltid ble startet på nytt en gang før den virtuelle ruteren ble tilgjengelig, noe som resulterte i lang oppstartstid (ca. 5 minutter) Nå gjøres den første VCP-kjøringen under Docker-bildebyggingen, og siden Docker-byggingen ikke kan kjøres med --privileged-alternativet, betyr dette at qemu kjører uten KVM-maskinvareakselerasjon og tar derfor veldig lang tid å bygge. Mange logger sendes ut under denne prosessen, så du kan i det minste se hva som skjer. Jeg tror ikke en lang build er så ille fordi at vi lager et bilde en gang , men lanser mange."
Etterpå kan du se bildet av ruteren vår i 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
Lansering av vr-vmx-beholderen
Vi starter den med kommandoen:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Deretter kan vi se informasjon om aktive beholdere:
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
Kobler til ruteren
IP-adressen til ruterens nettverksgrensesnitt kan fås med følgende kommando:
Misligholde, Vrnetlab oppretter en bruker på ruteren vrnetlab/VR-netlab9.
Koble til ved hjelp av 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
Dette fullfører ruteroppsettet.
Installasjonsanbefalinger for rutere fra ulike leverandører finner du på prosjekt github i de aktuelle katalogene.
Dette er interne navnerom XML (XML-navneområde) for ODL i henhold til hvilken den oppretter node.
Videre, følgelig navnet på ruteren er node-id, ruteradresse - vert og så videre.
Den mest interessante linjen er den siste. Schema-cache-katalog oppretter en katalog der alle filene lastes ned YANG-skjema tilkoblet ruter. Du kan finne dem i $ODL_ROOT/cache/jun01_cache.
Sjekker rutertilkoblingen
La oss skape GET be om:
Spørrestreng:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
På Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
Vi sender. Bør motta en "200 OK"-status og en liste over alle støttede enheter YANG-skjema:
Kommentar: For å se sistnevnte var det i mitt tilfelle nødvendig å vente ca. 10 minutter etter utførelse PUTdet er alt for nå YANG-skjema vil bli losset på ODL. Frem til dette punktet, når du utfører dette GET spørringen vil vise følgende:
På Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
Del 6: Endre ruterkonfigurasjonen
Henter konfigurasjonen
La oss skape GET be om:
Spørrestreng:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
På Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
Vi sender. Skal motta statusen "200 OK" og ruterkonfigurasjonen:
Opprette en konfigurasjon
Som et eksempel, la oss lage følgende konfigurasjon og endre den:
protocols {
bgp {
disable;
shutdown;
}
}
La oss skape POST be om:
Spørrestreng:
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å Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
På fanen Overskrifter må du legge til to overskrifter:
Godta søknad/xml
Innholdstype-applikasjon/xml
Etter sending skal du få statusen "204 No Content"
Du kan bruke forrige spørring for å bekrefte at konfigurasjonen er endret. Men for eksempel vil vi lage en annen som bare viser oss informasjon om protokollene som er konfigurert på ruteren.
La oss skape GET be om:
Spørrestreng:
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å Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
Etter å ha utført forespørselen, vil vi se følgende:
Endring av konfigurasjonen
La oss endre informasjonen om BGP-protokollen. Etter våre handlinger vil det se slik ut:
protocols {
bgp {
disable;
}
}
La oss skape PUT be om:
Spørrestreng:
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
Ikke glem å endre overskriftene på fanen Overskrifter til:
Godta søknad/json
Content-Type-applikasjon/json
Etter sending får vi følgende resultat (Vi ser på svaret ved hjelp av GET be om):
Del 7: Legg til Cisco xRV9000
Hva handler vi om Juniper, ja om Juniper? La oss snakke om Cisco!
Jeg fant xRV9000 versjon 7.0.2 (et beist som trenger 8 Gb RAM og 4 kjerner. Det er ikke fritt tilgjengelig, så kontakt Cisco) - la oss starte den.
Kjøre en container
Prosessen med å lage en Docker-beholder er praktisk talt ikke forskjellig fra Juniper. På samme måte slipper vi .qcow2-filen med ruteren i katalogen som tilsvarer navnet (i dette tilfellet xrv9k) og utfører kommandoen make docker-image.
Etter noen minutter ser vi at bildet er opprettet:
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
La oss starte beholderen:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Etter en tid ser vi at beholderen har startet:
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
Koble til 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
Koble ruteren til OpenDaylight
Legging skjer på en helt lik måte som vMX. Du trenger bare å endre navnene. PUT be om:
Etter en stund ringer vi GET be om å sjekke at alt er tilkoblet:
Endring av konfigurasjonen
La oss sette opp følgende konfigurasjon:
!
router ospf LAB
mpls ldp auto-config
!
La oss skape POST be om:
Spørrestreng:
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å Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
På fanen Overskrifter må du legge til to overskrifter:
Godta søknad/json
Content-Type-applikasjon/json
Etter utførelse bør du få statusen "204 No Content".
La oss sjekke hva vi har.
For dette vil vi skape GET be om:
Spørrestreng:
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å Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
På Autorisasjon-fanen må du angi parameteren Basic Auth og pålogging/passord: admin/admin.
Konklusjon
Totalt sett, som du kanskje har lagt merke til, er ikke prosedyrene for å koble Cisco og Juniper til OpenDaylight annerledes - dette åpner for et ganske stort rom for kreativitet. Starter fra å administrere konfigurasjoner av alle nettverkskomponenter og slutter med å lage dine egne nettverkspolicyer.
I denne opplæringen ga jeg enkle eksempler på hvordan du kan samhandle med nettverksutstyr ved hjelp av OpenDaylight. Uten tvil kan forespørslene fra eksemplene ovenfor gjøres mye mer komplekse og hele tjenester kan konfigureres med ett museklikk - alt begrenses bare av fantasien din*
To be continued ...
PS
Hvis du plutselig allerede vet alt dette, eller tvert imot, har gått gjennom det og ODL har sunket inn i sjelen din, så anbefaler jeg å se mot å utvikle applikasjoner på en ODL-kontroller. Du kan begynne derav.