NetFlow, sFlow, IPFIX ve ötesi
Tags: netflow, sflow, ipfix, flow
Published: 2022-03-20 08:27:20

# 1. Trafik Akışı nedir?

Bilgisayar ağlarında Trafik akışı (traffic flow), kaynak cihazdan hedef cihaza giden paketler dizisine verilen [isimdir](https://datatracker.ietf.org/doc/html/rfc2722). 

Özellikle switch, router ve ağ adaptörleri gibi çeşitli ağ cihazlarında çeşitli amaçlarla kullanılmasına rağmen özellikle ağ izleme ve güvenliği için ağ yöneticilerinin ihtiyaçlarını karşılamak için bu akışın izlenmesi önemli bir nokta oluşturmaktadır. Tam da bu ihtiyaçla hikayemiz başlıyor.

# 2. Tarihçe

## 2.1. Cisco Krallığı

**NetFlow**, 1. sürümü Cisco tarafından 1996 yılında duyurulan ve IP ağ trafiğini toplama kabiliyetine sahip bir özelliktir. İlgili teknoloji Cisco'nun lisanslı teknolojisi olduğu için birazdan bahsedeceğim ayrı ve ortak teknolojilerin çıkmasına neden olmuştur. Cisco bu teknolojiyi kendi ürünlerinde kullanmak üzere çeşitli dönemlerde geliştirerek, [2004 yılında](https://datatracker.ietf.org/doc/html/rfc3954) "NetFlow v5" ve "NetFlow v9" duyuruldu. 

NetFlow v5 ve NetFlow v9 arasındaki en önemli fark v5'in kullanılabilecek alanlarının kilitli ve sabit olması, bunun yanısıra v9'da template bazlı olarak genişletilebilir bir yapıda olması olarak görülebilir. Konumuzla birebir ilgili olmasa da v5'in sadece IPv4 flowlarına destek verdiğini de belirtmek uygun olabilir.

Ayrıca mevcut durumda NetFlow teknolojisi Cisco'nun olmasına karşın; Juniper, Nokia, Huawei, Enterasys gibi bazı firmaların bazı ağ cihazlarında da kullanılıp desteklenmektedir. Tabi bunun nedeni büyük ölçüde 2012 yılından sonra Cisco'nun kendi markalarının içerisinde sunmaması olarak da görülebilir.

## 2.2. Standartı ararken

**sFlow**, InMon isimli firma tarafından Cisco dışındaki ağ cihazlarının da NetFlow benzeri işlevleri yakalayabilmek için 2002 yılında duyurulmuştur. Bir çok üretici tarafından kullanılabilmesi popülerliğini arttırmıştır fakat ileride bahsedeceğim gibi NetFlow ile birebir aynı işi yapmamaktadır. Özetle akışı örneklenmiş veri üzerinden sunmaktadır. Bu da tabi ki bazı dezavantajlar oluşturmaktadır.

Kendi web sayfasında yazdığı kadarıyla sFlow; Alcatel-Lucent, Allied Telesis, Arista, Brocade, Cisco, Dell, D-Link, Enterasys, Extreme, Fortinet, Hewlett-Packard, Hitachi, Huawei, IBM, Juniper Networks, NEC ve ZTE gibi ürünlerin içerisinde ortak standart olarak kullanılmaya devam etmektedir.

## 2.3. Derebeyleri de var tabi ki

sFlow'un NetFlow'un birebir karşılığı olmaması nedeniyle farklı firmalar kendi teknolojilerini de geliştirmiştir. Bunların bir kısmını aşağıdaki gibi özetleyebiliriz:
* Juniper Network için J-Flow
* 3com/HP ve Huawei için NetStream
* Nokia için Cflowd
* Ericsson için Rflow
* Citrix için AppFlow

## 2.4. Gerçek standart

IPFIX, 2008 yılında Cisco'nun kendi kullandığı NetFlow 9 ile uyumlu ama açık standartlı bir protokolü yayınlaması ile [duyuruldu](https://datatracker.ietf.org/doc/html/rfc5101). Açılımı "Internet Protocol Flow Information eXport" olarak sunulmaktadır. Bu standart 2012 yılında güncellenerek mevcutta kullanılan hale gelmiş oldu.

Dolayısıyla NetFlow ile (v9 sürümü için) aynı işi yapan bir standart oluşmuş oldu.

# 3. Teknik Başlangıç

## 3.1. Flow nedir?

Kullanılan standartları incelemize rağmen ağ akışından hiç bahsetmedik. Aslında olay çok basit bir şekilde aşağıdaki verilerin taşınması şeklinde düşünülebilir.
* Kaynak IP
* Kaynak Port
* Hedef IP
* Hedef Port
* Protokol (TCP veya UDP)
* Zaman bilgisi
* Paket sayısı (flow)
* Paket büyüklüğü (byte)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjr0ht1jtcen0a5a7mve.jpg)

