ProHoster > Blog > Pangangasiwa > Automation ng mga serbisyo sa network o kung paano bumuo ng isang virtual na laboratoryo gamit ang OpenDaylight, Postman at Vrnetlab
Automation ng mga serbisyo sa network o kung paano bumuo ng isang virtual na laboratoryo gamit ang OpenDaylight, Postman at Vrnetlab
Sa artikulong ito, ipapakita ko sa iyo kung paano mag-set up bukas na araw upang gumana sa mga kagamitan sa network, at ipakita din kung paano gamitin Kartero at simple RESTCONF mga kahilingan, makokontrol ang kagamitang ito. Hindi kami gagana sa hardware, ngunit sa halip ay magde-deploy kami ng maliliit na virtual na laboratoryo na may isang router na gumagamit Vrnetlab sa ibabaw Ubuntu LTS 20.04.
Ipapakita ko muna ang mga detalyadong setting gamit ang halimbawa ng isang router Juniper vMX 20.1R1.11, at pagkatapos ay ihahambing namin ito sa setting Cisco xRV9000 7.0.2.
nilalaman
Kinakailangan na kaalaman
Часть 1: talakayin nang maikli OpenDaylight (pagkatapos nito ODL), Kartero и Vrnetlab at bakit natin sila kailangan
Часть 2: paglalarawan ng virtual na laboratoryo
Часть 3: ipasadya bukas na araw
Часть 4: ipasadya Vrnetlab
Часть 5: sa pamamagitan ng paggamit Kartero ikonekta ang virtual na router (Juniper vMX) Sa ODL
Часть 6: kunin at baguhin ang configuration ng router gamit Kartero и ODL
Часть 7: magdagdag ng Cisco xRV9000
Konklusyon
PS
Bibliograpiya
Kinakailangan na kaalaman
Upang ang artikulo ay hindi maging isang sheet, tinanggal ko ang ilang mga teknikal na detalye (na may mga link sa panitikan kung saan maaari mong basahin ang tungkol sa mga ito).
Kaugnay nito, nag-aalok ako sa iyo ng mga paksa na mabuti (ngunit halos hindi kinakailangan) na malaman bago basahin:
Isang bukas na platform ng SDN para sa pamamahala at pag-automate ng lahat ng uri ng network, na sinusuportahan ng Linux Foundation
Java sa loob
Batay sa Model-Driven Service Abstraction Level (MD-SAL)
Gumagamit ng mga modelo ng YANG upang awtomatikong bumuo ng mga RESTCONF API para sa mga network device
Ang pangunahing module para sa pamamahala ng network. Sa pamamagitan nito ay makikipag-usap tayo sa mga konektadong device. Pinamamahalaan sa pamamagitan ng sarili nitong API.
Maaari kang magbasa nang higit pa tungkol sa OpenDaylight dito.
Tool sa pagsubok ng API
Simple at madaling gamitin na interface
Sa aming kaso, interesado kami dito bilang isang paraan para sa pagpapadala ng mga kahilingan sa REST sa OpenDaylight API. Maaari mong, siyempre, magpadala ng mga kahilingan nang manu-mano, ngunit sa Postman ang lahat ay mukhang napakalinaw at ganap na nababagay sa aming mga layunin.
Para sa mga gustong maghukay: maraming materyales sa pagsasanay ang nakasulat dito (halimbawa).
Tool para sa pag-deploy ng mga virtual na router sa Docker
Isang napaka-interesante ngunit hindi gaanong kilala na instrumento. Sa aming kaso, gagamitin namin ito upang patakbuhin ang Juniper vMX at Cisco xRV9000 sa isang regular na Ubuntu 20.04 LTS.
Sa tutorial na ito, ise-set up namin ang sumusunod na system:
Как это работает
Juniper vMX tumataas sa Manggagawa sa pantalan lalagyan (sa pamamagitan ng paraan Vrnetlab) at gumagana bilang ang pinakakaraniwang virtual router.
ODL nakakonekta sa router at pinapayagan kang kontrolin ito.
Kartero inilunsad sa isang hiwalay na makina at sa pamamagitan nito nagpapadala kami ng mga utos ODL: upang ikonekta / alisin ang router, baguhin ang configuration, atbp.
Komentaryo sa device ng system
Juniper vMX и ODL nangangailangan ng napakaraming mapagkukunan para sa kanilang matatag na operasyon. Isa lang vMX humihingi ng 6 Gb ng RAM at 4 na core. Samakatuwid, napagpasyahan na ilipat ang lahat ng "heavyweights" sa isang hiwalay na makina (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ang router, siyempre, ay hindi "lumipad" dito, ngunit ang pagganap ay sapat para sa maliliit na eksperimento.
Bahagi 3: I-set up ang OpenDaylight
Ang kasalukuyang bersyon ng ODL sa oras ng pagsulat na ito ay Magnesium SR1
1) I-install Java Open JDK 11 (para sa mas detalyadong pag-install dito)
ubuntu:~$ sudo apt install default-jdk
2) Hanapin at i-download ang pinakabagong build ODLkaya
3) I-unzip ang na-download na archive
4) Pumunta sa nagresultang direktoryo
5) Ilunsad ./bin/karaf
Sa hakbang na ito ODL dapat magsimula at makikita natin ang ating sarili sa console (Ginagamit ang Port 8181 para sa pag-access mula sa labas, na gagamitin natin mamaya).
Susunod, i-install Mga Tampok ng ODLidinisenyo upang gumana sa mga protocol NETCONF и RESTCONF. Upang gawin ito sa console ODL isinasagawa namin:
Ito ang pinakasimpleng setup. ODL nakumpleto. (Para sa higit pang mga detalye, tingnan dito).
Bahagi 4: Pagse-set up ng Vrnetlab
Paghahanda ng system
Bago i-install Vrnetlab kailangan mong i-install ang mga pakete na kinakailangan para sa operasyon nito. Tulad ng Manggagawa sa pantalan, pumunta, sshpass:
Upang mai-install Vrnetlab I-clone ang kaukulang repositoryo mula sa github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Pumunta sa direktoryo vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Dito makikita mo ang lahat ng mga script na kailangan para tumakbo. Pakitandaan na ang isang kaukulang direktoryo ay ginawa para sa bawat uri ng router:
Ang bawat router na sinusuportahan Vrnetlab, ay may sariling natatanging pamamaraan sa pag-setup. Kailan Juniper vMX kailangan lang nating i-upload ang .tgz archive kasama ang router (maaari mong i-download ito mula sa opisyal na site) sa vmx directory at patakbuhin ang command make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Pagbuo ng isang imahe vMX aabutin ng mga 10-20 minuto. Oras na para kumuha ng kape!
"Ito ay dahil sa unang pagkakataon na ang VCP (Control Plane) ay nagsimula, ito ay nagbabasa ng isang config file na tumutukoy kung ito ay tatakbo bilang isang VRR VCP sa vMX. Dati, ang paglulunsad na ito ay ginawa sa panahon ng Docker startup, ngunit ito ay nangangahulugan na ang VCP ay palaging na-restart nang isang beses bago naging available ang virtual na router, na nagreresulta sa mahabang oras ng boot (mga 5 minuto) Ngayon ang unang pagpapatakbo ng VCP ay ginagawa sa panahon ng pagbuo ng imahe ng Docker, at dahil ang build ng Docker ay hindi maaaring patakbuhin gamit ang - -privileged na opsyon, nangangahulugan ito na gumagana ang qemu nang walang KVM hardware acceleration at sa gayon ang build ay tumatagal ng napakatagal na oras. Sa prosesong ito, maraming mga log ang na-output, kaya kahit papaano ay makikita mo kung ano ang nangyayari. Sa tingin ko ay isang mahabang build ay hindi nakakatakot dahil lumikha kami ng isang imahe nang isang beses, ngunit naglulunsad kami ng marami."
Pagkatapos mong makita ang imahe ng aming router sa Manggagawa sa pantalan:
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 container
Nagsisimula kami sa utos:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Susunod, makakakita tayo ng impormasyon tungkol sa mga aktibong container:
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
Kumokonekta sa router
Ang IP address ng network interface ng router ay maaaring makuha gamit ang sumusunod na command:
Default, Vrnetlab lumilikha ng user sa router vrnetlab/VR-netlab9.
Kumokonekta 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
Kinukumpleto nito ang pag-setup ng router.
Ang mga rekomendasyon sa pag-install para sa mga router ng iba't ibang mga vendor ay matatagpuan sa proyekto ng github sa kani-kanilang mga direktoryo.
Part 5: Postman - ikonekta ang router sa OpenDaylight
Pag-install ng postman
Upang i-install, i-download lamang ang application kaya.
Pagkonekta ng router sa ODL
Lumikha tayo PUT hiling:
Query string:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ito ay mga panloob na namespace XML (XML namespace) para sa ODL ayon sa kung saan ito lumilikha ng node.
Dagdag pa, ayon sa pagkakabanggit, ang pangalan ng router ay node-id, address ng router - marami at iba pa.
Ang pinakakawili-wiling linya ay ang huli. Schema-cache-directory lumilikha ng isang direktoryo kung saan na-download ang lahat ng mga file Yang Schema nakakonektang router. Maaari mong mahanap ang mga ito sa $ODL_ROOT/cache/jun01_cache.
Sinusuri ang koneksyon ng router
Lumikha tayo GET hiling:
Query string:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Nagpapadala kami. Dapat makatanggap ng status na "200 OK" at isang listahan ng lahat ng sinusuportahan ng device Yang Schema:
Puna: Upang makita ang huli, sa aking kaso ay kailangang maghintay ng mga 10 minuto pagkatapos ng pagpapatupad PUThanggang sa lahat YANG schema magdiskarga sa ODL. Hanggang sa puntong ito, kapag ginagawa ito GET ipapakita ng query ang sumusunod:
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Bahagi 6: Baguhin ang configuration ng router
Pagkuha ng configuration
Lumikha tayo GET hiling:
Query string:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Nagpapadala kami. Dapat makatanggap ng katayuang "200 OK" at ang configuration ng router:
Gumawa ng configuration
Bilang halimbawa, gawin natin ang sumusunod na configuration at baguhin ito:
protocols {
bgp {
disable;
shutdown;
}
}
Lumikha tayo POST hiling:
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
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Sa tab na Mga Header, kailangan mong magdagdag ng dalawang header:
Tanggapin ang application/xml
Application/xml na Uri ng Nilalaman
Pagkatapos ipadala, dapat nilang matanggap ang katayuang "204 Walang Nilalaman"
Upang tingnan kung nagbago ang configuration, maaari mong gamitin ang nakaraang query. Ngunit halimbawa, gagawa kami ng isa pa na magpapakita lamang ng impormasyon tungkol sa mga protocol na na-configure sa router.
Lumikha tayo GET hiling:
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
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Pagkatapos isagawa ang kahilingan, makikita natin ang sumusunod:
Baguhin ang configuration
Baguhin natin ang impormasyon tungkol sa BGP protocol. Pagkatapos ng aming mga aksyon, magiging ganito ang hitsura:
protocols {
bgp {
disable;
}
}
Lumikha tayo PUT hiling:
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
Huwag kalimutang baguhin ang mga header sa tab na Mga Header sa:
Tanggapin ang application/json
Application/json na Uri ng Nilalaman
Pagkatapos ipadala, makukuha natin ang sumusunod na resulta (Tingnan natin ang sagot gamit ang GET hiling):
Bahagi 7: Pagdaragdag ng Cisco xRV9000
Ano tayong lahat tungkol sa Juniper, oo Juniper? Pag-usapan natin ang Cisco!
Nakakita ako ng xRV9000 na bersyon 7.0.2 (isang hayop na nangangailangan ng 8Gb RAM at 4 na core. Hindi ito malayang magagamit, kaya makipag-ugnayan Cisco) - patakbuhin natin ito.
Nagpapatakbo ng lalagyan
Ang proseso ng paglikha ng isang Docker container ay halos hindi naiiba sa Juniper. Katulad nito, ibinabagsak namin ang .qcow2 file kasama ang router sa direktoryo na naaayon sa pangalan nito (sa kasong ito, xrv9k) at isagawa ang command make docker-image.
Pagkatapos ng ilang minuto, nakita namin na ang imahe ay nilikha:
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
Sinimulan namin ang lalagyan:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Pagkaraan ng ilang sandali, nakikita namin na nagsimula na ang lalagyan:
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
Kumonekta sa pamamagitan ng 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
Pagkonekta sa router sa OpenDaylight
Ang pagdaragdag ay nangyayari sa isang ganap na katulad na paraan sa vMX. Kailangan lang nating baguhin ang mga pangalan. PUT hiling:
Tumawag pagkatapos ng ilang sandali GET query upang suriin na ang lahat ay konektado:
Baguhin ang configuration
I-set up natin ang sumusunod na configuration:
!
router ospf LAB
mpls ldp auto-config
!
Lumikha tayo POST hiling:
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
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Sa tab na Mga Header, kailangan mong magdagdag ng dalawang header:
Tanggapin ang application/json
Application/json na Uri ng Nilalaman
Pagkatapos ng pagpapatupad nito, dapat nilang matanggap ang katayuang "204 Walang Nilalaman".
Suriin natin kung ano ang nakuha natin.
Upang gawin ito, lilikha kami GET hiling:
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
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Pagkatapos ng pagpapatupad, dapat mong makita ang sumusunod:
Sa tab na Awtorisasyon, dapat mong itakda ang parameter Basic Auth at login/password: admin/admin.
Konklusyon
Sa kabuuan, tulad ng napansin mo, ang mga pamamaraan para sa pagkonekta ng Cisco at Juniper sa OpenDaylight ay hindi naiiba - nagbubukas ito ng isang malawak na saklaw para sa pagkamalikhain. Simula sa pamamahala ng pagsasaayos ng lahat ng bahagi ng network at nagtatapos sa paglikha ng sarili mong mga patakaran sa network.
Sa tutorial na ito, nagbigay ako ng mga pinakasimpleng halimbawa kung paano ka makikipag-ugnayan sa mga kagamitan sa network gamit ang OpenDaylight. Walang alinlangan, ang mga query mula sa mga halimbawa sa itaas ay maaaring gawing mas kumplikado at i-set up ang buong serbisyo sa isang pag-click ng mouse - lahat ay limitado lamang ng iyong imahinasyon *
Upang patuloy ...
PS
Kung bigla mong nalaman ang lahat ng ito o, sa kabaligtaran, ay dumaan at lumubog sa kaluluwa ng ODL, pagkatapos ay inirerekumenda ko ang pagtingin sa pagbuo ng mga aplikasyon sa ODL controller. Maaari mong simulan ang kaya.