
Selles artiklis rÀÀgin, kuidas seadistada OpenDaylight tööks vĂ”rguvarustusega ning nĂ€itan, kuidas Postman ja lihtsa RESTCONF pĂ€ringutega saab seda varustust juhtida. Me ei tegele riistvaraga, vaid loobime vĂ€ikeseid virtuaallaborit ĂŒhel ainukesel ruuteril Vrnetlab alusel Ubuntu 20.04 LTS.
Kohandatud seadistust nÀitan esmalt ruuteri nÀitel Juniper vMX 20.1R1.11, seejÀrel vÔrdleme seda seadistust Cisco xRV9000 7.0.2.
Sisu
- Vajadlikud teadmised
- Osa 1: lĂŒhike ĂŒlevaade OpenDaylight (edasi tekstis ODL), Postman ja Vrnetlab ja miks need meile vajalikud on
- Osa 2: virtuaallabori kirjeldus
- Osa 3: seadistame OpenDaylight
- Osa 4: seadistame Vrnetlab
- Osa 5: abil Postman ĂŒhendame virtuaalse ruuteri (Juniper vMX) ODL
- Osa 6: saame ja muudame ruuteri konfiguratsiooni Postman ja ODL
- Osa 7: lisame Cisco xRV9000
- KokkuvÔte
- P.S.
- Tehniliste dokumentide loetelu
Vajadlikud teadmised
Kuna ma ei tahtnud, et artikkel muutuks liiga pikaks, jĂ€tsin mĂ”ned tehnilised ĂŒksikasjad vĂ€lja (koos viidetega kirjandusele, kus neist rohkem lugeda).
SeetÔttu pakun vÀlja teemasid, mida oleks hea teada enne lugemist (kuigi need pole kohustuslikud):
- ,
- /
Osa 1: Natuke teooriat

- Avatud SDN platvorm, mis on mÔeldud kÔikide vÔrkude haldus- ja automatiseerimislahenduste jaoks, mida toetab Linux Foundation
- Java sees
- PÔhineb mudelipÔhisel teenuste abstraktsioonitasemel (MD-SAL)
- Kasutab YANG mudeleid RESTCONF API automaatseks loomiseks vÔrgu seadmete jaoks
Peamine moodul vĂ”rguhalduseks. Just selle kaudu suhtleme ĂŒhendatud seadmetega. Hallatakse oma API kaudu.
OpenDaylight'ist on vÔimalik rohkem lugeda .

- API testimise ĐžĐœŃŃŃŃĐŒĐ”ĐœŃ
- Lihtne ja mugav kasutada
Meie jaoks on see huvitav kui vahend REST pÀringute saatmiseks OpenDaylight API-le. Loomulikult on vÔimalik ka kÀsitsi pÀringute saadetamine, kuid Postmanis nÀeb kÔik vÀga selgelt vÀlja ja sobib meie eesmÀrkide jaoks ideaalselt.
Neile, kes soovivad sĂŒveneda: selle kohta on kirjutatud palju Ă”ppematerjale ().

- Tööriist virtuaalsete ruuterite kÀivitamiseks Docker'is
- Toetab: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR jne.
- Avatud lÀhtekood
VÀga huvitav, kuid vÀhe tuntud tööriist. Meie puhul kasutame seda Juniper vMX ja Cisco xRV9000 kÀivitamiseks tavalises Ubuntu 20.04 LTS-is.
Selle kohta on vÔimalik rohkem lugeda .
Osa 2: laboratoorne töö
KĂ€esoleva Ă”petuse raames seadistame jĂ€rgmise sĂŒsteemi:

Kuidas see toimib
- Juniper vMX töötavad Docker anum (kasutades Vrnetlab) ja toimib nagu tavaline virtuaalne ruuter.
- ODL ĂŒhendatud ruuteriga ja vĂ”imaldab selle haldamist.
- Postman kĂ€ivitatud eraldi masinal ja selle kaudu saadame kĂ€ske ODL: ruuteri ĂŒhendamiseks/eemaldamiseks, konfiguratsiooni muutmiseks jne.
SĂŒsteemi seadmestiku kommentaar
Juniper vMX ja ODL nĂ”uavad stabiilseks tööks ĂŒsna palju ressursse. Ăksnes vMX vajab 6 Gb RAM-i ja 4 tuuma. SeetĂ”ttu otsustati kĂ”ik "raskeveokid" viia eraldi masinale (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ruuter ei "lendle", aga vĂ€ikeste katsete jaoks piisab jĂ”udlusest.
Osa 3: seadistame OpenDaylight

KĂ€esoleva artikli kirjutamise ajal on ODL uusim versioon â Magnesium SR1
1) Paigaldame Java OpenJDK 11 (tÀiendava paigalduse kohta )
ubuntu:~$ sudo apt install default-jdk2) Leiame ja laadime alla vÀrske koostise ODL
3) Pakkime alla laaditud arhiivi lahti
4) Liigume saadud katalooge
5) KĂ€ivitame ./bin/karaf
Sellel sammul ODL peab kÀivituma ja me saame konsooli (VÀljuseks kasutatakse porti 8181, mida me hiljem kasutame).
Edasi paigaldame ODL Features, mis on mÔeldud protokollidega töötamiseks NETCONF ja RESTCONF. Selleks konsoolis ODL tÀidame:
opendaylight-user@root> feature:install odl-netconf-topology odl-restconf-allSelle lihtsaim seadistus ODL on lÔpetatud. (Rohkem teavet leiate ).
Osa 4: seadistame Vrnetlabi

