Muchikamu chino, ini ndichakuratidza nzira yekumisa opendaylight kushanda nenetiweki michina, uye zvakare kuratidza mashandisiro post-man uye nyore RESTCONF zvikumbiro, midziyo iyi inogona kudzorwa. Isu hatizoshanda nehardware, asi pachinzvimbo isu tichaendesa madiki marabhoritari ane imwechete router uchishandisa Vrnetlab pamusoro Ubuntu 20.04 LTS.
Ini ndicharatidza marongero akadzama kutanga ndichishandisa muenzaniso we router Juniper vMX 20.1R1.11, uye tobva tazvienzanisa negadziriro yacho Cisco xRV9000 7.0.2.
Zviri mukati
- Ruzivo runodiwa
- 1 chikamu: kurukurai muchidimbu OpenDaylight (zvino ODL), post-man и Vrnetlab uye nei tichidzida
- 2 chikamu: tsananguro yerabhoritari chaiyo
- 3 chikamu: gadzirisa opendaylight
- 4 chikamu: gadzirisa Vrnetlab
- 5 chikamu: nekushandisa post-man batanidza virtual router (Juniper vMX) Ku ODL
- 6 chikamu: tora uye shandura iyo router kumisikidza uchishandisa post-man и ODL
- 7 chikamu: wedzera Cisco xRV9000
- mhedziso
- PS
- Bibliography
Ruzivo runodiwa
Kuti chinyorwa chisashanduke kuita pepa, ini ndakasiya zvimwe zvehunyanzvi (zvine zvinongedzo kumabhuku kwaunogona kuverenga nezvazvo).
Mune izvi, ini ndinokupa iwe misoro zvingave zvakanaka (asi zvinenge zvisina basa) kuziva usati waverenga:
Chikamu 1: imwe dzidziso
- Yakavhurika SDN chikuva chekutonga uye otomatiki marudzi ese ematiweki, anotsigirwa na Linux Foundation
- Java mukati
- Kubva paModel-Driven Service Abstraction Level (MD-SAL)
- Inoshandisa YANG modhi kugadzira otomatiki RESTCONF APIs etiweki zvishandiso
Iyo huru module ye network manejimendi. Ndiko kuburikidza naro kuti tichataurirana nemidziyo yakabatana. Inotungamirwa kuburikidza neyayo API.
Unogona kuverenga zvakawanda nezve OpenDaylight
- API yekuongorora chishandiso
- Rakareruka uye nyore kushandisa interface
Kwatiri isu, isu tiri kuifarira senzira yekutumira REST zvikumbiro kuOpenDaylight API. Iwe unogona, hongu, kutumira zvikumbiro nemaoko, asi muPostman zvese zvinotaridzika zvakajeka uye zvinoenderana nezvinangwa zvedu zvakakwana.
Kune avo vanoda kuchera: zvakawanda zvekudzidzisa zvakanyorwa pairi (
- Chishandiso chekuendesa chaiwo ma routers muDocker
- Inotsigira: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, nezvimwe.
- Open Source
Chiridzwa chinonakidza asi chishoma chinozivikanwa. Mune yedu, isu tichaishandisa kumhanya Juniper vMX uye Cisco xRV9000 pane yakajairwa Ubuntu 20.04 LTS.
Unogona kuverenga zvakawanda nezvazvo pa
Chikamu 2: Lab
Muchidzidzo ichi, isu tichagadzira inotevera system:
Sei basa iri
- Juniper vMX inosimuka mukati Docker mudziyo (nenzira Vrnetlab) uye inoshanda seyakajairika virtual router.
- ODL yakabatana kune router uye inokubvumira kuti uidzore.
- post-man yakatangwa pamuchina wakasiyana uye kuburikidza nawo tinotumira mirairo ODL: kubatanidza / kubvisa router, shandura gadziriro, nezvimwe.
Commentary pane mudziyo weiyo system
Juniper vMX и ODL zvinoda zviwanikwa zvakawanda pakushanda kwavo kwakadzikama. Imwe chete vMX inokumbira 6 Gb ye RAM uye 4 cores. Naizvozvo, zvakasarudzwa kuendesa ese "heavyweights" kumuchina wakasiyana (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS) Iyo router, hongu, haina "kubhururuka" pairi, asi kuita kwakaringana kudiki kuedza.
Chikamu 3: Seta OpenDaylight
Iyo yazvino vhezheni yeODL panguva yekunyora uku iMagnesium SR1
1) Isa Java Vhura JDK 11 (kumwe kuisirwa kwakadzama
ubuntu:~$ sudo apt install default-jdk
2) Tsvaga uye dhawunirodha yazvino kuvaka ODL
3) Unzip iyo yakadhindwa archive
4) Enda kune inoguma dhairekitori
5) Kutanga ./bin/karaf
Padanho iri ODL inofanira kutanga uye isu tichazviwana tiri mukoni (Port 8181 inoshandiswa kuwana kubva kunze, iyo yatichashandisa gare gare).
Zvadaro, install ODL Featuresyakagadzirirwa kushanda nemaprotocol NECONF и RESTCONF. Kuti uite izvi mune console ODL tinoita:
opendaylight-user@root> feature:install odl-netconf-topology odl-restconf-all
Iyi ndiyo yakapfava setup. ODL kupera. (Kuti uwane rumwe ruzivo, ona
Chikamu 4: Kumisikidza Vrnetlab
Kugadzirira kwehurongwa
Usati wagadzwa Vrnetlab unofanirwa kuisa mapakeji anodiwa pakushanda kwayo. Zvakaita se
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 -
ubuntu:~$ 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.io
Kuisa Vrnetlab
Zvekugadzwa Vrnetlab clone iyo inoenderana repository kubva github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Enda kudhairekitori vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Pano iwe unogona kuona zvese zvinyorwa zvinodiwa kuti uite. Ndokumbira utarise kuti dhairekitori rinoenderana rakagadzirwa kune yega yega mhando ye router:
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 xrv9k
Gadzira mufananidzo we router
Imwe neimwe router inotsigirwa Vrnetlab, ine yayo yakasarudzika nzira yekuseta. Rini Juniper vMX tinongoda kuisa .tgz archive ne router (unogona kuidhaunirodha kubva make
:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Kugadzira mufananidzo vMX zvinotora anenge 10-20 maminitsi. Yakwana nguva yekuenda kunotora kofi!
Sei kwenguva yakareba kudaro, iwe unobvunza?
Chinjana
"Izvi imhaka yekuti nguva yekutanga VCP (Control Plane) yatangwa, inoverenga config file inoona kuti ichamhanya seVRR VCP muvMX. Kare, kutanga uku kwaiitwa panguva yekutanga kweDocker, asi izvi zvaireva kuti VCP. yaigara ichitangwazve kamwe chete iyo chaiyo router isati yavepo, zvichikonzera nguva yakareba yebhutsu (anenge maminetsi mashanu) Zvino kumhanya kwekutanga kweVCP kunoitwa panguva yekuvakwa kwechifananidzo cheDocker, uye sezvo iyo Docker inovaka haigone kumhanya ne - -yakaropafadzwa sarudzo, izvi zvinoreva kuti qemu inoshanda pasina KVM hardware acceleration uye nokudaro kuvaka kunotora nguva yakareba kwazvo.Mukati mekuita uku, matanda akawanda anobuda, saka iwe unogona kuona zviri kuitika.Ndinofunga kuvaka kwenguva refu. hazvisi kutyisa nekuti isu tinogadzira mufananidzo kamwe chete, asi isu tinotangisa akawanda. "
Mushure mekuona mufananidzo we router yedu mukati 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
Tangisa vr-vmx mudziyo
Tinotanga nemurairo:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Tevere, isu tinogona kuona ruzivo nezve anoshanda midziyo:
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
Kubatanidza kune router
Iyo IP kero ye network network ye router inogona kuwanikwa nemurairo unotevera:
ubuntu:~$ sudo docker inspect --format '{{.NetworkSettings.IPAddress}}' jun01
172.17.0.2
Default, Vrnetlab inogadzira mushandisi pane router vrnetlab/VR-netlab9.
Kubatana ne 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
Izvi zvinopedzisa kuseta router.
Kurudziro yekuisa ma routers evatengesi vakasiyana siyana inogona kuwanikwa pa
Chikamu 5: Postman - batanidza iyo router kuOpenDaylight
Postman installation
Kuisa, ingo dhawunirodha application
Kubatanidza router kuODL
Ngatigadzirei isa chikumbiro:
- Query string:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
- Kumbira muviri (Muviri tab):
<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">false</tcp-only> <schema-cache-directory xmlns="urn:opendaylight:netconf-node-topology">jun01_cache</schema-cache-directory> </node>
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin. Izvi zvinodiwa kuti uwane iyo ODL:
- Pa Headers tab, unofanirwa kuwedzera misoro miviri:
- Gamuchira application/xml
- Content-Type application/xml
Chikumbiro chedu chaitwa. Tinotumira. Kana zvese zvakagadziriswa nemazvo, saka isu tinofanirwa kudzorera chimiro "201 Yakagadzirwa":
Chikumbiro ichi chinoitei?
Isu tinogadzira node mukati ODL nemaparameter eiyo router chaiyo yatinoda kuwana.
xmlns="urn:TBD:params:xml:ns:yang:network-topology"
xmlns="urn:opendaylight:netconf-node-topology"
Aya ndiwo mazita emukati XML (XML namespace) ye ODL maererano nezvaanogadzira node.
Uyezve, maererano, zita re router ndiro node-id, router address - hondo zvichingodaro.
Mutsara unonakidza ndewekupedzisira. Schema-cache-dhairekitori inogadzira dhairekitori uko mafaera ese anotorwa YANG Schema yakabatana router. Unogona kuvawana mukati $ODL_ROOT/cache/jun01_cache
.
Kuongorora kubatana kwe router
Ngatigadzirei WANA chikumbiro:
- Query string:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin.
Tinotumira. Inofanirwa kugashira chimiro che "200 OK" uye rondedzero yezvose zvinotsigirwa nemudziyo YANG Schema:
komenda: Kuti ndione iyo yekupedzisira, mune yangu zvaive zvakafanira kumirira anenge maminetsi gumi mushure mekuurayiwa isakusvikira zvose YANG schema burutsa pa ODL. Kusvika panguva ino, pakuita izvi WANA mubvunzo ucharatidza zvinotevera:
Bvisa router
Ngatigadzirei Kudzima chikumbiro:
- Query string:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin.
Chikamu 6: Shandura kugadzirisa kwe router
Kuwana configuration
Ngatigadzirei WANA chikumbiro:
- Query string:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin.
Tinotumira. Inofanira kugamuchira chimiro "200 OK" uye router configuration:
Gadzira gadziriro
Semuenzaniso, ngatigadzirei inotevera gadziriso uye tigadzirise:
protocols {
bgp {
disable;
shutdown;
}
}
Ngatigadzirei POST chikumbiro:
- Query string:
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
- Kumbira muviri (Muviri tab):
<bgp xmlns="http://yang.juniper.net/junos/conf/protocols"> <disable/> <shutdown> </shutdown> </bgp>
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin. - Pa Headers tab, unofanirwa kuwedzera misoro miviri:
- Gamuchira application/xml
- Content-Type application/xml
Mushure mekutumira, vanofanirwa kugamuchira chimiro "204 Hapana Zvemukati"
Kuti uone kuti gadziriso yachinja, unogona kushandisa mubvunzo wekare. Asi semuenzaniso, isu tichagadzira imwe icharatidza ruzivo chete nezve maprotocol akagadzirirwa pane router.
Ngatigadzirei WANA chikumbiro:
- Query string:
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
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin.
Mushure mekuita chikumbiro, tichaona zvinotevera:
Chinja gadziriro
Ngatichinje ruzivo nezve BGP protocol. Mushure mekuita kwedu, zvichataridzika seizvi:
protocols {
bgp {
disable;
}
}
Ngatigadzirei isa chikumbiro:
- Query string:
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
- Kumbira muviri (Muviri tab):
<protocols xmlns="http://yang.juniper.net/junos/conf/protocols"> <bgp> <disable/> </bgp> </protocols>
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin. - Pa Headers tab, unofanirwa kuwedzera misoro miviri:
- Gamuchira application/xml
- Content-Type application/xml
Kushandisa yapfuura WANA kukumbira, tinoona shanduko:
Delete configuration
Ngatigadzirei Kudzima chikumbiro:
- Query string:
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
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin.
Pakufona WANA kukumbira neruzivo nezve maprotocol, tichaona zvinotevera:
Kuwedzera:
Kuti uchinje kurongeka, hazvidiwi kutumira mutumbi wekukumbira mufomati XML. Izvi zvinogona zvakare kuitwa mune fomu JSON.
Kuti uite izvi, semuenzaniso, mumubvunzo isa kuti uchinje gadziriso, tsiva iyo yekukumbira muviri ne:
{
"junos-conf-protocols:protocols": {
"bgp": {
"description" : "Changed in postman"
}
}
}
Usakanganwa kushandura misoro pane Headers tab kuti:
- Gamuchira application/json
- Zvemukati-Type application/json
Mushure mekutumira, isu tinowana inotevera mhedzisiro (Tinotarisa mhinduro tichishandisa WANA chikumbiro):
Chikamu 7: Kuwedzera iyo Cisco xRV9000
Tiri tese nezveJuniper, hongu Juniper? Ngatitaure nezveCisco!
Ndakawana xRV9000 version 7.0.2 (chikara chinoda 8Gb RAM uye 4 cores. Haisi kuwanikwa pachena, saka bata
Kumhanyisa mudziyo
Maitiro ekugadzira mudziyo weDocker haana kumbosiyana neJuniper. Saizvozvowo, tinodonhedza .qcow2 faira ne router mudhairekitori inoenderana nezita rayo (munyaya iyi, xrv9k) uye shandisa murairo. make docker-image
.
Mushure memaminitsi mashoma, tinoona kuti mufananidzo wagadzirwa:
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
Tinotanga mudziyo:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Mushure mechinguva, tinotarisa kuti mudziyo watanga:
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
Batanidza ne 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
Kubatanidza router kuOpenDaylight
Kuwedzera kunoitika nenzira yakafanana nevMX. Tinongoda kushandura mazita.
isa chikumbiro:
Fona mushure mechinguva WANA bvunza kutarisa kuti zvese zvakabatana:
Chinja gadziriro
Ngatiisei gadziriro inotevera:
!
router ospf LAB
mpls ldp auto-config
!
Ngatigadzirei POST chikumbiro:
- Query string:
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
- Kumbira muviri (Muviri tab):
{ "processes": { "process": [ { "process-name": "LAB", "default-vrf": { "process-scope": { "ldp-auto-config": [ null ] } } } ] } }
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin. - Pa Headers tab, unofanirwa kuwedzera misoro miviri:
- Gamuchira application/json
- Zvemukati-Type application/json
Mushure mekuurayiwa kwayo, ivo vanofanirwa kugamuchira chimiro "204 Hapana Zvemukati".
Ngatitarisei zvatinazvo.
Kuti tiite izvi, tichagadzira WANA chikumbiro:
- Query string:
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
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin.
Mushure mekuita, iwe unofanirwa kuona zvinotevera:
Kuti ubvise kushandiswa kwekugadzirisa Kudzima:
- Query string:
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
- PaMvumo tab, unofanira kuseta parameter
Basic Auth
uye login/password: admin/admin.
mhedziso
Pakazara, sezvaungave waona, maitiro ekubatanidza Cisco neJuniper kuOpenDaylight haana kusiyana - izvi zvinovhura nzvimbo yakakura yekugadzira. Kutanga kubva pakugadzirisa manejimendi ezvese zvinhu zvetiweki uye kupera nekugadzira yako wega network policy.
Muchidzidzo ichi, ndapa mienzaniso yakapusa yemabatiro aungaita netiweki michina uchishandisa OpenDaylight. Pasina kupokana, iyo mibvunzo kubva pamienzaniso iri pamusoro inogona kuitwa zvakanyanya kuomarara uye kuseta masevhisi ese nekudzvanya kumwe chete kwegonzo - zvese zvinoganhurwa chete nefungidziro yako *
Zvichaenderera mberi…
PS
Kana iwe ukangoerekana watoziva zvese izvi kana, pane zvinopesana, wapfuura nekunyura mumweya weODL, saka ini ndinokurudzira kutarisa kune kugadzira maapplication pane ODL controller. Unogona kutanga
Kuedza kwakabudirira!
Mareferensi
Vrnetlab: Emulate network uchishandisa KVM uye Docker /Brian Linkletter- OpenDaylight Cookbook / Mathieu Lemay, Alexis de Talhouet, Et al
- Network Programmability naYANG / Benoît Claise, Loe Clarke, Jan Lindblad
- Kudzidza XML, Second Edition / Erik T. Ray
- Inoshanda DevOps / Jennifer Davis, Ryn Daniels
Source: www.habr.com