## 3.2. NetFlow - IPFIX ne yapar?

NetFlow - IPFIX teknolojisi ağ cihazı üzerinde yukarıda bahsedilen Flow trafiğini toplamak, kaydetmek ve yönlendirmek için kullanılan önemli bir protokoldür. "Durum tanımlı" bir altyapı ile gerçekleşen tüm IP haberleşmesini izleyerek bilgileri toplar ve önbelleğe alır. Daha sonrasında tanımlanmışsa belirli periyotlarla "toplayıcılara" gönderir. 

Örnek vermek gerekirse bir switch üzerinde bu teknoloji varsa, bu switche bağlı makinelerdeki ağ veya internet trafiği hangi IP'den hangi IP'ye hangi port üzerinden trafik oluşmuşsa bu trafiğin paket sayısı ve büyüklüğü tutulmakta ve ayarlanmışsa toplayıcılara yönlendirilmiş oluyor.

Bu teknoloji IP trafiğini incelediği için sadece OSI'nin 3. ve 4. katmanlarına (IP, TCP, UDP vs.) dokunmaktadır. Dolayısıyla bir IP ile ilgili trafiğin ayrıntılı incelenmesi için oldukça verimli bir yapıya sahiptir. Dolayısıyla bu seviyede veriler %100 doğru olarak düşünülebilir.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7fr211u2pda1qhktuc02.jpg)

## 3.3. Peki ya sFlow?

sFlow adının başındaki "s" sampling(örnekleme) kısmında belirtildiği üzere; NetFlow - IPFIX gibi "durum tanımlı" bir altyapı yerine "durum tanımsız" paket örnekleme protokolü olarak çalışmaktadır ve paket düzeyinde bir inceleme sonucunda "toplayıcılara" gönderir. 

Bu özelliğin olumlu ve olumsuz birkaç sonucu vardır. Öncelikle NetFlow'dan daha hızlı bir çözüm sunar ve sistemi daha az yormaktadır. Gerçi çok yüksek trafikler hariç NetFlow çözümünün de büyük bir performans sorunu olmadığı söylenebilir.

sFlow teknolojisi tek bir IP ile ilgili trafiğin ayrıntılı incelenmesi yerine örnekleme tekniği kullanıldığı için yüksek trafikli ağlarda avantajlı hale gelebilmektedir. Dolayısıyla veriler %100 doğru değil yaklaşık olarak doğru kabul edilebilir.

Ayrıca NetFlow - IPFIX'e göre OSI katmanında 2. katmandan 7. katmana kadar daha fazla protokolde istatistikler sağlayabilir. Bu özelliği istatistik, band genişliği kısıtları, sorun giderme, güvenlik ihtiyaçları ve ağ planlaması için daha geniş içerik sunabilmektedir.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aqijnh3q3f94g1nibbxv.png)

# 4. Kullanım alanları

Trafik akışı teknolojileri genel olarak aşağıdaki başlıklarda kullanılmaktadır:

* Ağ izleme : Ağ cihazlarının gerçek zamanlı analiz edilmesi, ağda oluşabilecek sorunların tespiti ve sorgunların giderilmesi konularında kullanılmaktadır.

* Uygulama ve servis izleme : Ağ üzerinde bulunan uygulamaların belirli portlardaki trafiğinin izlenmesi ve bu trafiğin sağlıklı ilerlemesi için kullanılmaktadır.

* Ağ ve uygulama güvenliği : Ağ üzerinde bulunan cihaz ve uygulamaların saldırı altında kaldığı ve sızıntı oluşturabileceği şekilde incelenebilmesinde kullanılmaktadır.

* Kullanıcı hareketleri izleme : Ağ üzerinde belirlenebilen bir kullanıcının yaptığı trafiğin incelenmesi ve ağ verimliliğinin sağlanabilmesi için kullanılmaktadır. 

* Ağ tasarımı ve analizi : Ağ cihazlarının kurgulanması ve konumlandırılması için detaylı bilgi içermekte olup ağ işlemlerinin toplam maliyetini en aza indirebilmek için performans ve kapasite verimliliği sağlanabilmesi için kullanılmaktadır.

* Hizmet faturalandırma : Ağ cihazları üzerinden ağ kaynaklarının kullanılmasına yönelik analiz süreçlerinde kullanılmaktadır.

* Anlamlı veri oluşturabilme : Ağ üzerindeki sistemler hakkında genel bir örüntü anlaşılabilmesi için ve bu örüntüye bağlı olarak performans ve verimlilik gibi konularda çeşitli veri işleme faaliyetlerinde kullanılabilmektedir.


----------

Qui timide rogat docet negare