SĂŒsteemi ettevalmistamine
Enne paigaldamist Vrnetlab peab installima vajalikud paketid. Nagu nÀiteks , , :
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt -y install python3-bs4 sshpass make
ubuntu:~$ sudo apt -y install git
ubuntu:~$ sudo apt install -y
apt-transport-https ca-certificates
curl gnupg-agent software-properties-common
ubuntu:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
ubunt:~$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
ubunt:~$ sudo apt update
ubuntu:~$ sudo apt install -y docker-ce docker-ce-cli containerd.ioVrnetlabi installimine
Paigaldamiseks Vrnetlab kloneerime vastava repo githubist:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.gitNavigate to the directory vrnetlab:
ubuntu:~$ cd ~/vrnetlabSiin on nĂ€htavad kĂ”ik skriptid, mis on vajalikud kĂ€ivitamiseks. Pange tĂ€hele, et iga tĂŒĂŒbi ruuteri jaoks on loodud vastav kaust:
ubuntu:~/vrnetlab$ ls
CODE_OF_CONDUCT.md config-engine-lite openwrt vr-bgp
CONTRIBUTING.md csr routeros vr-xcon
LICENSE git-lfs-repo.sh sros vrnetlab.sh
Makefile makefile-install.include topology-machine vrp
README.md makefile-sanity.include veos vsr1000
ci-builder-image makefile.include vmx xrv
common nxos vqfx xrv9kLoome routeri image
Iga router, mida toetatakse Vrnetlab, omab oma unikaalset seadistusprotsessi. Sel juhul Juniper vMX on meil piisav, kui paneme .tgz arhiivi routeriga (saate selle alla laadida ) vmx kausta ja tÀidame kÀsu make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Kopeerime selle kausta .tgz arhiivi routeriga
ubuntu:~$ sudo makePildi koostamine vMX vÔtab aega umbes 10-20 minutit. Just sobiv hetk, et minna kohvi keetma!
Miks nii kaua, vĂ”ite kĂŒsida?
TĂ”lge autori kĂŒsimusele:
"See, when the VCP (Control Plane) is initially started, it reads the configuration file that determines whether it will function as a VRR VCP in vMX. Previously, this initialization occurred during Docker startup, which meant the VCP was always restarted once before the virtual router became available, leading to long boot times (around 5 minutes). Now, the first launch of the VCP happens during the Docker image build, and since Docker builds cannot be run with the âprivileged flag, this implies that qemu operates without KVM hardware acceleration, making the build process significantly time-consuming. During this process, a lot of logs will be produced, so at least you can see whatâs happening. I believe that a long build isn't that bad since we create the image once and run it many times."
Later, you will be able to see our router's image in 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 101MBStarting the vr-vmx container
Starting with the command:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453cVĂ”ime nĂŒĂŒd vaadata aktiivsete konteinerite teavet:
ubuntu:~$ sudo docker container list
KONTEINER ID PILDID KĂSK LOODUD OLEK PORTID NIMED
120f882c8712 b1b2369b453c "/launch.py" 2 minutit tagasi TĂ”usnud 2 minutit (ebatervislik) 22/tcp, 830/tcp, 5000/tcp, 10000-10099/tcp, 161/udp jun01Ăhendame ruuteriga
Ruuteri vÔrguliidese IP-aadressi saab jÀrgmise kÀsuga:
ubuntu:~$ sudo docker inspect --format '{{.NetworkSettings.IPAddress}}' jun01
172.17.0.2Vaikimisi, Vrnetlab loob ruuterile kasutaja vrnetlab/VR-netlab9.
Ăhendame lĂ€bi ssh:
ubuntu:~$ ssh vrnetlab@172.17.0.2
KĂŒlalise autentsust '172.17.0.2 (172.17.0.2)' ei saa kinnitada.
ECDSA vÔtme sÔrmejÀlg on SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Kas olete kindel, et soovite jĂ€tkata ĂŒhenduse loomist (jah/ei/[sĂ”rmejĂ€lg])? jah
Hoiatus: '172.17.0.2' (ECDSA) on pĂŒsivalt lisatud tuntud hostide loendisse.
Parool:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> nÀita versiooni
Mudel: vmx
Junos: 20.1R1.11Ruuteri seadistamine on sellega lÔpetatud.
Erinevate tootjate ruuterite installimise soovitusi leiate vastavatest kaustadest.
Osa 5: Postman â ĂŒhendame ruuteri OpenDaylightiga
Postmani installimine
Installimiseks piisab rakenduse allalaadimisest .
Ruuteri ĂŒhendamine ODL-iga
Loome PUT pÀringu:

