ProHoster > Blog > Ma'muriyat > OpenDaylight, Postman va Vrnetlab yordamida tarmoq xizmatlarini avtomatlashtirish yoki virtual laboratoriyani qanday qurish mumkin
OpenDaylight, Postman va Vrnetlab yordamida tarmoq xizmatlarini avtomatlashtirish yoki virtual laboratoriyani qanday qurish mumkin
Ushbu maqolada men sizga qanday sozlashni ko'rsataman ochiq kun tarmoq uskunalari bilan ishlash, shuningdek, qanday foydalanishni ko'rsatish Pochtachi va oddiy RESTCONF so'rovlar bo'lsa, ushbu uskunani boshqarish mumkin. Biz apparat bilan ishlamaymiz, lekin buning o'rniga biz bitta router yordamida kichik virtual laboratoriyalarni joylashtiramiz Vrnetlab ustiga Ubuntu 20.04 LTS.
Men router misolida birinchi navbatda batafsil sozlamalarni ko'rsataman Juniper vMX 20.1R1.11, va keyin biz uni sozlama bilan solishtiramiz Cisco xRV9000 7.0.2.
Mundarija
Kerakli bilim
1 qismi: qisqacha muhokama qiling OpenDaylight (keyingi o'rinlarda Oyna), Pochtachi и Vrnetlab va ular bizga nima uchun kerak
2 qismi: virtual laboratoriya tavsifi
3 qismi: moslashtiring ochiq kun
4 qismi: moslashtiring Vrnetlab
5 qismi: yordamida Pochtachi virtual routerni ulash (Juniper vMX) Kimga Oyna
6 qismi: yordamida yo'riqnoma konfiguratsiyasini oling va o'zgartiring Pochtachi и Oyna
7 qismi: Cisco xRV9000 qo'shing
xulosa
PS
Adabiyotlar ro'yxati
Kerakli bilim
Maqola varaq bo'lib qolmasligi uchun men ba'zi texnik tafsilotlarni o'tkazib yubordim (ular haqida o'qishingiz mumkin bo'lgan adabiyotlarga havolalar bilan).
Shu munosabat bilan men sizga o'qishdan oldin bilish yaxshi bo'lgan (lekin deyarli kerak emas) mavzularni taklif qilaman:
tomonidan qo'llab-quvvatlanadigan barcha turdagi tarmoqlarni boshqarish va avtomatlashtirish uchun ochiq SDN platformasi Linux fondi
Java ichida
Modelga asoslangan xizmat abstraksiya darajasi (MD-SAL) asosida
Tarmoq qurilmalari uchun RESTCONF API-larini avtomatik yaratish uchun YANG modellaridan foydalanadi
Tarmoqni boshqarish uchun asosiy modul. U orqali biz ulangan qurilmalar bilan bog'lanamiz. O'zining API orqali boshqariladi.
OpenDaylight haqida ko'proq o'qishingiz mumkin shu yerda.
API sinov vositasi
Oddiy va ishlatish uchun qulay interfeys
Bizning holatda, biz OpenDaylight API-ga REST so'rovlarini yuborish vositasi sifatida qiziqamiz. Siz, albatta, so'rovlarni qo'lda yuborishingiz mumkin, ammo Postman-da hamma narsa juda aniq ko'rinadi va bizning maqsadlarimizga juda mos keladi.
Qazishni istaganlar uchun: unda juda ko'p o'quv materiallari yozilgan (masalan).
Docker-da virtual routerlarni joylashtirish uchun vosita
Qo'llab-quvvatlaydi: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR va boshqalar.
Ochiq manbalar
Juda qiziq, ammo kam ma'lum bo'lgan asbob. Bizning holatda, biz undan oddiy Ubuntu 9000 LTS da Juniper vMX va Cisco xRV20.04 ni ishga tushirish uchun foydalanamiz.
Ushbu qo'llanmada biz quyidagi tizimni o'rnatamiz:
U qanday ishlaydi
Juniper vMX ichida ko'tariladi Docker konteyner (vosita orqali Vrnetlab) va eng keng tarqalgan virtual router sifatida ishlaydi.
Oyna routerga ulangan va uni boshqarish imkonini beradi.
Pochtachi alohida mashinada ishga tushiriladi va u orqali biz buyruqlar yuboramiz Oyna: routerni ulash/oʻchirish, konfiguratsiyani oʻzgartirish va h.k.
Tizim qurilmasiga sharh
Juniper vMX и Oyna ularning barqaror ishlashi uchun juda katta resurslarni talab qiladi. Faqat bitta vMX 6 Gb operativ xotira va 4 yadro talab qiladi. Shuning uchun barcha "og'ir vaznlilarni" alohida mashinaga ko'chirishga qaror qilindi (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Router, albatta, uning ustida "uchib ketmaydi", lekin unumdorligi kichik tajribalar uchun etarli.
3-qism: OpenDaylight-ni sozlash
Ushbu yozuv paytida ODL ning joriy versiyasi Magniy SR1 hisoblanadi
1) O'rnatish Java Open JDK 11 (batafsil o'rnatish uchun shu yerda)
ubuntu:~$ sudo apt install default-jdk
2) Eng so'nggi versiyani toping va yuklab oling Oynashu yerda
3) Yuklab olingan arxivni oching
4) Olingan katalogga o'ting
5) Ishga tushirish ./bin/karaf
Ushbu bosqichda Oyna boshlash kerak va biz o'zimizni konsolda topamiz (8181 porti tashqaridan kirish uchun ishlatiladi, biz undan keyinroq foydalanamiz).
Keyingi, o'rnatish ODL xususiyatlariprotokollar bilan ishlash uchun mo'ljallangan NETCONF и RESTCONF. Buni konsolda qilish uchun Oyna bajaramiz:
O'rnatish uchun Vrnetlab github'dan mos keladigan omborni klonlash:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Katalogga o'ting vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Bu yerda siz ishga tushirish uchun zarur bo'lgan barcha skriptlarni ko'rishingiz mumkin. E'tibor bering, har bir router turi uchun tegishli katalog yaratilgan:
Qo'llab-quvvatlanadigan har bir router Vrnetlab, o'ziga xos o'rnatish tartibiga ega. Qachon Juniper vMX Biz faqat .tgz arxivini yo'riqnoma bilan yuklashimiz kerak (uni yuklab olishingiz mumkin rasmiy sayt) vmx katalogiga o'ting va buyruqni bajaring make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Tasvir yaratish vMX taxminan 10-20 daqiqa davom etadi. Kofe ichish vaqti keldi!
"Buning sababi, VCP (Boshqaruv tekisligi) birinchi marta ishga tushirilganda, u vMX da VRR VCP sifatida ishlashini aniqlaydigan konfiguratsiya faylini o'qiydi. Ilgari bu ishga tushirish Docker ishga tushirilganda amalga oshirilgan, ammo bu VCP virtual marshrutizator mavjud bo'lgunga qadar har doim bir marta qayta ishga tushirilgan, buning natijasida uzoq yuklash vaqti (taxminan 5 daqiqa) Endi VCP ning birinchi ishga tushirilishi Docker tasvirini yaratish jarayonida amalga oshiriladi va Docker tuzilishini - -imtiyozli variant, bu qemu KVM apparat tezlashuvisiz ishlashini bildiradi va shu tariqa qurish juda uzoq vaqt talab etadi.Ushbu jarayon davomida juda ko'p jurnallar chiqariladi, shuning uchun hech bo'lmaganda nima sodir bo'layotganini ko'rishingiz mumkin.Menimcha, uzoq qurilish Bu unchalik qo'rqinchli emas, chunki biz bir marta tasvir yaratamiz, lekin biz ko'p narsalarni ishga tushiramiz."
Shundan so'ng siz bizning routerimizning tasvirini ko'rishingiz mumkin Docker:
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
vr-vmx konteynerini ishga tushiring
Biz buyruq bilan boshlaymiz:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Keyinchalik, faol konteynerlar haqidagi ma'lumotlarni ko'rishimiz mumkin:
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
Routerga ulanish
Routerning tarmoq interfeysining IP-manzilini quyidagi buyruq bilan olish mumkin:
Odatiy, Vrnetlab routerda foydalanuvchi yaratadi vrnetlab/VR-netlab9.
Bilan ulanish 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
Bu marshrutizatorni sozlashni yakunlaydi.
Turli sotuvchilarning marshrutizatorlarini o'rnatish bo'yicha tavsiyalarni quyidagi manzilda topishingiz mumkin github loyihasi tegishli kataloglarda.
5-qism: Pochtachi - routerni OpenDaylight-ga ulang
Pochtachi o'rnatish
O'rnatish uchun dasturni yuklab olish kifoya shu yerda.
Routerni ODL ga ulash
Keling, yarataylik But iltimos:
So'rovlar qatori:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Bu ichki nom maydonlari XML (XML nom maydoni) uchun Oyna unga ko'ra u tugunni yaratadi.
Keyinchalik, mos ravishda, routerning nomi tugun identifikatori, router manzili - mezbon va hokazo.
Eng qiziqarli qator oxirgisi. Sxema-kesh-katalog barcha fayllar yuklab olinadigan katalog yaratadi YANG sxemasi ulangan router. Siz ularni ichida topishingiz mumkin $ODL_ROOT/cache/jun01_cache.
Routerning ulanishini tekshirish
Keling, yarataylik OLING iltimos:
So'rovlar qatori:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
yuboramiz. "200 OK" maqomini va qurilma tomonidan qo'llab-quvvatlanadigan barcha ro'yxatni olish kerak YANG sxemasi:
izoh: Ikkinchisini ko'rish uchun, mening holimda, qatl qilinganidan keyin taxminan 10 daqiqa kutish kerak edi Buthammasigacha YANG sxemasi tushirish Oyna. Shu nuqtaga qadar, buni amalga oshirayotganda OLING so'rovda quyidagilar ko'rsatiladi:
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
6-qism: Router konfiguratsiyasini o'zgartiring
Konfiguratsiyani olish
Keling, yarataylik OLING iltimos:
So'rovlar qatori:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
yuboramiz. "200 OK" holatini va yo'riqnoma konfiguratsiyasini olish kerak:
Konfiguratsiya yarating
Misol tariqasida quyidagi konfiguratsiyani yaratamiz va uni o'zgartiramiz:
protocols {
bgp {
disable;
shutdown;
}
}
Keling, yarataylik POST iltimos:
So'rovlar qatori:
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
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
Sarlavhalar yorlig'ida siz ikkita sarlavha qo'shishingiz kerak:
Ilova/xml qabul qiling
Kontent turi ilova/xml
Yuborilgandan so'ng ular "204 Kontent yo'q" maqomini olishlari kerak.
Konfiguratsiya o'zgarganligini tekshirish uchun oldingi so'rovdan foydalanishingiz mumkin. Ammo, masalan, biz faqat marshrutizatorda sozlangan protokollar haqida ma'lumot ko'rsatadigan boshqasini yaratamiz.
Keling, yarataylik OLING iltimos:
So'rovlar qatori:
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
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
So'rovni bajargandan so'ng, biz quyidagilarni ko'ramiz:
Konfiguratsiyani o'zgartiring
Keling, BGP protokoli haqidagi ma'lumotlarni o'zgartiraylik. Bizning harakatlarimizdan keyin u quyidagicha ko'rinadi:
protocols {
bgp {
disable;
}
}
Keling, yarataylik But iltimos:
So'rovlar qatori:
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
Yuborilgandan so'ng, biz quyidagi natijani olamiz (Biz javobni foydalanib ko'rib chiqamiz OLING so'rov):
7-qism: Cisco xRV9000 qo'shish
Juniper haqida hammamiz nima, ha Juniper? Keling, Cisco haqida gapiraylik!
Men xRV9000 7.0.2 versiyasini topdim (8 Gb RAM va 4 yadroga muhtoj bo'lgan hayvon. U bepul mavjud emas, shuning uchun bog'laning. Cisco) - keling, uni ishga tushiramiz.
Konteynerni ishga tushirish
Docker konteynerini yaratish jarayoni Juniperdan deyarli farq qilmaydi. Xuddi shunday, biz router bilan .qcow2 faylini uning nomiga mos keladigan katalogga (bu holda, xrv9k) tushiramiz va buyruqni bajaramiz. make docker-image.
Bir necha daqiqadan so'ng biz rasm yaratilganligini ko'ramiz:
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
Biz konteynerni ishga tushiramiz:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Biroz vaqt o'tgach, biz konteyner boshlanganini ko'ramiz:
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
Ssh orqali ulanish:
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
Routerni OpenDaylight-ga ulash
Qo'shish vMX bilan mutlaqo o'xshash tarzda sodir bo'ladi. Biz faqat nomlarni o'zgartirishimiz kerak. But iltimos:
Birozdan keyin qo'ng'iroq qiling OLING hamma narsa ulanganligini tekshirish uchun so'rov:
Konfiguratsiyani o'zgartiring
Keling, quyidagi konfiguratsiyani o'rnatamiz:
!
router ospf LAB
mpls ldp auto-config
!
Keling, yarataylik POST iltimos:
So'rovlar qatori:
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
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
Sarlavhalar yorlig'ida siz ikkita sarlavha qo'shishingiz kerak:
Ilova/jsonni qabul qiling
Kontent turi ilovasi/json
U amalga oshirilgandan so'ng, ular "204 Kontent yo'q" maqomini olishlari kerak.
Keling, nima borligini tekshirib ko'raylik.
Buning uchun biz yaratamiz OLING iltimos:
So'rovlar qatori:
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
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
Amalga oshirilgandan so'ng, siz quyidagilarni ko'rishingiz kerak:
Konfiguratsiyani olib tashlash uchun foydalaning DELETE:
Avtorizatsiya yorlig'ida siz parametrni o'rnatishingiz kerak Basic Auth va login/parol: admin/admin.
xulosa
Umuman olganda, siz sezganingizdek, Cisco va Juniper-ni OpenDaylight-ga ulash tartiblari farq qilmaydi - bu ijodkorlik uchun juda keng imkoniyatlarni ochadi. Barcha tarmoq komponentlarini konfiguratsiyani boshqarishdan boshlab va o'zingizning tarmoq siyosatingizni yaratishgacha.
Ushbu qo'llanmada men OpenDaylight yordamida tarmoq uskunalari bilan qanday ishlashingiz mumkinligi haqida eng oddiy misollarni keltirdim. Shubhasiz, yuqoridagi misollardagi so'rovlarni ancha murakkablashtirish va sichqonchani bir marta bosish bilan butun xizmatlarni sozlash mumkin - hamma narsa faqat sizning tasavvuringiz bilan cheklangan *
Davomi bor…
PS
Agar siz to'satdan bularning barchasini bilsangiz yoki aksincha, ODL ruhiga kirib borgan bo'lsangiz, men ODL kontrollerida ilovalarni ishlab chiqishni maslahat beraman. Siz boshlashingiz mumkin shu yerda.