ProHoster > Blog > Bestjoer > Automatisearring fan netwurktsjinsten of hoe't jo in firtuele laboratoarium bouwe mei OpenDaylight, Postman en Vrnetlab
Automatisearring fan netwurktsjinsten of hoe't jo in firtuele laboratoarium bouwe mei OpenDaylight, Postman en Vrnetlab
Yn dit artikel sil ik jo sjen litte hoe't jo ynstelle iepen deiljocht om te wurkjen mei netwurk apparatuer, en ek sjen litte hoe te brûken Postrinner en ienfâldich RESTCONF fersiken, dizze apparatuer kin wurde kontrolearre. Wy sille net wurkje mei hardware, mar ynstee sille wy ynsette lytse firtuele laboratoaria mei in inkele router brûkend Vrnetlab flier Ubuntu 20.04 LTS.
Ik sil earst de detaillearre ynstellingen sjen litte mei it foarbyld fan in router Juniper vMX 20.1R1.11, en dan ferlykje wy it mei de ynstelling Cisco xRV9000 7.0.2.
Ynhâld
Fereaske kennis
Part fan 1: beprate koart OpenDaylight (hjirnei ODL), Postrinner и Vrnetlab en wêrom hawwe wy se nedich
Part fan 2: beskriuwing fan it firtuele laboratoarium
Part fan 3: oanpasse iepen deiljocht
Part fan 4: oanpasse Vrnetlab
Part fan 5: troch te brûken Postrinner ferbine firtuele router (Juniper vMX) Oan ODL
Part fan 6: krije en feroarje de router konfiguraasje mei help Postrinner и ODL
Part fan 7: tafoegje Cisco xRV9000
konklúzje
PS
Bibliografy
Fereaske kennis
Om it artikel net yn in blêd te feroarjen haw ik wat technyske details weilitten (mei keppelings nei literatuer dêr't jo oer lêze kinne).
Yn dit ferbân bied ik jo ûnderwerpen oan dy't it goed wêze soe (mar hast net nedich) om te witten foar it lêzen:
Yn ús gefal binne wy ynteressearre as in middel foar it ferstjoeren fan REST-oanfragen nei de OpenDaylight API. Jo kinne fansels fersiken manuell ferstjoere, mar yn Postman sjocht alles heul dúdlik en past perfekt by ús doelen.
Foar wa't grave wol: der is in soad trainingsmateriaal op skreaun (bygelyks).
Tool foar it ynsetten fan firtuele routers yn Docker
Unterstützt: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, ensfh.
Open Source
In tige nijsgjirrich mar min bekend ynstrumint. Yn ús gefal sille wy it brûke om Juniper vMX en Cisco xRV9000 út te fieren op in gewoane Ubuntu 20.04 LTS.
Yn dizze tutorial sille wy it folgjende systeem ynstelle:
Hoe docht dit wurk
Juniper vMX komt yn Havenarbeider container (troch middels Vrnetlab) en funksjonearret as de meast foarkommende firtuele router.
ODL ferbûn mei de router en kinne jo kontrolearje it.
Postrinner lansearre op in aparte masine en dêrtroch stjoere wy kommando's ODL: om de router te ferbinen / te ferwiderjen, de konfiguraasje te feroarjen, ensfh.
Kommentaar op it apparaat fan it systeem
Juniper vMX и ODL fereaskje nochal in soad middels foar harren stabile operaasje. Allinne ien vMX freget om 6 Gb RAM en 4 kearnen. Dêrom waard besletten om alle "swiergewichten" te ferpleatsen nei in aparte masine (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). De router, fansels, "fleant" der net op, mar de prestaasje is genôch foar lytse eksperiminten.
Diel 3: OpenDaylight ynstelle
De hjoeddeistige ferzje fan ODL op it stuit fan dit skriuwen is Magnesium SR1
Elke router dy't wurdt stipe Vrnetlab, hat syn eigen unike opsetproseduere. Wannear Juniper vMX wy moatte gewoan it .tgz-argyf uploade mei de router (jo kinne it downloade fan offisjele webstee) nei de vmx-map en fier it kommando út make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
It bouwen fan in byld vMX sil sa'n 10-20 minuten nimme. It is tiid om te gean wat kofje!
"Dit is om't de earste kear dat de VCP (Control Plane) begon is, lêst it in konfiguraasjetriem dy't bepaalt oft it as in VRR VCP yn vMX rint. Earder waard dizze lansearring dien by it opstarten fan Docker, mar dit betsjutte dat de VCP waard altyd ien kear opnij starte foardat de firtuele router beskikber waard, wat resultearre yn in lange opstarttiid (sawat 5 minuten) No wurdt de earste run fan 'e VCP dien tidens it bouwen fan' e Docker-ôfbylding, en om't de Docker-build net kin wurde útfierd mei de - -privileged opsje, dit betsjut dat qemu wurket sûnder KVM hardware fersnelling en dus de bou duorret in hiel lange time.During dit proses, in protte logs wurde útfier, dus op syn minst kinne jo sjen wat der bart. Ik tink in lange build is net sa eng, om't wy ien kear in byld meitsje, mar wy lansearje in protte."
Na kinne jo sjen de ôfbylding fan ús router yn Havenarbeider:
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
Launch vr-vmx container
Wy begjinne mei it kommando:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Folgjende kinne wy ynformaasje sjen oer aktive konteners:
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
Ferbine mei de router
It IP-adres fan 'e netwurkynterface fan' e router kin wurde krigen mei it folgjende kommando:
Standert, Vrnetlab makket in brûker op de router vnetlab/VR-netlab9.
Ferbining mei 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
Dit foltôget de routerkonfiguraasje.
Ynstallaasje oanbefellings foar routers fan ferskate leveransiers kinne fûn wurde op github projekt yn de respektivelike mappen.
Diel 5: Postman - ferbine de router mei OpenDaylight
Postman ynstallaasje
Om te ynstallearjen, download gewoan de applikaasje fan hjir.
Ferbine in router nei ODL
Lit ús meitsje put fersyk:
Query string:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin. Dit is nedich om tagong te krijen ta de ODL:
Op it ljepblêd Kopteksten moatte jo twa kopteksten tafoegje:
Akseptearje applikaasje / xml
Ynhâld-Type applikaasje/xml
Us fersyk is dien. Wy stjoere. As alles goed konfigurearre is, dan moatte wy de status "201 oanmakke" weromjaan:
Wat docht dit fersyk?
Wy meitsje node binnen ODL mei de parameters fan 'e echte router dy't wy tagong wolle.
Dit binne ynterne nammeromten XML (XML nammeromte) foar ODL neffens dêr't it skept node.
Fierder is respektivelik de namme fan 'e router node-id, router adres - gasthear en sa fierder.
De meast nijsgjirrige line is de lêste. Skema-cache-map makket in map dêr't alle triemmen wurde ynladen YANG Schema ferbûn router. Jo kinne se fine yn $ODL_ROOT/cache/jun01_cache.
Kontrolearje de ferbining fan 'e router
Lit ús meitsje KRIJE fersyk:
Query string:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
Wy stjoere. Moat in status krije fan "200 OK" en in list fan alle stipe troch it apparaat YANG Schema:
reaksje: Om it lêste te sjen, wie it yn myn gefal nedich om sa'n 10 minuten nei de eksekúsje te wachtsjen putoant allegear YANG skema unload oan ODL. Oant dit punt, by it útfieren fan dit KRIJE query sil it folgjende sjen litte:
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
Diel 6: Feroarje de router konfiguraasje
It krijen fan de konfiguraasje
Lit ús meitsje KRIJE fersyk:
Query string:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
Wy stjoere. Moatte de status "200 OK" krije en de routerkonfiguraasje:
Meitsje in konfiguraasje
Litte wy as foarbyld de folgjende konfiguraasje oanmeitsje en it wizigje:
protocols {
bgp {
disable;
shutdown;
}
}
Lit ús meitsje PEAL fersyk:
Query string:
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
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
Op it ljepblêd Kopteksten moatte jo twa kopteksten tafoegje:
Akseptearje applikaasje / xml
Ynhâld-Type applikaasje/xml
Nei it ferstjoeren moatte se de status krije "204 Gjin ynhâld"
Om te kontrolearjen dat de konfiguraasje feroare is, kinne jo de foarige query brûke. Mar bygelyks sille wy in oare meitsje dy't allinich ynformaasje sil werjaan oer de protokollen konfigureare op 'e router.
Lit ús meitsje KRIJE fersyk:
Query string:
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
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
Nei it útfieren fan it fersyk sille wy it folgjende sjen:
Feroarje de konfiguraasje
Litte wy de ynformaasje feroarje oer it BGP-protokol. Nei ús aksjes sil it der sa útsjen:
protocols {
bgp {
disable;
}
}
Lit ús meitsje put fersyk:
Query string:
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
Ferjit net de kopteksten op it ljepblêd Kopteksten te feroarjen nei:
Akseptearje applikaasje / json
Ynhâld-Type applikaasje/json
Nei it ferstjoeren krije wy it folgjende resultaat (Wy sjogge nei it antwurd mei KRIJE fersyk):
Diel 7: It tafoegjen fan de Cisco xRV9000
Wat binne wy allegear oer Juniper, ja Juniper? Lit ús prate oer Cisco!
Ik fûn xRV9000 ferzje 7.0.2 (in bist dat moat 8Gb RAM en 4 kearnen. It is net frij beskikber, dus kontakt Cisco) - litte wy it útfiere.
It útfieren fan in kontener
It proses fan it meitsjen fan in Docker-kontener is praktysk net oars as Juniper. Op deselde manier falle wy de .qcow2-bestân mei de router yn 'e map dy't oerienkomt mei syn namme (yn dit gefal, xrv9k) en fiere it kommando út make docker-image.
Nei in pear minuten sjogge wy dat de ôfbylding is makke:
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
Wy begjinne de kontener:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Nei in skoftke sjogge wy dat de kontener begon is:
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
Ferbine fia 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
De router ferbine mei OpenDaylight
It tafoegjen bart op in folslein ferlykbere manier mei vMX. Wy moatte gewoan de nammen feroarje. put fersyk:
Belje nei in skoftke KRIJE query om te kontrolearjen dat alles ferbûn is:
Feroarje de konfiguraasje
Litte wy de folgjende konfiguraasje ynstelle:
!
router ospf LAB
mpls ldp auto-config
!
Lit ús meitsje PEAL fersyk:
Query string:
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
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
Op it ljepblêd Kopteksten moatte jo twa kopteksten tafoegje:
Akseptearje applikaasje / json
Ynhâld-Type applikaasje/json
Nei syn útfiering moatte se de status krije "204 Gjin ynhâld".
Lit ús kontrolearje wat wy krigen.
Om dit te dwaan, sille wy meitsje KRIJE fersyk:
Query string:
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
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
Op it tabblêd Autorisaasje moatte jo de parameter ynstelle Basic Auth en oanmelde / wachtwurd: admin / admin.
konklúzje
Yn totaal, lykas jo miskien hawwe opfallen, ferskille de prosedueres foar it ferbinen fan Cisco en Juniper oan OpenDaylight net - dit iepenet in frijwat brede romte foar kreativiteit. Begjin fan konfiguraasjebehear fan alle netwurkkomponinten en einigje mei it meitsjen fan jo eigen netwurkbelied.
Yn dizze tutorial haw ik de ienfâldichste foarbylden jûn fan hoe't jo kinne ynteraksje mei netwurkapparatuer mei OpenDaylight. Sûnder twifel kinne de fragen fan boppesteande foarbylden folle komplekser wurde makke en folsleine tsjinsten ynstelle mei ien mûsklik - alles wurdt allinich beheind troch jo ferbylding *
Oanhâlde wurde ...
PS
As jo dit alles ynienen al witte of, krekt oarsom, trochgien binne en yn 'e siel fan ODL ferdwûn binne, dan advisearje ik te sykjen nei it ûntwikkeljen fan applikaasjes op 'e ODL-controller. Jo kinne begjinne fan hjir.