
Selles artiklis rÀÀgin, kuidas seadistada OpenDaylight vĂ”rgu seadmete jaoks ning nĂ€itan, kuidas nende seadmetega saab juhtida Postman ja lihtsate RESTCONF pĂ€ringutega. Me ei hakka riistvara kasutama, vaid selle asemel loome vĂ€ikese virtuaalse labori ĂŒheainsa ruuteri abil, kasutades Vrnetlab pinnal Ubuntu 20.04 LTS.
Detailse seadistuse nÀitan esmalt Juniper vMX 20.1R1.11, seejÀrel vÔrdleme seda Cisco xRV9000 7.0.2.
Sisukord
- NÔutavad teadmised
- Osa 1: arutame lĂŒhidalt OpenDaylight (edaspidi ODL), Postman ja Vrnetlab ja miks need on meile vajalikud
- Osa 2: virtuaalse labori kirjeldus
- Osa 3: seadistame OpenDaylight
- Osa 4: seadistame Vrnetlab
- Osa 5: kasutades Postman ĂŒhendame virtuaalse ruuteri (Juniper vMX) ODL
- Osa 6: saame ja muudame ruuteri konfiguratsiooni behulp Postman ja ODL
- Osa 7: lisame Cisco xRV9000
- KokkuvÔte
- P.S.
- Bibliograafia
NÔutavad teadmised
Kuna artikkel ei tohiks muutuda venivaks, jĂ€tsin mĂ”ned tehnilised ĂŒksikasjad vahele (kohtadega kirjandusele, kust neid lugeda).
SeetÔttu soovitan teil teemasid, mida oleks hea (aga mitte tingimata) teada enne lugemist:
- ,
- /
Osa 1: veidi teooriat

- Ava SDN platvorm vÔrgu haldamiseks ja automatiseerimiseks, mida toetab Linux Foundation
- Java sees
- PÔhineb mudelipÔhisel teenuse abstraktsiooni tasemel (MD-SAL)
- Kasutab YANG mudeleid vÔrguseadmete RESTCONF API automaatseks genereerimiseks
Peamine moodul vĂ”rgu haldamiseks. Just selle kaudu me suhtleme ĂŒhendatud seadmetega. Halduse oma API kaudu.
LĂ€hemalt OpenDaylighti kohta saab lugeda .

- API testimise tööriist
- Lihtne ja mugav kasutada
Meie puhul on see huvitav, kuna see on vahend REST pÀringute saatmiseks OpenDaylight API-le. Loomulikult saab ka kÀsitsi pÀringuid saata, aga Postmanis nÀeb kÔik vÀga visuaalselt vÀlja ja meie eesmÀrkide jaoks on see parim valik.
Neile, kes soovivad sĂŒveneda: selle kohta on kirjutatud palju Ă”ppematerjale ().

- Virtuaalsete ruuterite loomiseks Dockeris mÔeldud tööriist
- Toetab: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR jpt.
- Open Source
VÀga huvitav, kuid vÀhe tuntud tööriist. Meie puhul kÀivitame selle abil Juniper vMX ja Cisco xRV9000 tavalise Ubuntu 20.04 LTS.
Selle kohta saab lÀhemalt lugeda .
Osa 2: laboritöö
Selle Ă”petuse raames seadistame jĂ€rgmise sĂŒsteemi:

Kuidas see töötab
- Juniper vMX tÔuseb Docker konteineris (lastele Vrnetlab) ja töötab nagu tavaline virtuaalne ruuter.
- ODL ĂŒhendatud ruuteriga ja vĂ”imaldab selle haldamist.
- Postman kĂ€ivitub eraldi masinas ja selle kaudu saadame kĂ€ske ODL: ruuteri ĂŒhendamiseks/eraldamiseks, seadistuse muutmiseks jne.
SĂŒsteemi seadme kommentaar
Juniper vMX ja ODL nĂ”uavad oma stabiilseks tööks ĂŒsna palju ressursse. Ăksnes vMX nĂ”uab 6 Gb RAM-i ja 4 tuuma. SeetĂ”ttu otsustati kĂ”ik "raskeid" masinad viia eraldi masinasse (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ruuter, muidugi, ei "lendle" seal, kuid vĂ€ikeste katsete jaoks piisab jĂ”udlusest.
Osa 3: seadistame OpenDaylight

Oluline versioon ODL-i artikli kirjutamise ajal â Magnesium SR1
1) Installi Java OpenJDK 11 (rohkema info saamiseks installimise kohta )
ubuntu:~$ sudo apt install default-jdk2) Otsi ja laadi alla uusim kogu ODL
3) Paki lahti alla laaditud arhiiv
4) Mine saadud katalooge
5) KĂ€ivita ./bin/karaf
Sel samal sammul ODL peaks kÀivituma ja me satume konsooli (VÀljastpoolt ligipÀÀsuks kasutatakse porti 8181, millest me hiljem kasu saame).
SeejÀrel installime ODL funktsioonid, mis on mÔeldud protokollidega töötamiseks. NETCONF ja RESTCONFSelleks konsoolis ODL tÀidame:
opendaylight-user@root> feature:install odl-netconf-topology odl-restconf-allSelle lihtne seadistamine ODL on lÔpetatud. (Rohkemate detailide lugemiseks vaata ).
Osa 4: seadistame Vrnetlab

