ProHoster > Blog > Amministrazione > Automatizazione di servizii di rete o cumu custruisce un laboratoriu virtuale cù OpenDaylight, Postman è Vrnetlab
Automatizazione di servizii di rete o cumu custruisce un laboratoriu virtuale cù OpenDaylight, Postman è Vrnetlab
In questu articulu, vi mustraraghju cumu si stallanu OpenDaylight per travaglià cù l'equipaggiu di rete, è ancu mostra cumu utilizà Postariu è simplice RESTCONF richieste, stu equipamentu pò esse cuntrullatu. Ùn avemu micca travagliatu cù hardware, ma invece implementeremu picculi laboratorii virtuali cù un solu router chì utilizeghja Vrnetlab più Ubuntu 20.04 LTS.
Mostraraghju i paràmetri detallati prima cù l'esempiu di un router Juniper vMX 20.1R1.11, è poi paragunemu cù u paràmetru Cisco xRV9000 7.0.2.
Cuntenuti
Cunniscenza necessaria
Parte di 1: discute brevemente OpenDaylight (da quì sottu ODL), Postariu и Vrnetlab è perchè avemu bisognu di elli
Parte di 2: descrizzione di u laboratoriu virtuale
Parte di 3: persunalizà OpenDaylight
Parte di 4: persunalizà Vrnetlab
Parte di 5: usendu Postariu cunnette u router virtuale (Juniper vMX) À ODL
Parte di 6: uttene è cambià a cunfigurazione di u router usendu Postariu и ODL
Parte di 7: aghjunghje Cisco xRV9000
cunchiusioni
PS
Bibliografia
Cunniscenza necessaria
Per chì l'articulu ùn si trasformi micca in un fogliu, aghju omessi qualchi dettagli tecnichi (cù ligami à a literatura induve pudete leghje nantu à elli).
In questu cunnessu, vi offre temi chì saria bonu (ma quasi micca necessariu) di sapè prima di leghje:
In u nostru casu, ci interessa cum'è un mezzu per mandà richieste REST à l'API OpenDaylight. Pudete, sicuru, mandà richieste manualmente, ma in Postman tuttu pare assai chjaru è si adatta perfettamente à i nostri scopi.
Per quelli chì volenu scavà: assai materiale di furmazione sò stati scritti sopra (per esempiu).
Strumentu per implementà i router virtuali in Docker
Supporta: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
Open Source
Un strumentu assai interessante ma pocu cunnisciutu. In u nostru casu, avemu aduprà per eseguisce Juniper vMX è Cisco xRV9000 nantu à un Ubuntu 20.04 LTS regularmente.
In questu tutoriale, stabiliremu u sistema seguente:
Cumu serà ch'ella ùn stu travagliu
Juniper vMX si alza in Docker container (per mezu Vrnetlab) è funziona cum'è u router virtuale più cumuni.
ODL cunnessu à u router è vi permette di cuntrullà lu.
Postariu lanciatu nantu à una macchina separata è attraversu noi mandemu cumandamenti ODL: per cunnette / caccià u router, cambià a cunfigurazione, etc.
Cumentu nantu à u dispusitivu di u sistema
Juniper vMX и ODL necessitanu assai risorse per u so funziunamentu stabile. Unu solu vMX dumanda 6 Gb di RAM è 4 core. Dunque, hè statu decisu di trasfurmà tutti i "pesi pesanti" à una macchina separata (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). U router, sicuru, ùn "vola" nantu à questu, ma u rendiment hè abbastanza per picculi esperimenti.
Parte 3: Configurate OpenDaylight
A versione attuale di ODL à u mumentu di sta scrittura hè Magnesium SR1
1) Installa Java Open JDK 11 (per una installazione più dettagliata ccà)
ubuntu:~$ sudo apt install default-jdk
2) Truvate è scaricate l'ultima build ODLda quì
3) Unzip l'archiviu scaricatu
4) Andà à u cartulare resultanti
5) Lanciate ./bin/karaf
À questu passu ODL duverebbe principià è ci truvemu in a cunsola (Port 8181 hè utilizatu per l'accessu da l'esternu, chì avemu aduprà dopu).
Dopu, stallà Funzioni ODLcuncepitu per travaglià cù protokolli NETCONF и RESTCONF. Per fà questu in a cunsola ODL eseguimu:
Ogni router chì hè supportatu Vrnetlab, hà a so propria prucedura di cunfigurazione unica. Quandu Juniper vMX avemu bisognu di carica l'archiviu .tgz cù u router (pudete scaricà da situ ufficiali) à u cartulare vmx è eseguite u cumandimu make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Custruì una maghjina vMX piglià circa 10-20 minuti. Hè ora di andà à piglià un caffè !
"Questu hè perchè a prima volta chì u VCP (Control Plane) hè iniziatu, leghje un schedariu di cunfigurazione chì determina s'ellu correrà cum'è un VRR VCP in vMX. In precedenza, stu lanciu era fattu durante l'iniziu di Docker, ma questu significava chì u VCP. era sempre riavviatu una volta prima chì u router virtuale diventava dispunibile, risultante in un longu tempu di boot (circa 5 minuti) Avà a prima corsa di u VCP hè fatta durante a custruzione di l'imaghjini Docker, è postu chì a custruzzione di Docker ùn pò micca esse eseguita cù u - -privileged option, questu significa chì qemu travaglia senza l'accelerazione hardware KVM è cusì a custruzzione dura assai tempu.Durante stu prucessu, assai logs sò output, cusì almenu pudete vede ciò chì succede.Pensu chì una longa custruzzione. ùn hè micca cusì spaventosa perchè creemu una maghjina una volta, ma lancemu parechji ".
Dopu pudete vede l'imaghjini di u nostru router in 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
Lanciate u containeru vr-vmx
Cuminciamu cù u cumandimu:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Dopu, pudemu vede infurmazioni nantu à i cuntenituri attivi:
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
Cunnessione à u router
L'indirizzu IP di l'interfaccia di rete di u router pò esse acquistatu cù u cumandimu seguente:
Default, Vrnetlab crea un utilizatore nantu à u router vrnetlab/VR-netlab9.
Cunnetta cù 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
Questu cumpleta a cunfigurazione di u router.
Raccomandazioni d'installazione per i routers di diversi venditori ponu esse truvati à prughjettu github in i repertorii rispettivi.
Parte 5: Postman - cunnette u router à OpenDaylight
Installazione di postman
Per stallà, basta à scaricà l'applicazione da quì.
Cunnette un router à ODL
Creemu Mastru dumanda:
Stringa di dumanda:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Quessi sò spazii di nomi interni XML (U spaziu di nomi XML) per ODL secondu chì crea node.
In più, rispettivamente, u nome di u router hè node-id, indirizzu router - òspite è cusì.
A linea più interessante hè l'ultima. Schema-cache-directory crea un cartulare induve tutti i schedari sò scaricati Schema YANG router cunnessu. Li pudete truvà in $ODL_ROOT/cache/jun01_cache.
Verificate a cunnessione di u router
Creemu GET dumanda:
Stringa di dumanda:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
Mandemu. Deve riceve un statutu di "200 OK" è una lista di tutti i supportati da u dispusitivu Schema YANG:
cumentu: Per vede l'ultime, in u mo casu era necessariu d'aspittà circa 10 minuti dopu l'esekzione Mastrufinu à tuttu schema YANG scaricate nantu ODL. Finu à questu puntu, quandu eseguisce questu GET a dumanda mostrarà u seguente:
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
Parte 6: Cambia a cunfigurazione di u router
Ottene a cunfigurazione
Creemu GET dumanda:
Stringa di dumanda:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
Mandemu. Deve riceve u statutu "200 OK" è a cunfigurazione di u router:
Crea una cunfigurazione
Per esempiu, creemu a seguente cunfigurazione è mudificà:
protocols {
bgp {
disable;
shutdown;
}
}
Creemu POST dumanda:
Stringa di dumanda:
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
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
In a tabulazione Intestazioni, avete bisognu di aghjunghje dui intestazioni:
Accetta l'applicazione / xml
Cuntenutu-Tipu applicazione / xml
Dopu avè mandatu, anu da riceve u statutu "204 No Content"
Per verificà chì a cunfigurazione hà cambiatu, pudete aduprà a quistione precedente. Ma per esempiu, creeremu un altru chì mostrarà infurmazioni solu nantu à i protokolli cunfigurati in u router.
Creemu GET dumanda:
Stringa di dumanda:
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
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
Dopu avè eseguitu a dumanda, vedemu i seguenti:
Cambia a cunfigurazione
Cambiamu l'infurmazioni nantu à u protocolu BGP. Dopu à e nostre azzioni, sarà cusì:
protocols {
bgp {
disable;
}
}
Creemu Mastru dumanda:
Stringa di dumanda:
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
Ùn vi scurdate di cambià l'intestazione nantu à a tabulazione Intestazioni per:
Accetta l'applicazione/json
Applicazione di u tipu di cuntenutu / json
Dopu avè mandatu, uttene u risultatu seguente (Fighjemu a risposta usendu GET dumanda):
Parte 7: Aghjunghjendu u Cisco xRV9000
Chì simu tutti di Juniper, iè Juniper ? Parlemu di Cisco !
Aghju trovu xRV9000 versione 7.0.2 (una bestia chì hà bisognu di 8Gb RAM è core 4. Ùn hè micca dispunibule liberamente, cusì cuntattate Cisco) - andemu à eseguisce.
Eseguisce un containeru
U prucessu di creà un containeru Docker ùn hè praticamente micca sfarente di Juniper. In listessu modu, abbandunemu u schedariu .qcow2 cù u router in u cartulare chì currisponde à u so nome (in questu casu, xrv9k) è eseguisce u cumandimu. make docker-image.
Dopu qualchì minutu, vedemu chì l'imaghjina hè stata creata:
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
Cuminciamu u cuntinuu:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Dopu qualchì tempu, vedemu chì u cuntinuu hà cuminciatu:
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
Cunnette via 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
Cunnettendu u router à OpenDaylight
L'aghjunzione si trova in una manera cumpletamente simili cù vMX. Basta à cambià i nomi. Mastru dumanda:
Chjamate dopu un pocu tempu GET dumanda per verificà chì tuttu hè cunnessu:
Cambia a cunfigurazione
Fighjemu a seguente cunfigurazione:
!
router ospf LAB
mpls ldp auto-config
!
Creemu POST dumanda:
Stringa di dumanda:
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
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
In a tabulazione Intestazioni, avete bisognu di aghjunghje dui intestazioni:
Accetta l'applicazione/json
Applicazione di u tipu di cuntenutu / json
Dopu a so esicuzzioni, anu da riceve u statutu "204 No Content".
Cuntrollamu ciò chì avemu.
Per fà questu, avemu da creà GET dumanda:
Stringa di dumanda:
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
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
In a tabulazione Autorizazione, deve stabilisce u paràmetru Basic Auth è login/password: admin/admin.
cunchiusioni
In totale, cum'è avete nutatu, e prucedure per cunnette Cisco è Juniper à OpenDaylight ùn sò micca diffirenti - questu apre un spaziu abbastanza largu per a creatività. Partendu da a gestione di cunfigurazione di tutti i cumpunenti di a rete è finisce cù a creazione di e vostre propiu pulitiche di rete.
In questu tutoriale, aghju datu l'esempi più simplici di cumu pudete interagisce cù l'equipaggiu di rete cù OpenDaylight. Senza dubbitu, e dumande da l'esempii di sopra ponu esse fatte assai più cumplesse è stallà servizii interi cun un clic di u mouse - tuttu hè limitatu solu da a vostra imaginazione *
Per esse continuatu ...
PS
Se di colpu cunnosci digià tuttu questu o, à u cuntrariu, avete passatu è affundatu in l'anima di ODL, allora vi cunsigliu di circà à sviluppà applicazioni nantu à u controller ODL. Pudete principià da quì.