ProHoster > Блог > Administracija > Automatizacija mrežnih servisa ili kako izgraditi virtuelnu laboratoriju koristeći OpenDaylight, Postman i Vrnetlab
Automatizacija mrežnih servisa ili kako izgraditi virtuelnu laboratoriju koristeći OpenDaylight, Postman i Vrnetlab
U ovom članku pokazat ću vam kako se postaviti OpenDaylight za rad sa mrežnom opremom, kao i pokazati kako se koristi Poštar i jednostavno RESTCONF zahtevima, ova oprema se može kontrolisati. Nećemo raditi s hardverom, već ćemo umjesto toga postaviti male virtuelne laboratorije s jednim ruterom Vrnetlab više Ubuntu 20.04 LTS.
Najprije ću pokazati detaljne postavke na primjeru rutera Juniper vMX 20.1R1.11, a zatim ga upoređujemo sa postavkom Cisco xRV9000 7.0.2.
Sadržaj
Potrebno znanje
Dio 1: raspraviti ukratko OpenDaylight (u daljem tekstu ODL), Poštar и Vrnetlab i zašto su nam potrebni
Dio 2: opis virtuelne laboratorije
Dio 3: prilagoditi OpenDaylight
Dio 4: prilagoditi Vrnetlab
Dio 5: korištenjem Poštar povežite virtuelni ruter (Juniper vMX) Za ODL
Dio 6: nabavite i promijenite konfiguraciju rutera pomoću Poštar и ODL
Dio 7: dodati Cisco xRV9000
zaključak
PS
Bibliografija
Potrebno znanje
Kako se članak ne bi pretvorio u list, izostavio sam neke tehničke detalje (sa linkovima na literaturu gdje možete pročitati o njima).
S tim u vezi, nudim vam teme koje bi bilo dobro (ali skoro da nije neophodno) znati prije čitanja:
U našem slučaju nas to zanima kao sredstvo za slanje REST zahtjeva OpenDaylight API-ju. Zahtjeve možete, naravno, slati ručno, ali u Postmanu sve izgleda vrlo jasno i savršeno odgovara našim svrhama.
Za one koji žele kopati: puno materijala za obuku je napisano na njemu (na primjer).
Alat za implementaciju virtuelnih rutera u Dockeru
Podržava: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, itd.
Open Source
Vrlo zanimljiv, ali malo poznat instrument. U našem slučaju, koristićemo ga za pokretanje Juniper vMX i Cisco xRV9000 na običnom Ubuntu 20.04 LTS.
Juniper vMX diže se doker kontejner (pomoću Vrnetlab) i funkcionira kao najčešći virtualni ruter.
ODL povezan sa ruterom i omogućava vam da ga kontrolišete.
Poštar pokrenut na posebnoj mašini i preko nje šaljemo komande ODL: za povezivanje / uklanjanje rutera, promjenu konfiguracije itd.
Komentar o uređaju sistema
Juniper vMX и ODL zahtijevaju dosta resursa za njihov stabilan rad. Samo jedan vMX traži 6 Gb RAM-a i 4 jezgra. Stoga je odlučeno da se svi "teškaši" presele u zasebnu mašinu (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ruter, naravno, ne "leti" na njemu, ali performanse su dovoljne za male eksperimente.
Dio 3: Postavite OpenDaylight
Trenutna verzija ODL-a u vrijeme pisanja ovog teksta je Magnesium SR1
1) Instalirajte Java Open JDK 11 (za detaljniju instalaciju ovdje)
ubuntu:~$ sudo apt install default-jdk
2) Pronađite i preuzmite najnoviju verziju ODLodavde
3) Raspakujte preuzetu arhivu
4) Idite na rezultirajući direktorij
5) Lansiranje ./bin/karaf
Na ovom koraku ODL trebalo bi da počne i naći ćemo se u konzoli (port 8181 se koristi za pristup izvana, koji ćemo koristiti kasnije).
Zatim, instalirajte ODL karakteristikedizajniran za rad sa protokolima NETCONF и RESTCONF. Da biste to učinili u konzoli ODL izvršavamo:
Svaki ruter koji je podržan Vrnetlab, ima svoju jedinstvenu proceduru podešavanja. Kada Juniper vMX samo treba da učitamo .tgz arhivu sa ruterom (možete je preuzeti sa službene stranice) u vmx direktorij i pokrenite naredbu make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Izgradnja imidža vMX trajat će oko 10-20 minuta. Vrijeme je da odemo na kafu!
"To je zato što prvi put kada se VCP (Control Plane) pokrene, čita konfiguracionu datoteku koja određuje da li će se pokrenuti kao VRR VCP u vMX-u. Ranije je ovo pokretanje obavljeno tokom pokretanja Docker-a, ali to je značilo da VCP je uvijek ponovo pokrenut jednom prije nego što je virtuelni ruter postao dostupan, što je rezultiralo dugim vremenom pokretanja (oko 5 minuta) Sada se prvo pokretanje VCP-a obavlja tokom izgradnje Docker slike, a pošto se Docker build ne može pokrenuti sa - -privilegirana opcija, to znači da qemu radi bez KVM hardverske akceleracije i samim tim gradnja traje jako dugo. Tokom ovog procesa, izlazi puno logova, tako da barem možete vidjeti šta se dešava. Mislim da je duga gradnja nije toliko strašno jer sliku kreiramo jednom, ali lansiramo mnoge."
Nakon što možete vidjeti sliku našeg rutera doker:
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
Pokrenite vr-vmx kontejner
Počinjemo sa naredbom:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Zatim možemo vidjeti informacije o aktivnim kontejnerima:
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
Povezivanje na ruter
IP adresa mrežnog interfejsa rutera može se dobiti sljedećom naredbom:
Default, Vrnetlab kreira korisnika na ruteru vrnetlab/VR-netlab9.
Povezivanje sa 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
Ovo dovršava postavljanje rutera.
Preporuke za instalaciju rutera različitih proizvođača možete pronaći na github projekat u odgovarajućim imenicima.
Dio 5: Poštar - povežite ruter na OpenDaylight
Instalacija poštara
Da biste instalirali, samo preuzmite aplikaciju odavde.
Povezivanje rutera na ODL
Kreirajmo PUT upit:
Niz upita:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ovo su interni prostori imena XML (XML imenski prostor) for ODL prema kojem stvara čvor.
Dalje, odnosno ime rutera je čvor-id, adresa rutera - domaćin i tako dalje.
Najzanimljivija linija je posljednja. Shema-cache-directory kreira direktorij u koji se preuzimaju sve datoteke YANG Schema povezani ruter. Možete ih pronaći u $ODL_ROOT/cache/jun01_cache.
Provjera veze rutera
Kreirajmo GET upit:
Niz upita:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Na kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
Šaljemo. Trebao bi dobiti status "200 OK" i listu svega što uređaj podržava YANG Schema:
komentar: Da vidim ovo drugo, u mom slučaju je bilo potrebno sačekati oko 10 minuta nakon izvršenja PUTdo svih YANG shema istovariti dalje ODL. Do ove tačke, prilikom izvođenja ovoga GET upit će prikazati sljedeće:
Na kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
Dio 6: Promjena konfiguracije rutera
Dobivanje konfiguracije
Kreirajmo GET upit:
Niz upita:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Na kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
Šaljemo. Trebao bi dobiti status "200 OK" i konfiguraciju rutera:
Kreirajte konfiguraciju
Kao primjer, napravimo sljedeću konfiguraciju i izmijenimo je:
protocols {
bgp {
disable;
shutdown;
}
}
Kreirajmo POST upit:
Niz upita:
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 kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
Na kartici Zaglavlja morate dodati dva zaglavlja:
Prihvati aplikaciju/xml
Content-Type application/xml
Nakon slanja, oni bi trebali dobiti status "204 bez sadržaja"
Da biste provjerili da li se konfiguracija promijenila, možete koristiti prethodni upit. Ali na primjer, kreirat ćemo još jedan koji će prikazivati informacije samo o protokolima konfiguriranim na ruteru.
Kreirajmo GET upit:
Niz upita:
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 kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
Nakon izvršenja zahtjeva, vidjet ćemo sljedeće:
Promijenite konfiguraciju
Hajde da promenimo informacije o BGP protokolu. Nakon naših akcija, to će izgledati ovako:
protocols {
bgp {
disable;
}
}
Kreirajmo PUT upit:
Niz upita:
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
Ne zaboravite promijeniti zaglavlja na kartici Zaglavlja u:
Prihvatite aplikaciju/json
Content-Type application/json
Nakon slanja, dobit ćemo sljedeći rezultat (Odgovor gledamo pomoću GET zahtjev):
Deo 7: Dodavanje Cisco xRV9000
Šta smo mi svi u vezi Juniper, da Juniper? Hajde da pričamo o Cisco!
Našao sam xRV9000 verziju 7.0.2 (zvijer kojoj treba 8Gb RAM-a i 4 jezgra. Nije slobodno dostupan, pa kontaktirajte Cisco) - pokrenimo ga.
Pokretanje kontejnera
Proces stvaranja Docker kontejnera se praktički ne razlikuje od Junipera. Slično, ispuštamo datoteku .qcow2 sa ruterom u direktorij koji odgovara njegovom imenu (u ovom slučaju, xrv9k) i izvršavamo naredbu make docker-image.
Nakon nekoliko minuta vidimo da je slika kreirana:
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
Pokrećemo kontejner:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Nakon nekog vremena, vidimo da je kontejner pokrenut:
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 putem ssh-a:
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
Povezivanje rutera na OpenDaylight
Dodavanje se dešava na potpuno sličan način sa vMX-om. Samo treba da promenimo imena. PUT upit:
Pozovite nakon nekog vremena GET upit da provjerite da li je sve povezano:
Promijenite konfiguraciju
Postavimo sljedeću konfiguraciju:
!
router ospf LAB
mpls ldp auto-config
!
Kreirajmo POST upit:
Niz upita:
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 kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
Na kartici Zaglavlja morate dodati dva zaglavlja:
Prihvatite aplikaciju/json
Content-Type application/json
Nakon izvršenja, oni bi trebali dobiti status "204 Bez sadržaja".
Hajde da proverimo šta imamo.
Da bismo to uradili, kreiraćemo GET upit:
Niz upita:
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 kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
Na kartici Autorizacija morate postaviti parametar Basic Auth i login/lozinka: admin/admin.
zaključak
Ukupno, kao što ste možda primijetili, procedure za povezivanje Cisco-a i Junipera sa OpenDaylight-om se ne razlikuju - ovo otvara prilično širok prostor za kreativnost. Počevši od upravljanja konfiguracijom svih mrežnih komponenti i završavajući kreiranjem vlastitih mrežnih politika.
U ovom tutorijalu dao sam najjednostavnije primjere kako možete komunicirati s mrežnom opremom koristeći OpenDaylight. Bez sumnje, upite iz gornjih primjera možete učiniti mnogo složenijim i postaviti čitave usluge jednim klikom miša - sve je ograničeno samo vašom maštom *
Da se nastavi ...
PS
Ako odjednom već sve ovo znate ili ste, naprotiv, prošli i utonuli u dušu ODL-a, onda preporučujem da se okrenete razvoju aplikacija na ODL kontroleru. Možete početi odavde.