SĂŒsteemi ettevalmistamine
Enne installimist Vrnetlab on vajalik paigaldada vajalikud paketid. Nagu , , :
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 -
ubunti:~$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt install -y docker-ce docker-ce-cli containerd.ioVrnetlab'i installimine
Paigaldamiseks Vrnetlab kloneerime vastava reposti githubist:
ubuntu:~$ cd ~
ubunti:~$ git clone https://github.com/plajjan/vrnetlab.gitLiigume kausta vrnetlab:
ubuntu:~$ cd ~/vrnetlabSiin on kĂ”ik skriptid, mis vajalikud kĂ€ivitamiseks. Pange tĂ€hele, et iga tĂŒĂŒpi ruuteri jaoks on tehtud vastav kataloog:
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 me reituri image
Iga toetatud ruuter Vrnetlab, omab oma ainulaadset seadistamisprotseduuri. Juhul kui Juniper vMX on piisav, et visata .tgz arhiiv ruuteriga (saate selle alla laadida ) vmx kausta ja kÀivitada kÀsu tee:
ubuntu:~$ cd ~\/vrnetlab\/vmx
ubuntu:~$ # Kopeerime sellesse kausta .tgz arhiivi ruuteriga
ubuntu:~$ sudo makePildi koostamine vMX vÔtab umbes 10-20 minutit. Liikuda on paras aeg kohvi valmistama!
Aga miks see nii kaua aega vĂ”tab, kĂŒsid sa?
TĂ”lge autori kĂŒsimusele:
"See on seotud sellega, et VCP (Control Plane) esmakordsel kĂ€ivitamisel loeb see konfigureerimise faili, mis mÀÀrab, kas see töötab VRR VCP-na vMX-is. Varasemalt toimus see kĂ€ivitamine Dockeris kĂ€ivitamise ajal, aga see tĂ€hendas, et VCP taaskĂ€ivitati alati ĂŒhe korra, enne kui virtuaalne ruuter muutus kĂ€ttesaadavaks, mis tĂ”i kaasa pika laadimisaaja (umbes 5 minutit). NĂŒĂŒd toimub VCP esimene kĂ€ivitamine Docker image'i kokkupanemise ajal ja kuna Docker image'i kokkupanekut ei saa kĂ€ivitada --privileged parameetriga, tĂ€hendab see, et qemu töötab ilma KVM-i riistvarakiiruseta ja seega vĂ”tab kokkupanek vĂ€ga kaua aega. Selle protsessi ajal vĂ€ljastatakse palju logisid, nii et vĂ€hemalt saate nĂ€ha, mis toimub. Ma arvan, et pika kokkupaneku aeg ei ole nii hirmus, sest me loome image'i ainult ĂŒks kord, aga kĂ€ivitame seda palju."
Hiljem saa nÀha meie ruuteri imaget 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 101MBKĂ€ivitame konteineri vr-vmx
KÀivitame kÀsuga:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453cEdasi saame vaadata aktiivsete konteinerite teavet:
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Ăhendame ruuteriga
Ruuteri vÔrgu liidese IP-aadressi saab jÀrgmise kÀsu abil:
ubuntu:~$ sudo docker inspect --format '{{.NetworkSettings.IPAddress}}' jun01
172.17.0.2Vaikimisi, Vrnetlab loob kasutaja ruuteri vrnetlab/VR-netlab9.
Ăhendame ssh:
ubuntu:~$ ssh vrnetlab@172.17.0.2
Host '172.17.0.2 (172.17.0.2)' tÔepÀrasust ei saa kindlaks teha.
ECDSA vÔtme sÔrmejÀlg on SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Kas soovite jĂ€tkata ĂŒhenduse loomist (jah/ei/[sĂ”rmejĂ€lg])? jah
Hoiatus: '172.17.0.2' (ECDSA) on pĂŒsivalt lisatud tuntud hostide nimekirja.
Parool:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> nÀita versiooni
Mudel: vmx
Junos: 20.1R1.11Sellega on ruuteri seadistamine lÔpetatud.
Erinevate tootjate ruuteri installimise soovitused on saadaval vastavates kataloogides.
Osa 5: Postman â ĂŒhendame ruuteri OpenDaylightiga
Postmani installimine
Rakenduse allalaadimiseks piisab selle allalaadimisest .
Ruuteri ĂŒhendamine ODL-iga
Loome PUT pÀring:

