ProHoster > Blog > administratë > Automatizimi i shërbimeve të rrjetit ose si të ndërtohet një laborator virtual duke përdorur OpenDaylight, Postman dhe Vrnetlab
Automatizimi i shërbimeve të rrjetit ose si të ndërtohet një laborator virtual duke përdorur OpenDaylight, Postman dhe Vrnetlab
Në këtë artikull, unë do t'ju tregoj se si të vendosni dritë e hapur për të punuar me pajisjet e rrjetit, dhe gjithashtu të tregojë se si të përdoret postier dhe e thjeshtë RESTCONF kërkesat, kjo pajisje mund të kontrollohet. Ne nuk do të punojmë me harduer, por në vend të kësaj do të vendosim laboratorë të vegjël virtualë me një ruter të vetëm Vrnetlab mbi Ubuntu LTS 20.04.
Së pari do të tregoj cilësimet e detajuara duke përdorur shembullin e një ruteri Juniper vMX 20.1R1.11, dhe më pas e krahasojmë me cilësimin Cisco xRV9000 7.0.2.
Përmbajtje
Njohuritë e kërkuara
Pjesë 1: diskutoni shkurt OpenDaylight (në tekstin e mëtejmë ODL), postier и Vrnetlab dhe pse na duhen
Pjesë 2: përshkrimi i laboratorit virtual
Pjesë 3: personalizo dritë e hapur
Pjesë 4: personalizo Vrnetlab
Pjesë 5: duke përdorur postier lidhni ruterin virtual (Juniper vMX) Për të ODL
Pjesë 6: merrni dhe ndryshoni konfigurimin e ruterit duke përdorur postier и ODL
Pjesë 7: shtoni Cisco xRV9000
Përfundim
PS
Bibliografi
Njohuritë e kërkuara
Që artikulli të mos shndërrohej në fletë, hoqa disa detaje teknike (me lidhje me literaturën ku mund të lexoni për to).
Në lidhje me këtë, unë ju ofroj tema që do të ishte mirë (por pothuajse jo e nevojshme) t'i dini para se t'i lexoni:
Në rastin tonë, ne jemi të interesuar për të si një mjet për dërgimin e kërkesave REST në OpenDaylight API. Ju, sigurisht, mund të dërgoni kërkesa me dorë, por në Postman gjithçka duket shumë e qartë dhe i përshtatet në mënyrë të përkryer qëllimeve tona.
Për ata që duan të gërmojnë: shumë materiale trajnimi janë shkruar në të (për shembull).
Mjet për vendosjen e ruterave virtualë në Docker
Mbështet: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etj.
Open Source
Një instrument shumë interesant, por pak i njohur. Në rastin tonë, ne do ta përdorim atë për të ekzekutuar Juniper vMX dhe Cisco xRV9000 në një Ubuntu 20.04 LTS të rregullt.
Në këtë tutorial, ne do të konfigurojmë sistemin e mëposhtëm:
Si punon kjo
Juniper vMX ngrihet brenda prerës enë (me mjete Vrnetlab) dhe funksionon si ruteri virtual më i zakonshëm.
ODL i lidhur me ruterin dhe ju lejon ta kontrolloni atë.
postier lëshohet në një makinë të veçantë dhe përmes saj dërgojmë komanda ODL: për të lidhur / hequr ruterin, për të ndryshuar konfigurimin, etj.
Koment mbi pajisjen e sistemit
Juniper vMX и ODL kërkojnë mjaft burime për funksionimin e tyre të qëndrueshëm. Nje i vetem vMX kërkon 6 Gb RAM dhe 4 bërthama. Prandaj, u vendos që të zhvendoseshin të gjitha "peshat e rënda" në një makinë të veçantë (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ruteri, natyrisht, nuk "fluturon" mbi të, por performanca është e mjaftueshme për eksperimente të vogla.
Pjesa 3: Konfiguro OpenDaylight
Versioni aktual i ODL në kohën e këtij shkrimi është Magnezi SR1
1) Instaloni Java e hapur JDK 11 (për instalim më të detajuar këtu)
ubuntu:~$ sudo apt install default-jdk
2) Gjeni dhe shkarkoni versionin më të fundit ODLprandaj
3) Shkëputni arkivin e shkarkuar
4) Shkoni te drejtoria që rezulton
5) Nisja ./bin/karaf
Në këtë hap ODL duhet të fillojë dhe ne do të gjejmë veten në tastierë (Port 8181 përdoret për qasje nga jashtë, të cilën do ta përdorim më vonë).
Tjetra, instaloni Karakteristikat e ODLprojektuar për të punuar me protokolle NETCONF и RESTCONF. Për ta bërë këtë në tastierë ODL ne ekzekutojmë:
Çdo ruter që mbështetet Vrnetlab, ka procedurën e vet unike të konfigurimit. Kur Juniper vMX thjesht duhet të ngarkojmë arkivin .tgz me ruterin (mund ta shkarkoni nga faqen zyrtare) në drejtorinë vmx dhe ekzekutoni komandën make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Ndërtimi i një imazhi vMX do të zgjasë rreth 10-20 minuta. Është koha për të marrë një kafe!
"Kjo ndodh sepse hera e parë që niset VCP (Plani i kontrollit), ai lexon një skedar konfigurimi që përcakton nëse do të funksionojë si VCP VRR në vMX. Më parë, ky nisje bëhej gjatë fillimit të Docker, por kjo nënkuptonte që VCP rifillohej gjithmonë një herë përpara se ruteri virtual të bëhej i disponueshëm, duke rezultuar në një kohë të gjatë nisjeje (rreth 5 minuta) Tani ekzekutimi i parë i VCP kryhet gjatë ndërtimit të imazhit të Docker, dhe meqenëse ndërtimi Docker nuk mund të ekzekutohet me - -opsioni i privilegjuar, kjo do të thotë që qemu punon pa përshpejtim të harduerit KVM dhe kështu ndërtimi merr një kohë shumë të gjatë. Gjatë këtij procesi dalin shumë regjistra, kështu që të paktën mund të shihni se çfarë po ndodh. Mendoj se një ndërtim i gjatë nuk është aq e frikshme sepse ne krijojmë një imazh një herë, por lëshojmë shumë."
Pasi të mund të shihni imazhin e ruterit tonë në prerës:
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
Nisni kontejnerin vr-vmx
Fillojmë me komandën:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Më pas, mund të shohim informacione rreth kontejnerëve aktivë:
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
Lidhja me ruterin
Adresa IP e ndërfaqes së rrjetit të ruterit mund të merret me komandën e mëposhtme:
Default, Vrnetlab krijon një përdorues në ruter vrnetlab/VR-netlab9.
Duke u lidhur me 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
Kjo përfundon konfigurimin e ruterit.
Rekomandimet e instalimit për ruterat e shitësve të ndryshëm mund të gjenden në projekti github në drejtoritë përkatëse.
Pjesa 5: Postier - lidhni ruterin me OpenDaylight
Instalimi i postierit
Për të instaluar, thjesht shkarkoni aplikacionin prandaj.
Lidhja e një ruteri me ODL
Le të krijojmë VENDOSENI kërkesë:
Vargu i pyetjes:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Këto janë hapësira të brendshme emrash XML (Hapësira e emrit XML) për ODL sipas të cilit krijon nyje.
Më tej, përkatësisht, emri i ruterit është nyje-id, adresa e ruterit - mikpritës dhe kështu me radhë.
Linja më interesante është ajo e fundit. Skema-cache-directory krijon një direktori ku shkarkohen të gjithë skedarët Skema YANG router i lidhur. Ju mund t'i gjeni në $ODL_ROOT/cache/jun01_cache.
Kontrollimi i lidhjes së ruterit
Le të krijojmë GET kërkesë:
Vargu i pyetjes:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Ne dërgojmë. Duhet të marrë një status "200 OK" dhe një listë të të gjithave të mbështetura nga pajisja Skema YANG:
Koment: Për të parë këtë të fundit, në rastin tim duhej pritur rreth 10 minuta pas ekzekutimit VENDOSENIderi në të gjitha Skema YANG shkarkoj në ODL. Deri në këtë pikë, kur e kryeni këtë GET pyetja do të shfaqë sa vijon:
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Pjesa 6: Ndryshoni konfigurimin e ruterit
Marrja e konfigurimit
Le të krijojmë GET kërkesë:
Vargu i pyetjes:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Ne dërgojmë. Duhet të marrë statusin "200 OK" dhe konfigurimin e ruterit:
Krijo një konfigurim
Si shembull, le të krijojmë konfigurimin e mëposhtëm dhe ta modifikojmë atë:
protocols {
bgp {
disable;
shutdown;
}
}
Le të krijojmë POST kërkesë:
Vargu i pyetjes:
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
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Në skedën Headers, duhet të shtoni dy tituj:
Prano aplikacionin/xml
Aplikacioni i llojit të përmbajtjes/xml
Pas dërgimit, ata duhet të marrin statusin "204 pa përmbajtje"
Për të kontrolluar nëse konfigurimi ka ndryshuar, mund të përdorni pyetjen e mëparshme. Por për shembull, ne do të krijojmë një tjetër që do të shfaqë informacion vetëm për protokollet e konfiguruara në ruter.
Le të krijojmë GET kërkesë:
Vargu i pyetjes:
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
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Pas ekzekutimit të kërkesës, do të shohim sa vijon:
Ndryshoni konfigurimin
Le të ndryshojmë informacionin rreth protokollit BGP. Pas veprimeve tona, do të duket kështu:
protocols {
bgp {
disable;
}
}
Le të krijojmë VENDOSENI kërkesë:
Vargu i pyetjes:
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
Mos harroni të ndryshoni titujt në skedën Headers në:
Prano aplikacionin/json
Aplikacioni i llojit të përmbajtjes/json
Pas dërgimit, do të marrim rezultatin e mëposhtëm (Ne e shikojmë përgjigjen duke përdorur GET kërkesë):
Pjesa 7: Shtimi i Cisco xRV9000
Çfarë jemi ne të gjithë për Juniper, po Juniper? Le të flasim për Cisco!
Gjeta xRV9000 versionin 7.0.2 (një bishë që ka nevojë për 8 Gb RAM dhe 4 bërthama. Nuk disponohet lirisht, ndaj kontaktoni Cisco) - le ta ekzekutojmë.
Drejtimi i një kontejneri
Procesi i krijimit të një kontejneri Docker praktikisht nuk është i ndryshëm nga Juniper. Në mënyrë të ngjashme, ne hedhim skedarin .qcow2 me ruterin në drejtorinë që korrespondon me emrin e tij (në këtë rast, xrv9k) dhe ekzekutojmë komandën make docker-image.
Pas disa minutash, shohim që imazhi është krijuar:
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
Ne fillojmë enën:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Pas një kohe, ne shohim se kontejneri ka filluar:
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
Lidhu me 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
Lidhja e ruterit me OpenDaylight
Shtimi ndodh në një mënyrë krejtësisht të ngjashme me vMX. Thjesht duhet të ndryshojmë emrat. VENDOSENI kërkesë:
Telefononi pas pak GET kërkoni për të kontrolluar nëse gjithçka është e lidhur:
Ndryshoni konfigurimin
Le të konfigurojmë konfigurimin e mëposhtëm:
!
router ospf LAB
mpls ldp auto-config
!
Le të krijojmë POST kërkesë:
Vargu i pyetjes:
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
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Në skedën Headers, duhet të shtoni dy tituj:
Prano aplikacionin/json
Aplikacioni i llojit të përmbajtjes/json
Pas ekzekutimit të tij, ata duhet të marrin statusin "204 Pa përmbajtje".
Le të kontrollojmë se çfarë kemi.
Për ta bërë këtë, ne do të krijojmë GET kërkesë:
Vargu i pyetjes:
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
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Në skedën Autorizimi, duhet të vendosni parametrin Basic Auth dhe hyrje/fjalëkalim: admin/admin.
Përfundim
Në total, siç mund ta keni vënë re, procedurat për lidhjen e Cisco dhe Juniper me OpenDaylight nuk ndryshojnë - kjo hap një hapësirë mjaft të gjerë për kreativitet. Duke filluar nga menaxhimi i konfigurimit të të gjithë komponentëve të rrjetit dhe duke përfunduar me krijimin e politikave tuaja të rrjetit.
Në këtë tutorial, unë kam dhënë shembujt më të thjeshtë se si mund të ndërveproni me pajisjet e rrjetit duke përdorur OpenDaylight. Pa dyshim, pyetjet nga shembujt e mësipërm mund të bëhen shumë më komplekse dhe të konfiguroni shërbime të tëra me një klik të miut - gjithçka kufizohet vetëm nga imagjinata juaj *
Vazhdon…
PS
Nëse befas tashmë i dini të gjitha këto ose, përkundrazi, keni kaluar dhe zhytur në shpirtin e ODL, atëherë ju rekomandoj të shikoni drejt zhvillimit të aplikacioneve në kontrolluesin ODL. Mund të filloni prandaj.