ProHoster > Bloc > Administració > Automatització de serveis de xarxa o com construir un laboratori virtual amb OpenDaylight, Postman i Vrnetlab
Automatització de serveis de xarxa o com construir un laboratori virtual amb OpenDaylight, Postman i Vrnetlab
En aquest article, us mostraré com configurar-lo Llum oberta per treballar amb equips de xarxa i també mostrar com utilitzar-los Carter i senzill RESTCONF sol·licituds, aquest equip es pot controlar. No treballarem amb maquinari, sinó que desplegarem petits laboratoris virtuals amb un únic encaminador Vrnetlab sobre Ubuntu 20.04 LTS.
Primer mostraré la configuració detallada utilitzant l'exemple d'un encaminador Juniper vMX 20.1R1.11, i després ho comparem amb la configuració Cisco xRV9000 7.0.2.
Contingut
Coneixements requerits
Часть 1: discutir breument OpenDaylight (d'ara endavant ODL), Carter и Vrnetlab i per què els necessitem
Часть 2: descripció del laboratori virtual
Часть 3: personalitzar Llum oberta
Часть 4: personalitzar Vrnetlab
Часть 5: mitjançant l'ús de Carter connectar un encaminador virtual (Juniper vMX) a ODL
Часть 6: obteniu i canvieu la configuració de l'encaminador utilitzant Carter и ODL
Часть 7: afegiu Cisco xRV9000
Conclusió
PS
Bibliografia
Coneixements requerits
Per tal que l'article no es convertís en un full, he omès alguns detalls tècnics (amb enllaços a la literatura on podeu llegir-ne).
En aquest sentit, us proposo temes que seria bo (però gairebé no necessari) conèixer abans de llegir:
Una plataforma SDN oberta per gestionar i automatitzar tot tipus de xarxes, amb el suport de Fundació Linux
Java dins
Basat en el nivell d'abstracció del servei basat en models (MD-SAL)
Utilitza models YANG per generar automàticament API RESTCONF per a dispositius de xarxa
El mòdul principal per a la gestió de la xarxa. És a través d'ella que ens comunicarem amb els dispositius connectats. Gestionat mitjançant la seva pròpia API.
En el nostre cas, ens interessa com a mitjà per enviar sol·licituds REST a l'API OpenDaylight. Per descomptat, podeu enviar sol·licituds manualment, però a Postman tot sembla molt clar i s'adapta perfectament als nostres propòsits.
Per a aquells que vulguin cavar: s'hi han escrit molts materials de formació (per exemple).
Eina per desplegar encaminadors virtuals a Docker
Suporta: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
Open Source
Un instrument molt interessant però poc conegut. En el nostre cas, l'utilitzarem per executar Juniper vMX i Cisco xRV9000 en un Ubuntu 20.04 LTS normal.
En aquest tutorial, configurarem el següent sistema:
Com funciona això
Juniper vMX puja dins estibador contenidor (mitjançant Vrnetlab) i funciona com l'encaminador virtual més comú.
ODL connectat a l'encaminador i us permet controlar-lo.
Carter llançat en una màquina separada i a través d'ella enviem ordres ODL: per connectar/eliminar l'encaminador, canviar la configuració, etc.
Comentari sobre el dispositiu del sistema
Juniper vMX и ODL requereixen molts recursos per al seu funcionament estable. Només un vMX demana 6 Gb de RAM i 4 nuclis. Per tant, es va decidir traslladar tots els "pesos pesats" a una màquina separada (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). L'encaminador, per descomptat, no "vola" sobre ell, però el rendiment és suficient per a petits experiments.
Part 3: configurar l'OpenDaylight
La versió actual d'ODL en el moment d'escriure aquest article és Magnesium SR1
1) Instal·lar Java Open JDK 11 (per a una instal·lació més detallada aquí)
ubuntu:~$ sudo apt install default-jdk
2) Cerqueu i descarregueu la darrera versió ODLper tant
3) Descomprimiu l'arxiu descarregat
4) Aneu al directori resultant
5) Llançament ./bin/karaf
En aquest pas ODL hauria de començar i ens trobarem a la consola (el port 8181 s'utilitza per accedir des de l'exterior, que utilitzarem més endavant).
A continuació, instal·leu Característiques ODLdissenyat per treballar amb protocols NETCONF и RESTCONF. Per fer-ho a la consola ODL executem:
Per a la instal·lació Vrnetlab clonar el repositori corresponent des de github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Vés al directori vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Aquí podeu veure tots els scripts necessaris per executar-los. Tingueu en compte que s'ha creat un directori corresponent per a cada tipus d'encaminador:
Cada encaminador compatible Vrnetlab, té el seu propi procediment de configuració únic. Quan Juniper vMX només hem de pujar l'arxiu .tgz amb l'encaminador (pots descarregar-lo des de El lloc oficial) al directori vmx i executeu l'ordre make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Construir una imatge vMX trigarà uns 10-20 minuts. És hora d'anar a prendre un cafè!
"Això es deu al fet que la primera vegada que s'inicia el VCP (avió de control), llegeix un fitxer de configuració que determina si s'executarà com a VRR VCP a vMX. Anteriorment, aquest llançament es feia durant l'inici de Docker, però això significava que el VCP sempre es va reiniciar una vegada abans que l'encaminador virtual estigués disponible, la qual cosa va provocar un temps d'arrencada llarg (uns 5 minuts) Ara la primera execució del VCP es fa durant la creació de la imatge de Docker, i com que la compilació de Docker no es pot executar amb el - -opció privilegiada, això vol dir que qemu funciona sense acceleració de maquinari KVM i, per tant, la compilació triga molt de temps. Durant aquest procés, surten molts registres, de manera que almenys podeu veure què està passant. no fa tanta por perquè creem una imatge una vegada, però n'estrem moltes".
Després podeu veure la imatge del nostre encaminador a estibador:
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
Inicieu el contenidor vr-vmx
Comencem amb l'ordre:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
A continuació, podem veure informació sobre els contenidors actius:
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
Connexió al router
L'adreça IP de la interfície de xarxa de l'encaminador es pot obtenir amb la següent comanda:
Per defecte, Vrnetlab crea un usuari al router vrnetlab/VR-netlab9.
Connectant amb 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
Això completa la configuració de l'encaminador.
Es poden trobar recomanacions d'instal·lació per a encaminadors de diversos proveïdors a projecte github als directoris respectius.
Part 5: Carter: connecteu l'encaminador a OpenDaylight
Instal·lació carter
Per instal·lar-lo, només cal descarregar l'aplicació per tant.
Connexió d'un encaminador a ODL
Anem a crear PUT petició:
Cadena de consulta:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Aquests són espais de noms interns XML (Espai de noms XML) per ODL segons el qual crea node.
A més, respectivament, el nom de l'encaminador és node-id, adreça de l'encaminador - host и тд.
La línia més interessant és l'última. Esquema-cache-directori crea un directori on es descarreguen tots els fitxers Esquema YANG encaminador connectat. Els pots trobar a $ODL_ROOT/cache/jun01_cache.
Comprovació de la connexió del router
Anem a crear GET petició:
Cadena de consulta:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
Enviem. Hauria de rebre un estat de "200 OK" i una llista de tots els compatibles amb el dispositiu Esquema YANG:
Comentari: Per veure aquest últim, en el meu cas calia esperar uns 10 minuts després de l'execució PUTfins a tot Esquema YANG descarregar en marxa ODL. Fins a aquest punt, en realitzar això GET la consulta mostrarà el següent:
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
Part 6: Canvieu la configuració de l'encaminador
Obtenció de la configuració
Anem a crear GET petició:
Cadena de consulta:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
Enviem. Hauria de rebre l'estat "200 OK" i la configuració de l'encaminador:
Creeu una configuració
Com a exemple, creem la configuració següent i modifiquem-la:
protocols {
bgp {
disable;
shutdown;
}
}
Anem a crear PAL petició:
Cadena de consulta:
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
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
A la pestanya Capçaleres, heu d'afegir dues capçaleres:
Accepta l'aplicació/xml
Aplicació de tipus de contingut/xml
Després de l'enviament, haurien de rebre l'estat "204 Sense contingut"
Per comprovar que la configuració ha canviat, podeu utilitzar la consulta anterior. Però per exemple, en crearem un altre que mostrarà informació només sobre els protocols configurats al router.
Anem a crear GET petició:
Cadena de consulta:
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
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
Després d'executar la sol·licitud, veurem el següent:
Canvia la configuració
Canviem la informació sobre el protocol BGP. Després de les nostres accions, quedarà així:
protocols {
bgp {
disable;
}
}
Anem a crear PUT petició:
Cadena de consulta:
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
No oblideu canviar les capçaleres de la pestanya Capçaleres a:
Accepteu l'aplicació/json
Aplicació de tipus de contingut/json
Després d'enviar, obtindrem el següent resultat (veiem la resposta utilitzant GET petició):
Part 7: Afegir el Cisco xRV9000
Què en tenim de Juniper, sí Juniper? Parlem de Cisco!
He trobat xRV9000 versió 7.0.2 (una bèstia que necessita 8 Gb de RAM i 4 nuclis. No està disponible gratuïtament, així que poseu-vos en contacte amb Cisco) - anem a executar-ho.
Execució d'un contenidor
El procés de creació d'un contenidor Docker pràcticament no és diferent de Juniper. De la mateixa manera, deixem anar el fitxer .qcow2 amb l'encaminador al directori corresponent al seu nom (en aquest cas, xrv9k) i executem l'ordre make docker-image.
Al cap d'uns minuts, veiem que la imatge s'ha creat:
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
Comencem el contenidor:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Al cap d'una estona, mirem que el contenidor ha començat:
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
Connecteu-vos mitjançant 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
Connexió del router a OpenDaylight
L'addició es fa d'una manera completament similar amb vMX. Només hem de canviar els noms. PUT petició:
Truca al cap d'una estona GET consulta per comprovar que tot està connectat:
Canvia la configuració
Configurem la configuració següent:
!
router ospf LAB
mpls ldp auto-config
!
Anem a crear PAL petició:
Cadena de consulta:
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
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
A la pestanya Capçaleres, heu d'afegir dues capçaleres:
Accepteu l'aplicació/json
Aplicació de tipus de contingut/json
Després de la seva execució, haurien de rebre l'estat "204 Sense contingut".
Comprovem què tenim.
Per a això crearem GET petició:
Cadena de consulta:
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
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
Després de l'execució, hauríeu de veure el següent:
A la pestanya Autorització, heu d'establir el paràmetre Basic Auth i inici de sessió/contrasenya: admin/admin.
Conclusió
En total, com haureu notat, els procediments per connectar Cisco i Juniper a OpenDaylight no difereixen; això obre un marge força ampli per a la creativitat. A partir de la gestió de la configuració de tots els components de la xarxa i acabant amb la creació de les vostres pròpies polítiques de xarxa.
En aquest tutorial, he donat els exemples més senzills de com podeu interactuar amb equips de xarxa mitjançant OpenDaylight. Sens dubte, les consultes dels exemples anteriors es poden fer molt més complexes i configurar serveis sencers amb un sol clic del ratolí; tot està limitat només per la vostra imaginació *
Continuar ...
PS
Si de sobte ja saps tot això o, per contra, t'has passat i t'has enfonsat a l'ànima d'ODL, aleshores et recomano mirar cap al desenvolupament d'aplicacions al controlador ODL. Podeu començar per tant.