- PĂ€ringu rida:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - PĂ€ringu sisu (Body vahekaart):
<node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> <node-id>jun01</node-id> <host xmlns="urn:opendaylight:netconf-node-topology">172.17.0.2</host> <port xmlns="urn:opendaylight:netconf-node-topology">22</port> <username xmlns="urn:opendaylight:netconf-node-topology">vrnetlab</username> <password xmlns="urn:opendaylight:netconf-node-topology">VR-netlab9</password> <tcp-only xmlns="urn:opendaylight:netconf-node-topology">vale</tcp-only> <schema-cache-directory xmlns="urn:opendaylight:netconf-node-topology">jun01_cache</schema-cache-directory> </node> - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin. See on vajalik ODL-le juurdepÀÀsuks:

- Pealkirjade vahekaardil tuleb lisada kaks pÀist:
- Accept application/xml
- Content-Type application/xml
Meie pÀring on koostatud. Saadame selle. Kui kÔik on Ôigesti seadistatud, peaksime saama staatuse "201 Created":
![]()
Mida see pÀring teeb?
Loome node'i 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 sisestruktuurid filestream (XML nimeruum) mille alusel ODL loomise node.
Edasi, ruuteri nimi on node-id, ruuteri aadress â host jne.
KĂ”ige huvitavam rida on viimane. Schema-cache-directory loo kataloog, kuhu laaditakse alla kĂ”ik YANG Schema ĂŒhendatud ruuterilt. Need leiab aadressilt $ODL_ROOT/cache/jun01_cache.
Kontrollime ruuteri ĂŒhendust
Loome GET pÀring:
- PĂ€ringu rida:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/ - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin.
Saadame. Peame saama staatuse "200 OK" ja loetelu kÔigist seadme toetatud YANG Schema:

Kommentaar: Et nÀha viimast, pidin ma oma puhul ootama umbes 10 minutit pÀrast sooritamist PUT, kuni kÔik YANG schéma laetakse alla ODL. Kuni selle ajani, kui see GET pÀringut tehakse, kuvatakse jÀrgmist:

Kustutame ruuteri
Loome DELETE pÀring:
- PĂ€ringu rida:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin.
Jagu 6: Muudame ruuteri konfiguratsiooni
Saame konfiguratsiooni
Loome GET pÀring:
- PĂ€ringu rida:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/ - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin.
Saadame. Peame saama staatuse "200 OK" ja ruuteri konfiguratsiooni:

Loome konfiguratsiooni
NÀiteks loome jÀrgmise konfiguratsiooni ja muudame seda:
protocols {
bgp {
disable;
shutdown;
}
}Loome POST pÀring:
- 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 - PĂ€ringu sisu (Body vahekaart):
- Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin. - Pealkirjade vahekaardil tuleb lisada kaks pÀist:
- Accept application/xml
- Content-Type application/xml
PĂ€rast saatmist peame saama staatuse "204 No Content"
Konfiguratsiooni muutuste kontrollimiseks vĂ”ime kasutada eelmist pĂ€ringut. Kuid nĂ€iteks loome veel ĂŒhe, mis toob meile teavet ainult ruuteris konfigureeritud protokollide kohta.
Loome GET pÀring:
- 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 - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin.
PÀrast pÀringu sooritamist nÀeme jÀrgmist:

Muudame konfiguratsiooni
Muudame BGP protokolli teavet. PÀrast meie muudatusi nÀeb see vÀlja jÀrgmiselt:
protocols {
bgp {
disable;
}
}Loome PUT pÀring:
- 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 - PĂ€ringu sisu (Body vahekaart):
- Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin. - Pealkirjade vahekaardil tuleb lisada kaks pÀist:
- Accept application/xml
- Content-Type application/xml
Kasutades eelmist GET pÀringut, nÀeme muudatusi:

Kustutame konfiguratsiooni
Loome DELETE pÀring:
- 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 - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin.
PÀringu tegemisel, mis sisaldab teavet protokollide kohta, nÀeme jÀrgmist: GET Et muudetud konfiguratsiooni saata, ei pea me pÀringu keha saatma vormingus

