İleri Düzey Bilgisayar Ağları Yazılım Tanımlı Ağlar Mehmet Demirci 1
Yazılım Tanımlı Ağların Temelleri Software-defined networking (SDN) Nedir? Ne işe yarar? Nereden geliyor? Nereye gidiyor? 2
Software-Defined Networking (SDN) Temel felsefe: Kontrol düzlemini veri düzleminden ayırmak Kontrol düzlemi: Beyin (kontrol yazılımı ve uygulamalar) Veri düzlemi: Vasıfsız işgücü (programlanabilen anahtarlar) Ağdaki davranış merkezi bir kontrol programı tarafından yönetilir. 3
Software-Defined Networking (SDN) Bunları niye ayırıyoruz? Çünkü ayrılmayınca, Dikey entegrasyon kısıtlayıcı olur. Değişim yapmak zordur. Yenilikleri yavaşlatır. 4
Software-Defined Networking (SDN) Dağıtık konfigürasyon hatalara açıktır ve tahmin edilebilirliği düşüktür. Buna karşılık Routing Control Platform (RCP) önerildi (2004-05). Daha sonra OpenFlow çıktı (2008). 5
SDN in Faydaları Koordine etmek çok daha kolaydır. Örnek: yük dengeleme, güvenlik vs. Donanımdan bağımsız gelişim imkanı sağlar. Ağın davranışını anlamak ve öngörmek daha kolaydır. 6
SDN in Uygulamaları Veri merkezleri Omurga ağları Internet exchange points (IXP) Kurum ağları Ev ağları 7
Kontrol düzleminin gelişimi Donanımdan bağımsız kontrol yazılımı daha kolay yenilenebilir. Ağ davranışını bütün olarak görüp daha iyi anlar. Uyarlanabilir kontrol platformu örnekleri: FORCES (2003), RCP (2004), Ethane (2007). Farklı cihaz gerektirir veya var olan protokollerle kısıtlıdır. 8
Kontrol düzleminin gelişimi OpenFlow (2008) Var olan donanım cihazını kontrol yazılımıyla kontrol etme imkanını veren bir protokol. Kontrol yazılımı, OpenFlow üzerinden anahtarın akış tablosuyla iletişim kurar. Gereksinim: Akış tablosu arayüzünün açılması 9
Kontrol ve veri düzlemleri nedir? Kontrol düzlemi: Yönlendirme kurallarını belirleyen mantık Yönlendirme protokolleri, güvenlik duvarı ayarları vs. Ağın beyni Veri düzlemi: Kontrol düzlemi mantığına göre yönlendirmenin yapılması IP yönlendirme, Layer-2 anahtarlama vs. 10
Kontrol ve veri düzlemleri niye ayrılmalıdır? Birbirinden bağımsız gelişim sağlanır. Özellikle yazılımın daha hızlı gelişmesi mümkün olabilir. Ağı anlayıp yönetmek kolaylaşır. Tek bir yazılım programıyla kontrol sağlanır. Davranışı denetlemek ve hata gidermek kolaylaşır. 11
Ayırma nerelerde işe yarar? Veri merkezleri: Sanal makine göçü Yönlendirme: Daha kontrollü karar mekanizması Kurum ağları: Güvenlik uygulamaları Araştırma ağları: Gerçek trafik ile sınama trafiğinin birlikteliği 12
Veri Merkezleri Temel Özellikler Çok kullanıcılı ortam (multi-tenant) Esnek kaynaklar Esnek hizmet (service) yönetimi İş yükü hareketi Sanal makine göçü 13
Veri Merkezleri Zorluklar Trafiği dengelemek Sanal makine göçü desteği Enerji tasarrufuna yönelik yerleştirme yapmak Değişen taleplere ayak uydurarak kaynak ayırmak Güvenlik 14
Veri Merkezi Maliyetini SDN ile Azaltma Örnek: 200 bin sunucu, 10 bin anahtar Her anahtar 5 bin dolar 50 milyon dolar Her anahtar bin dolar 10 milyon dolar 10 veri merkezinde 400 milyon dolar kazanç 15
Veri Merkezi: Yahoo! 20 bin sunucu, 400 bin sanal makine var. Sanal makine göçünün 1 saniyenın altında gerçekleşmesi, göç sırasında ağ işlevlerinin ve tutarlılığın bozulmaması gerekir. Çözüm: Anahtarları merkezi bir veri tabanından programlamak Sanal makinelerin göçü sırasında kontrolcü anahtarı gerektiği gibi günceller ve ağdaki yolları yeniden düzenler. 16
Kontrol ve veri düzlemlerinin ayrılması Bazı zorluklar da ortaya çıkarır. Ölçekleme: Bir kontrolcü birçok (belki binlerce) yönlendirme cihazından sorumludur. Güvenilirlik ve Güvenlik: Kontrolcü bozulursa veya saldırganların eline geçerse ne olacak? 17
Ölçeklenebilirlik Merkezi kontrolcü birçok cihaz için yolları hesaplayıp tutmalıdır. Binlerce cihazı kontrol ediyor olabilir. Ölçeklenebilirliği arttırmak için: Değişimden etkilenen cihazlar için index tutmak Kontrolcüler arası hiyerarşik yapı kurmak 18
Güvenilirlik Kontrolcünün yedeğini çalışır tutmak Aynı girdi ve aynı algoritma, aynı sonuçları vermeli. Giren bilgi farklıysa tutarlılık sorunu olabilir. 19
Kontrol Düzlemi Kontrol Düzlemi Temelleri OpenFlow SDN Kontrolcüleri ve Kullanımı 20
OpenFlow Protokolü Kontrolcünün anahtarla güvenli biçimde iletişim kurmasını sağlar. Anahtarın akış tablosunda değişiklikler yapmasını söyler. OpenFlow arada akan mesajların şeklini belirler. 21
OpenFlow Protokolü Akış tablosu (flow table) Gelen paketler için akış tablosunda eşleşme (match) aranır. Paketin başlıkları (header) tablodaki girdilerden biriyle eşleşiyor mu? Eşleşme olup olmadığına, nasıl olduğuna göre işlem yapılır. Eşleşme yoksa paket kontrolcüye gönderilir. 22
OpenFlow Protokolü Akış diyagramı Kaynak: OpenFlow Switch Specification 1.0 23
OpenFlow Protokolü Paket başlığındaki alanlar Kaynak: OpenFlow Switch Specification 1.0 24
OpenFlow Protokolü Eşleşme sonrası işlemler (actions) A. Zorunlu işlemler (required actions): OpenFlow u destekleyen bütün anahtarlar bu işlemleri yapabilmelidir. Paket iletme (forward) Paket atma/bırakma (drop) 25
OpenFlow Protokolü Eşleşme sonrası işlemler (actions) B. İsteğe bağlı işlemler (optional actions): OpenFlow u destekleyen anahtarlar, zorunlulara ek olarak bu işlemleri yapabilir. Paketi kuyruğa sokma (enqueue) Paketteki alanları değiştir (modify field) 26
OpenFlow Protokolü Zorunlu işlem: İlet (Forward) ALL: Geldiği arayüz hariç bütün arayüzlerden yolla. CONTROLLER: Kontrolcüye yolla. LOCAL: Yerel stack e yönlendir. TABLE: Akış tablosunda işlemler yap. IN PORT: Geldiği porttan geri yolla. İsteğe bağlı: NORMAL, FLOOD (minimum spanning tree üzerinden) 27
OpenFlow Protokolü Zorunlu işlem: At/Bırak (Drop) Hiçbir işlem belirtmeyen bir akış girdisi (flow entry), eşlenen paketlerin drop edilmesi gerektiği anlamına gelir. 28
OpenFlow Protokolü İsteğe bağlı işlem: Alan değiştir (Modify field) VLAN ID, priority, destination IP vb. bazı alanları değiştirebilir. Mesela, dst IP değiştirerek yük dengeleme yapılabilir. İsteğe bağlı işlem: Kuyruğa sok (Enqueue) Bir çıkış portuna bağlı olan kuyruğa ekle. Hizmet kalitesi (QoS) veya trafik şekillendirme için kullanılabilir. 29
OpenFlow Protokolü OpenFlow Specification 1.3 İşlem kümesi (action set): Pakete birden fazla işlem Grup (group): İşlem kümeleri listesi Her tablo başlık alanlarını günceller, işlem kümesini değiştirir. 30
SDN Kontrolcüleri Çeşitli SDN kontrolcüleri var, neye göre seçmeli? Programlama dili (hem kolaylık hem performans) Öğrenme kolaylığı Kullanıcı tabanı ve destek Genel amaç 31
SDN Kontrolcüleri NOX İlklerden C++ tabanlı, açık kaynaklı, yaygın ve hızlı Kullanıcılar C++ ta kontrol uygulaması yazarlar. Programlama modeli: Kontrolcü olayları kaydeder. Programcı olaylara cevap veren event handler kodu yazar. 32
SDN Kontrolcüleri POX NOX in Python Yaygın ve kolay Daha yavaş 33
SDN Kontrolcüleri Floodlight Açık kaynaklı, Java tabanlı Beacon Sağlam dokümantasyon REST API ile entegre Yüksek performans Öğrenmek daha zor 34