ProHoster > Blog > yönetim > Ağ hizmetlerinin otomasyonu veya OpenDaylight, Postman ve Vrnetlab kullanılarak sanal laboratuvarın nasıl oluşturulacağı
Ağ hizmetlerinin otomasyonu veya OpenDaylight, Postman ve Vrnetlab kullanılarak sanal laboratuvarın nasıl oluşturulacağı
Bu yazımda size nasıl kurulum yapacağınızı anlatacağım. AçıkGünışığı ağ ekipmanıyla çalışmak için ve aynı zamanda nasıl kullanılacağını da gösterecek Postacı ve basit RESTCONF istekler doğrultusunda bu ekipman kontrol edilebilir. Donanımla çalışmayacağız, bunun yerine küçük sanal laboratuvarları tek bir yönlendiriciyle kullanarak dağıtacağız. Vrnetlab üzerinde Ubuntu LTS 20.04.
İlk önce bir yönlendirici örneğini kullanarak ayrıntılı kurulumu göstereceğim Ardıç vMX 20.1R1.11ve ardından bunu ayarla karşılaştırırız Cisco xRV9000 7.0.2.
Içerik
Gerekli bilgi
Часть 1: kısaca tartışalım OpenDaylight (bundan sonra şu şekilde anılacaktır: ODL), Postacı и Vrnetlab ve neden onlara ihtiyacımız var?
Часть 2: sanal laboratuvarın açıklaması
Часть 3: yapılandır AçıkGünışığı
Часть 4: yapılandır Vrnetlab
Часть 5: kullanarak Postacı sanal bir yönlendirici bağlayın (Ardıç vMX) için ODL
Часть 6: kullanarak yönlendirici yapılandırmasını alın ve değiştirin Postacı и ODL
Часть 7: Cisco xRV9000'i ekleyin
Sonuç
PS
Kaynakça
Gerekli bilgi
Makalenin sayfaya dönüşmesini önlemek için bazı teknik detayları (bunları okuyabileceğiniz literatür bağlantılarıyla birlikte) atladım.
Bu bağlamda okumadan önce bilmenizin iyi olacağı (ancak neredeyse gerekli olmadığı) konuları size öneriyorum:
Her türlü ağı yönetmek ve otomatikleştirmek için, aşağıdakiler tarafından desteklenen açık bir SDN platformu: Linux Vakfı
Java'nın içi
Model Odaklı Hizmet Soyutlama Düzeyini (MD-SAL) temel alır
Ağ cihazları için otomatik olarak RESTCONF API oluşturmak üzere YANG modellerini kullanır
Ağ yönetimi için ana modül. Bağlı cihazlarla iletişim kuracağız. Kendi API'si aracılığıyla yönetilir.
OpenDaylight hakkında daha fazlasını okuyabilirsiniz burada.
API Test Aracı
Basit ve kullanımı kolay arayüz
Bizim durumumuzda, REST isteklerini OpenDaylight API'sine göndermenin bir yolu olarak ilgileniyoruz. Elbette istekleri manuel olarak gönderebilirsiniz, ancak Postman'da her şey çok net görünüyor ve amaçlarımız için mükemmel.
Bu konuya dalmak isteyenler için: üzerine birçok eğitim materyali yazılmıştır (örneğin).
Docker'da sanal yönlendiricileri dağıtmaya yönelik bir araç
Destekler: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, vb.
Açık Kaynak
Çok ilginç ama az bilinen bir enstrüman. Bizim durumumuzda, onun yardımıyla Juniper vMX ve Cisco xRV9000'i normal Ubuntu 20.04 LTS üzerinde çalıştıracağız.
Onun hakkında daha fazlasını şu adreste okuyabilirsiniz: proje sayfası.
Bölüm 2: laboratuvar çalışması
Bu dersimizde aşağıdaki sistemi kuracağız:
Bu nasıl çalışıyor
Ardıç vMX yükselir liman işçisi konteyner (bununla Vrnetlab) ve en yaygın sanal yönlendirici olarak işlev görür.
ODL yönlendiriciye bağlanır ve onu kontrol etmenizi sağlar.
Postacı ayrı bir makinede başlatıldı ve onun aracılığıyla komutlar gönderiyoruz ODL: bir yönlendiriciyi bağlamak/kaldırmak, yapılandırmayı değiştirmek vb. için.
Sistem tasarımına ilişkin yorumlar
Ardıç vMX и ODL istikrarlı çalışmaları için oldukça fazla kaynak gerektirir. Sadece bir vMX 6 GB RAM ve 4 çekirdek ister. Bu nedenle tüm “ağır sikletlerin” ayrı bir makineye taşınmasına karar verildi (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Yönlendirici elbette üzerinde "uçmuyor", ancak küçük deneyler için yeterli performans var.
Bölüm 3: OpenDaylight'ı Kurma
Bu yazının yazıldığı sırada ODL'nin mevcut sürümü Magnesium SR1'dir.
1) Kurulum Java OpenJDK 11 (daha detaylı kurulum için burada)
ubuntu:~$ sudo apt install default-jdk
2) En son sürümü bulun ve indirin ODLbundan dolayı
3) İndirilen arşivi açın
4) Ortaya çıkan dizine gidin
5) Başlat ./bin/karaf
Bu adımda ODL başlamamız gerekiyor ve kendimizi konsolda bulacağız (Harici erişim için daha sonra kullanacağımız 8181 numaralı bağlantı noktası kullanılıyor).
Daha sonra kurulumu yapıyoruz ODL Özellikleriprotokollerle çalışacak şekilde tasarlanmıştır NETCONF и RESTCONF. Bunu konsolda yapmak için ODL Yapmak:
Kurulum için Vrnetlab ilgili depoyu github'dan klonlayın:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.git
dizine git vnetlab:
ubuntu:~$ cd ~/vrnetlab
Burada çalıştırmak için gereken tüm komut dosyalarını görebilirsiniz. Lütfen her yönlendirici türü için karşılık gelen bir dizinin oluşturulduğunu unutmayın:
Desteklenen her yönlendirici Vrnetlab, kendine özgü bir kurulum prosedürüne sahiptir. Ne zaman Ardıç vMX Tek yapmamız gereken .tgz arşivini yönlendiriciye yüklemek (şu adresten indirebilirsiniz) resmi sitesi) vmx dizinine gidin ve komutu yürütün make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo make
resim oluşturma vMX yaklaşık 10-20 dakika sürecektir. Gidip kahve yapma zamanı!
"Bunun nedeni, VCP'nin (Kontrol Düzlemi) ilk başlatıldığında vMX'te VRR VCP olarak çalışıp çalışmayacağını belirleyen bir yapılandırma dosyasını okumasıdır. Daha önce bu başlatma, Docker başlatma sırasında yapılıyordu ancak bu, VCP'nin her zaman bir kez yeniden başlatıldığı anlamına geliyordu. sanal yönlendirici kullanıma sunulmadan önce, bu da uzun bir önyükleme süresine (yaklaşık 5 dakika) neden oluyor. Artık ilk VCP çalıştırması Docker görüntüsü oluşturma sırasında yapılıyor ve Docker oluşturma --privileged seçeneğiyle çalıştırılamadığı için bu, qemu'nun KVM donanım hızlandırması olmadan çalışır ve bu nedenle oluşturulması çok uzun zaman alır. Bu işlem sırasında çok sayıda günlük çıktısı alınır, böylece en azından neler olduğunu görebilirsiniz. Uzun bir derlemenin o kadar da kötü olmadığını düşünüyorum çünkü bir görüntüyü bir kez oluşturduğumuz için , ancak çoğunu başlatın."
Daha sonra yönlendiricimizin görüntüsünü görebilirsiniz. liman işçisi:
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 kapsayıcısını başlatma
Şu komutla başlatıyoruz:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453c
Daha sonra aktif konteynerler hakkındaki bilgileri görebiliriz:
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
Yönlendiriciye bağlanma
Yönlendiricinin ağ arayüzünün IP adresi aşağıdaki komutla elde edilebilir:
Varsayılan olarak Vrnetlab yönlendiricide bir kullanıcı oluşturur vrnetlab/VR-netlab9.
Kullanarak bağlanın 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, yönlendirici kurulumunu tamamlar.
Çeşitli satıcıların yönlendiricileri için kurulum önerileri şu adreste bulunabilir: proje github uygun dizinlerde.
Bölüm 5: Postacı - yönlendiriciyi OpenDaylight'a bağlama
Postacıyı Yükleme
Kurulum için uygulamayı indirmeniz yeterli bundan dolayı.
Yönlendiriciyi ODL'ye bağlama
hadi yaratalım PUT rica etmek:
Sorgu dizesi:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01
Bunlar dahili ad alanlarıdır XML (XML ad alanı) için ODL buna göre düğüm oluşturur.
Ayrıca buna göre yönlendiricinin adı düğüm kimliği, yönlendirici adresi - ev sahibi ve benzeri.
En ilginç satır ise sonuncusu. Şema-önbellek-dizini tüm dosyaların indirildiği bir dizin oluşturur YANG Şeması bağlı yönlendirici. Onları içeride bulabilirsin $ODL_ROOT/cache/jun01_cache.
Yönlendirici bağlantısını kontrol etme
hadi yaratalım GET rica etmek:
Sorgu dizesi:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/
Gönderdik. "200 OK" durumu ve desteklenen tüm cihazların bir listesi alınmalıdır YANG Şeması:
Yorumlamak: İkincisini görmek için benim durumumda infazdan sonra yaklaşık 10 dakika beklemek gerekiyordu PUTşimdilik bu kadar YANG şeması tarihinde boşaltılacak ODL. Bu noktaya kadar bunu yaparken GET sorgu aşağıdakileri gösterecektir:
Gönderdik. "200 OK" durumunu ve yönlendirici yapılandırmasını almalıdır:
Yapılandırma oluşturma
Örnek olarak aşağıdaki konfigürasyonu oluşturup değiştirelim:
protocols {
bgp {
disable;
shutdown;
}
}
hadi yaratalım POST rica etmek:
Sorgu dizesi:
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
Başlıklar sekmesinde iki başlık eklemeniz gerekir:
Uygulamayı/xml'i kabul et
İçerik Türü uygulaması/xml
Gönderdikten sonra "204 İçerik Yok" durumunu almalısınız.
Yapılandırmanın değiştiğini doğrulamak için önceki sorguyu kullanabilirsiniz. Ancak örnek olması açısından, bize yalnızca yönlendiricide yapılandırılmış protokoller hakkında bilgi gösterecek başka bir tane oluşturacağız.
hadi yaratalım GET rica etmek:
Sorgu dizesi:
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
İsteği gerçekleştirdikten sonra aşağıdakileri göreceğiz:
Yapılandırmayı değiştirme
BGP protokolü ile ilgili bilgileri değiştirelim. Eylemlerimizden sonra şöyle görünecek:
protocols {
bgp {
disable;
}
}
hadi yaratalım PUT rica etmek:
Sorgu dizesi:
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
Başlıklar sekmesindeki başlıkları şu şekilde değiştirmeyi unutmayın:
Uygulamayı/json'u kabul et
İçerik Türü uygulaması/json
Gönderdikten sonra aşağıdaki sonucu alıyoruz (Cevaba şunu kullanarak bakıyoruz: GET rica etmek):
Bölüm 7: Cisco xRV9000'i ekleyin
Juniper hakkında hepimiz neyiz, evet Juniper hakkında? Hadi Cisco'dan konuşalım!
xRV9000'in 7.0.2 sürümünü buldum (8 Gb RAM ve 4 çekirdeğe ihtiyaç duyan bir canavar. Ücretsiz olarak mevcut değil, bu nedenle iletişime geçin Cisco) - hadi başlatalım.
Konteyner çalıştırma
Docker konteyneri oluşturma süreci pratik olarak Juniper'dan farklı değildir. Benzer şekilde, .qcow2 dosyasını yönlendiriciyle birlikte ismine karşılık gelen dizine (bu durumda xrv9k) bırakıyoruz ve komutu çalıştırıyoruz. make docker-image.
Birkaç dakika sonra görüntünün oluşturulduğunu görüyoruz:
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
Konteyneri başlatalım:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fc
Bir süre sonra konteynerin başladığını görüyoruz:
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 ile bağlanın:
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
Yönlendiriciyi OpenDaylight'a bağlama
Ekleme vMX'e tamamen benzer şekilde gerçekleşir. Sadece isimleri değiştirmeniz yeterli. PUT rica etmek:
Bir süre sonra aradık GET her şeyin bağlı olup olmadığını kontrol etme isteği:
Yapılandırmayı değiştirme
Aşağıdaki konfigürasyonu kuralım:
!
router ospf LAB
mpls ldp auto-config
!
hadi yaratalım POST rica etmek:
Sorgu dizesi:
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
Başlıklar sekmesinde iki başlık eklemeniz gerekir:
Uygulamayı/json'u kabul et
İçerik Türü uygulaması/json
Yürütüldükten sonra "204 İçerik Yok" durumunu almalısınız.
Ne bulduğumuzu kontrol edelim.
Bunun için yaratacağız GET rica etmek:
Sorgu dizesi:
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
Toplamda, fark etmiş olabileceğiniz gibi, Cisco ve Juniper'ı OpenDaylight'a bağlama prosedürleri farklı değildir; bu, yaratıcılık için oldukça geniş bir alan açar. Tüm ağ bileşenlerinin yapılandırmalarını yönetmekten başlayarak kendi ağ ilkelerinizi oluşturmaya kadar.
Bu eğitimde OpenDaylight kullanarak ağ ekipmanıyla nasıl etkileşim kurabileceğinize dair basit örnekler verdim. Kuşkusuz, yukarıdaki örneklerden gelen talepler çok daha karmaşık hale getirilebilir ve tüm hizmetler bir fare tıklamasıyla yapılandırılabilir - her şey yalnızca sizin hayal gücünüzle sınırlıdır*
Devam edecek ...
PS
Birdenbire tüm bunları zaten biliyorsanız veya tam tersine, bunları yaşadıysanız ve ODL ruhunuza gömüldüyse, o zaman ODL denetleyicisinde uygulamalar geliştirmeye bakmanızı öneririm. Başlayabilirsin bundan dolayı.