Bu Yazıda Ağ Otomasyonu Nedir ve Neden Kullanmalıyız, Ağ Otomasyonunun Faydaları, Logical Planes (Data, Control, Management), SDN (Software-Defined Networking), API (Application Programming Interface), Data Serialization (JSON, XML) Hakkında Bilgi Edineceğiz.
Network Automation
CCNA Sınavının Önceki Versiyonları, Ağları Yönetmek ve Kontrol etmek için Geleneksel Modele Odaklanmıştı.
Mevcut Versiyon da Geleneksel Modele Odaklanmaktadır. Ancak Network Automation ile İlgili Çeşitli Konularda Temel Bir Anlayışa Sahip olması Beklenmektedir.
Geleneksel Modelde Mühendisler, SSH Aracılığı ile CLI'lara Bağlanarak Cihazları Birer Birer Yönetir. Console Port Bağlantısının Yanı Sıra Telnet Bağlantısı da Mümkündür. Bazı Cihazlar GUI de Destekler. Ancak Buradaki Asıl Nokta, Cihazların Tek Tek Yönetilmesi ve Yapılandırılmasıdır.
Diyelim ki Şirketiniz Tüm Router'larda Loopback Interface Yapılandırmanızı istiyor. SSH Kullanarak R1'e Bağlanır, Loopback Interface Yapılandırır, Yapılandırmayı Kaydeder ve Çıkış Yaparsanız. Sonra Bunu R2 için Yaparsın ve R3 ve R4. Şirket Ağındaki Yüzlerce Router'ın Her Biri için.
Cihazları Tek Tek Yapılandırmanın Bazı Olumsuz Yönleri:
- Yazım Hataları veya Küçük Hatalar Yapılabilir.
- Büyük Ölçekli Ağlarda Zaman Alıcı ve Çok Verimsizdir.
- Tekrarlayan Görevler Otomatikleştirilip Belirli Bir Zamanda Gerçekleştirilebilir.
- Ağdaki Bütün Cihazların Şirketin Standart Yapılandırma Şablonlarına Uymasını Sağlamak Zordur.
- Bir Şirket Genellikle Cihazları için Kullandıkları Standart Yapılandırma Şablonlarına Sahip olacaktır. Ağ Mühendisleri Yıllar İçinde Bireysel Değişiklikler Yaptıkça Standarttan Uzaklaşılabilir. Bu Durum da İleride Sorunlara Neden olabilir. Örneğin Cihazların Hepsi Benzer Yapılandırmalara Sahip olmadığı için Sorun Gidermek Zorlaşabilir.
Network Automation Birçok Önemli Avantaj Sağlar:
- İnsan Hatası (Yazım Hataları, vb.) Azalır.
- Ağ Mühendisinin Doğrudan CLI'de Oturum Açması ve Komutları Manuel olarak Girmesi Yerine Görev Otomatikleştirilebilir.
- Ağlar Çok Daha Ölçeklenebilir Hale Gelir. Ağ Genelindeki Değişiklikler ve Sorun Giderme Çok Kısa Sürede Uygulanabilir.
- Ağ Genelinde Politika Uyumluluğu Sağlanabilir (Standart Yapılandırmalar, Yazılım Sürümleri, vb.).
- Ağ Operasyonlarındaki Verimliliğin Arttırılması Sağlanır, Böylece İşletim Maliyeti (OpEx (Operating Expense)) Azaltılmış olur. Her Görev Daha Az Çalışma Saati Gerektirir ve Mühendisler Daha Önemli Şeylere Odaklanabilir.
Önceki Resimde Gördüğümüz gibi Her Router'da Tek Tek Oturum Açmak ve Loopback Interface Yapılandırmak Yerine Python Script ile Bu Görevi Çok Daha Kolay Şekilde Gerçekleştirebiliriz.
Ağdaki Görevleri Otomatikleştirmek için Kullanılabilecek Çeşitli Araçlar / Yöntemler Vardır:
- SDN (Software-Defined Networking)
- Ansible
- Puppet
- Python Script
- vb.
Bu Yazının Geri Kalanında SDN Kavramına odaklanacağız. SDN Kavramını Anlamak için için Logical Plane Konusunu Anlamalıyız.
Logical Planes
Aşağıdaki Resimde İki Basit Soru Var.
Bazı Örnek Cevaplar:
Router ve Switch'in Görevi Bu Kadar mı?
Bunlar Sadece Birkaç Örnek, Router ve Switch'in Daha Birçok İşlevi Var. Mesele Şu ki Router ve Switch Birçok Farklı şey Yapıyor ve Yalnızca Layer 2 veya Layer 3'deki Mesajları İletmezler.
Ağ Cihazlarının İşlevleri Mantıksal olarak Düzlemlere Ayrılabilir (Kategorize Edilebilir):
- Data Plane
- Control Plane
- Management Plane
Data Plane
Verilerin İletilmesi ile İlgili Tüm Görevleri Kapsar. En Kısa İfade ile Mesajların İletilmesi veya Reddedilmesidir.
Router Bir Mesaj Alır, Route Tablosunda En Spesifik Eşleşen Rotayı Arar ve Bunu Uygun Portundan Next Hop'a İletir. Ayrıca Orijinal Layer 2 Başlığını Kaldırır ve Next Hop'un MAC Adresine Yönelik Yeni Bir Layer 2 Başlığı ile Yeniden Kapsüller.
Switch Bir Mesaj Alır, Destination MAC Adresine Bakar ve Mesajı Uygun Portundan İletir veya Mesajı Aldığı Port Dışında Tüm Portlarından Gönderir (Flood). Switch Mesajı Trunk Portundan Gönderiyorsa 802.1Q VLAN Etiketi de Ekleyebilir.
Data Plane; NAT (Mesajın İletilmeden önce Src. / Dst. Adreslerinin Değiştirilmesi) ve Mesajları İletme veya Reddetme Kararı Alan ACL, Port Security gibi İşlevleri de Kapsar.
R1 Bir Paket Alır ve Data Plane, Paketi Uygun Porttan R2'ye İletmek için İşler. Ardından R2 Data Plane, Paketi Uygun Portundan Göndermek için İşler.
Yukarıdaki Resimde R2, R1'den Gelen İkinci Paketi Reddetti. Belki de R2'nin Portunda Yapılandırılmış Bir ACL Bu Kararı Vermesine Neden olmuştur. Buradaki Eylemler, Data Plane Örnekleridir.
Data Plane Görevleri Özet (İngilizce):
- De-Encapsulating and Re-Encapsulating A Packet in Frame (Routers, Layer 3 Switches)
- Adding or Removing an 802.1Q Trunking Header (Routers and Switches)
- Matching an Ethernet Frame’s Destination MAC Address to the MAC Address Table (Layer 2 Switches)
- Matching an IP Packet’s Destination IP Address to the IP Routing Table (Routers, Layer 3 Switches)
- Encrypting The Data and Adding A New IP Header (For Virtual Private Network [VPN] Processing)
- Changing The Source or Destination IP Address (For Network Address Translation [NAT] Processing)
- Discarding A Message Due To A Filter (Access Control Lists [ACLs], Port Security)
Control Plane
Data Plane, Yönlendirme Kararlarını Nasıl Verir? Router, Paketi Hangi Portundan İleteceğini Nasıl Seçebilir? Next Hop'un Ne olduğunu Nerden Biliyor? Route Tablosu, MAC Adres Tablosu, ARP Tablosu, vb.
Bu Tabloları oluşturan İşlevler ve Data Plane'i Etkileyen Diğer İşlevler (STP, vb.) = Control Plane.
Control Plane, Data Plane'in Ne Yaptığını Kontrol Eder.
Control Plane İşlevleri, Overhead Work olarak Kabul Edilir.
- OSPF Protokolünün Kendisi Veri Paketlerini İletmez, Ancak Data Plane'e Paketlerin Nasıl İletilmesi Gerektiği Hakkında Bilgi Verir.
- STP'nin Kendisi Doğrudan Frame'leri İletme Sürecine Dahil Değildir, Ancak Data Plane'e Frame'leri İletmek için Hangi Portların Kullanılması veya Kullanılmaması Gerektiği Konusunda Bilgilendirir.
- ARP Tablosu, Control Plane ile Oluşturulur. Dolayısıyla Control Plane, Data Plane'e ARP Mesajlarının Gönderilip Gönderilmeyeceği Hakkında Bilgi Verir.
Örnek
R1 ve R2, OSPF Kullanarak İletişim Kurar ve Bu, Her İkisinin de Route Tablosu oluşturmasına olanak Tanır. Route Tablosu, Veri Paketlerinin İletildiği Data Plane Eylemlerine Etki Eder.
Geleneksel Modelde Her Bir Cihaz için Data Plane ve Control Plane Ayrıdır. Her Cihazın Kendi Data Plane ve Control Plane'i Vardır. Tüm Ağı Kontrol Eden Tek bir Merkezi Control Plane Yoktur.
Management Plane
Control Plane gibi Management Plane İşlevleri de Overhead Work olarak Kabul Edilir.
Management Plane, Mesajların Data Plane'de İletilmesini Doğrudan Etkilemez.
- SSH/Telnet, Cihazı Uzaktan Yapılandırmak/Yönetmek için Kullanılır.
- Syslog, Cihazda Meydana Gelen Olayların Loglarını Tutmak için Kullanılır.
- SNMP, Cihazın Durumunu İzlemek ve Yapılandırma Değişiklikleri Yapmak için Kullanılır.
- NTP, Cihazda Doğru Zamanı Yapılandırmak ve Korumak için Kullanılır.
Örnek
Ağ Mühendisi, Router'lara Bağlanmak ve Bazı Yapılandırmalar Yapmak için SSH Kullanıyor.
Örnek olarak OSPF Protokolünü Yapılandırdı ve Router'ların Control Plane'leri Rota Bilgilerini Paylaşmak için OSPF Kullanıyor.
Data Plane, Paketlerin Nasıl İletileceğini Belirler.
Management Plane ve Control Plane, Genellikle Cihazın CPU'su Tarafından Yönetilir.
CPU Processing Nispeten Yavaş olduğundan Data Plane İşlemleri için Bu İstenmez. Bu Nedenle Özel Bir Donanım olan ASIC Kullanılır.
Örnek
Bunun Nasıl Çalıştığını Göstermek için Switch'i Ele Alalım.
- Switch Tarafından Bir Frame Alındığında Anahtarlama Mantığından CPU Değil ASIC Sorumludur. ASIC, Genel Amaçlı CPU'nun Aksine Frame'leri İletmek için Tasarlanmış Özel bir Çiptir.
- MAC Adres Tablosu, TCAM Adı Verilen Bir Tür Bellekte Saklanır. TCAM, MAC Adreslerinin Çok Hızlı Aranmasına İzin Verir.
- MAC Adres Tablosunun Diğer Adı: CAM Table.
- ASIC, Frame'in Destination MAC Adresini TCAM'e Gönderir ve MAC Adres Tablosunda Eşleşen Girişe göre Uygun Porttan İletilir.
Modern Router'lar da Bu Örneğe Benzer Bir Yapı Kullanır (ASIC/TCAM).
Basit bir Özet:
- Bir Cihaz, Kendisine Yönelik Control/Management Trafiği Aldığında CPU Tarafından İşlenecektir.
- Bir Cihaz, Kendisinden Geçmesi Gereken Veri Trafiği Aldığında Maksimum Hız için ASIC Tarafından İşlenir.
Tüm Data Plane Trafiğinin ASIC Tarafından İşlenmediğini, Bazen CPU'nun Gerekli olduğunu Unutmayın.
SDN (Software-Defined Networking)
Control Plane İşlevlerini Controller adı Verilen Uygulamada Merkezileştiren Ağ Oluşturma Yaklaşımıdır.
Wireless Configuration Yazısında WLC'yi Yapılandırırken Buna Benzer Bir Yapı Görmüştük. WLC Kullanırken Birçok İşlev Wireless AP'lerden Kaldırılır ve WLC'de Merkezileştirilir, Bu Nedenle Wireless AP'lerin Öncelikli Rolü Yalnızca Trafiği İletmek olur.
SDN, Software-Defined Arcihecture (SDA) veya Controller-Based Networking olarak da Adlandırılır.
Geleneksel Control Plane, Dağıtılmış Bir Mimari Kullanır.
- Örneğin Her Router OSPF Çalıştırır, Rota Bilgilerini Diğer Router'lar ile Paylaşır ve Ardından Her Bir Hedef için Rotalarını Bağımsız olarak Hesaplar.
SDN Controller, Control Plane İşlevlerini Merkezileştirir.
- Control Plane İşlevlerinin Ne Kadarının Merkezileştirildiği Büyük Ölçüde Değişebilir.
- Farklı Birçok SDN Çözümü Vardır, Controller ve Ağ Cihazlarının Rolü Her Çözümde Farklılık Gösterir.
Örnek
Yukarıdaki Resimde Geleneksel Control Plane Mimarisini görüyoruz. Sadece Control Plane İşlevlerine odaklandığımızdan Management Plane'i Dışarıda Bıraktım.
R1 ve R2'de Conrol Plane Kaldırdım. Controller, Server Üzerinde Çalışan Bir Uygulamadır ve Control Plane'lerini Programlamak için R1 ve R2 ile İletişim Kurar. Her Router'ın Kendi Control Plane'i Controller'da Merkezileştirilir.
Yukarı Resimdeki gibi Gerçekte Birçok Farklı SDN Çözümü Vardır. Bazıları Tüm Control Plane'i Merkezileştirir ve Bazıları Sadece Control Plane'in Bazı İşlevlerini Merkezileştirir.
Cihazlar ve Controller Arasındaki İletişim için SBI (Southbound Interface) Kullanılır.
SBI (Southbound Interface)
Yukarı Resimdeki R1 ve R2, Controller Tarafından Kontrol Ediliyor ve SBI, Aralarında İletişim Kurmak için Kullanılır.
SBI, Cihazdaki Fiziksel Port Değil, Yazılım Arayüzüdür (API (Application Programming Interface)).
API, Temel olarak Programlar Arasındaki Veri Alışverişini Kolaylaştırır. Controller Bir Programdır ve Ağ Cihazları da Donanımları İçinde Çalışan Programdır.
SBI Örnekleri:
- OpenFlow
- Cisco OpFlex
- Cisco onePK
- NETCONF
- RESTCONF
NBI (Northbound Interface)
Controller ile Etkileşime Girmemize, Ağ Hakkında Topladığı Verilere Erişmemize, Controller'ı Programlamamıza ve SBI Aracılığıyla Ağda Değişiklikler Yapmamıza olanak Tanır.
Aşağıdaki Resimde Uygulama (App) Var ve Controller ile İletişim Kurmak için NBI Kullanıyor.
SBI gibi NBI da Cihazdaki Fiziksel Port Değil, Yazılım Arayüzüdür (API (Application Programming Interface)).
NBI için Genellikle REST API Kullanılır.
REST = Representational State Transfer.
Örnek
App, Controller'dan Bazı Bilgiler İstemek için REST API'ye GET Mesajı Gönderiyor. Veriler Controller Tarafından JSON veya XML gibi Yapılandırılmış Bir Biçimde Gönderilir.
Automation in Traditional Networks vs SDN
Ağ Görevleri Geleneksel Ağ Mimarilerinde de Otomatikleştirilebilir:
- Komutları Aynı Anda Birçok Cihaza İletmek için Örneğin Python Programlama Dilinde Script Yazılabilir. Script, Bilgisayarınızın Ağ Cihazına SSH Yapmasını Sağlayabilir ve Ardından İstediğiniz Komutları İletebilir, Belki de Birden Çok Switch'de VLAN Yapılandıracaktır.
- Ağ Cihazları Hakkında Bilgi Toplamak için Regular Expression Kullanarak show Komutları Aracılığı ile Ayrıştırma Yapılabilir. Regular Expression, Kalıpları (Patterns) Kullanarak Metin İçerisinde Esnek Arama Yapmanın Bir Yoludur.
- Örneğin Bu show Komutuna Bakın, show interfaces.
- Bu Komutun Çıktısı İnsan Tarafından Okunabilir Bir Formatta, Bunu Okumak ve İhtiyacımız olan Bilgiyi Almak Bizim için Oldukça Basit. Örneğin Bandwidth Bilgisini Öğrenmek İstiyorsanız Saniyede 1000000 Kbit/Sec olduğunu Görebilirsiniz, Yani 1 Gigabit.
- Bu Komut Çıktısında Aynı Bilgiyi Çıkaran Script de Yazabilirsiniz. Script, Cihaza SSH ile Bağlanıp show interfaces Komutunu Kullanabilir ve İstediğiniz Bilgiyi Bulmak için Çıktıyı Regular Expression ile Ayrıştırabilir.
SDN Controller, Yukarıdaki İşlevleri Büyük Ölçüde kolaylaştırır.
- Controller, Ağdaki Tüm Cihazlar Hakkında Bilgi Toplar.
- Northbound API, App'nin Bilgileri Kolayca Anlayabileceği Bir Biçimde (Örnek: JSON, XML) Erişmesine İzin Verir. İstediğiniz Bilgiyi Elde Etmek ve Show Komutlarını Ayrıştırmak için Script Yazmaya Gerek Yoktur.
SDN Mimarisi, Ağ Otomasyonunun Yalnızca Bir Yönüdür. SDN Controller ve API'ler, Ağdaki Çeşitli Görevlerin Otomasyonunu Büyük Ölçüde Kolaylaştırır.
Ağ Otomasyonu, Geleneksel Ağ Oluşturmaya Kıyasla Bir Paradigma Değişikliğidir, Bu Nedenle Hemen Ayrıntılara Girmek Yerine Önemli Konulara Genel Bir Bakış Elde Etmenin En İyisi olduğunu Düşünüyorum. Bir Sonraki Yazıda JSON ve XML gibi Veri Serileştirme (Data Serialization) Konularına Daha Ayrıntılı Bakacağız.
Ele Aldığımız Konular
Quizs
Cevaplar (Sırası ile):
- a, b
- c, d
- a -> b, c ve d, Data Plane İşlevleridir, Mesajların İletilmesiyle İlgili İşlevleri Tanımlar. a, Rota Hesaplama, Control Plane Fonksiyonudur.
- c
- b
Okuduğunuz için Teşekkürler.
Yorum Gönder
Yorum Gönder