ProHoster > Blog > Adminisztráció > Hálózati szolgáltatások automatizálása vagy virtuális laboratórium felépítése OpenDaylight, Postman és Vrnetlab segítségével
Hálózati szolgáltatások automatizálása vagy virtuális laboratórium felépítése OpenDaylight, Postman és Vrnetlab segítségével
Ebben a cikkben megmutatom, hogyan kell beállítani nyílt nappal a hálózati eszközökkel való munkavégzésre, valamint a használatának bemutatására Postás és egyszerű RESTCONF kérésére ez a berendezés vezérelhető. Nem fogunk hardverrel dolgozni, hanem kis virtuális laboratóriumokat telepítünk egyetlen routerrel Vrnetlab felett Ubuntu LTS 20.04.
Először egy router példáján mutatom meg a részletes beállításokat Juniper vMX 20.1R1.11, majd összehasonlítjuk a beállítással Cisco xRV9000 7.0.2.
Tartalom
Szükséges tudás
Часть 1: röviden megbeszélni OpenDaylight (a továbbiakban távoktatás), Postás и Vrnetlab és miért van szükségünk rájuk
Часть 2: a virtuális laboratórium leírása
Часть 3: testreszab nyílt nappal
Часть 4: testreszab Vrnetlab
Часть 5: használva Postás virtuális útválasztó csatlakoztatása (Juniper vMX) Nak nek távoktatás
Часть 6: az útválasztó konfigurációjának lekérése és módosítása a segítségével Postás и távoktatás
Часть 7: Cisco xRV9000 hozzáadása
Következtetés
PS
Bibliográfia
Szükséges tudás
Annak érdekében, hogy a cikk ne váljon lappá, kihagytam néhány technikai részletet (hivatkozásokkal a szakirodalomra, ahol ezekről olvashat).
Ezzel kapcsolatban olyan témákat ajánlok, amelyeket jó lenne (de szinte nem is szükséges) tudni olvasás előtt:
A mi esetünkben érdekelt minket, hogy REST kéréseket küldjünk az OpenDaylight API-nak. Természetesen manuálisan is elküldheti a kéréseket, de a Postmanban minden nagyon világosnak tűnik, és tökéletesen megfelel a céljainknak.
Az ásni vágyóknak: rengeteg oktatóanyagot írtak rá (például).
Eszköz a virtuális útválasztók Dockerben történő telepítéséhez
Támogatja: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR stb.
Open Source
Nagyon érdekes, de kevéssé ismert hangszer. Esetünkben a Juniper vMX és a Cisco xRV9000 futtatására fogjuk használni egy normál Ubuntu 20.04 LTS-en.
Ebben az oktatóanyagban a következő rendszert állítjuk be:
Ez hogy működik
Juniper vMX felemelkedik Dokkmunkás konténer (eszközzel Vrnetlab) és a leggyakoribb virtuális útválasztóként működik.
távoktatás csatlakozik az útválasztóhoz, és lehetővé teszi annak vezérlését.
Postás külön gépen elindítva és azon keresztül küldünk parancsokat távoktatás: az útválasztó csatlakoztatásához / eltávolításához, a konfiguráció megváltoztatásához stb.
Kommentár a rendszer eszközéhez
Juniper vMX и távoktatás elég sok erőforrást igényelnek a stabil működésükhöz. Csak egy vMX 6 Gb RAM-ot és 4 magot kér. Ezért úgy döntöttek, hogy az összes "nehézsúlyt" egy külön gépbe helyezik (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). A router persze nem "repül" rajta, de a teljesítmény az apró kísérletekhez elég.
3. rész: Az OpenDaylight beállítása
Az ODL jelenlegi verziója az írás idején a Magnesium SR1
1) Telepítse Java Open JDK 11 (részletesebb telepítéshez itt)
ubuntu:~$ sudo apt install default-jdk
2) Keresse meg és töltse le a legújabb buildet távoktatásezért
3) Csomagolja ki a letöltött archívumot
4) Lépjen a kapott könyvtárba
5) Indítsa el ./bin/karaf
Ennél a lépésnél távoktatás el kell indulnia, és a konzolban találjuk magunkat (a kívülről a 8181-es portot használjuk, amit később használunk).
Ezután telepítse ODL funkciókprotokollokkal való együttműködésre tervezték NETCONF и RESTCONF. Ehhez a konzolban távoktatás végrehajtjuk:
Minden támogatott router Vrnetlab, saját egyedi beállítási eljárással rendelkezik. Amikor Juniper vMX csak fel kell töltenünk a .tgz archívumot a routerrel (letöltheti a hivatalos honlapja) a vmx könyvtárba, és futtassa a parancsot make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Kép építése vMX körülbelül 10-20 percet vesz igénybe. Ideje menni kávézni!
"Ez azért van, mert a VCP (vezérlősík) első indításakor beolvas egy konfigurációs fájlt, amely meghatározza, hogy VRR VCP-ként fog-e futni a vMX-ben. Korábban ez az indítás a Docker indításakor történt, de ez azt jelentette, hogy a VCP mindig újraindult egyszer, mielőtt a virtuális útválasztó elérhető lett volna, ami hosszú rendszerindítási időt (körülbelül 5 percet) eredményezett. Most a VCP első futtatása a Docker lemezkép összeállítása során történik, és mivel a Docker build nem futtatható a - -privileged opció, ez azt jelenti, hogy a qemu KVM hardveres gyorsítás nélkül működik, így a build nagyon hosszú időt vesz igénybe. A folyamat során sok napló kerül kiadásra, így legalább láthatod, hogy mi történik. Szerintem egy hosszú build nem olyan ijesztő, mert egyszer létrehozunk egy képet, de sok mindent elindítunk."
Miután láthatja a routerünk képét Dokkmunkás:
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
Indítsa el a vr-vmx tárolót
Kezdjük a következő paranccsal:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Ezután láthatunk információkat az aktív tárolókról:
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
Csatlakozás a routerhez
Az útválasztó hálózati interfészének IP-címe a következő paranccsal szerezhető be:
Alapértelmezett, Vrnetlab létrehoz egy felhasználót az útválasztón vrnetlab/VR-netlab9.
Csatlakozás a következővel 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
Ezzel befejeződik a router beállítása.
A különböző gyártók útválasztóinak telepítési javaslatai a következő címen találhatók: github projekt a megfelelő könyvtárakban.
5. rész: Postás – csatlakoztassa az útválasztót az OpenDaylighthoz
Postás telepítés
A telepítéshez csak töltse le az alkalmazást ezért.
Router csatlakoztatása ODL-hez
Alkossunk PUT kérés:
Lekérdezési karakterlánc:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ezek belső névterek XML (XML névtér) távoktatás amely szerint csomópontot hoz létre.
Továbbá, az útválasztó neve csomópont-azonosító, router címe - vendéglátó és így tovább.
A legérdekesebb sor az utolsó. Séma-gyorsítótár-könyvtár létrehoz egy könyvtárat, ahová az összes fájl letöltődik YANG séma csatlakoztatott router. Megtalálhatod őket a $ODL_ROOT/cache/jun01_cache.
A router csatlakozásának ellenőrzése
Alkossunk GET kérés:
Lekérdezési karakterlánc:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
Küldjük. Meg kell kapnia a "200 OK" állapotot és az eszköz által támogatott összes listát YANG séma:
Megjegyzés: Ez utóbbi megtekintéséhez az én esetemben kb 10 percet kellett várni a végrehajtás után PUTmindaddig YANG séma rakd ki távoktatás. Eddig a pontig ennek végrehajtása során GET a lekérdezés a következőket jeleníti meg:
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
6. rész: Módosítsa az útválasztó konfigurációját
A konfiguráció lekérése
Alkossunk GET kérés:
Lekérdezési karakterlánc:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
Küldjük. Meg kell kapnia a "200 OK" állapotot és a router konfigurációját:
Hozzon létre egy konfigurációt
Példaként hozzuk létre a következő konfigurációt, és módosítsuk azt:
protocols {
bgp {
disable;
shutdown;
}
}
Alkossunk POST kérés:
Lekérdezési karakterlánc:
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
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
A Fejlécek lapon két fejlécet kell hozzáadnia:
Alkalmazás/xml elfogadása
Tartalom-típusú alkalmazás/xml
Az elküldést követően a "204 Nincs tartalom" állapotot kell kapniuk
Annak ellenőrzésére, hogy a konfiguráció megváltozott-e, használhatja az előző lekérdezést. De például létrehozunk egy másikat, amely csak az útválasztón konfigurált protokollokról jelenít meg információkat.
Alkossunk GET kérés:
Lekérdezési karakterlánc:
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
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
A kérés teljesítése után a következőket fogjuk látni:
Módosítsa a konfigurációt
Változtassuk meg a BGP protokollra vonatkozó információkat. Cselekedeteink után ez így fog kinézni:
protocols {
bgp {
disable;
}
}
Alkossunk PUT kérés:
Lekérdezési karakterlánc:
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
Ne felejtse el módosítani a fejléceket a Fejlécek lapon a következőkre:
Alkalmazás/json elfogadása
Tartalom-típusú alkalmazás/json
Elküldés után a következő eredményt kapjuk (A választ a GET kérés):
7. rész: A Cisco xRV9000 hozzáadása
Mi minden a Juniper, igen Juniper? Beszéljünk a Ciscóról!
Megtaláltam az xRV9000 7.0.2-es verzióját (egy vadállat, amihez 8 Gb RAM és 4 mag kell. Nem elérhető szabadon, ezért vegye fel a kapcsolatot Cisco) - futtassuk le.
Egy konténer működtetése
A Docker konténer létrehozásának folyamata gyakorlatilag nem különbözik a Junipertől. Hasonlóképpen bedobjuk a .qcow2 fájlt a routerrel a nevének megfelelő könyvtárba (jelen esetben xrv9k), és végrehajtjuk a parancsot make docker-image.
Néhány perc múlva látjuk, hogy a kép elkészült:
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
Elindítjuk a tartályt:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Egy idő után úgy nézzük, hogy a tároló elindult:
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
Csatlakozás ssh-n keresztül:
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
Az útválasztó csatlakoztatása az OpenDaylighthoz
A hozzáadás teljesen hasonló módon történik a vMX-nél. Csak a neveket kell megváltoztatnunk. PUT kérés:
Hívjon egy idő után GET lekérdezés annak ellenőrzésére, hogy minden csatlakoztatva van-e:
Módosítsa a konfigurációt
Állítsuk be a következő konfigurációt:
!
router ospf LAB
mpls ldp auto-config
!
Alkossunk POST kérés:
Lekérdezési karakterlánc:
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
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
A Fejlécek lapon két fejlécet kell hozzáadnia:
Alkalmazás/json elfogadása
Tartalom-típusú alkalmazás/json
A végrehajtás után a „204 Nincs tartalom” állapotot kell kapniuk.
Nézzük, mit kaptunk.
Ennek érdekében létrehozzuk GET kérés:
Lekérdezési karakterlánc:
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
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
Az Engedélyezés lapon be kell állítani a paramétert Basic Auth és bejelentkezés/jelszó: admin/admin.
Következtetés
Összességében, amint azt már észrevette, a Cisco és a Juniper OpenDaylighthoz való csatlakoztatásának eljárásai nem különböznek egymástól - ez meglehetősen széles teret nyit a kreativitás számára. Kezdve az összes hálózati összetevő konfigurációkezelésétől és a saját hálózati házirendek létrehozásáig.
Ebben az oktatóanyagban a legegyszerűbb példákat mutattam be arra, hogyan kommunikálhat hálózati eszközökkel az OpenDaylight használatával. Kétségtelen, hogy a fenti példákból származó lekérdezések sokkal összetettebbé tehetők, és egyetlen egérkattintással teljes szolgáltatásokat állíthatnak be - mindennek csak a képzelet szab határt *
Folytatás ...
PS
Ha mindezt hirtelen már tudja, vagy éppen ellenkezőleg, átment és belesüllyedt az ODL lelkébe, akkor azt javaslom, hogy az ODL vezérlőn történő alkalmazások fejlesztése felé forduljon. Elkezdheted ezért.