ProHoster > Blog > Rêveberî > Otomasyona karûbarên torê an meriv çawa bi karanîna OpenDaylight, Postman û Vrnetlab laboratûwarek virtual ava dike
Otomasyona karûbarên torê an meriv çawa bi karanîna OpenDaylight, Postman û Vrnetlab laboratûwarek virtual ava dike
Di vê gotarê de, ez ê nîşanî we bidim ka meriv çawa saz dike ronahiya vekirî bi alavên torê re bixebitin, û her weha nîşan bidin ka meriv çawa bikar tîne Postevan û sade RESTCONF daxwaz, ev amûr dikare were kontrol kirin. Em ê bi hardware re nexebitin, lê li şûna wê em ê laboratîfên piçûk ên virtual bi yek routerek bikar bînin bicîh bikin Vrnetlab ser Ubuntu 20.04 LTS.
Ez ê mîhengên hûrgulî pêşî bi karanîna mînakek router nîşan bidim Juniper vMX 20.1R1.11, û paşê em wê bi mîhengê re berhev bikin Cisco xRV9000 7.0.2.
Contains
zanîna pêwîst
Beşek 1: bi kurtî nîqaş bikin OpenDaylight (li vir ODL), Postevan и Vrnetlab û çima em hewceyê wan in
Beşek 2: danasîna laboratûara virtual
Beşek 3: xweşkirin ronahiya vekirî
Beşek 4: xweşkirin Vrnetlab
Beşek 5: bi bikaranîna Postevan routerê virtual (Juniper vMX) Ji bo ODL
Beşek 6: Veavakirina routerê bikar bînin û biguherînin Postevan и ODL
Beşek 7: Cisco xRV9000 lê zêde bike
encamê
PS
Bibliography
zanîna pêwîst
Ji bo ku gotar neguhere pelek, min hin hûrguliyên teknîkî (bi lînkên wêjeya ku hûn dikarin li ser wan bixwînin) ji holê rakin.
Di vê pêwendiyê de, ez ji we re mijarên ku dê baş be (lê hema ne hewce ye) berî xwendinê zanibin pêşkêşî we dikim:
Platformek SDN-ya vekirî ya ji bo rêvebirin û otomatîkkirina her cûre torê, ku ji hêla piştgirî ve tê piştgirî kirin Weqfa Linux
Java hundir
Li ser bingeha Asta Abstractionê ya Karûbarê Model-Driven (MD-SAL)
Modelên YANG bikar tîne da ku bixweber API-yên RESTCONF ji bo cîhazên torê çêbike
Modula sereke ji bo rêveberiya torê. Bi wê re ye ku em ê bi cîhazên girêdayî re têkilî daynin. Bi API-ya xwe ve tê rêvebirin.
Hûn dikarin li ser OpenDaylight bêtir bixwînin vir.
Amûra ceribandina API-ê
Navbera hêsan û karanîna hêsan
Di doza me de, em jê re eleqedar dibin wekî amûrek ji bo şandina daxwazên REST ji OpenDaylight API re. Hûn dikarin, bê guman, daxwazan bi destan bişînin, lê di Postman de her tişt pir zelal xuya dike û bi tevahî armancên me re têkildar e.
Ji bo kesên ku dixwazin bikolin: gelek materyalên perwerdehiyê li ser hatine nivîsandin (bo nimûne).
Amûrek ji bo bicihkirina rêwerên virtual li Docker
Piştgirî: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, hwd.
Open Source
Amûrek pir balkêş lê kêm tê zanîn. Di doza me de, em ê wê bikar bînin da ku Juniper vMX û Cisco xRV9000 li ser Ubuntu 20.04 LTS-ya birêkûpêk bimeşînin.
Juniper vMX tê de radibe Docker konteynir (bi awayê Vrnetlab) û wekî routerê virtual ya herî gelemperî dixebite.
ODL bi routerê ve girêdayî ye û dihêle hûn wê kontrol bikin.
Postevan li ser makîneyek cihê dest pê kir û bi riya wê em fermanan dişînin ODL: ji bo girêdana / rakirina routerê, guherandina veavakirinê, hwd.
Şîrovekirina li ser cîhaza pergalê
Juniper vMX и ODL ji bo xebata wan a domdar gelek çavkaniyan hewce dike. Yek tenê vMX 6 Gb RAM û 4 core dipirse. Ji ber vê yekê, biryar hate girtin ku hemî "giranên giran" li makîneyek cihêreng (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Router, bê guman, li ser wê "fire" nake, lê performans ji bo ceribandinên piçûk bes e.
Beş 3: OpenDaylight saz bikin
Guhertoya heyî ya ODL di dema vê nivîsandinê de Magnesium SR1 e
1) Saz kirin Java JDK 11 vekir (ji bo sazkirina berfirehtir vir)
ubuntu:~$ sudo apt install default-jdk
2) Avakirina herî dawî bibînin û dakêşin ODLji vir
3) Arşîva dakêşandî vekin
4) Biçe pelrêça encam
5) Destpêkirin ./bin/karaf
Di vê gavê de ODL divê dest pê bike û em ê xwe di konsolê de bibînin (Port 8181 ji bo gihîştina ji derve tê bikar anîn, ku em ê paşê bikar bînin).
Piştre, saz bikin Taybetmendiyên ODLdîzaynkirin ku bi protokolan re bixebite NETCONF и RESTCONF. Ji bo vê yekê di konsolê de bikin ODL em pêk tînin:
Ji bo sazkirinê Vrnetlab depoya têkildar ji github klon bikin:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Biçe pelrêçê vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Li vir hûn dikarin hemî nivîsarên ku ji bo xebitandinê hewce ne bibînin. Ji kerema xwe ji bîr nekin ku ji bo her celeb router pelrêçek têkildar hatî çêkirin:
Her routerek ku piştgirî ye Vrnetlab, prosedûra sazkirinê ya xweya yekta heye. Heke Juniper vMX Em tenê hewce ne ku arşîva .tgz bi routerê re bar bikin (hûn dikarin ji wê dakêşin malpera fermî) têkevin pelrêça vmx û fermanê bimeşînin make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Avakirina wêneyekî vMX dê bi qasî 10-20 deqîqeyan bigire. Wext e ku em herin qehweyekê vexwin!
"Ev e ji ber ku yekem car VCP (Balafira Kontrolê) dest pê dike, ew pelek vesazkirinê dixwîne ku diyar dike ka ew ê wekî VRR VCP di vMX de bixebite. Berê, ev destpêkirin di dema destpêkirina Docker de hate kirin, lê ev tê vê wateyê ku VCP berî ku routerê virtual peyda bibe, her dem carekê ji nû ve hate destpêkirin, di encamê de demek dirêj bootkirinê (nêzîkî 5 hûrdem) Naha gava yekem a VCP-ê di dema çêkirina wêneya Docker de tê kirin, û ji ber ku avakirina Docker nikare bi - -Vebijarka îmtiyaz, ev tê vê wateyê ku qemu bêyî lezkirina hardware ya KVM-ê dixebite û bi vî rengî çêkirin demek pir dirêj digire. Di vê pêvajoyê de, gelek têketin derdikevin, ji ber vê yekê bi kêmanî hûn dikarin bibînin ka çi diqewime. Ez difikirim ku avahiyek dirêj Ew qas ne tirsnak e ji ber ku em yek carî wêneyek diafirînin, lê em gelekan didin destpêkirin."
Piştî ku hûn dikarin wêneya routerê me tê de bibînin 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 101MB
Konteynera vr-vmx dest pê bikin
Em bi fermanê dest pê dikin:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Piştre, em dikarin agahdariya li ser konteynerên çalak bibînin:
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
Girêdana bi routerê
Navnîşana IP-ya pêwendiya torê ya routerê bi fermana jêrîn dikare were wergirtin:
Destçûnî, Vrnetlab bikarhênerek li ser routerê diafirîne vrnetlab/VR-netlab9.
Têkilî bi 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
Ev sazkirina routerê temam dike.
Pêşniyarên sazkirinê yên ji bo routerên firoşkarên cihêreng dikarin li vir werin dîtin projeya github di pelrêçên têkildar de.
Beş 5: Postman - routerê bi OpenDaylight ve girêdin
Ev navên navên navxweyî ne XML (Navê XML) ji bo ODL li gorî wê girêk çêdike.
Wekî din, bi rêzdarî, navê routerê ye node-id, navnîşana router - mazûban û vî awayî.
Rêza herî balkêş ya dawî ye. Schema-cache-directory pelrêçek ku hemî pel têne dakêşandin diafirîne YANG Schema router girêdayî. Hûn dikarin wan di nav de bibînin $ODL_ROOT/cache/jun01_cache.
Kontrolkirina girêdana routerê
Werin em biafirînin STENDIN tika:
Rêza pirsê:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
Em dişînin. Divê statûyek "200 OK" û navnîşek hemî ku ji hêla cîhazê ve têne piştgirî kirin bistînin YANG Schema:
Rayi: Ji bo dîtina ya dawîn, di rewşa min de pêwîst bû bi qasî 10 deqîqeyan piştî darvekirinê bisekinim pûtheta hemû YANG schema dakêşin ser ODL. Heta vê gavê, dema ku vê yekê pêk tîne STENDIN pirs dê jêrîn nîşan bide:
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
Beş 6: Veavakirina routerê biguherînin
Danîna veavakirinê
Werin em biafirînin STENDIN tika:
Rêza pirsê:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
Em dişînin. Divê statûya "200 OK" û veavakirina routerê bistînin:
Veavakirinek çêbikin
Wek nimûne, em konfigurasyona jêrîn biafirînin û biguhezînin:
protocols {
bgp {
disable;
shutdown;
}
}
Werin em biafirînin KOZ tika:
Rêza pirsê:
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
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
Li ser tabloya Sernivîsê, hûn hewce ne ku du sernivîsan lê zêde bikin:
Serlêdan / xml qebûl bikin
Serlêdana Naverok-Tîpa/xml
Piştî şandinê, divê ew statuya "204 No Content" bistînin.
Ji bo kontrol bikin ku veavakirin guheriye, hûn dikarin pirsa berê bikar bînin. Lê wek nimûne, em ê yekê din biafirînin ku dê tenê di derheqê protokolên ku li ser routerê hatine mîheng kirin de agahdarî nîşan bide.
Werin em biafirînin STENDIN tika:
Rêza pirsê:
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
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
Piştî pêkanîna daxwazê, em ê jêrîn bibînin:
Veavakirinê biguherînin
Ka em agahdariya li ser protokola BGP biguhezînin. Piştî çalakiyên me, ew ê bi vî rengî xuya bike:
protocols {
bgp {
disable;
}
}
Werin em biafirînin pût tika:
Rêza pirsê:
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
Ji bîr nekin ku sernavên li ser tabloya Sernivîsan biguherînin:
Serlêdan / json qebûl bikin
Serlêdana Naverok-Tîpa/json
Piştî şandinê, em ê encama jêrîn bistînin (Em li bersivê bi kar mêze dikin STENDIN tika):
Beş 7: Zêdekirina Cisco xRV9000
Em hemî li ser Juniper çi ne, erê Juniper? Ka em li ser Cisco biaxivin!
Min xRV9000 guhertoya 7.0.2 dît (heywanek ku hewceyê 8 GB RAM û 4 core ye. Ew belaş peyda nabe, ji ber vê yekê têkilî Cisco) - em wê bimeşînin.
Konteynir dimeşîne
Pêvajoya afirandina konteynerek Docker bi pratîkî ji Juniper ne cûda ye. Bi heman awayî, em pelê .qcow2 bi routerê re davêjin pelrêça ku bi navê wê re têkildar e (di vê rewşê de, xrv9k) û fermanê pêk tîne. make docker-image.
Piştî çend deqeyan, em dibînin ku wêne hatî çêkirin:
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
Em konteynerê dest pê dikin:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Piştî demekê, em dibînin ku konteynir dest pê kiriye:
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
Bi ssh ve girêdin:
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
Girêdana routerê bi OpenDaylight
Zêdekirin bi vMX re bi rengek bi tevahî wekhev pêk tê. Tenê divê em navan biguherînin. pût tika:
Piştî demekê telefon bikin STENDIN lêpirsin da ku kontrol bikin ka her tişt girêdayî ye:
Veavakirinê biguherînin
Ka em veavakirina jêrîn saz bikin:
!
router ospf LAB
mpls ldp auto-config
!
Werin em biafirînin KOZ tika:
Rêza pirsê:
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
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
Li ser tabloya Sernivîsê, hûn hewce ne ku du sernivîsan lê zêde bikin:
Serlêdan / json qebûl bikin
Serlêdana Naverok-Tîpa/json
Piştî bicihanîna wê, divê ew statuya "204 No Content" bistînin.
Ka em kontrol bikin ka me çi girt.
Ji bo vê yekê, em ê çêbikin STENDIN tika:
Rêza pirsê:
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
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
Li ser tabloya Destûrnameyê, divê hûn pîvanê saz bikin Basic Auth û têketin / şîfre: admin / admin.
encamê
Bi tevahî, wekî ku we dîtiye, prosedurên ji bo girêdana Cisco û Juniper bi OpenDaylight re cûda nabin - ev ji bo afirîneriyê çarçoveyek berfireh vedike. Ji rêveberiya vesazkirinê ya hemî hêmanên torê dest pê dike û bi afirandina polîtîkayên torê yên xwe bi dawî dibe.
Di vê tutoriyê de, min mînakên herî hêsan ên ku hûn çawa dikarin bi amûrên torê re bi karanîna OpenDaylight re têkilî daynin dane. Bê şik, pirsên ji mînakên jorîn dikarin pir tevlihevtir bêne çêkirin û bi yek klîk mişkê karûbarên tevahî saz bikin - her tişt tenê ji hêla xeyala we ve sînorkirî ye *
Ez bêtir ji te hez dikim…
PS
Ger hûn ji nişkê ve jixwe van hemî dizanin an, berevajî, derbas bûne û di giyanê ODL-ê de ketine, wê hingê ez pêşniyar dikim ku li pêşkeftina sepanên li ser kontrolkerê ODL binêrim. Hûn dikarin dest pê bikin ji vir.