ProHoster > Blog > Pentadbiran > Automasi perkhidmatan rangkaian atau cara membina makmal maya menggunakan OpenDaylight, Postman dan Vrnetlab
Automasi perkhidmatan rangkaian atau cara membina makmal maya menggunakan OpenDaylight, Postman dan Vrnetlab
Dalam artikel ini, saya akan menunjukkan kepada anda cara untuk menyediakan BukaDaylight untuk bekerja dengan peralatan rangkaian, dan juga menunjukkan cara menggunakannya Postman dan ringkas RESTCONF permintaan, peralatan ini boleh dikawal. Kami tidak akan bekerja dengan perkakasan, tetapi sebaliknya kami akan menggunakan makmal maya kecil dengan satu penghala menggunakan Vrnetlab di atas Ubuntu LTS 20.04.
Saya akan menunjukkan tetapan terperinci terlebih dahulu menggunakan contoh penghala Juniper vMX 20.1R1.11, dan kemudian kami membandingkannya dengan tetapan Cisco xRV9000 7.0.2.
Содержание
Pengetahuan yang diperlukan
Часть 1: bincang secara ringkas OpenDaylight (selepas ini ODL), Postman и Vrnetlab dan mengapa kita memerlukannya
Часть 2: penerangan tentang makmal maya
Часть 3: sesuaikan BukaDaylight
Часть 4: sesuaikan Vrnetlab
Часть 5: dengan menggunakan Postman sambung penghala maya (Juniper vMXKe ODL
Часть 6: dapatkan dan tukar konfigurasi penghala menggunakan Postman и ODL
Часть 7: tambah Cisco xRV9000
Kesimpulan
PS
Bibliografi
Pengetahuan yang diperlukan
Agar artikel itu tidak menjadi helaian, saya meninggalkan beberapa butiran teknikal (dengan pautan ke kesusasteraan di mana anda boleh membaca tentangnya).
Dalam hubungan ini, saya menawarkan kepada anda topik yang bagus (tetapi hampir tidak perlu) untuk diketahui sebelum membaca:
Platform SDN terbuka untuk mengurus dan mengautomasikan semua jenis rangkaian, disokong oleh Yayasan Linux
Jawa di dalam
Berdasarkan Tahap Abstraksi Perkhidmatan Didorong Model (MD-SAL)
Menggunakan model YANG untuk menjana API RESTCONF secara automatik untuk peranti rangkaian
Modul utama untuk pengurusan rangkaian. Melaluinya kami akan berkomunikasi dengan peranti yang bersambung. Diuruskan melalui API sendiri.
Anda boleh membaca lebih lanjut mengenai OpenDaylight di sini.
Alat ujian API
Antara muka yang ringkas dan mudah digunakan
Dalam kes kami, kami berminat dengannya sebagai cara untuk menghantar permintaan REST ke OpenDaylight API. Anda boleh, sudah tentu, menghantar permintaan secara manual, tetapi dalam Postman semuanya kelihatan sangat jelas dan sesuai dengan tujuan kami dengan sempurna.
Bagi mereka yang ingin menggali: banyak bahan latihan telah ditulis di atasnya (sebagai contoh).
Alat untuk menggunakan penghala maya dalam Docker
Menyokong: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, dll.
Open Source
Alat yang sangat menarik tetapi kurang dikenali. Dalam kes kami, kami akan menggunakannya untuk menjalankan Juniper vMX dan Cisco xRV9000 pada Ubuntu 20.04 LTS biasa.
Anda boleh membaca lebih lanjut mengenainya di halaman projek.
Bahagian 2: Makmal
Dalam tutorial ini, kami akan menyediakan sistem berikut:
Как это работает
Juniper vMX naik masuk buruh pelabuhan bekas (dengan cara Vrnetlab) dan berfungsi sebagai penghala maya yang paling biasa.
ODL disambungkan ke penghala dan membolehkan anda mengawalnya.
Postman dilancarkan pada mesin yang berasingan dan melaluinya kami menghantar arahan ODL: untuk menyambung / mengalih keluar penghala, menukar konfigurasi, dsb.
Ulasan tentang peranti sistem
Juniper vMX и ODL memerlukan sumber yang cukup banyak untuk operasi stabil mereka. Satu sahaja vMX meminta 6 Gb RAM dan 4 teras. Oleh itu, telah diputuskan untuk memindahkan semua "wajaran berat" ke mesin yang berasingan (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Penghala, tentu saja, tidak "terbang" di atasnya, tetapi prestasinya cukup untuk eksperimen kecil.
Bahagian 3: Sediakan OpenDaylight
Versi semasa ODL pada masa penulisan ini ialah Magnesium SR1
1) Pasang Java Open JDK 11 (untuk pemasangan yang lebih terperinci di sini)
ubuntu:~$ sudo apt install default-jdk
2) Cari dan muat turun binaan terkini ODLoleh itu
3) Nyahzip arkib yang dimuat turun
4) Pergi ke direktori yang terhasil
5) Pelancaran ./bin/karaf
Pada langkah ini ODL harus bermula dan kita akan mendapati diri kita berada dalam konsol (Port 8181 digunakan untuk akses dari luar, yang akan kita gunakan kemudian).
Seterusnya, pasang Ciri ODLdireka untuk bekerja dengan protokol NETCONF и RESTCONF. Untuk melakukan ini dalam konsol ODL kami melaksanakan:
Untuk memasang Vrnetlab klon repositori yang sepadan dari github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Pergi ke direktori vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Di sini anda boleh melihat semua skrip yang diperlukan untuk dijalankan. Sila ambil perhatian bahawa direktori yang sepadan telah dibuat untuk setiap jenis penghala:
Setiap penghala yang disokong Vrnetlab, mempunyai prosedur persediaan uniknya sendiri. Bila Juniper vMX kami hanya perlu memuat naik arkib .tgz dengan penghala (anda boleh memuat turunnya dari laman rasmi) ke direktori vmx dan jalankan arahan make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Membina imej vMX akan mengambil masa kira-kira 10-20 minit. Sudah tiba masanya untuk pergi minum kopi!
Mengapa begitu lama, anda bertanya?
Terjemahan tindak balas penulis kepada soalan ini:
"Ini kerana pada kali pertama VCP (Pesawat Kawalan) dimulakan, ia membaca fail konfigurasi yang menentukan sama ada ia akan dijalankan sebagai VCP VRR dalam vMX. Sebelum ini, pelancaran ini dilakukan semasa permulaan Docker, tetapi ini bermakna VCP sentiasa dimulakan semula sekali sebelum penghala maya tersedia, menyebabkan masa but yang lama (kira-kira 5 minit) Kini larian pertama VCP dilakukan semasa membina imej Docker, dan kerana binaan Docker tidak boleh dijalankan dengan - -pilihan istimewa, ini bermakna qemu berfungsi tanpa pecutan perkakasan KVM dan oleh itu binaan mengambil masa yang sangat lama. Semasa proses ini banyak log dikeluarkan, jadi sekurang-kurangnya anda dapat melihat apa yang sedang berlaku. Saya fikir binaan yang panjang adalah tidak begitu menakutkan kerana kami mencipta imej sekali, tetapi kami melancarkan banyak."
Selepas anda boleh melihat imej penghala kami masuk buruh pelabuhan:
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
Lancarkan bekas vr-vmx
Kita mulakan dengan arahan:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Seterusnya, kita boleh melihat maklumat tentang bekas aktif:
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
Menyambung ke penghala
Alamat IP antara muka rangkaian penghala boleh diperolehi dengan arahan berikut:
lalai, Vrnetlab mencipta pengguna pada penghala vrnetlab/VR-netlab9.
Berhubung dengan 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
Ini melengkapkan persediaan penghala.
Cadangan pemasangan untuk penghala pelbagai vendor boleh didapati di projek github dalam direktori masing-masing.
Bahagian 5: Posmen - sambungkan penghala ke OpenDaylight
Pemasangan posmen
Untuk memasang, muat turun sahaja aplikasi oleh itu.
Menyambungkan penghala ke ODL
Jom buat PUT permintaan:
Rentetan pertanyaan:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ini adalah ruang nama dalaman XML (Ruang nama XML) untuk ODL mengikut mana ia mewujudkan nod.
Selanjutnya, masing-masing, nama penghala ialah nod-id, alamat penghala - tuan rumah dan sebagainya.
Baris yang paling menarik ialah yang terakhir. Direktori-cache-schema mencipta direktori di mana semua fail dimuat turun Skema YANG penghala yang disambungkan. Anda boleh menemui mereka di $ODL_ROOT/cache/jun01_cache.
Memeriksa sambungan penghala
Jom buat GET permintaan:
Rentetan pertanyaan:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Kami hantar. Harus menerima status "200 OK" dan senarai semua yang disokong oleh peranti Skema YANG:
Komen: Untuk melihat yang terakhir, dalam kes saya, perlu menunggu kira-kira 10 minit selepas pelaksanaan PUTsehingga semua skema YANG memunggah pada ODL. Sehingga ke tahap ini, apabila melakukan ini GET pertanyaan akan memaparkan perkara berikut:
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Bahagian 6: Tukar konfigurasi penghala
Mendapatkan konfigurasi
Jom buat GET permintaan:
Rentetan pertanyaan:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Kami hantar. Harus menerima status "200 OK" dan konfigurasi penghala:
Buat konfigurasi
Sebagai contoh, mari buat konfigurasi berikut dan ubah suainya:
protocols {
bgp {
disable;
shutdown;
}
}
Jom buat SELEPAS permintaan:
Rentetan pertanyaan:
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
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Pada tab Pengepala, anda perlu menambah dua pengepala:
Terima aplikasi/xml
Aplikasi Jenis Kandungan/xml
Selepas menghantar, mereka sepatutnya menerima status "204 Tiada Kandungan"
Untuk menyemak sama ada konfigurasi telah berubah, anda boleh menggunakan pertanyaan sebelumnya. Tetapi sebagai contoh, kami akan mencipta satu lagi yang akan memaparkan maklumat hanya tentang protokol yang dikonfigurasikan pada penghala.
Jom buat GET permintaan:
Rentetan pertanyaan:
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
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Selepas melaksanakan permintaan, kita akan melihat perkara berikut:
Tukar konfigurasi
Mari tukar maklumat tentang protokol BGP. Selepas tindakan kita, ia akan kelihatan seperti ini:
protocols {
bgp {
disable;
}
}
Jom buat PUT permintaan:
Rentetan pertanyaan:
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
Jangan lupa untuk menukar pengepala pada tab Pengepala kepada:
Terima aplikasi/json
Aplikasi Jenis Kandungan/json
Selepas menghantar, kami akan mendapat keputusan berikut (Kami melihat jawapan menggunakan GET permintaan):
Bahagian 7: Menambah Cisco xRV9000
Apa yang kita semua tentang Juniper, ya Juniper? Mari bercakap tentang Cisco!
Saya menjumpai xRV9000 versi 7.0.2 (binatang yang memerlukan 8Gb RAM dan 4 teras. Ia tidak tersedia secara percuma, jadi hubungi Cisco) - mari jalankan.
Menjalankan bekas
Proses mencipta bekas Docker secara praktikalnya tidak berbeza dengan Juniper. Begitu juga, kami melepaskan fail .qcow2 dengan penghala ke dalam direktori yang sepadan dengan namanya (dalam kes ini, xrv9k) dan laksanakan arahan make docker-image.
Selepas beberapa minit, kita melihat bahawa imej telah dibuat:
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
Kami memulakan bekas:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Selepas beberapa ketika, kami melihat bahawa bekas telah bermula:
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
Sambung melalui 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
Menyambungkan penghala ke OpenDaylight
Penambahan berlaku dalam cara yang sama sekali dengan vMX. Kami hanya perlu menukar nama. PUT permintaan:
Panggil selepas beberapa ketika GET pertanyaan untuk memeriksa sama ada semuanya bersambung:
Tukar konfigurasi
Mari kita sediakan konfigurasi berikut:
!
router ospf LAB
mpls ldp auto-config
!
Jom buat SELEPAS permintaan:
Rentetan pertanyaan:
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
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Pada tab Pengepala, anda perlu menambah dua pengepala:
Terima aplikasi/json
Aplikasi Jenis Kandungan/json
Selepas pelaksanaannya, mereka harus menerima status "204 Tiada Kandungan".
Mari kita semak apa yang kita dapat.
Untuk melakukan ini, kami akan mencipta GET permintaan:
Rentetan pertanyaan:
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
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Selepas pelaksanaan, anda akan melihat perkara berikut:
Untuk mengalih keluar penggunaan konfigurasi DELETE:
Pada tab Kebenaran, anda mesti menetapkan parameter Basic Auth dan log masuk/kata laluan: admin/admin.
Kesimpulan
Secara keseluruhan, seperti yang anda mungkin perasan, prosedur untuk menyambungkan Cisco dan Juniper ke OpenDaylight tidak berbeza - ini membuka skop yang agak luas untuk kreativiti. Bermula daripada pengurusan konfigurasi semua komponen rangkaian dan berakhir dengan penciptaan dasar rangkaian anda sendiri.
Dalam tutorial ini, saya telah memberikan contoh paling mudah tentang cara anda boleh berinteraksi dengan peralatan rangkaian menggunakan OpenDaylight. Tidak syak lagi, pertanyaan daripada contoh di atas boleh dibuat lebih kompleks dan menyediakan keseluruhan perkhidmatan dengan satu klik tetikus - semuanya terhad hanya oleh imaginasi anda *
Perlu diteruskan ...
PS
Jika anda tiba-tiba sudah mengetahui semua ini atau, sebaliknya, telah melalui dan tenggelam dalam jiwa ODL, maka saya cadangkan melihat ke arah membangunkan aplikasi pada pengawal ODL. Anda boleh mulakan oleh itu.