ProHoster > Blog > podávání > Automatizace síťových služeb aneb jak vybudovat virtuální laboratoř pomocí OpenDaylight, Postman a Vrnetlab
Automatizace síťových služeb aneb jak vybudovat virtuální laboratoř pomocí OpenDaylight, Postman a Vrnetlab
V tomto článku vám ukážu, jak nastavit OpenDaylight pracovat se síťovým zařízením a také ukázat, jak je používat Listonoš a jednoduché RESTCONF toto zařízení lze ovládat. Nebudeme pracovat s hardwarem, ale místo toho nasadíme malé virtuální laboratoře s využitím jediného routeru Vrnetlab přes Ubuntu LTS 20.04.
Podrobné nastavení ukážu nejprve na příkladu routeru Juniper vMX 20.1R1.11a poté jej porovnáme s nastavením Cisco xRV9000 7.0.2.
Obsah
Nezbytné znalosti
část 1: krátce diskutujte OpenDaylight (dále ODL), Listonoš и Vrnetlab a proč je potřebujeme
část 2: popis virtuální laboratoře
část 3: přizpůsobit OpenDaylight
část 4: přizpůsobit Vrnetlab
část 5: používáním Listonoš připojit virtuální router (Juniper vMX) Komu ODL
část 6: získat a změnit konfiguraci routeru pomocí Listonoš и ODL
část 7: přidejte Cisco xRV9000
Závěr
PS
Bibliografie
Nezbytné znalosti
Aby se článek nezměnil v list, vynechal jsem některé technické detaily (s odkazy na literaturu, kde si o nich můžete přečíst).
V této souvislosti vám nabízím témata, která by bylo dobré (ale téměř ne nutné) před čtením znát:
V našem případě nás zajímá jako prostředek pro odesílání REST požadavků do OpenDaylight API. Požadavky můžete samozřejmě posílat ručně, ale v Postman vypadá vše velmi přehledně a dokonale vyhovuje našim účelům.
Pro ty, kteří chtějí kopat: bylo na něm napsáno mnoho školicích materiálů (například).
Nástroj pro nasazení virtuálních směrovačů v Dockeru
Podporuje: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR atd.
Open Source
Velmi zajímavý, ale málo známý nástroj. V našem případě jej použijeme ke spuštění Juniper vMX a Cisco xRV9000 na běžném Ubuntu 20.04 LTS.
Juniper vMX vstává přístavní dělník kontejner (prostřednictvím Vrnetlab) a funguje jako nejběžnější virtuální router.
ODL připojený k routeru a umožňuje vám jej ovládat.
Listonoš spuštěn na samostatném stroji a přes něj posíláme příkazy ODL: připojení/odpojení routeru, změna konfigurace atd.
Komentář k zařízení systému
Juniper vMX и ODL vyžadují poměrně hodně zdrojů pro jejich stabilní provoz. Pouze jeden vMX žádá 6 Gb RAM a 4 jádra. Proto bylo rozhodnuto přesunout všechny „těžké váhy“ na samostatný stroj (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Router na něm samozřejmě „neletí“, ale na malé experimenty výkon stačí.
Část 3: Nastavení OpenDaylight
Aktuální verze ODL v době psaní tohoto článku je Magnesium SR1
1) Nainstalujte Java Open JDK 11 (pro podrobnější instalaci zde)
ubuntu:~$ sudo apt install default-jdk
2) Najděte a stáhněte si nejnovější sestavení ODLproto
3) Rozbalte stažený archiv
4) Přejděte do výsledného adresáře
5) Spusťte ./bin/karaf
V tomto kroku ODL by se mělo spustit a ocitneme se v konzoli (pro přístup zvenčí slouží port 8181, který později využijeme).
Dále nainstalujte Vlastnosti ODLnavržený pro práci s protokoly NETCONF и RESTCONF. Chcete-li to provést v konzole ODL provádíme:
Každý router, který je podporován Vrnetlab, má svůj vlastní jedinečný postup nastavení. Když Juniper vMX stačí nahrát archiv .tgz s routerem (můžete si jej stáhnout z oficiální stránky) do adresáře vmx a spusťte příkaz make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Budování obrazu vMX bude trvat asi 10-20 minut. Je čas jít na kávu!
"Je to proto, že při prvním spuštění VCP (Control Plane) načte konfigurační soubor, který určuje, zda poběží jako VRR VCP ve vMX. Dříve se toto spouštění provádělo během spouštění Dockeru, ale to znamenalo, že VCP byl vždy jednou restartován předtím, než byl virtuální router k dispozici, což mělo za následek dlouhou dobu spouštění (asi 5 minut) Nyní se první spuštění VCP provádí během sestavení obrazu Docker, a protože sestavení Dockeru nelze spustit pomocí - -privilegovaná možnost, to znamená, že qemu funguje bez hardwarové akcelerace KVM a sestavení tedy trvá velmi dlouho. Během tohoto procesu se vydává mnoho protokolů, takže alespoň vidíte, co se děje. Myslím, že dlouhé sestavení není tak děsivé, protože vytvoříme obrázek jednou, ale spustíme mnoho."
Poté, co uvidíte obrázek našeho routeru v přístavní dělník:
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
Spusťte kontejner vr-vmx
Začneme příkazem:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Dále můžeme vidět informace o aktivních kontejnerech:
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
Připojování k routeru
IP adresu síťového rozhraní routeru lze získat pomocí následujícího příkazu:
výchozí, Vrnetlab vytvoří uživatele na routeru vrnetlab/VR-netlab9.
Spojení s 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
Tím je nastavení routeru dokončeno.
Doporučení k instalaci pro routery různých výrobců naleznete na projekt github v příslušných adresářích.
Toto jsou interní jmenné prostory XML (jmenný prostor XML) pro ODL podle kterého vytváří uzel.
Dále je to název routeru node-id, adresa routeru - hostitel a tak dále.
Nejzajímavější řádek je poslední. Adresář Schema-cache- vytvoří adresář, kam se stahují všechny soubory Schéma YANG připojený router. Najdete je v $ODL_ROOT/cache/jun01_cache.
Kontrola připojení routeru
Pojďme tvořit GET poptávka:
Řetězec dotazu:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Poslali jsme. Měl by obdržet stav „200 OK“ a seznam všech podporovaných zařízením Schéma YANG:
Komentář: Chcete-li vidět to druhé, v mém případě bylo nutné počkat asi 10 minut po provedení PUTaž do všech schéma YANG vyložit na ODL. Až do tohoto bodu, při provádění tohoto GET dotaz zobrazí následující:
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Část 6: Změňte konfiguraci routeru
Získání konfigurace
Pojďme tvořit GET poptávka:
Řetězec dotazu:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Poslali jsme. Mělo by se zobrazit stav „200 OK“ a konfigurace routeru:
Vytvořte konfiguraci
Jako příklad vytvoříme následující konfiguraci a upravíme ji:
protocols {
bgp {
disable;
shutdown;
}
}
Pojďme tvořit POST poptávka:
Řetězec dotazu:
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
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Na kartě Záhlaví je třeba přidat dvě záhlaví:
Přijmout aplikaci/xml
Aplikace typu obsahu/xml
Po odeslání by měli obdržet stav „204 Žádný obsah“
Chcete-li zkontrolovat, zda se konfigurace změnila, můžete použít předchozí dotaz. Ale například vytvoříme další, který bude zobrazovat informace pouze o protokolech nakonfigurovaných na routeru.
Pojďme tvořit GET poptávka:
Řetězec dotazu:
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
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Po provedení požadavku uvidíme následující:
Změňte konfiguraci
Změňme informace o protokolu BGP. Po našich akcích to bude vypadat takto:
protocols {
bgp {
disable;
}
}
Pojďme tvořit PUT poptávka:
Řetězec dotazu:
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
Po odeslání získáme následující výsledek (podíváme se na odpověď pomocí GET žádost):
Část 7: Přidání Cisco xRV9000
Co jsme všichni o Juniper, ano Juniper? Pojďme mluvit o Cisco!
Našel jsem xRV9000 verze 7.0.2 (bestie, která potřebuje 8Gb RAM a 4 jádra. Není volně dostupná, tak kontaktujte Cisco) - pojďme to spustit.
Provoz kontejneru
Proces vytváření kontejneru Docker se prakticky neliší od Juniperu. Podobně pustíme soubor .qcow2 s routerem do adresáře odpovídajícího jeho názvu (v tomto případě xrv9k) a provedeme příkaz make docker-image.
Po několika minutách vidíme, že obrázek byl vytvořen:
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
Spustíme kontejner:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Po chvíli vidíme, že kontejner začal:
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
Připojte se přes 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
Připojení routeru k OpenDaylight
Přidávání probíhá zcela podobným způsobem u vMX. Jen musíme změnit jména. PUT poptávka:
Zavolej po chvíli GET dotaz na kontrolu, zda je vše připojeno:
Změňte konfiguraci
Nastavíme následující konfiguraci:
!
router ospf LAB
mpls ldp auto-config
!
Pojďme tvořit POST poptávka:
Řetězec dotazu:
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
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Na kartě Záhlaví je třeba přidat dvě záhlaví:
Přijmout aplikaci/json
Aplikace/json typu obsahu
Po jeho provedení by měli obdržet stav „204 Žádný obsah“.
Pojďme zkontrolovat, co máme.
K tomu vytvoříme GET poptávka:
Řetězec dotazu:
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
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Na záložce Autorizace musíte nastavit parametr Basic Auth a přihlašovací jméno/heslo: admin/admin.
Závěr
Celkově se, jak jste si mohli všimnout, postupy připojení Cisco a Juniper k OpenDaylight neliší – otevírá se tak docela široký prostor pro kreativitu. Počínaje správou konfigurace všech síťových komponent a konče tvorbou vlastních síťových politik.
V tomto tutoriálu jsem uvedl nejjednodušší příklady toho, jak můžete komunikovat se síťovým zařízením pomocí OpenDaylight. Dotazy z výše uvedených příkladů lze bezesporu mnohem složitější a nastavit celé služby jedním kliknutím myši - vše je omezeno pouze vaší fantazií *
Chcete-li se pokračovat ...
PS
Pokud to všechno najednou už víte nebo naopak prošli a propadli duši ODL, pak doporučuji poohlédnout se po vývoji aplikací na ODL kontroleru. Můžete začít proto.