SDN 4 – Akış Tabloları

Merhabalar

Bu yazida SDN yapisindaki yönlendirme islemlerinden bahsedecegiz. Openflow ile ilk iletisimimizi baslattik. Ardindan cihaza bir trafik geldi cihaz bu trafik hakkinda nasil bir islem uygulayacak bu asamalari inceleyelim.

Öncelikle yönlendirme kaynagimiz akis tablolarimiz (Flow Table). Akis tablolari, 3 kisimdan olusur.

  • Kural (Rule): Paketin içerisinde kontrol edilecek bilgilerin bulundugu kisimdir. Eger belirtilmemis bir parametre var ise her deger kabul edilir (ANY). Gelen trafik akis tablosu içindeki satirlarla yukardan asagiya kontrol edilir. Tablodaki kurallarin parametre genisligi kullanilan openflow sürümüne göre degisir. Openflow 1.0 sürümünde:
drawit-diagram-2

bilgileri kontrol edilebilir.

  • Eylem (Action): Eslesme bulunan satira denk gelen aksiyon trafige uygulanir. Bir paket düsürülebilir (drop), tüm portlardan gönderilebilir (flood), belirli bir porttan gönderilebilir, paketin içerigi degistirilebilir.Paket içerigini degistirme yetenegi de openflow sürümüne göre degismektedir. Openflow 1.0 da:
  • VLAN tag’i degistirilebilir, soyulabilir,
  • Kaynak ve hedef MAC adresi ve kaynak ve hedef IP adresi degistirilebilir,
  • ToS bitleri degistirilebilir
  • Kaynak ve hedef port numarasi degistirilebilir.
  • Sayaç ( Stats): Esleyen trafikle ilgili sayisal verileri tutar.

Cihaz kendisine gelen bir trafik için önce üzerindeki akis tablosuna bakarak eslesme bulmaya çalisir. Bir cihazin üzerinde birden fazla akis tablosu bulunabilir. En küçük sira numarasina sahip akis tablosundan baslanir eslesme bulunamaz ise diger tablolara geçilir. Her tablo içerisinde de satirlarin öncelik bilgileri bulunur. Kontrol bu öncelik bilgilerine göre sira ile yapilir.

mininet> dpctl dump-flows
*** s1 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=25.212s, table=0, n_packets=1, n_bytes=42, idle_timeout=60, idle_age=25, priority=65535,arp,in_port=2,vlan_tci=0x0000,dl_src=c2:81:f5:fe:43:e3,dl_dst=16:86:1d:8d:c2:76,arp_spa=10.0.0.2,arp_tpa=10.0.0.1,arp_op=2 actions=output:1
 cookie=0x0, duration=20.198s, table=0, n_packets=1, n_bytes=42, idle_timeout=60, idle_age=20, priority=65535,arp,in_port=1,vlan_tci=0x0000,dl_src=16:86:1d:8d:c2:76,dl_dst=c2:81:f5:fe:43:e3,arp_spa=10.0.0.1,arp_tpa=10.0.0.2,arp_op=2 actions=output:2
 cookie=0x0, duration=25.212s, table=0, n_packets=8, n_bytes=784, idle_timeout=60, idle_age=18, priority=65535,icmp,in_port=1,vlan_tci=0x0000,dl_src=16:86:1d:8d:c2:76,dl_dst=c2:81:f5:fe:43:e3,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,icmp_type=8,icmp_code=0 actions=output:2
 cookie=0x0, duration=25.211s, table=0, n_packets=8, n_bytes=784, idle_timeout=60, idle_age=18, priority=65535,icmp,in_port=2,vlan_tci=0x0000,dl_src=c2:81:f5:fe:43:e3,dl_dst=16:86:1d:8d:c2:76,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,icmp_type=0,icmp_code=0 actions=output:1
mininet>

Örnek bir akis tablosu çiktisi. Mininet üzerinde basit bir 2 host’luk topolojide ping islemi sonucu olusan akis tablosu. ARP ve ICMP paketleri için ayri ayri satirlar mevcut. Zaten bu iletisim için 1 arp sorgusu 1 arp cevabi, 1 icmp echo-request ve 1 icmp echo-reply mesaji olusuyor.

Kural kisminda belirtilen eslesme parametreleri elle eklenebilir veya otomatik olusturulabilir. Otomatik olusturma cihazin kontrolörden aldigi bilgilere göre tablo olusturmasi.

Eslesme bulunamaz ise cihaz bu trafikle ilgili alacagi aksiyonu kontrolöre sorar. Kontrolör kendi üzerindeki çalisma prensibine bakarak gerekli bilgileri cihaza iletir.

Akis tablosu içerisinde iki adet zaman parametresi mevcut:

  • Idle Timeout : O satira eslesme olmadigi durumda satirin akis tablosundan silinecegi süredir. Akis tablosundan silinen trafik için en bastan tüm adimlar ayni sekilde gerçeklesir.
  • Hard Timeout: Satirin eslesme olsun olmasin akis tablosundan silinecegi süredir.

Burada önemli olan kisimlara bir bakalim. Artik elimizde akis tablolari var ve bu tablolar içerisinde çok çesitli ve detayli bilgi barindiriyorlar. Artik kontrol ve yönlendirme mekanizmamiz sadece IP veya MAC adresine göre yapilmiyor. Herhangi bir bilgi ile biz yönlendirme, düsürme veya istatistik toplama islemleri yapabiliyoruz.

  • Eger trafigin sadece MAC adres kisimlarini kontrol ediyor ve buna uygun yönlendirme yapiliyor ise artik elimizde bir adet switch var.
  • IP basliklarini kontrol ediyor ve yönlendirmeleri buna göre yapiyor ise bir router’imiz mevcut.
  • Veya 1-1024 portlari arasi trafige izin verip geri alan trafigi geçiriyor ise basit bir firewall’umuz mevcut. Ayrica sayaç bilgileri ile üzerinde akan trafigi görüntüleyebilir ve anomalilikleri gözlemleyebiliriz.
  • VLAN basliklarini kontrol edip, cihaz üzerinde VLAN ID’ler üzerinde yük dengelemesi yapabiliriz.

Gördügünüz üzere tüm yazilar boyunca cihaz dememin sebebi bu. Elimizde bulunan donanimsal yapi kontrolör ile birlesince tam adini almis oluyor. Yapacaginiz çalismalarda yikmaniz gereken kural burasi. Standart bakis açisiyla degil yeni yaklasimi benimseyerek gelistirme yapmaliyiz.

Bir sonraki yazida mininet ile SDN ortami olusturup, bazi testler yapacagiz.

Saglicakla

Musa AYDIN

musa.aydin@netoburus.com