ProHoster > Blog > administration > Automatisering af netværkstjenester eller hvordan man bygger et virtuelt laboratorium ved hjælp af OpenDaylight, Postman og Vrnetlab
Automatisering af netværkstjenester eller hvordan man bygger et virtuelt laboratorium ved hjælp af OpenDaylight, Postman og Vrnetlab
I denne artikel vil jeg vise dig, hvordan du opsætter Åbent Dagslys at arbejde med netværksudstyr, og også vise hvordan man bruger Postman og enkelt RESTCONF ønsker, kan dette udstyr styres. Vi vil ikke arbejde med hardware, men i stedet vil vi implementere små virtuelle laboratorier med en enkelt router ved hjælp af Vnetlab løbet Ubuntu LTS 20.04.
Jeg vil først vise de detaljerede indstillinger ved at bruge eksemplet på en router Juniper vMX 20.1R1.11, og så sammenligner vi det med indstillingen Cisco xRV9000 7.0.2.
Indhold
Påkrævet viden
Часть 1: diskutere kort OpenDaylight (herefter fjernundervisning), Postman и Vnetlab og hvorfor har vi brug for dem
Часть 2: beskrivelse af det virtuelle laboratorium
Часть 3: konfigurere Åbent Dagslys
Часть 4: konfigurere Vnetlab
Часть 5: ved hjælp af Postman tilslut virtuel router (Juniper vMX) Til fjernundervisning
Часть 6: Hent og skift routerkonfigurationen vha Postman и fjernundervisning
Часть 7: tilføje Cisco xRV9000
Konklusion
PS
Bibliografi
Påkrævet viden
For at artiklen ikke skulle blive til et ark, har jeg udeladt nogle tekniske detaljer (med links til litteratur, hvor du kan læse om dem).
I den forbindelse tilbyder jeg dig emner, som det ville være godt (men næsten ikke nødvendigt) at kende til, inden du læser:
I vores tilfælde er vi interesserede i det som et middel til at sende REST-anmodninger til OpenDaylight API. Du kan selvfølgelig sende forespørgsler manuelt, men i Postman ser alt meget overskueligt ud og passer perfekt til vores formål.
For dem, der vil grave: der er skrevet en masse undervisningsmateriale på den (for eksempel).
Værktøj til at implementere virtuelle routere i Docker
Understøtter: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR osv.
Open Source
Et meget interessant, men lidt kendt instrument. I vores tilfælde vil vi bruge det til at køre Juniper vMX og Cisco xRV9000 på en almindelig Ubuntu 20.04 LTS.
Juniper vMX stiger ind Docker container (ved hjælp Vnetlab) og fungerer som den mest almindelige virtuelle router.
fjernundervisning tilsluttet routeren og giver dig mulighed for at styre den.
Postman lanceret på en separat maskine og gennem den sender vi kommandoer fjernundervisning: for at tilslutte/fjerne routeren, ændre konfigurationen osv.
Kommentar til systemets enhed
Juniper vMX и fjernundervisning kræver ret mange ressourcer for deres stabile drift. Kun en vMX beder om 6 Gb RAM og 4 kerner. Derfor blev det besluttet at flytte alle "sværvægterne" til en separat maskine (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Routeren "flyver" selvfølgelig ikke på den, men ydeevnen rækker til små eksperimenter.
Del 3: Konfigurer OpenDaylight
Den nuværende version af ODL i skrivende stund er Magnesium SR1
1) Installer Java Open JDK 11 (for mere detaljeret installation her)
ubuntu:~$ sudo apt install default-jdk
2) Find og download den seneste build fjernundervisningdermed
3) Pak det downloadede arkiv ud
4) Gå til den resulterende mappe
5) Start ./bin/karaf
På dette trin fjernundervisning skal starte, og vi vil finde os selv i konsollen (Port 8181 bruges til adgang udefra, som vi vil bruge senere).
Installer derefter ODL funktionerdesignet til at arbejde med protokoller NETCONF и RESTCONF. For at gøre dette i konsollen fjernundervisning vi udfører:
Hver router, der er understøttet Vnetlab, har sin egen unikke opsætningsprocedure. Hvornår Juniper vMX vi skal bare uploade .tgz-arkivet med routeren (du kan downloade det fra officielle site) til vmx-biblioteket og kør kommandoen make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Opbygning af et billede vMX vil tage omkring 10-20 minutter. Det er tid til at tage en kop kaffe!
Hvorfor så længe, spørger du?
oversættelse svaret forfatter til dette spørgsmål:
"Dette skyldes, at første gang VCP'en (Control Plane) startes, læser den en konfigurationsfil, der bestemmer, om den vil køre som en VRR VCP i vMX. Tidligere blev denne lancering udført under Docker-opstart, men det betød, at VCP'en blev altid genstartet én gang før den virtuelle router blev tilgængelig, hvilket resulterede i en lang opstartstid (ca. 5 minutter). -privilegeret mulighed, det betyder, at qemu fungerer uden KVM-hardwareacceleration, og opbygningen tager derfor meget lang tid. Under denne proces udsendes der mange logfiler, så du i det mindste kan se, hvad der foregår. Jeg tror, at en lang build er ikke så skræmmende, fordi vi skaber et billede én gang, men vi lancerer mange."
Efter du kan se billedet af vores router 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
Start vr-vmx container
Vi starter med kommandoen:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Dernæst kan vi se oplysninger 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
Tilslutning til routeren
IP-adressen på routerens netværksgrænseflade kan opnås med følgende kommando:
Standard, Vnetlab opretter en bruger på routeren vrnetlab/VR-netlab9.
Forbinder 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
Dette fuldender routerens opsætning.
Installationsanbefalinger til routere fra forskellige leverandører kan findes på github projekt i de respektive mapper.
Del 5: Postmand - tilslut routeren til OpenDaylight
Postmand installation
For at installere skal du blot downloade applikationen dermed.
Tilslutning af en router til ODL
Lad os skabe PUT anmodning:
Forespørgselsstreng:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Disse er interne navnerum XML (XML-navneområde) Til fjernundervisning ifølge hvilken den opretter node.
Yderligere er henholdsvis navnet på routeren node-id, router adresse - host og så videre.
Den mest interessante linje er den sidste. Skema-cache-mappe opretter en mappe, hvor alle filer downloades YANG skema tilsluttet router. Du kan finde dem i $ODL_ROOT/cache/jun01_cache.
Kontrol af forbindelsen til routeren
Lad os skabe GET anmodning:
Forespørgselsstreng:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
På fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
Vi sender. Bør modtage en status på "200 OK" og en liste over alle understøttede af enheden YANG skema:
Kommentar: For at se sidstnævnte var det i mit tilfælde nødvendigt at vente omkring 10 minutter efter henrettelsen PUTindtil alle YANG skema losse på fjernundervisning. Indtil dette punkt, når du udfører dette GET forespørgsel vil vise følgende:
På fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
Del 6: Skift routerkonfigurationen
Henter konfigurationen
Lad os skabe GET anmodning:
Forespørgselsstreng:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
På fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
Vi sender. Skal modtage status "200 OK" og routerkonfigurationen:
Opret en konfiguration
Lad os som et eksempel oprette følgende konfiguration og ændre den:
protocols {
bgp {
disable;
shutdown;
}
}
Lad os skabe POST anmodning:
Forespørgselsstreng:
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å fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
På fanen Overskrifter skal du tilføje to overskrifter:
Accepter ansøgning/xml
Indholdstype applikation/xml
Efter afsendelse bør de modtage status "204 Intet indhold"
For at kontrollere, at konfigurationen er ændret, kan du bruge den forrige forespørgsel. Men for eksempel vil vi oprette en anden, der kun viser oplysninger om de protokoller, der er konfigureret på routeren.
Lad os skabe GET anmodning:
Forespørgselsstreng:
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å fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
Efter at have udført anmodningen, vil vi se følgende:
Skift konfigurationen
Lad os ændre oplysningerne om BGP-protokollen. Efter vores handlinger vil det se sådan ud:
protocols {
bgp {
disable;
}
}
Lad os skabe PUT anmodning:
Forespørgselsstreng:
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
Glem ikke at ændre overskrifterne på fanen Overskrifter til:
Accepter applikation/json
Content-Type-applikation/json
Efter afsendelse får vi følgende resultat (Vi ser på svaret vha GET anmodning):
Del 7: Tilføjelse af Cisco xRV9000
Hvad handler vi om Juniper, ja Juniper? Lad os tale om Cisco!
Jeg fandt xRV9000 version 7.0.2 (et udyr der skal bruge 8Gb RAM og 4 kerner. Det er ikke frit tilgængeligt, så kontakt Cisco) - lad os køre det.
Kørsel af en container
Processen med at oprette en Docker-container er praktisk talt ikke forskellig fra Juniper. På samme måde slipper vi .qcow2-filen med routeren i den mappe, der svarer til dens navn (i dette tilfælde xrv9k) og udfører kommandoen make docker-image.
Efter et par minutter ser vi, at billedet er blevet oprettet:
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 starter beholderen:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Efter et stykke tid ser vi, at beholderen er 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
Tilslut 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
Tilslutning af routeren til OpenDaylight
Tilføjelse sker på en fuldstændig lignende måde med vMX. Vi skal bare ændre navnene. PUT anmodning:
Ring efter et stykke tid GET forespørgsel for at kontrollere, at alt er forbundet:
Skift konfigurationen
Lad os konfigurere følgende konfiguration:
!
router ospf LAB
mpls ldp auto-config
!
Lad os skabe POST anmodning:
Forespørgselsstreng:
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å fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
På fanen Overskrifter skal du tilføje to overskrifter:
Accepter applikation/json
Content-Type-applikation/json
Efter dens udførelse bør de modtage status "204 Intet indhold".
Lad os tjekke, hvad vi har.
For at gøre dette vil vi oprette GET anmodning:
Forespørgselsstreng:
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å fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
På fanen Autorisation skal du indstille parameteren Basic Auth og login/adgangskode: admin/admin.
Konklusion
Samlet set er procedurerne for at forbinde Cisco og Juniper til OpenDaylight, som du måske har bemærket, ikke forskellige - dette åbner ret store muligheder for kreativitet. Startende fra konfigurationsstyring af alle netværkskomponenter og slutter med oprettelsen af dine egne netværkspolitikker.
I denne tutorial har jeg givet de enkleste eksempler på, hvordan du kan interagere med netværksudstyr ved hjælp af OpenDaylight. Uden tvivl kan forespørgslerne fra ovenstående eksempler gøres meget mere komplekse og opsætte hele tjenester med et enkelt klik med musen - alt er kun begrænset af din fantasi *
Fortsættes ...
PS
Hvis du pludselig allerede ved alt dette eller tværtimod er gået igennem og sunket ind i sjælen af ODL, så anbefaler jeg, at du kigger i retning af at udvikle applikationer på ODL-controlleren. Du kan starte dermed.