ProHoster > BLOG > administrare > Automatizarea serviciilor de rețea sau cum să construiți un laborator virtual folosind OpenDaylight, Postman și Vrnetlab
Automatizarea serviciilor de rețea sau cum să construiți un laborator virtual folosind OpenDaylight, Postman și Vrnetlab
În acest articol, vă voi arăta cum să configurați deschis lumina zilei pentru a lucra cu echipamente de rețea și, de asemenea, arăta cum se utilizează poștaș si simplu RESTCONF cereri, acest echipament poate fi controlat. Nu vom lucra cu hardware, ci vom implementa mici laboratoare virtuale cu un singur router Vrnetlab peste Ubuntu 20.04 LTS.
Voi afișa mai întâi setările detaliate folosind exemplul unui router Juniper vMX 20.1R1.11, iar apoi îl comparăm cu setarea Cisco xRV9000 7.0.2.
Conținut
Cunoștințe necesare
Часть 1: discutați pe scurt OpenDaylight (în continuare ODL), poștaș и Vrnetlab și de ce avem nevoie de ele
Часть 2: descrierea laboratorului virtual
Часть 3: personalizați deschis lumina zilei
Часть 4: personalizați Vrnetlab
Часть 5: prin utilizarea poștaș conectați routerul virtual (Juniper vMX) La ODL
Часть 6: obțineți și modificați configurația routerului folosind poștaș и ODL
Часть 7: adăugați Cisco xRV9000
Concluzie
PS
Bibliografie
Cunoștințe necesare
Pentru ca articolul să nu se transforme într-o fișă, am omis câteva detalii tehnice (cu link-uri către literatură de unde puteți citi despre ele).
În acest sens, vă propun subiecte pe care ar fi bine (dar aproape deloc necesar) să le cunoașteți înainte de a le citi:
În cazul nostru, ne interesează ca mijloc de trimitere a solicitărilor REST către API-ul OpenDaylight. Puteți, desigur, să trimiteți cereri manual, dar în Postman totul pare foarte clar și se potrivește perfect scopurilor noastre.
Pentru cei care vor să sape: pe el au fost scrise o mulțime de materiale de instruire (de exemplu).
Instrument pentru implementarea routerelor virtuale în Docker
Suporta: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
Open Source
Un instrument foarte interesant, dar puțin cunoscut. În cazul nostru, îl vom folosi pentru a rula Juniper vMX și Cisco xRV9000 pe un Ubuntu 20.04 LTS obișnuit.
În acest tutorial, vom configura următorul sistem:
Cum funcționează
Juniper vMX se ridică în Docher container (prin mijloace Vrnetlab) și funcționează ca cel mai comun router virtual.
ODL conectat la router și vă permite să-l controlați.
poștaș lansat pe o mașină separată și prin ea trimitem comenzi ODL: pentru a conecta/elimina routerul, modifica configurația etc.
Comentariu asupra dispozitivului sistemului
Juniper vMX и ODL necesită destul de multe resurse pentru funcționarea lor stabilă. Un singur vMX cere 6 Gb de RAM și 4 nuclee. Prin urmare, s-a decis mutarea tuturor „greilor” la o mașină separată (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Routerul, desigur, nu „zboară” pe el, dar performanța este suficientă pentru mici experimente.
Partea 3: Configurați OpenDaylight
Versiunea actuală a ODL la momentul scrierii acestui articol este Magnesium SR1
1) Instalați Java Open JDK 11 (pentru instalare mai detaliată aici)
ubuntu:~$ sudo apt install default-jdk
2) Găsiți și descărcați cea mai recentă versiune ODLprin urmare
3) Dezarhivați arhiva descărcată
4) Accesați directorul rezultat
5) Lansare ./bin/karaf
La acest pas ODL ar trebui să pornească și ne vom găsi în consolă (portul 8181 este folosit pentru acces din exterior, pe care îl vom folosi mai târziu).
Apoi, instalați Caracteristici ODLconcepute pentru a lucra cu protocoale NETCONF и RESTCONF. Pentru a face acest lucru în consolă ODL executam:
Pentru instalare Vrnetlab clonează depozitul corespunzător din github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Accesați directorul vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Aici puteți vedea toate scripturile necesare pentru a rula. Vă rugăm să rețineți că a fost creat un director corespunzător pentru fiecare tip de router:
Fiecare router care este suportat Vrnetlab, are propria sa procedură unică de configurare. Când Juniper vMX trebuie doar să încărcăm arhiva .tgz cu routerul (o poți descărca de la site-ul oficial) în directorul vmx și rulați comanda make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Construirea unei imagini vMX va dura aproximativ 10-20 de minute. E timpul să mergi să bei o cafea!
„Aceasta se datorează faptului că prima dată când VCP (planul de control) este pornit, acesta citește un fișier de configurare care determină dacă va rula ca VRR VCP în vMX. Anterior, această lansare se făcea în timpul pornirii Docker, dar asta însemna că VCP-ul a fost repornit întotdeauna o dată înainte ca routerul virtual să devină disponibil, rezultând un timp de pornire lung (aproximativ 5 minute). Acum, prima rulare a VCP-ului se face în timpul construirii imaginii Docker și, deoarece versiunea Docker nu poate fi rulată cu - -opțiune privilegiată, aceasta înseamnă că qemu funcționează fără accelerare hardware KVM și, prin urmare, construirea durează foarte mult timp. În timpul acestui proces sunt scoase o mulțime de jurnale, așa că cel puțin puteți vedea ce se întâmplă. Cred că o construcție lungă este nu atât de înfricoșător pentru că creăm o imagine o dată, dar lansăm multe.”
După ce puteți vedea imaginea routerului nostru în Docher:
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
Lansați containerul vr-vmx
Începem cu comanda:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
În continuare, putem vedea informații despre containerele active:
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
Conectarea la router
Adresa IP a interfeței de rețea a routerului poate fi obținută cu următoarea comandă:
Mod implicit, Vrnetlab creează un utilizator pe router vrnetlab/VR-netlab9.
Conectarea cu 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
Aceasta completează configurarea routerului.
Recomandările de instalare pentru routerele diferiților furnizori pot fi găsite la proiect github în directoarele respective.
Partea 5: Postman - conectați routerul la OpenDaylight
Instalarea poștașului
Pentru a instala, trebuie doar să descărcați aplicația prin urmare.
Conectarea unui router la ODL
Să creăm PUT cerere:
Șir de interogare:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Acestea sunt spații de nume interne XML (Spațiu de nume XML) pentru ODL conform căruia creează nod.
Mai departe, respectiv, numele routerului este nod-id, adresa routerului - gazdă și așa mai departe.
Cea mai interesantă linie este ultima. Schema-cache-director creează un director în care sunt descărcate toate fișierele Schema YANG router conectat. Le puteți găsi în $ODL_ROOT/cache/jun01_cache.
Verificarea conexiunii routerului
Să creăm GET cerere:
Șir de interogare:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
Noi trimitem. Ar trebui să primească starea „200 OK” și o listă cu toate cele acceptate de dispozitiv Schema YANG:
Comentariu: Pentru a-l vedea pe acesta din urmă, în cazul meu a fost necesar să aștept aproximativ 10 minute după execuție PUTpână la toate Schema YANG descărcare pe ODL. Până în acest punct, atunci când efectuați acest lucru GET interogarea va afișa următoarele:
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
Partea 6: Schimbați configurația routerului
Obținerea configurației
Să creăm GET cerere:
Șir de interogare:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
Noi trimitem. Ar trebui să primească starea „200 OK” și configurația routerului:
Creați o configurație
De exemplu, să creăm următoarea configurație și să o modificăm:
protocols {
bgp {
disable;
shutdown;
}
}
Să creăm POST cerere:
Șir de interogare:
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
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
În fila Anteturi, trebuie să adăugați două anteturi:
Acceptați aplicația/xml
Aplicație tip conținut/xml
După trimitere, ar trebui să primească starea „204 Fără conținut”
Pentru a verifica dacă configurația s-a schimbat, puteți utiliza interogarea anterioară. Dar de exemplu, vom crea altul care va afișa informații doar despre protocoalele configurate pe router.
Să creăm GET cerere:
Șir de interogare:
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
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
După executarea cererii, vom vedea următoarele:
Schimbați configurația
Să modificăm informațiile despre protocolul BGP. După acțiunile noastre, va arăta astfel:
protocols {
bgp {
disable;
}
}
Să creăm PUT cerere:
Șir de interogare:
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
Nu uitați să schimbați anteturile din fila Antete în:
Acceptați aplicația/json
Aplicație tip conținut/json
După trimitere, vom obține următorul rezultat (Ne uităm la răspuns folosind GET cerere):
Partea 7: Adăugarea Cisco xRV9000
Ce avem despre Juniper, da Juniper? Să vorbim despre Cisco!
Am găsit xRV9000 versiunea 7.0.2 (o bestie care are nevoie de 8Gb RAM și 4 nuclee. Nu este disponibil gratuit, așa că contactați Cisco) - hai să-l rulăm.
Rularea unui container
Procesul de creare a unui container Docker nu este practic diferit de Juniper. În mod similar, aruncăm fișierul .qcow2 cu routerul în directorul corespunzător numelui său (în acest caz, xrv9k) și executăm comanda make docker-image.
După câteva minute, vedem că imaginea a fost 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
Pornim containerul:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
După un timp, vedem că containerul a pornit:
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
Conectați-vă prin 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
Conectarea routerului la OpenDaylight
Adăugarea are loc într-un mod complet similar cu vMX. Trebuie doar să schimbăm numele. PUT cerere:
Sună după un timp GET interogați pentru a verifica dacă totul este conectat:
Schimbați configurația
Să setăm următoarea configurație:
!
router ospf LAB
mpls ldp auto-config
!
Să creăm POST cerere:
Șir de interogare:
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
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
În fila Anteturi, trebuie să adăugați două anteturi:
Acceptați aplicația/json
Aplicație tip conținut/json
După executarea sa, aceștia ar trebui să primească statutul „204 Fără conținut”.
Să verificăm ce avem.
Pentru a face acest lucru, vom crea GET cerere:
Șir de interogare:
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
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
În fila Autorizare, trebuie să setați parametrul Basic Auth și autentificare/parolă: admin/admin.
Concluzie
În total, după cum probabil ați observat, procedurile de conectare a Cisco și Juniper la OpenDaylight nu diferă - acest lucru deschide un spațiu destul de mare pentru creativitate. Pornind de la gestionarea configurației tuturor componentelor rețelei și terminând cu crearea propriilor politici de rețea.
În acest tutorial, am oferit cele mai simple exemple despre cum puteți interacționa cu echipamentele de rețea folosind OpenDaylight. Fără îndoială, întrebările din exemplele de mai sus pot fi făcute mult mai complexe și pot configura servicii întregi cu un singur clic de mouse - totul este limitat doar de imaginația ta *
Pentru a fi continuat ...
PS
Dacă dintr-o dată știți deja toate acestea sau, dimpotrivă, ați trecut prin și ați pătruns în sufletul ODL, atunci vă recomand să priviți spre dezvoltarea aplicațiilor pe controlerul ODL. Tu poți să începi prin urmare.