ProHoster > Blogi > antaminen > Verkkopalvelujen automatisointi tai virtuaalisen laboratorion rakentaminen OpenDaylightilla, Postmanilla ja Vrnetlabilla
Verkkopalvelujen automatisointi tai virtuaalisen laboratorion rakentaminen OpenDaylightilla, Postmanilla ja Vrnetlabilla
Tässä artikkelissa näytän sinulle, kuinka voit määrittää avoin päivänvalo työskennellä verkkolaitteiden kanssa ja myös näyttää, kuinka niitä käytetään Postinkantaja ja yksinkertainen RESTCONF pyyntöjä, tätä laitetta voidaan ohjata. Emme työskentele laitteiston kanssa, vaan otamme käyttöön pieniä virtuaalilaboratorioita yhdellä reitittimellä Vrnetlab yli 20.04 Ubuntu LTS.
Näytän ensin yksityiskohtaiset asetukset reitittimen esimerkin avulla Juniper vMX 20.1R1.11, ja sitten vertaamme sitä asetukseen Cisco xRV9000 7.0.2.
Pitoisuus
Vaaditut tiedot
Часть 1: keskustele lyhyesti OpenDaylight (jäljempänä ODL), Postinkantaja и Vrnetlab ja miksi tarvitsemme niitä
Часть 2: virtuaalisen laboratorion kuvaus
Часть 3: muokata avoin päivänvalo
Часть 4: muokata Vrnetlab
Часть 5: käyttämällä Postinkantaja yhdistä virtuaalinen reititin (Juniper vMX) Vastaanottaja ODL
Часть 6: hanki ja muuta reitittimen asetuksia käyttämällä Postinkantaja и ODL
Часть 7: lisää Cisco xRV9000
Johtopäätös
PS.
Bibliografia
Vaaditut tiedot
Jotta artikkeli ei muuttuisi arkkiksi, jätin pois joitain teknisiä yksityiskohtia (linkkeineen kirjallisuuteen, josta voit lukea niistä).
Tässä yhteydessä tarjoan sinulle aiheita, jotka olisi hyvä (mutta ei läheskään välttämätöntä) tietää ennen lukemista:
Meidän tapauksessamme olemme kiinnostuneita siitä keinona lähettää REST-pyyntöjä OpenDaylight API:lle. Voit tietysti lähettää pyyntöjä manuaalisesti, mutta Postmanissa kaikki näyttää erittäin selkeältä ja sopii tarkoitukseemme täydellisesti.
Niille, jotka haluavat kaivaa: siihen on kirjoitettu paljon koulutusmateriaaleja (esimerkiksi).
Tukee: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR jne.
Open Source
Erittäin mielenkiintoinen, mutta vähän tunnettu instrumentti. Meidän tapauksessamme käytämme sitä Juniper vMX:n ja Cisco xRV9000:n suorittamiseen tavallisessa Ubuntu 20.04 LTS:ssä.
Tässä opetusohjelmassa määritämme seuraavan järjestelmän:
Kuinka tämä toimii
Juniper vMX nousee sisään Satamatyöläinen kontti (tapa Vrnetlab) ja toimii yleisimpänä virtuaalisena reitittimenä.
ODL kytkettynä reitittimeen ja voit ohjata sitä.
Postinkantaja käynnistetään erillisellä koneella ja sen kautta lähetämme komentoja ODL: reitittimen kytkeminen / poistaminen, kokoonpanon muuttaminen jne.
Kommentti järjestelmän laitteesta
Juniper vMX и ODL vaativat melko paljon resursseja vakaaseen toimintaansa. Vain yksi vMX vaatii 6 Gt RAM-muistia ja 4 ydintä. Siksi päätettiin siirtää kaikki "raskassarjat" erilliseen koneeseen (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Reititin ei tietenkään "lennä" sillä, mutta suorituskyky riittää pieniin kokeiluihin.
Osa 3: OpenDaylightin määrittäminen
ODL:n nykyinen versio tätä kirjoitettaessa on Magnesium SR1
1) Asenna Java Open JDK 11 (tarkempi asennus täällä)
ubuntu:~$ sudo apt install default-jdk
2) Etsi ja lataa uusin versio ODLsiten
3) Pura ladattu arkisto
4) Siirry tuloksena olevaan hakemistoon
5) Käynnistä ./bin/karaf
Tässä vaiheessa ODL pitäisi alkaa ja löydämme itsemme konsolista (porttia 8181 käytetään pääsyyn ulkopuolelta, jota käytämme myöhemmin).
Seuraavaksi asenna ODL-ominaisuudetsuunniteltu toimimaan protokollien kanssa NETCONF и RESTCONF. Voit tehdä tämän konsolissa ODL toteutamme:
Jokainen tuettu reititin Vrnetlab, on oma ainutlaatuinen asennusmenettelynsä. Kun Juniper vMX meidän tarvitsee vain ladata .tgz-arkisto reitittimeen (voit ladata sen osoitteesta virallinen sivusto) vmx-hakemistoon ja suorita komento make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Kuvan rakentaminen vMX kestää noin 10-20 minuuttia. On aika mennä kahville!
"Tämä johtuu siitä, että kun VCP (Control Plane) käynnistetään ensimmäisen kerran, se lukee konfigurointitiedoston, joka määrittää, toimiiko se VRR VCP:nä vMX:ssä. Aikaisemmin tämä käynnistys tehtiin Dockerin käynnistyksen yhteydessä, mutta tämä tarkoitti, että VCP käynnistettiin aina uudelleen kerran ennen kuin virtuaalinen reititin tuli saataville, mikä johti pitkään käynnistysaikaan (noin 5 minuuttia) Nyt VCP:n ensimmäinen ajo suoritetaan Docker-kuvan koontivaiheessa, ja koska Docker-koontiversiota ei voida suorittaa - -etuoikeutettu vaihtoehto, tämä tarkoittaa, että qemu toimii ilman KVM-laitteistokiihdytystä, joten rakentaminen kestää hyvin kauan. Tämän prosessin aikana tulostetaan paljon lokeja, joten ainakin näet mitä tapahtuu. Mielestäni pitkä rakennus ei ole niin pelottavaa, koska luomme kuvan kerran, mutta käynnistämme monia."
Kun näet kuvan reitittimestämme Satamatyöläinen:
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
Käynnistä vr-vmx-säilö
Aloitamme komennolla:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Seuraavaksi voimme nähdä tietoja aktiivisista säilöistä:
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
Yhdistetään reitittimeen
Reitittimen verkkoliitännän IP-osoite saadaan seuraavalla komennolla:
Oletus, Vrnetlab luo käyttäjän reitittimeen vrnetlab/VR-netlab9.
Yhdistetään kanssa 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ä päättää reitittimen asennuksen.
Asennussuosituksia eri valmistajien reitittimille löytyy osoitteesta github-projekti vastaavissa hakemistoissa.
Osa 5: Postimies - yhdistä reititin OpenDaylightiin
Nämä ovat sisäisiä nimiavaruuksia XML (XML-nimiavaruus) varten ODL jonka mukaan se luo solmun.
Lisäksi vastaavasti reitittimen nimi on solmutunnus, reitittimen osoite - isäntä ja niin edelleen.
Mielenkiintoisin rivi on viimeinen. Schema-cache-hakemisto luo hakemiston, johon kaikki tiedostot ladataan YANG-kaavio kytketty reititin. Voit löytää ne $ODL_ROOT/cache/jun01_cache.
Reitittimen kytkennän tarkistaminen
Luodaan SAA pyyntö:
Kyselymerkkijono:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Me lähetämme. Pitäisi saada tila "200 OK" ja luettelo kaikista laitteen tukemista YANG-kaavio:
Kommentti: Jälkimmäisen näkemiseksi minun tapauksessani piti odottaa noin 10 minuuttia suorituksen jälkeen PUTkunnes kaikki YANG-skeema purkaa päälle ODL. Tähän asti, kun suoritat tämän SAA kysely näyttää seuraavan:
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Osa 6: Muuta reitittimen asetuksia
Määrityksen hakeminen
Luodaan SAA pyyntö:
Kyselymerkkijono:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Me lähetämme. Pitäisi saada tila "200 OK" ja reitittimen kokoonpano:
Luo kokoonpano
Esimerkkinä luodaan seuraava kokoonpano ja muokataan sitä:
protocols {
bgp {
disable;
shutdown;
}
}
Luodaan POST pyyntö:
Kyselymerkkijono:
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
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Ylätunnisteet-välilehdelle sinun on lisättävä kaksi otsikkoa:
Hyväksy sovellus/xml
Sisältötyyppinen sovellus/xml
Lähettämisen jälkeen heidän pitäisi saada tila "204 Ei sisältöä"
Voit tarkistaa, onko kokoonpano muuttunut, käyttämällä edellistä kyselyä. Mutta esimerkiksi luomme toisen, joka näyttää tiedot vain reitittimeen määritetyistä protokollista.
Luodaan SAA pyyntö:
Kyselymerkkijono:
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
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Pyynnön suorittamisen jälkeen näemme seuraavan:
Muuta kokoonpanoa
Muutetaan tietoja BGP-protokollasta. Toimintamme jälkeen se näyttää tältä:
protocols {
bgp {
disable;
}
}
Luodaan PUT pyyntö:
Kyselymerkkijono:
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
Muista muuttaa Otsikot-välilehden otsikot muotoon:
Hyväksy sovellus/json
Sisältötyypin sovellus/json
Lähetyksen jälkeen saamme seuraavan tuloksen (Katsomme vastausta käyttämällä SAA pyyntö):
Osa 7: Cisco xRV9000:n lisääminen
Mitä me kaikki olemme Juniperissa, kyllä Juniper? Puhutaanpa Ciscosta!
Löysin xRV9000 version 7.0.2 (peto, joka tarvitsee 8 Gt RAM-muistia ja 4 ydintä. Se ei ole vapaasti saatavilla, joten ota yhteyttä Cisco) - ajetaan se.
Säiliön pyörittäminen
Docker-kontin luomisprosessi ei käytännössä eroa Juniperista. Samoin pudotamme .qcow2-tiedoston reitittimen kanssa sen nimeä vastaavaan hakemistoon (tässä tapauksessa xrv9k) ja suoritamme komennon make docker-image.
Muutaman minuutin kuluttua näemme, että kuva on luotu:
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
Aloitamme kontin:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Hetken kuluttua näytämme, että kontti on käynnistynyt:
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
Yhdistä ssh:n kautta:
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
Reitittimen yhdistäminen OpenDaylightiin
Lisääminen tapahtuu täysin samalla tavalla vMX:n kanssa. Meidän on vain vaihdettava nimet. PUT pyyntö:
Soita hetken kuluttua SAA kysely tarkistaaksesi, että kaikki on kytketty:
Muuta kokoonpanoa
Määritetään seuraava kokoonpano:
!
router ospf LAB
mpls ldp auto-config
!
Luodaan POST pyyntö:
Kyselymerkkijono:
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
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Ylätunnisteet-välilehdelle sinun on lisättävä kaksi otsikkoa:
Hyväksy sovellus/json
Sisältötyypin sovellus/json
Sen suorittamisen jälkeen niiden pitäisi saada tila "204 Ei sisältöä".
Katsotaan mitä meillä on.
Tätä varten luomme SAA pyyntö:
Kyselymerkkijono:
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
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Valtuutus-välilehdellä sinun on asetettava parametri Basic Auth ja kirjautumistunnus/salasana: admin/admin.
Johtopäätös
Kaiken kaikkiaan, kuten olet ehkä huomannut, Ciscon ja Juniperin yhdistämismenettelyt OpenDaylightiin eivät eroa toisistaan - tämä avaa melko laajat mahdollisuudet luovuudelle. Alkaen kaikkien verkkokomponenttien asetusten hallinnasta ja päättyen omien verkkokäytäntöjesi luomiseen.
Tässä opetusohjelmassa olen antanut yksinkertaisimpia esimerkkejä siitä, kuinka voit olla vuorovaikutuksessa verkkolaitteiden kanssa OpenDaylightilla. Epäilemättä yllä olevien esimerkkien kyselyistä voidaan tehdä paljon monimutkaisempia ja luoda kokonaisia palveluita yhdellä hiiren napsautuksella - kaikkea rajoittaa vain mielikuvituksesi *
Jatkuu ...
PS.
Jos tiedät jo yhtäkkiä tämän kaiken tai olet päinvastoin käynyt läpi ja uppoutunut ODL:n sieluun, suosittelen etsimään sovellusten kehittämistä ODL-ohjaimelle. Voit aloittaa siten.