ProHoster > Blog > İdarə > OpenDaylight, Postman və Vrnetlab istifadə edərək şəbəkə xidmətlərinin avtomatlaşdırılması və ya virtual laboratoriyanın necə qurulması
OpenDaylight, Postman və Vrnetlab istifadə edərək şəbəkə xidmətlərinin avtomatlaşdırılması və ya virtual laboratoriyanın necə qurulması
Bu yazıda sizə necə qurulacağını göstərəcəyəm açıq gün işığı şəbəkə avadanlığı ilə işləmək, həmçinin istifadə qaydalarını göstərmək Poçtalyon və sadə RESTCONF istəkləri, bu avadanlıq nəzarət edilə bilər. Biz hardware ilə işləməyəcəyik, bunun əvəzinə bir marşrutlaşdırıcıdan istifadə edərək kiçik virtual laboratoriyalar yerləşdirəcəyik Vrnetlab üstü üstündə Ubuntu 20.04 LTS.
Əvvəlcə marşrutlaşdırıcının nümunəsindən istifadə edərək ətraflı parametrləri göstərəcəyəm Juniper vMX 20.1R1.11, və sonra onu parametrlə müqayisə edirik Cisco xRV9000 7.0.2.
Məzmun
Tələb olunan bilik
Часть 1: qısaca müzakirə edin OpenDaylight (bundan sonra ODL), Poçtalyon и Vrnetlab və onlara niyə ehtiyacımız var
Часть 2: virtual laboratoriyanın təsviri
Часть 3: özəlləşdirmək açıq gün işığı
Часть 4: özəlləşdirmək Vrnetlab
Часть 5: istifadə etməklə Poçtalyon virtual marşrutlaşdırıcını birləşdirin (Juniper vMX) Üçün ODL
Часть 6: istifadə edərək marşrutlaşdırıcının konfiqurasiyasını əldə edin və dəyişdirin Poçtalyon и ODL
Часть 7: Cisco xRV9000 əlavə edin
Nəticə
PS
Biblioqrafiya
Tələb olunan bilik
Məqalənin vərəqə çevrilməməsi üçün bəzi texniki təfərrüatları buraxdım (onlar haqqında oxuya biləcəyiniz ədəbiyyata keçidlərlə).
Bununla əlaqədar olaraq sizə oxumadan əvvəl bilmək yaxşı olardı (lakin demək olar ki, lazım deyil) mövzuları təklif edirəm:
tərəfindən dəstəklənən bütün növ şəbəkələrin idarə edilməsi və avtomatlaşdırılması üçün açıq SDN platforması Linux Foundation
Java daxilində
Modelə əsaslanan Xidmət Abstraksiya Səviyyəsinə (MD-SAL) əsaslanır
Şəbəkə cihazları üçün avtomatik olaraq RESTCONF API yaratmaq üçün YANG modellərindən istifadə edir
Şəbəkə idarəetməsi üçün əsas modul. Məhz onun vasitəsilə biz qoşulmuş cihazlarla əlaqə saxlayacağıq. Öz API vasitəsilə idarə olunur.
OpenDaylight haqqında daha çox oxuya bilərsiniz burada.
API test aləti
Sadə və istifadəsi asan interfeys
Bizim vəziyyətimizdə, biz OpenDaylight API-ə REST sorğuları göndərmək üçün bir vasitə kimi maraqlıyıq. Siz, əlbəttə ki, sorğuları əl ilə göndərə bilərsiniz, lakin Postman-da hər şey çox aydın görünür və məqsədlərimizə mükəmməl uyğun gəlir.
Qazmaq istəyənlər üçün: üzərində çoxlu təlim materialları yazılıb (məsələn).
Docker-də virtual marşrutlaşdırıcıların yerləşdirilməsi üçün alət
Dəstəkləyir: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR və s.
Open Source
Çox maraqlı, lakin az tanınan alət. Bizim vəziyyətimizdə ondan Juniper vMX və Cisco xRV9000-ni adi Ubuntu 20.04 LTS-də işə salmaq üçün istifadə edəcəyik.
Juniper vMX içində yüksəlir yükvuran konteyner (vasitəsilə Vrnetlab) və ən çox yayılmış virtual marşrutlaşdırıcı kimi fəaliyyət göstərir.
ODL marşrutlaşdırıcıya qoşulur və onu idarə etməyə imkan verir.
Poçtalyon ayrıca maşında işə salınır və onun vasitəsilə biz əmrlər göndəririk ODL: marşrutlaşdırıcıya qoşulmaq / çıxarmaq, konfiqurasiyanı dəyişdirmək və s.
Sistemin cihazına şərh
Juniper vMX и ODL onların sabit işləməsi üçün kifayət qədər çoxlu resurs tələb edir. Yalnız bir vMX 6 Gb RAM və 4 nüvə tələb edir. Buna görə də, bütün "ağır çəkiləri" ayrıca bir maşına köçürmək qərara alındı (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Router, əlbəttə ki, onun üzərində "uçmur", lakin performans kiçik təcrübələr üçün kifayətdir.
Hissə 3: OpenDaylight-ı quraşdırın
Bu yazı zamanı ODL-nin hazırkı versiyası Maqnezium SR1-dir
1) Quraşdırın Java Open JDK 11 (daha ətraflı quraşdırma üçün burada)
ubuntu:~$ sudo apt install default-jdk
2) Ən son quruluşu tapın və endirin ODLburadan
3) Yüklənmiş arxivi açın
4) Yaranan kataloqa keçin
5) işə salın ./bin/karaf
Bu addımda ODL başlamalıdır və biz özümüzü konsolda tapacağıq (Port 8181 xaricdən daxil olmaq üçün istifadə olunur, bundan sonra istifadə edəcəyik).
Sonra, quraşdırın ODL Xüsusiyyətləriprotokollarla işləmək üçün nəzərdə tutulmuşdur NETCONF и RESTCONF. Bunu konsolda etmək üçün ODL icra edirik:
Dəstəklənən hər bir marşrutlaşdırıcı Vrnetlab, özünəməxsus quraşdırma proseduruna malikdir. Nə vaxt Juniper vMX bizə sadəcə olaraq .tgz arxivini marşrutlaşdırıcı ilə yükləmək lazımdır (onu buradan yükləyə bilərsiniz rəsmi saytı) vmx qovluğuna daxil edin və əmri işə salın make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Təsvirin qurulması vMX təxminən 10-20 dəqiqə çəkəcək. Bir az qəhvə içməyə getməyin vaxtı gəldi!
"Bu ona görədir ki, VCP (İdarəetmə Təyyarəsi) ilk dəfə işə salındıqda, onun vMX-də VRR VCP kimi çalışıb-çalışmayacağını müəyyən edən konfiqurasiya faylını oxuyur. Əvvəllər bu işəsalma Docker-in işə salınması zamanı həyata keçirilirdi, lakin bu, VCP virtual marşrutlaşdırıcı əlçatan olmamışdan əvvəl həmişə bir dəfə yenidən işə salınırdı, nəticədə uzun yükləmə vaxtı (təxminən 5 dəqiqə) oldu. İndi VCP-nin ilk işə salınması Docker təsvirinin qurulması zamanı həyata keçirilir və Docker quruluşu ilə işləmək mümkün olmadığı üçün - -imtiyazlı seçim, bu o deməkdir ki, qemu KVM hardware sürətləndirilməsi olmadan işləyir və buna görə də qurma çox uzun vaxt aparır. O qədər də qorxulu deyil, çünki biz bir dəfə obraz yaradırıq, amma çoxunu işə salırıq”.
Routerimizin şəklini görə bildikdən sonra yükvuran:
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 işə salın
Komanda ilə başlayırıq:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Sonra, aktiv konteynerlər haqqında məlumat görə bilərik:
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
Routerə qoşulma
Routerin şəbəkə interfeysinin IP ünvanını aşağıdakı əmrlə əldə etmək olar:
Defolt, Vrnetlab marşrutlaşdırıcıda istifadəçi yaradır vrnetlab/VR-netlab9.
ilə əlaqə 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, marşrutlaşdırıcının quraşdırılmasını tamamlayır.
Müxtəlif təchizatçıların marşrutlaşdırıcıları üçün quraşdırma tövsiyələrini burada tapa bilərsiniz github layihəsi müvafiq kataloqlarda.
5-ci hissə: Poçtalyon - marşrutlaşdırıcını OpenDaylight-a qoşun
Poçtalyon quraşdırılması
Quraşdırmaq üçün proqramı yükləmək kifayətdir buradan.
Routerin ODL-ə qoşulması
Yaradaq PUT sorğu:
Sorğu sətri:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Bunlar daxili ad boşluqlarıdır XML (XML ad sahəsi) üçün ODL ona görə node yaradır.
Bundan əlavə, müvafiq olaraq, marşrutlaşdırıcının adıdır node-id, marşrutlaşdırıcının ünvanı - sahib və s.
Ən maraqlı xətt sonuncudur. Sxem-keş-kataloq bütün faylların yükləndiyi qovluq yaradır YANG Sxemi qoşulmuş marşrutlaşdırıcı. Onları içərisində tapa bilərsiniz $ODL_ROOT/cache/jun01_cache.
Routerin əlaqəsinin yoxlanılması
Yaradaq GET sorğu:
Sorğu sətri:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
göndəririk. "200 OK" statusu və cihaz tərəfindən dəstəklənənlərin siyahısını almalıdır YANG Sxemi:
Qeyd: Sonuncunu görmək üçün mənim vəziyyətimdə edamdan sonra təxminən 10 dəqiqə gözləmək lazım idi PUThamısına qədər YANG sxemi üzərinə boşaltın ODL. Bu nöqtəyə qədər, bunu həyata keçirərkən GET sorğu aşağıdakıları göstərəcək:
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
Hissə 6: Router konfiqurasiyasını dəyişdirin
Konfiqurasiya əldə edilir
Yaradaq GET sorğu:
Sorğu sətri:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
göndəririk. "200 OK" statusunu və marşrutlaşdırıcının konfiqurasiyasını almalıdır:
Konfiqurasiya yaradın
Nümunə olaraq aşağıdakı konfiqurasiyanı yaradaq və onu dəyişdirək:
protocols {
bgp {
disable;
shutdown;
}
}
Yaradaq POST sorğu:
Sorğu sətri:
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
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
Başlıqlar sekmesinde iki başlıq əlavə etməlisiniz:
Tətbiq/xml qəbul edin
Məzmun növü proqram/xml
Göndərdikdən sonra onlar "204 Məzmun yoxdur" statusunu almalıdırlar.
Konfiqurasiyanın dəyişdiyini yoxlamaq üçün əvvəlki sorğudan istifadə edə bilərsiniz. Ancaq məsələn, yalnız marşrutlaşdırıcıda konfiqurasiya edilmiş protokollar haqqında məlumatı göstərəcək başqa birini yaradacağıq.
Yaradaq GET sorğu:
Sorğu sətri:
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
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
Sorğunu yerinə yetirdikdən sonra aşağıdakıları görəcəyik:
Konfiqurasiyanı dəyişdirin
BGP protokolu haqqında məlumatları dəyişdirək. Hərəkətlərimizdən sonra belə görünəcək:
protocols {
bgp {
disable;
}
}
Yaradaq PUT sorğu:
Sorğu sətri:
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
Göndərdikdən sonra aşağıdakı nəticəni alacağıq (Cavabdan istifadə edərək baxırıq GET sorğu):
7-ci hissə: Cisco xRV9000-in əlavə edilməsi
Ardıc haqqında hamımız nəyik, bəli Juniper? Gəlin Cisco haqqında danışaq!
Mən xRV9000 7.0.2 versiyasını tapdım (8Gb RAM və 4 nüvəyə ehtiyacı olan heyvan. O, sərbəst mövcud deyil, ona görə də əlaqə saxlayın Cisco) - gəlin onu işə salaq.
Konteyneri idarə etmək
Docker konteynerinin yaradılması prosesi praktiki olaraq Juniper-dən fərqlənmir. Eynilə, biz marşrutlaşdırıcı ilə .qcow2 faylını onun adına uyğun qovluğa (bu halda xrv9k) atırıq və əmri yerinə yetiririk. make docker-image.
Bir neçə dəqiqədən sonra görüntünün yaradıldığını görürük:
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
Konteynerə başlayırıq:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Bir müddət sonra konteynerin işə düşdüyünü görürük:
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 vasitəsilə qoşulun:
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
Routerin OpenDaylight-a qoşulması
Əlavə etmə vMX ilə tamamilə oxşar şəkildə baş verir. Sadəcə adları dəyişdirməliyik. PUT sorğu:
Bir müddət sonra zəng edin GET hər şeyin bağlı olduğunu yoxlamaq üçün sorğu:
Konfiqurasiyanı dəyişdirin
Aşağıdakı konfiqurasiyanı quraq:
!
router ospf LAB
mpls ldp auto-config
!
Yaradaq POST sorğu:
Sorğu sətri:
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
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
Başlıqlar sekmesinde iki başlıq əlavə etməlisiniz:
Application/json qəbul edin
Məzmun Tipli proqram/json
Onun icrasından sonra onlar "204 Məzmun yoxdur" statusunu almalıdırlar.
Nə əldə etdiyimizi yoxlayaq.
Bunun üçün biz yaradacağıq GET sorğu:
Sorğu sətri:
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
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
İcradan sonra aşağıdakıları görməlisiniz:
Konfiqurasiyanı aradan qaldırmaq üçün istifadə edin DELETE:
Avtorizasiya sekmesinde parametri təyin etməlisiniz Basic Auth və giriş/parol: admin/admin.
Nəticə
Ümumilikdə, qeyd etdiyiniz kimi, Cisco və Juniper-in OpenDaylight-a qoşulması prosedurları fərqlənmir - bu, yaradıcılıq üçün kifayət qədər geniş imkanlar açır. Bütün şəbəkə komponentlərinin konfiqurasiyasının idarə edilməsindən başlayaraq öz şəbəkə siyasətinizin yaradılmasına qədər.
Bu dərslikdə mən OpenDaylight istifadə edərək şəbəkə avadanlığı ilə necə qarşılıqlı əlaqə qura biləcəyinizlə bağlı ən sadə nümunələri verdim. Şübhəsiz ki, yuxarıdakı nümunələrdən sorğular daha mürəkkəbləşdirilə və siçanın bir kliklə bütün xidmətləri qura bilər - hər şey yalnız sizin təsəvvürünüzlə məhdudlaşır *
Davam etmək üçün ...
PS
Əgər birdən bütün bunları bilirsinizsə və ya əksinə, ODL-nin ruhuna daxil olmusunuzsa, onda mən ODL nəzarətçisində proqramların hazırlanmasına baxmağı məsləhət görürəm. Başlaya bilərsiniz buradan.