- PĂ€ringu rida:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - KĂŒsimuse keha (Body vahekaart):
jun01 172.17.0.2 22 vrnetlab VR-netlab9 false jun01_cache - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja kasutajanimi/parool: admin/admin. See on vajalik juurdepÀÀsuks ODL-le:

- Headers vahekaart peab sisaldama kaht pÀist:
- Accept application/xml
- Content-Type application/xml
Meie pÀring on loodud. Saatke. Kui kÔik oli Ôigesti seadistatud, peaksime saama staatuse "201 Created":
![]()
Mida see pÀring teeb?
Loome skeemi sees ODL reaalse ruuteri parameetritega, millele soovime juurde pÀÀseda.
xmlns="urn:TBD:params:xml:ns:yang:network-topology"
xmlns="urn:opendaylight:netconf-node-topology"Need on sisemised nimede ruumid XML (XML nimede ruum) vastavalt ODL mille alusel loodud node.
Edasi, vastavalt, ruuteri nimi on node-id, ruuteri aadress on host jne.
Ainult huvitav rida on viimane. Schema-cache-directory loob katalooge, kuhu salvestatakse kĂ”ik failid YANG Schema ĂŒhendatud ruuteri kohta. Leida need saab $ODL_ROOT/cache/jun01_cache.
Kontrollime ruuteri ĂŒhendust
Loome GET pÀringu:
- PĂ€ringu rida:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/ - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin.
Saadame. Peame saama oleku "200 OK" ja nimekirja kÔigist toetatud seadmetest YANG Schema:

Kommentaar: Viimase nÀgemiseks oli minu puhul vajalik oodata umbes 10 minutit pÀrast sooritamist PUT, kuni kÔik YANG skeem salvestatakse ODL. Enne seda hetke kÀivitamisel GET antakse jÀrgmine vÀljund:

Kustutame ruuteri
Loome DELETE pÀringu:
- PĂ€ringu rida:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin.
Osa 6: Muudame ruuteri konfiguratsiooni
Saame konfiguratsiooni
Loome GET pÀringu:
- PĂ€ringu rida:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/ - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin.
Saadame. Peame saama oleku "200 OK" ja ruuteri konfiguratsiooni:

Loome konfiguratsiooni
NÀiteks loome jÀrgmist konfiguratsiooni ja muudame seda:
protocols {
bgp {
disable;
shutdown;
}
}Loome POST pÀringu:
- PĂ€ringu rida:
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 - KĂŒsimuse keha (Body vahekaart):
- Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin. - Headers vahekaart peab sisaldama kaht pÀist:
- Accept application/xml
- Content-Type application/xml
Peale saatmist peaks saama staatuse "204 No Content"
Kuna konfiguratsiooni on muudetud, saab eelnevat pĂ€ringut kasutada kontrollimiseks. NĂ€iteks loome veel ĂŒhe pĂ€ringu, mis kuvab ainult marsruuteri konfigureeritud protokollide teavet.
Loome GET pÀringu:
- PĂ€ringu rida:
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 - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin.
PÀrast pÀringu tÀitmist nÀeme jÀrgmist:

Muudame konfiguratsiooni
Muudame BGP protokolli teavet. PÀrast meie muudatusi nÀeb see vÀlja jÀrgmine:
protocols {
bgp {
disable;
}
}Loome PUT pÀringu:
- PĂ€ringu rida:
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 - KĂŒsimuse keha (Body vahekaart):
- Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin. - Headers vahekaart peab sisaldama kaht pÀist:
- Accept application/xml
- Content-Type application/xml
Eelnevat GET pÀringut kasutades nÀeme muudatusi:

Kustutame konfiguratsiooni
Loome DELETE pÀringu:
- PĂ€ringu rida:
DELETE 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 - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin.
Kutsudes GET protokollide teavet sisaldava pÀringu puhul nÀeme jÀrgmist:

