ProHoster > Blog > Uprava > Avtomatizacija omrežnih storitev ali kako zgraditi virtualni laboratorij z uporabo OpenDaylight, Postman in Vrnetlab
Avtomatizacija omrežnih storitev ali kako zgraditi virtualni laboratorij z uporabo OpenDaylight, Postman in Vrnetlab
V tem članku vam bom pokazal, kako nastavite odprta dnevna svetloba za delo z omrežno opremo in tudi pokazati, kako uporabljati Poštar in preprosto RESTCONF zahteve, je to opremo mogoče nadzorovati. Ne bomo delali s strojno opremo, temveč bomo postavili majhne virtualne laboratorije z enim samim usmerjevalnikom Vrnetlab čez Ubuntu LTS 20.04.
Najprej bom prikazal podrobne nastavitve na primeru usmerjevalnika Juniper vMX 20.1R1.11, nato pa ga primerjamo z nastavitvijo Cisco xRV9000 7.0.2.
Vsebina
Potrebno znanje
Часть 1: na kratko razpravljajte OpenDaylight (v nadaljevanju ODL), Poštar и Vrnetlab in zakaj jih potrebujemo
Часть 2: opis virtualnega laboratorija
Часть 3: prilagoditi odprta dnevna svetloba
Часть 4: prilagoditi Vrnetlab
Часть 5: z uporabo Poštar povežite virtualni usmerjevalnik (Juniper vMX) Za ODL
Часть 6: dobite in spremenite konfiguracijo usmerjevalnika z uporabo Poštar и ODL
Часть 7: dodajte Cisco xRV9000
Zaključek
PS
Bibliografija
Potrebno znanje
Da se članek ne bi spremenil v list, sem izpustil nekaj tehničnih podrobnosti (s povezavami do literature, kjer si lahko preberete o njih).
V zvezi s tem vam ponujam teme, ki bi jih bilo dobro (skoraj ne nujno) poznati pred branjem:
V našem primeru nas zanima kot sredstvo za pošiljanje REST zahtev API-ju OpenDaylight. Seveda lahko zahteve pošiljate ročno, vendar je v Postmanu vse videti zelo jasno in popolnoma ustreza našim namenom.
Za tiste, ki želijo kopati: na njem je napisanih veliko gradiva za usposabljanje (na primer).
Orodje za uvajanje virtualnih usmerjevalnikov v Docker
Podpira: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR itd.
open Source
Zelo zanimiv, a malo poznan instrument. V našem primeru ga bomo uporabili za zagon Juniper vMX in Cisco xRV9000 na običajnem Ubuntu 20.04 LTS.
Juniper vMX vstane Lučki delavec posoda (s pomočjo Vrnetlab) in deluje kot najpogostejši virtualni usmerjevalnik.
ODL povezan z usmerjevalnikom in omogoča nadzor nad njim.
Poštar zaženemo na ločenem stroju in prek njega pošiljamo ukaze ODL: za povezavo/odstranitev usmerjevalnika, spreminjanje konfiguracije itd.
Komentar o napravi sistema
Juniper vMX и ODL zahtevajo precej sredstev za svoje stabilno delovanje. Eno samo vMX zahteva 6 Gb RAM-a in 4 jedra. Zato je bilo odločeno, da se vse "težke kategorije" premaknejo v ločen stroj (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Usmerjevalnik seveda ne "leti" na njem, vendar je zmogljivost dovolj za majhne poskuse.
3. del: Nastavite OpenDaylight
Trenutna različica ODL v času tega pisanja je Magnesium SR1
1) Namestitev Java Open JDK 11 (za podrobnejšo namestitev tukaj)
ubuntu:~$ sudo apt install default-jdk
2) Poiščite in prenesite najnovejšo gradnjo ODLzato
3) Razpakirajte preneseni arhiv
4) Pojdite v nastali imenik
5) Zagon ./bin/karaf
Na tem koraku ODL se mora zagnati in znašli se bomo v konzoli (vrata 8181 se uporabljajo za dostop od zunaj, ki jih bomo uporabili kasneje).
Nato namestite Funkcije ODLzasnovan za delo s protokoli NETCONF и RESTCONF. Če želite to narediti v konzoli ODL izvajamo:
Vsak usmerjevalnik, ki je podprt Vrnetlab, ima svoj edinstven postopek nastavitve. Kdaj Juniper vMX z usmerjevalnikom moramo samo naložiti arhiv .tgz (lahko ga prenesete iz uradna spletna stran) v imenik vmx in zaženite ukaz make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Grajenje podobe vMX bo trajalo približno 10-20 minut. Čas je, da gremo na kavo!
"To je zato, ker ob prvem zagonu VCP (Control Plane) prebere konfiguracijsko datoteko, ki določa, ali se bo izvajal kot VRR VCP v vMX. Prej je bil ta zagon opravljen med zagonom Dockerja, vendar je to pomenilo, da VCP je bil vedno znova zagnan enkrat, preden je navidezni usmerjevalnik postal na voljo, kar je povzročilo dolg čas zagona (približno 5 minut). Zdaj se prvi zagon VCP izvede med gradnjo slike Docker in ker gradnje Dockerja ni mogoče zagnati z - -privilegirana možnost, to pomeni, da qemu deluje brez pospeševanja strojne opreme KVM in zato gradnja traja zelo dolgo. Med tem postopkom se izpiše veliko dnevnikov, tako da lahko vsaj vidite, kaj se dogaja. Mislim, da je dolga gradnja ni tako strašljivo, ker podobo ustvarimo enkrat, lansiramo pa veliko."
Potem si lahko ogledate sliko našega usmerjevalnika Lučki delavec:
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
Zaženi vsebnik vr-vmx
Začnemo z ukazom:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Nato lahko vidimo informacije o aktivnih vsebnikih:
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
Povezovanje z usmerjevalnikom
Naslov IP omrežnega vmesnika usmerjevalnika lahko dobite z naslednjim ukazom:
privzeto, Vrnetlab ustvari uporabnika na usmerjevalniku vrnetlab/VR-netlab9.
Povezovanje z 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
S tem je nastavitev usmerjevalnika končana.
Priporočila za namestitev usmerjevalnikov različnih proizvajalcev najdete na projekt github v ustreznih imenikih.
5. del: Poštar - povežite usmerjevalnik z OpenDaylight
Montaža poštarja
Za namestitev preprosto prenesite aplikacijo zato.
Povezovanje usmerjevalnika z ODL
Ustvarjajmo PUT prošnja:
Niz poizvedbe:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
To so notranji imenski prostori XML (Imenski prostor XML) za ODL po kateri ustvari vozlišče.
Nadalje je ime usmerjevalnika vozlišče-id, naslov usmerjevalnika - gostitelj in tako naprej.
Najbolj zanimiva vrstica je zadnja. Imenik predpomnilnika sheme ustvari imenik, kamor se prenesejo vse datoteke Shema YANG povezan usmerjevalnik. Najdete jih v $ODL_ROOT/cache/jun01_cache.
Preverjanje povezave usmerjevalnika
Ustvarjajmo GET prošnja:
Niz poizvedbe:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
Pošiljamo. Prejeti mora status "200 OK" in seznam vseh, ki jih naprava podpira Shema YANG:
Komentar: Za ogled slednjega je bilo v mojem primeru treba počakati približno 10 minut po izvedbi PUTdokler vse shema YANG raztovoriti naprej ODL. Do te točke, ko izvajate to GET poizvedba bo prikazala naslednje:
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
6. del: Spremenite konfiguracijo usmerjevalnika
Pridobivanje konfiguracije
Ustvarjajmo GET prošnja:
Niz poizvedbe:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
Pošiljamo. Prejeti mora status "200 OK" in konfiguracijo usmerjevalnika:
Ustvarite konfiguracijo
Za primer ustvarimo naslednjo konfiguracijo in jo spremenimo:
protocols {
bgp {
disable;
shutdown;
}
}
Ustvarjajmo POST prošnja:
Niz poizvedbe:
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
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
Na zavihku Glave morate dodati dve glavi:
Sprejmi aplikacijo/xml
Aplikacija Content-Type/xml
Po pošiljanju bi morali prejeti status "204 Brez vsebine"
Če želite preveriti, ali se je konfiguracija spremenila, lahko uporabite prejšnjo poizvedbo. Ampak na primer, ustvarili bomo drugega, ki bo prikazoval informacije samo o protokolih, konfiguriranih na usmerjevalniku.
Ustvarjajmo GET prošnja:
Niz poizvedbe:
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
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
Po izvedbi zahteve bomo videli naslednje:
Spremenite konfiguracijo
Spremenimo podatke o protokolu BGP. Po naših dejanjih bo videti takole:
protocols {
bgp {
disable;
}
}
Ustvarjajmo PUT prošnja:
Niz poizvedbe:
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
Po pošiljanju bomo dobili naslednji rezultat (odgovor pogledamo z uporabo GET prošnja):
7. del: Dodajanje Cisco xRV9000
Kaj vse smo o Juniperju, ja Juniperju? Pogovorimo se o Ciscu!
Našel sem xRV9000 različice 7.0.2 (zver, ki potrebuje 8 Gb RAM-a in 4 jedra. Ni prosto dostopen, zato kontaktirajte Cisco) - zaženimo ga.
Vodenje kontejnerja
Postopek ustvarjanja vsebnika Docker se praktično ne razlikuje od Juniperja. Podobno spustimo datoteko .qcow2 z usmerjevalnikom v imenik, ki ustreza njegovemu imenu (v tem primeru xrv9k) in izvedemo ukaz make docker-image.
Po nekaj minutah vidimo, da je slika ustvarjena:
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
Zaženemo posodo:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Čez nekaj časa vidimo, da se je vsebnik začel:
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
Povežite se prek 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
Povezovanje usmerjevalnika z OpenDaylight
Dodajanje poteka na popolnoma podoben način z vMX. Samo imena moramo spremeniti. PUT prošnja:
Pokliči čez nekaj časa GET poizvedba za preverjanje, ali je vse povezano:
Spremenite konfiguracijo
Nastavimo naslednjo konfiguracijo:
!
router ospf LAB
mpls ldp auto-config
!
Ustvarjajmo POST prošnja:
Niz poizvedbe:
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
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
Na zavihku Glave morate dodati dve glavi:
Sprejmi aplikacijo/json
Aplikacija Content-Type/json
Po njegovi izvedbi bi morali prejeti status "204 Brez vsebine".
Preverimo, kaj imamo.
Da bi to naredili, bomo ustvarili GET prošnja:
Niz poizvedbe:
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
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
Na zavihku Pooblastilo morate nastaviti parameter Basic Auth in prijava/geslo: admin/admin.
Zaključek
Kot ste morda opazili, se postopki za povezovanje Cisco in Juniper z OpenDaylight ne razlikujejo - to odpira precej širok prostor za ustvarjalnost. Začenši z upravljanjem konfiguracije vseh omrežnih komponent in konča z ustvarjanjem lastnih omrežnih politik.
V tej vadnici sem podal najpreprostejše primere, kako lahko komunicirate z omrežno opremo z uporabo OpenDaylight. Nedvomno je mogoče poizvedbe iz zgornjih primerov narediti veliko bolj kompleksne in nastaviti celotne storitve z enim klikom miške - vse je omejeno le z vašo domišljijo *
Se nadaljuje ...
PS
Če nenadoma že veste vse to ali ste, nasprotno, šli skozi in potonili v dušo ODL, potem priporočam, da si ogledate razvoj aplikacij na krmilniku ODL. Lahko začnete zato.