ProHoster > Блог > Pagdumala > Pag-automate sa mga serbisyo sa network o kung giunsa paghimo ang usa ka virtual nga laboratoryo gamit ang OpenDaylight, Postman ug Vrnetlab
Pag-automate sa mga serbisyo sa network o kung giunsa paghimo ang usa ka virtual nga laboratoryo gamit ang OpenDaylight, Postman ug Vrnetlab
Niini nga artikulo, ipakita ko kanimo kung giunsa ang pag-set up OpenDaylight sa pagtrabaho uban sa network ekipo, ug usab sa pagpakita sa unsa nga paagi sa paggamit Postman ug simple RESTCONF hangyo, kini nga ekipo mahimong kontrolado. Dili kami magtrabaho uban sa hardware, apan hinoon kami mag-deploy og gagmay nga virtual nga mga laboratoryo nga adunay usa ka router nga naggamit Vrnetlab sa ibabaw sa Ubuntu 20.04 LTS.
Ipakita nako ang mga detalyado nga setting una gamit ang pananglitan sa usa ka router Juniper vMX 20.1R1.11, ug dayon atong itandi kini sa setting Cisco xRV9000 7.0.2.
Mga sulod
Gikinahanglan nga kahibalo
Bahin sa 1: hisguti kadiyot OpenDaylight (pagkahuman niini ODL), Postman и Vrnetlab ug nganong kinahanglan nato sila
Bahin sa 2: paghulagway sa virtual nga laboratoryo
Bahin sa 3: ipasibo OpenDaylight
Bahin sa 4: ipasibo Vrnetlab
Bahin sa 5: pinaagi sa paggamit Postman ikonektar ang virtual nga router (Juniper vMX) sa ODL
Bahin sa 6: pagkuha ug usba ang configuration sa router gamit Postman и ODL
Bahin sa 7: idugang ang Cisco xRV9000
konklusyon
PS
Bibliograpiya
Gikinahanglan nga kahibalo
Aron ang artikulo dili mahimong usa ka panid, akong giwala ang pipila ka mga teknikal nga detalye (nga adunay mga link sa literatura diin mahimo nimo mabasa ang bahin niini).
Niini nga koneksyon, gitanyag ko kanimo ang mga hilisgutan nga maayo (apan hapit dili kinahanglan) mahibal-an sa dili pa magbasa:
Usa ka bukas nga plataporma sa SDN alang sa pagdumala ug pag-automate sa tanang matang sa mga network, gisuportahan sa Linux Foundation
Java sa sulod
Base sa Model-Driven Service Abstraction Level (MD-SAL)
Gigamit ang mga modelo sa YANG aron awtomatiko nga makamugna ang mga RESTCONF API alang sa mga aparato sa network
Ang nag-unang module alang sa pagdumala sa network. Pinaagi niini kita makigkomunikar sa mga konektadong mga himan. Gidumala pinaagi sa kaugalingon nga API.
Makabasa ka ug dugang bahin sa OpenDaylight dinhi.
Tool sa pagsulay sa API
Yano ug dali gamiton nga interface
Sa among kaso, interesado kami niini isip usa ka paagi sa pagpadala sa mga hangyo sa REST sa OpenDaylight API. Mahimo nimo, siyempre, magpadala mga hangyo nga mano-mano, apan sa Postman ang tanan tan-awon nga klaro kaayo ug hingpit nga nahiangay sa among mga katuyoan.
Alang niadtong gusto nga magkalot: daghang mga materyales sa pagbansay ang gisulat niini (alang sa panig-ingnan).
Tool alang sa pag-deploy sa mga virtual nga router sa Docker
Nagsuporta: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, ug uban pa.
Open Source
Usa ka makapaikag kaayo apan gamay nga nahibal-an nga instrumento. Sa among kaso, among gamiton kini sa pagpadagan sa Juniper vMX ug Cisco xRV9000 sa usa ka regular nga Ubuntu 20.04 LTS.
Niini nga panudlo, atong i-set up ang mosunod nga sistema:
Unsa nga paagi nga kini nga buhat
Juniper vMX misaka sa Docker sudlanan (sa paagi Vrnetlab) ug naglihok isip labing komon nga virtual router.
ODL konektado sa router ug nagtugot kanimo sa pagkontrol niini.
Postman gilansad sa usa ka bulag nga makina ug pinaagi niini nagpadala kami mga mando ODL: aron makonektar / tangtangon ang router, usba ang configuration, etc.
Komentaryo sa aparato sa sistema
Juniper vMX и ODL nanginahanglan ug daghang mga kapanguhaan alang sa ilang lig-on nga operasyon. Usa ra vMX nangayo og 6 Gb sa RAM ug 4 ka core. Busa, nakahukom nga ibalhin ang tanang "bug-at nga timbang" sa usa ka bulag nga makina (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ang router, siyempre, dili "molupad" niini, apan ang pasundayag igo na alang sa gagmay nga mga eksperimento.
Bahin 3: I-set up ang OpenDaylight
Ang kasamtangan nga bersyon sa ODL sa panahon sa pagsulat niini mao ang Magnesium SR1
1) Pag-instalar Java Open JDK 11 (para sa mas detalyado nga pag-install dinhi)
ubuntu:~$ sudo apt install default-jdk
2) Pangitaa ug i-download ang pinakabag-o nga pagtukod ODLgikan dinhi
3) Unzip ang na-download nga archive
4) Adto sa resulta nga direktoryo
5) Paglusad ./bin/karaf
Niini nga lakang ODL kinahanglan magsugod ug makit-an nato ang atong kaugalingon sa console (Port 8181 gigamit alang sa pag-access gikan sa gawas, nga atong gamiton sa ulahi).
Sunod, i-install Mga Feature sa ODLgidisenyo sa pagtrabaho uban sa mga protocol NETCONF и RESTCONF. Aron mahimo kini sa console ODL atong gipatuman:
Kini ang pinakasimple nga setup. ODL nahuman. (Alang sa dugang mga detalye, tan-awa dinhi).
Bahin 4: Pag-set up sa Vrnetlab
Pag-andam sa sistema
Sa wala pa ang pag-instalar Vrnetlab kinahanglan nimo nga i-install ang mga pakete nga gikinahanglan alang sa operasyon niini. Sama sa Docker, git, sshpass:
Alang sa pag-instalar Vrnetlab clone ang katugbang nga repository gikan sa github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Lakaw ngadto sa direktoryo vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Dinhi imong makita ang tanan nga mga script nga gikinahanglan sa pagdagan. Palihug timan-i nga ang usa ka katugbang nga direktoryo gihimo alang sa matag matang sa router:
Ang matag router nga gisuportahan Vrnetlab, adunay kaugalingon nga talagsaon nga pamaagi sa pag-setup. Kanus-a Juniper vMX kinahanglan lang namong i-upload ang .tgz archive sa router (mahimo nimo kini i-download gikan sa opisyal nga site) ngadto sa vmx directory ug padagana ang command make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Pagtukod og imahe vMX moabot ug mga 10-20 ka minuto. Panahon na aron makakuha og kape!
"Kini tungod kay sa unang higayon nga ang VCP (Control Plane) gisugdan, kini nagbasa sa usa ka config file nga nagtino kung kini modagan ingon nga usa ka VRR VCP sa vMX. Kaniadto, kini nga paglansad gihimo sa panahon sa pagsugod sa Docker, apan kini nagpasabot nga ang VCP kanunay nga gi-restart kausa sa wala pa magamit ang virtual nga router, nga miresulta sa usa ka taas nga oras sa pag-boot (mga 5 minuto) Karon ang una nga pagdagan sa VCP nahimo sa panahon sa pagtukod sa imahe sa Docker, ug tungod kay ang pagtukod sa Docker dili madala sa - -pribilehiyo nga kapilian, kini nagpasabot nga ang qemu nagtrabaho nga walay KVM hardware acceleration ug sa ingon ang pagtukod nagkinahanglan og usa ka taas nga panahon. Atol niini nga proseso daghang mga troso ang output, mao nga labing menos imong makita kung unsa ang nahitabo. Sa akong hunahuna ang usa ka taas nga pagtukod mao dili kaayo makahadlok tungod kay naghimo kami usa ka imahe kausa, apan naglansad kami og daghan.
Human nimo makita ang imahe sa among router sa 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
Ilunsad ang vr-vmx nga sudlanan
Magsugod kami sa mando:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Sunod, makita namon ang kasayuran bahin sa aktibo nga mga sudlanan:
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
Pagkonektar sa router
Ang IP address sa network interface sa router mahimong makuha sa mosunod nga sugo:
Default, Vrnetlab naghimo sa usa ka user sa router vrnetlab/VR-netlab9.
Pagdugtong sa 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
Nakompleto niini ang setup sa router.
Ang mga rekomendasyon sa pag-install alang sa mga router sa lainlaing mga vendor makita sa github nga proyekto sa tagsa-tagsa nga mga direktoryo.
Bahin 5: Postman - ikonektar ang router sa OpenDaylight
Pag-instalar sa kartero
Aron ma-install, i-download lang ang aplikasyon gikan dinhi.
Pagkonektar sa usa ka router sa ODL
Magbuhat ta ibutang hangyo:
Pangutana nga string:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin. Kini gikinahanglan aron ma-access ang ODL:
Sa tab nga Mga Header, kinahanglan nimong idugang ang duha ka mga ulohan:
Dawata ang aplikasyon/xml
Content-Type nga aplikasyon/xml
Nahimo na ang among hangyo. Nagpadala mi. Kung ang tanan na-configure sa husto, nan kinahanglan naton ibalik ang kahimtang nga "201 Gibuhat":
Unsa ang mahimo niini nga hangyo?
Naghimo kami og node sa sulod ODL uban ang mga parameter sa tinuod nga router nga gusto namong ma-access.
Kini ang mga internal nga namespaces XML (XML namespace) alang sa ODL sumala sa diin kini nagmugna node.
Dugang pa, sa tinuud, ang ngalan sa router node-id, adres sa router - panon ug uban pa.
Ang labing makapaikag nga linya mao ang katapusan. Schema-cache-direktoryo naghimo og usa ka direktoryo diin ang tanang mga file ma-download YANG Schema konektado nga router. Makita nimo sila sa $ODL_ROOT/cache/jun01_cache.
Pagsusi sa koneksyon sa router
Magbuhat ta GET hangyo:
Pangutana nga string:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
Nagpadala mi. Kinahanglan makadawat usa ka status nga "200 OK" ug usa ka lista sa tanan nga gisuportahan sa aparato YANG Schema:
comment: Aron makita ang ulahi, sa akong kaso kinahanglan nga maghulat mga 10 minuto pagkahuman sa pagpatay ibutanghangtod sa tanan YANG schema pagdiskarga sa ODL. Hangtod niining puntoha, sa pagbuhat niini GET Ang pangutana magpakita sa mosunod:
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
Bahin 6: Usba ang configuration sa router
Pagkuha sa configuration
Magbuhat ta GET hangyo:
Pangutana nga string:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
Nagpadala mi. Kinahanglan nga makadawat sa status nga "200 OK" ug ang configuration sa router:
Paghimo og configuration
Isip usa ka pananglitan, buhaton nato ang mosunod nga configuration ug usbon kini:
protocols {
bgp {
disable;
shutdown;
}
}
Magbuhat ta POST hangyo:
Pangutana nga 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
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
Sa tab nga Mga Header, kinahanglan nimong idugang ang duha ka mga ulohan:
Dawata ang aplikasyon/xml
Content-Type nga aplikasyon/xml
Pagkahuman sa pagpadala, kinahanglan nila nga madawat ang status nga "204 No Content"
Aron masusi nga nausab ang configuration, mahimo nimong gamiton ang miaging pangutana. Apan pananglitan, maghimo kami og lain nga magpakita lamang og impormasyon mahitungod sa mga protocol nga gi-configure sa router.
Magbuhat ta GET hangyo:
Pangutana nga 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
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
Human sa pagpatuman sa hangyo, atong makita ang mosunod:
Usba ang configuration
Usbon nato ang impormasyon bahin sa BGP protocol. Human sa atong mga aksyon, kini tan-awon sama niini:
protocols {
bgp {
disable;
}
}
Magbuhat ta ibutang hangyo:
Pangutana nga 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
Ayaw kalimti nga usbon ang mga ulohan sa tab nga Mga Header aron:
Dawata ang aplikasyon/json
Content-Type nga aplikasyon/json
Human ipadala, atong makuha ang mosunod nga resulta (Atong tan-awon ang tubag gamit ang GET hangyo):
Bahin 7: Pagdugang sa Cisco xRV9000
Unsa ang atong tanan mahitungod sa Juniper, oo Juniper? Maghisgot ta bahin sa Cisco!
Akong nakit-an ang xRV9000 nga bersyon 7.0.2 (usa ka mananap nga nanginahanglan og 8Gb RAM ug 4 nga mga cores. Dili kini libre nga magamit, busa kontaka Cisco) - padaganon nato kini.
Nagdagan sa usa ka sudlanan
Ang proseso sa paghimo sa usa ka sudlanan sa Docker halos walay kalainan sa Juniper. Sa susama, atong ihulog ang .qcow2 file uban sa router ngadto sa direktoryo nga katumbas sa ngalan niini (sa kini nga kaso, xrv9k) ug ipatuman ang sugo make docker-image.
Pagkahuman sa pipila ka minuto, among nakita nga ang imahe nahimo na:
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
Gisugdan namon ang sudlanan:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Human sa usa ka panahon, atong tan-awon nga ang sudlanan nagsugod na:
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
Sumpaysumpaya pinaagi sa 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
Pagkonektar sa router sa OpenDaylight
Ang pagdugang mahitabo sa hingpit nga susama nga paagi sa vMX. Kinahanglan lang nga usbon nato ang mga ngalan. ibutang hangyo:
Tawag pagkataudtaod GET pangutana aron masusi nga ang tanan konektado:
Usba ang configuration
Atong i-set up ang mosunod nga configuration:
!
router ospf LAB
mpls ldp auto-config
!
Magbuhat ta POST hangyo:
Pangutana nga 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
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
Sa tab nga Mga Header, kinahanglan nimong idugang ang duha ka mga ulohan:
Dawata ang aplikasyon/json
Content-Type nga aplikasyon/json
Pagkahuman sa pagpatuman niini, kinahanglan nila nga madawat ang status nga "204 No Content".
Atong susihon kung unsa ang atong nakuha.
Aron mahimo kini, maghimo kami GET hangyo:
Pangutana nga 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
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
Human sa pagpatuman, imong makita ang mosunod:
Aron tangtangon ang paggamit sa configuration KINAHANGLAN:
Sa tab nga Awtorisasyon, kinahanglan nimo nga itakda ang parameter Basic Auth ug login/password: admin/admin.
konklusyon
Sa kinatibuk-an, sama sa imong namatikdan, ang mga pamaagi sa pagkonektar sa Cisco ug Juniper sa OpenDaylight wala magkalainlain - kini nagbukas sa usa ka halapad nga sakup alang sa pagkamamugnaon. Nagsugod gikan sa pagdumala sa pag-configure sa tanan nga mga sangkap sa network ug natapos sa paghimo sa imong kaugalingon nga mga palisiya sa network.
Sa kini nga panudlo, gihatagan nako ang labing yano nga mga pananglitan kung giunsa nimo makig-uban sa mga kagamitan sa network gamit ang OpenDaylight. Sa walay duhaduha, ang mga pangutana gikan sa mga pananglitan sa ibabaw mahimo nga mas komplikado ug mag-set up sa tibuok nga mga serbisyo sa usa ka pag-klik sa mouse - ang tanan limitado lamang sa imong imahinasyon *
Ipadayon…
PS
Kung sa kalit lang nahibal-an na nimo kining tanan o, sa kasukwahi, nakaagi ug naunlod sa kalag sa ODL, nan girekomenda ko ang pagtan-aw sa pagpalambo sa mga aplikasyon sa ODL controller. Mahimo ka magsugod gikan dinhi.