TĂ€iendamine:
Konfiguratsiooni muutmiseks ei pea te esitama pÀringuteadet vormingus XML. Seda saab teha ka vormingus JSON.
NÀiteks pÀringus PUT muudame konfiguratsiooni pÀringuteate jÀrgmiseks:
{
"junos-conf-protocols:protocols": {
"bgp": {
"description" : "Muudetud Postmanis"
}
}
}Ărge unustage vahekaardil Headers pealkirju muuta jĂ€rgmiseks:
- Accept application/json
- Content-Type application/json
PÀrast saatmist saame jÀrgmise tulemuse (vastust vaatame kasutades GET pÀringut):

Osa 7: lisame Cisco xRV9000
Miks me rÀÀgime vaid Juniperist? RÀÀgime Cisco'st!
Mul on xRV9000 versioon 7.0.2 (beast, millele on vaja 8Gb RAM-i ja 4 tuuma. See ei ole vabalt saadaval, nii et pöörduge ) â selle kĂ€ivitame.
Konteineri kÀivitamine
Docker konteineri loomise protsess ei erine praktiliselt Juniperist. Samuti, tÔstame .qcow2 faili ruuterist kausta, mis vastab tema nimele (antud juhul xrv9k) ja kÀivitame kÀsu make docker-image.
MÔne minuti pÀrast nÀeme, et pilt on loodud:
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 101MBKonteineri kÀivitamine:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fcMÔne aja pÀrast vaatame, et konteiner on kÀivitatud:
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Ăhendame SSH kaudu:
ubuntu@ubuntu:~$ ssh vrnetlab@172.17.0.2
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Ăhendame ruuteri OpenDaylightiga
Lisamine toimub tÀpselt samamoodi nagu vMX pildiga. Tuleb ainult nime muuta.
PUT pÀringu:

MĂ”ne aja pĂ€rast teeme GET pĂ€ringu, et kontrollida, et kĂ”ik on ĂŒhendatud:

Muudame konfiguratsiooni
Seadistame jÀrgmise konfiguratsiooni:
!
router ospf LAB
mpls ldp auto-config
!Loome POST pÀringu:
- PĂ€ringu rida:
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 - KĂŒsimuse keha (Body vahekaart):
{ "processes": { "process": [ { "process-name": "LAB", "default-vrf": { "process-scope": { "ldp-auto-config": [ null ] } } } ] } } - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin. - Headers vahekaart peab sisaldama kaht pÀist:
- Accept application/json
- Content-Type application/json
PÀrast selle tÀitmist peaks olema staatuseks "204 No Content".
Kontrollime, mis meil vÀlja tuli.
Selle jaoks loome GET pÀringu:
- PĂ€ringu rida:
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 - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin.
PÀrast tÀitmist peaksime nÀgema jÀrgmist:

Konfigureerimise eemaldamiseks kasutame DELETE:
- PĂ€ringu rida:
DELETE 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 - Authorization vahekaart peaks olema seadistatud parameetri
Basic Authja sisselogimine/parool: admin/admin.
KokkuvÔte
KokkuvĂ”ttes, nagu olete vĂ”inud mĂ€rgata, ei erine Cisco ja Juniperi ĂŒhendamismenetlused OpenDaylightist â see avab ĂŒsna laia loomingulise ala. Alates kĂ”igi vĂ”rgu komponentide konfigureerimisest kuni oma vĂ”rgupoliitikate loomisega.
Selles Ă”petuses olen toonud lihtsad nĂ€idised selle kohta, kuidas saaks suhelda vĂ”rguseadmetega OpenDaylighti abil. Kahtlemata on nĂ€iteks toodud pĂ€ringud oluliselt keerulisemad ning saate vajutada hiireklikki ja seadistada terviklikke teenuseid â kĂ”ik piirdub ainult teie kujutlusvĂ”imega.
JĂ€tkubâŠ
P.S.
Kui te juba kÔik need asjad teate vÔi vastupidi, olete ODL-i armastama hakanud, siis soovitan vaadata rakenduste arendamise suunas ODL kontrolleris. Alustada vÔib .
Edukat katsetamist!
Kui loetelu
- / Brian Linkletter
- OpenDaylighti kokaraamat / Mathieu Lemay, Alexis de Talhouet, jt
- VÔrgu programmeeritavus YANG-i abil / Benoßt Claise, Loe Clarke, Jan Lindblad
- XML-i Ôppimine, teine vÀljaanne / Erik T. Ray
- TÔhus DevOps / Jennifer Davis, Ryn Daniels
Allikas: habr.com