TĂ€iendamine:
. Seda saab teha ka vormingus filestreamSelleks asendame nÀiteks konfiguratsiooni muutmise pÀringus kehaks: JSON.
{ "junos-conf-protocols:protocols": { "bgp": { "description" : "Muudetud postmanis" } } } PUT Ărge unustage vahekaardil Headers pealkirju muuta jĂ€rgmiseks:
Accept application/jsonContent-Type application/json
- 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 kÔik rÀÀgime Juniperist? RÀÀgime parem Cisco'st!
Mul on xRV9000 versioon 7.0.2 (loom, mille jaoks on vajalik 8Gb RAM ja 4 tuuma. See pole vabalt kĂ€ttesaadav, seega pöörduge ) â selle me ka kĂ€ivitame.
Konteineri kÀivitamine
Docker konteineri loomise protsess ei erine praktiliselt Juniperist. Sarnaselt, paneme .qcow2 faili marsruutijaga vastavasse direktoriumi (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 101MBKĂ€ivitame konteineri:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fcMÔne aja pÀrast vaatame, et konteiner on kÀivitunud:
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
Parool:
RP/0/RP0/CPU0:ios#show version
Esmasp 6. juulil 12:19:28.036 UTC
Cisco IOS XR tarkvara, versioon 7.0.2
KĂ€ib arendus:
Valmistaja : ahoang
Valmistatud : Reede, 13. mÀrts 22:27:54 PDT 2020
Valmistamiskoht: iox-ucs-029
Tööruum : /auto/srcarchive15/prod/7.0.2/xrv9k/ws
Versioon : 7.0.2
Asukoht : /opt/cisco/XR/packages/
Label : 7.0.2
cisco IOS-XRv 9000 () protsessor
SĂŒsteemi tööaeg on 3 tundi 22 minutit.Ăhendame marsruutija OpenDaylight'iga
Lisamine toimub tÀpselt samamoodi nagu vMX kujul. Ainult nimed tuleb vahetada.
PUT pÀring:

MĂ”ne aja pĂ€rast kutsume GET pĂ€ringut, et kontrollida, kas kĂ”ik on ĂŒhendatud:

Muudame konfiguratsiooni
Seame jÀrgmise konfiguratsiooni:
!
router ospf LAB
mpls ldp auto-config
!Loome POST pÀring:
- 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 - PĂ€ringu sisu (Body vahekaart):
{ "processes": { "process": [ { "process-name": "LAB", "default-vrf": { "process-scope": { "ldp-auto-config": [ null ] } } } ] } } - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin. - Pealkirjade vahekaardil tuleb lisada kaks pÀist:
- Accept application/json
- Content-Type application/json
PÀrast selle tÀitmist peaksime saama staatuse "204 No Content".
Kontrollime, mis meil vÀlja tuli.
Selleks loome GET pÀring:
- 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 - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin.
PÀrast tÀitmist peaksite nÀgema jÀrgmist:

Konfiguratsiooni 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 - Autentimise vahekaardil tuleb seada parameeter
Basic Authja kasutajanimi/parool: admin/admin.
KokkuvÔte
KokkuvĂ”ttes, nagu te olete vĂ”inud mĂ€rgata, ei erine Cisco ja Juniperi ĂŒhendamise protseduurid OpenDaylightis â see avab ĂŒsna palju loovuse vĂ”imalusi. Alates kogu vĂ”rgu komponentide konfiguratsioonide haldamisest kuni oma vĂ”rgu poliitikate loomise vĂ”imalusteni.
Selles Ă”petuses olen toonud lihtsaimad nĂ€ited, kuidas saab suhtuda vĂ”rguseadmetesse OpenDaylighti abil. Ilmselt on eespool toodud pĂ€ringud oluliselt keerukamad ja kogu teenuse seadistamine on vaid hiireklĂ”psu kaugusel â kĂ”ik on piiratud ainult teie kujutlusvĂ”imega.
JĂ€tkubâŠ
P.S.
Kui te juba kÔike seda teate vÔi kui OpenDaylight on teid huvitatud, siis soovitan vaadata ODL kontrolleril rakenduste arendamise poole. Alustada vÔib .
Edukat katsetamist!
Allikate loetelu
- / Brian Linkletter
- OpenDaylight Cookbook / Mathieu Lemay, Alexis de Talhouet, Et al
- VÔrgu programmeeritavus YANGiga / Benoßt Claise, Loe Clarke, Jan Lindblad
- XML-i Ôppimine, teine vÀljaanne / Erik T. Ray
- Efektiivne DevOps / Jennifer Davis, Ryn Daniels
Allikas: habr.com

