ProHoster > blog > administrasi > Otomasi layanan jaringan atau cara membangun laboratorium virtual menggunakan OpenDaylight, Postman, dan Vrnetlab
Otomasi layanan jaringan atau cara membangun laboratorium virtual menggunakan OpenDaylight, Postman, dan Vrnetlab
Pada artikel ini, saya akan menunjukkan cara mengaturnya OpenDaylight untuk bekerja dengan peralatan jaringan, dan juga menunjukkan cara menggunakan Tukang pos dan sederhana RESTCONF permintaan, peralatan ini dapat dikontrol. Kami tidak akan bekerja dengan perangkat keras, tetapi sebagai gantinya kami akan menggunakan laboratorium virtual kecil dengan menggunakan satu router laboratorium Vrnet lebih Ubuntu LTS 20.04.
Saya akan menunjukkan pengaturan detail terlebih dahulu menggunakan contoh router JunipervMX 20.1R1.11, lalu kita bandingkan dengan setting Cisco xRV9000 7.0.2.
kadar
Pengetahuan yang dibutuhkan
Часть 1: membahas secara singkat OpenDaylight (selanjutnya ODL), Tukang pos и laboratorium Vrnet dan mengapa kita membutuhkannya
Часть 2: deskripsi laboratorium virtual
Часть 3: menyesuaikan OpenDaylight
Часть 4: menyesuaikan laboratorium Vrnet
Часть 5: dengan menggunakan Tukang pos menghubungkan router virtual (Juniper vMX) Ke ODL
Часть 6: dapatkan dan ubah konfigurasi router menggunakan Tukang pos и ODL
Часть 7: tambahkan Cisco xRV9000
Kesimpulan
PS
Bibliografi
Pengetahuan yang dibutuhkan
Agar artikel tidak berubah menjadi lembaran, saya menghilangkan beberapa detail teknis (dengan tautan ke literatur tempat Anda dapat membacanya).
Dalam hubungan ini, saya menawarkan kepada Anda topik-topik yang sebaiknya (tetapi hampir tidak perlu) diketahui sebelum membaca:
Platform SDN terbuka untuk mengelola dan mengotomatiskan semua jenis jaringan, didukung oleh Linux Foundation
Jawa di dalam
Berdasarkan Tingkat Abstraksi Layanan Berbasis Model (MD-SAL)
Menggunakan model YANG untuk menghasilkan API RESTCONF secara otomatis untuk perangkat jaringan
Modul utama untuk manajemen jaringan. Melalui itu kita akan berkomunikasi dengan perangkat yang terhubung. Dikelola melalui API-nya sendiri.
Anda dapat membaca lebih lanjut tentang OpenDaylight di sini.
Alat pengujian API
Antarmuka yang sederhana dan mudah digunakan
Dalam kasus kami, kami tertarik padanya sebagai sarana untuk mengirimkan permintaan REST ke OpenDaylight API. Anda dapat, tentu saja, mengirim permintaan secara manual, tetapi di Postman semuanya terlihat sangat jelas dan sesuai dengan tujuan kami dengan sempurna.
Bagi yang ingin menggali: banyak materi pelatihan telah ditulis di atasnya (misalnya).
Alat untuk menerapkan router virtual di Docker
Mendukung: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, dll.
Open Source
Instrumen yang sangat menarik tetapi sedikit diketahui. Dalam kasus kami, kami akan menggunakannya untuk menjalankan Juniper vMX dan Cisco xRV9000 pada Ubuntu 20.04 LTS biasa.
Anda dapat membaca lebih lanjut tentang itu di halaman proyek.
Bagian 2: Lab
Dalam tutorial ini, kita akan mengatur sistem berikut:
Bagaimana itu bekerja
Juniper vMX naik Buruh pelabuhan wadah (dengan cara laboratorium Vrnet) dan berfungsi sebagai router virtual paling umum.
ODL terhubung ke router dan memungkinkan Anda untuk mengontrolnya.
Tukang pos diluncurkan pada mesin terpisah dan melaluinya kami mengirim perintah ODL: untuk menghubungkan / menghapus router, mengubah konfigurasi, dll.
Komentar pada perangkat sistem
Juniper vMX и ODL membutuhkan cukup banyak sumber daya untuk operasi yang stabil. Hanya satu vMX meminta 6 Gb RAM dan 4 core. Oleh karena itu, diputuskan untuk memindahkan semua "kelas berat" ke mesin terpisah (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Perute, tentu saja, tidak "terbang" di atasnya, tetapi kinerjanya cukup untuk eksperimen kecil.
Bagian 3: Siapkan OpenDaylight
Versi ODL saat ini pada saat penulisan ini adalah Magnesium SR1
1) Instal Java Buka JDK 11 (untuk pemasangan lebih detail di sini)
ubuntu:~$ sudo apt install default-jdk
2) Temukan dan unduh versi terbaru ODLkarenanya
3) Buka zip arsip yang diunduh
4) Pergi ke direktori yang dihasilkan
5) Luncurkan ./bin/karaf
Pada langkah ini ODL harus dimulai dan kita akan menemukan diri kita di konsol (Port 8181 digunakan untuk akses dari luar, yang akan kita gunakan nanti).
Selanjutnya, instal Fitur ODLdirancang untuk bekerja dengan protokol NETCONF и RESTCONF. Untuk melakukan ini di konsol ODL kami mengeksekusi:
Untuk pemasangan laboratorium Vrnet klon repositori yang sesuai dari github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
Pergi ke direktori vrnetlab:
ubuntu:~$ cd ~/vrnetlab
Di sini Anda dapat melihat semua skrip yang diperlukan untuk dijalankan. Harap dicatat bahwa direktori yang sesuai telah dibuat untuk setiap jenis router:
Setiap router yang didukung laboratorium Vrnet, memiliki prosedur penyiapan uniknya sendiri. Kapan Juniper vMX kita hanya perlu mengunggah arsip .tgz dengan router (Anda dapat mengunduhnya dari situs resmi) ke direktori vmx dan jalankan perintah make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
Membangun citra vMX akan memakan waktu sekitar 10-20 menit. Saatnya pergi minum kopi!
"Ini karena pertama kali VCP (Control Plane) dimulai, ia membaca file konfigurasi yang menentukan apakah akan dijalankan sebagai VCP VRR di vMX. Sebelumnya, peluncuran ini dilakukan saat startup Docker, tetapi ini berarti bahwa VCP selalu di-restart sekali sebelum router virtual tersedia, mengakibatkan waktu boot yang lama (sekitar 5 menit) Sekarang proses pertama VCP dilakukan selama build image Docker, dan karena build Docker tidak dapat dijalankan dengan - -opsi istimewa, ini berarti qemu bekerja tanpa akselerasi perangkat keras KVM dan dengan demikian pembangunan membutuhkan waktu yang sangat lama. Selama proses ini, banyak log yang dihasilkan, jadi setidaknya Anda dapat melihat apa yang sedang terjadi. Saya pikir pembangunan yang lama tidak begitu menakutkan karena kami membuat gambar sekali, tetapi kami meluncurkan banyak."
Setelah Anda dapat melihat gambar router kami di 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
Luncurkan wadah vr-vmx
Kita mulai dengan perintah:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Selanjutnya, kita dapat melihat informasi tentang wadah 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
Menghubungkan ke router
Alamat IP antarmuka jaringan router dapat diperoleh dengan perintah berikut:
Bawaan, laboratorium Vrnet membuat pengguna di router vrnetlab/VR-netlab9.
Menghubungkan 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 menyelesaikan pengaturan router.
Rekomendasi instalasi untuk router dari berbagai vendor dapat ditemukan di proyek github di direktori masing-masing.
Bagian 5: Tukang pos - sambungkan router ke OpenDaylight
Instalasi tukang pos
Untuk menginstal, cukup unduh aplikasinya karenanya.
Menghubungkan router ke ODL
Mari berkreasi PUT meminta:
Rangkaian kueri:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Ini adalah ruang nama internal XML (ruang nama XML) untuk ODL yang menurutnya ia menciptakan simpul.
Selanjutnya, masing-masing, nama routernya adalah simpul-id, alamat perute - tuan rumah dan seterusnya.
Baris yang paling menarik adalah yang terakhir. Skema-cache-direktori membuat direktori tempat semua file diunduh Skema YANG router yang terhubung. Anda dapat menemukan mereka di $ODL_ROOT/cache/jun01_cache.
Memeriksa koneksi router
Mari berkreasi DAPATKAN meminta:
Rangkaian kueri:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Pada tab Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Kami mengirim. Harus menerima status "200 OK" dan daftar semua yang didukung oleh perangkat Skema YANG:
Komentar: Untuk melihat yang terakhir, dalam kasus saya perlu menunggu sekitar 10 menit setelah eksekusi PUTsampai semua skema YANG membongkar ODL. Sampai saat ini, saat melakukan ini DAPATKAN kueri akan menampilkan yang berikut:
Pada tab Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Bagian 6: Ubah konfigurasi router
Mendapatkan konfigurasi
Mari berkreasi DAPATKAN meminta:
Rangkaian kueri:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/
Pada tab Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Kami mengirim. Harus menerima status "200 OK" dan konfigurasi router:
Buat konfigurasi
Sebagai contoh, mari buat konfigurasi berikut dan modifikasinya:
protocols {
bgp {
disable;
shutdown;
}
}
Mari berkreasi POST meminta:
Rangkaian kueri:
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 Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Pada tab Tajuk, Anda perlu menambahkan dua tajuk:
Terima aplikasi/xml
Aplikasi/xml Tipe Konten
Setelah mengirim, mereka akan menerima status "204 No Content"
Untuk memeriksa apakah konfigurasi telah berubah, Anda dapat menggunakan kueri sebelumnya. Tetapi misalnya, kami akan membuat yang lain yang hanya menampilkan informasi tentang protokol yang dikonfigurasi pada router.
Mari berkreasi DAPATKAN meminta:
Rangkaian kueri:
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 Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Setelah menjalankan permintaan, kita akan melihat yang berikut:
Ubah konfigurasi
Mari ubah informasi tentang protokol BGP. Setelah tindakan kita, akan terlihat seperti ini:
protocols {
bgp {
disable;
}
}
Mari berkreasi PUT meminta:
Rangkaian kueri:
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 mengubah header pada tab Headers menjadi:
Terima aplikasi/json
Aplikasi Jenis Konten/json
Setelah mengirim, kami akan mendapatkan hasil berikut (Kami melihat jawabannya menggunakan DAPATKAN meminta):
Bagian 7: Menambahkan Cisco xRV9000
Apa yang kita semua tentang Juniper, ya Juniper? Mari kita bicara tentang Cisco!
Saya menemukan xRV9000 versi 7.0.2 (makhluk buas yang membutuhkan RAM 8Gb dan 4 core. Ini tidak tersedia secara bebas, jadi hubungi Cisco) - mari kita jalankan.
Menjalankan wadah
Proses pembuatan wadah Docker secara praktis tidak berbeda dengan Juniper. Demikian pula, kami menjatuhkan file .qcow2 dengan router ke direktori yang sesuai dengan namanya (dalam hal ini, xrv9k) dan menjalankan perintah make docker-image.
Setelah beberapa menit, kami melihat bahwa gambar 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 memulai wadah:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Setelah beberapa saat, kami melihat bahwa penampung telah dimulai:
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
Terhubung 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
Menghubungkan router ke OpenDaylight
Penambahan terjadi dengan cara yang sangat mirip dengan vMX. Kita hanya perlu mengubah nama. PUT meminta:
Menelepon setelah beberapa saat DAPATKAN permintaan untuk memeriksa apakah semuanya terhubung:
Ubah konfigurasi
Mari kita atur konfigurasi berikut:
!
router ospf LAB
mpls ldp auto-config
!
Mari berkreasi POST meminta:
Rangkaian kueri:
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 Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Pada tab Tajuk, Anda perlu menambahkan dua tajuk:
Terima aplikasi/json
Aplikasi Jenis Konten/json
Setelah eksekusi, mereka akan menerima status "204 No Content".
Mari kita periksa apa yang kita punya.
Untuk melakukan ini, kami akan membuat DAPATKAN meminta:
Rangkaian kueri:
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 Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Pada tab Otorisasi, Anda harus mengatur parameternya Basic Auth dan login/kata sandi: admin/admin.
Kesimpulan
Secara total, seperti yang mungkin Anda perhatikan, prosedur untuk menghubungkan Cisco dan Juniper ke OpenDaylight tidak berbeda - ini membuka ruang lingkup kreativitas yang cukup luas. Mulai dari manajemen konfigurasi semua komponen jaringan dan diakhiri dengan pembuatan kebijakan jaringan Anda sendiri.
Dalam tutorial ini, saya telah memberikan contoh paling sederhana bagaimana Anda dapat berinteraksi dengan peralatan jaringan menggunakan OpenDaylight. Tanpa ragu, kueri dari contoh di atas dapat dibuat jauh lebih rumit dan mengatur seluruh layanan dengan satu klik mouse - semuanya hanya dibatasi oleh imajinasi Anda *
Untuk dilanjutkan ...
PS
Jika Anda tiba-tiba sudah mengetahui semua ini atau, sebaliknya, telah melalui dan tenggelam ke dalam jiwa ODL, saya sarankan untuk melihat ke arah pengembangan aplikasi pada pengontrol ODL. Anda bisa mulai karenanya.