• Kategori: Network
  • Eyüp ÇELİK
  • Gösterim: 4042

Derinlemesine Distance Vector (Uzaklık Vektörü) Protokolü-1

Distance Vector (Uzaklık Vektörü)’e baktığımızda aslında çok basit bir mantığa sahiptir. Fakat Distance Vector, routing işlemlerinde ortaya çıkabilecek loops (Döngü)’ları engellemek üzere kullanmış olduğu özellikler bir bakışta anlaşılamayacak kadar ağır ve zor olabilir. Bu makalemdeki amaç bu zorlukları derinlemesine anlatarak sorunları en aza indirgemekle beraber, routing işlemlerinde distance vector’ün en iyi şekilde kavranmasını sağlamaktır.
Distance vector’ün çalışma mantığı, routerların tüm yolları üzerinde bulunan tüm arabirimlere göndermesi ile olur. Routerlar birbirlerinden almış oldukları routing update (Yönlendirme Güncellemesi)’leri kullanarak routing bilgilerini öğrenmiş olurlar. Birbirleri ile routing bilgilerini paylaşan neighbors (Komşu) routerlar, uygulanmış olan protokollere bağlı kalmak kaydı ile routing update’lerini birbirlerine yollarlar. İşte tüm bu işlemler Distance Vector’ün temeli oluşturmaktadır.
Not: Routerların komşuluk (Neighbors) ilişkisi ile ilgili geniş bir makalem ayrıca hazırlanmaktadır. Komşuluk ilişkisi farklı bir konu olduğundan bu konuda komşuluk ilişkisine değinilmemiştir.
Makalenin ön şartları:
1-) Cisco Router Konfigürasyonu - Eyüp ÇELİK // Bilgi Teknolojileri Güvenlik Uzmanı adresinde bulunan Cisco Router konfigürasyonunu bilmek.
2-) Routing protokollerden en az bir tanesine hakim olmak, routing protokoller ile ilgili proje yapmış olmak yada Cisco Router RIPv2 Konfigürasyonu - Eyüp ÇELİK // Bilgi Teknolojileri Güvenlik Uzmanı adresindeki Rip routing protokolünü bilmek gerekmektedir.
Yazının en başında dediğim gibi çok basit bir mantık ile bu işlemler gerçekleşmektedir. Temel distance vector mantığına bakacak olursak eğer;

  1. Routerlar sürekli olarak bir routing update (Yönlendirme Güncellemesi) gelir diye neighbors (Komşu) routerları dinlerler.
  2. Routerlar komşularına belirli bir periyoda göre routing update lerini gönderler ve komşuluk ilişkisi sağlanmış olan diğer routerlardan periyodik bir şekilde routing update lerini alırlar. Routerlar aldıkları bu routing update bilgilerine göre kendi routing table (Yönlendirme Tablosu)larını güncellerler.
  3. Yeni yapılandırılmak üzere networke dahil edilen router, üzerinde herhangi bir yönlendirme tablosu olmasa bile networke ait tüm alt ağları routing table’ına eklerler.
  4. Cisco routerlar bulundukları networkteki ağlara gitmek için Best Route (En İyi Yol) mantığını kullanırlar. Herhangi bir router bir başka routera gidebilecek birden çok yol olduğunu öğrenmiş ise routera gitmek için en iyi yolu seçerek gider. Cisco Routerlar en iyi yolu metric (Metrik) değerine göre hesaplarlar.
  5. Routerlar mümkün olduğunca broadcast (Tekli Dağıtım) yada multicast (Çoklu Dağıtım) dağıtım yaparak network üzerinde bulunan routerlara routing update lerini gönderirler.
  6. Routerların göndermiş oldukları routing updatelerinin içerisinde kendi üzerinde bulunan routing bilgileri ve diğer neighbors (Komşu Router)’dan aldıkları routing bilgileri bulunmaktadır.
  7. Routing bilgisi alt ağ adresi ve metric bilgisini içerir.
  8. Metric bilgisi route edilen yolun tercih edilmesinde en önemli rolü oynar. Routerlar almış oldukları metric bilgisine göre gidilebilecek yolu kendileri seçebilirler. Ripv2 protokolüne göre metric bilgisi ne kadar küçük ise router gideceği yolu buna göre seçer. En büyük metric’e sahip yol en son tercih edilecek yoldur. EIGRP protokolü ise en iyi yolu seçerken bandwith (Bant Genişliği) değerini de gözetir.
  9. Rip protokolü çalıştıran Cisco routerlar routing updatelerini gönderdiklerinde, routing tablosunda bulunan tüm yolları komşularına gönderirler. EIGRP protokolü çalıştıran Cisco routerlar ise gönderdikleri routing update bilgilerinde routing table’ın sadece değişmiş olan route bilgilerini gönderirler. Böylece routerların gereksiz yere fazla işlemci kaynağı ayırmasının ve gereksiz trafiğin önüne geçilmesi amaçlanmıştır.
  10. Bir Cisco router daha önce bir neighbors’tan almış olduğu routing update’i belirli bir zaman diliminde almazsa, o routera ait route bilgisini routing table’ından çıkarır.

Distance Vector’ü detayları ile öğrenmek için hemen bir örnek proje uygulaması yapalım. Cisco simülasyon programı olan Cisco Packet Tracer programını açalım. 5 Adet Cisco 2811 Router ekleyelim. Network bilgisini ve yerleşimini aşağıdaki resimde göstermiş olduğum gibi yapalım (İsterseniz makalenin sonunda bulunan proje dosyasını indirerek de üzerinde çalışabilirsiniz).

Projemizi yukarıdaki gibi ayarladıktan sonra IP konfigürasyonunu yapmaya geçiyoruz. Router0’ın Serial 0/0/0 Bacağı: 10.2.1.1
Router0’ın Serial 0/0/1 Bacağı: 10.1.1.1 - Clock Rate 128000

Router1’in Serial 0/0/0 Bacağı: 10.2.1.2 - Clock Rate 128000
Router1’in Serial 0/0/1 Bacağı: 10.2.2.1 - Clock Rate 128000
Router3’ün Serial 0/0/0 Bacağı: 10.2.2.2
Router2’ün Serial 0/0/0 Bacağı: 10.1.1.2
Router2’nin Serial 0/0/1 Bacağı: 10.1.2.1 - Clock Rate 128000
Router4’ün Serial 0/0/0 Bacağı: 10.1.2.2
Tüm routerlar için SubnetMask: 255.255.255.0
Konfigürasyonu yukarıda belirttiğim gibi ayarlıyoruz. Router4’ten Router2’nin Serial 0/0/1 bacağına tanımlanmış olan 10.1.2.1 ip adresine ping atıyoruz. Göreceğiniz üzere herhangi bir routing protokolü tanımlamadan Router2’ye sorunsuz bir şekilde ping atabiliyoruz. Madde 3 için bu örneği vermiş oldum. Şimdi Yapmış olduğumuz projede bulunan tüm routerlara Ripv2 protokolünü uygulayarak yeni bir routing protokol tanımlayalım.
Not: Ripv2 Protokolü ile ilgili detaylara Cisco Router RIPv2 Konfigürasyonu - Eyüp ÇELİK // Bilgi Teknolojileri Güvenlik Uzmanı adresinden ulaşabilirsiniz.
Ripv2 protokolü için, en iyi yolu seçerken metric değeri kullandığından bahsetmiştim. Ripv2 protokolü metric değeri seçerken kaç tane router atladığına bakar.Router4’ün Router3’e gitmek için 2 yola sahip olduğunu varsayarsak eğer, Ripv2 protokolü en iyi yolu seçerken kaçtane router üzerinden geçeceğini hesaplayarak gider. Şimdi bunu örneklemek için öncelikle Router4’ten Router3’ün Serial 0/0/0 bacağında bulunan 10.2.2.2 ip adresine traceroute komutu ile gitmeyi deneyelim. Komut çıktısı aşağıdaki gibi olacaktır.
Router>enable
Router#traceroute 10.2.2.2
Type escape sequence to abort.
Tracing the route to 10.2.2.2

1 10.1.2.1 32 msec 18 msec 31 msec
2 10.1.1.1 62 msec 62 msec 63 msec
3 10.2.1.2 94 msec 79 msec 94 msec
4 10.2.2.2 125 msec 125 msec 125 msec
Yukardaki çıktıda göreceğimiz üzere 10.1.2.2 ip adresi 10.2.2.2 ip adresine gitmek için önce 10.1.2.1 adresine gidiyor. Router gelen bu isteği alıp, routing tablosu ile karşılaştırarak paketi 10.1.1.1 ip adresine yönlendiriyor. 10.1.1.1 ip adresi aynı şekilde 10.2.1.2 ip adresine yönlendiriyor. Son olarak 10.2.1.2 ip adresi de gelen paketi 10.2.2.2 ip adresine yönlendiriyor. Böylece 2 router atlanmış olup, 4. adımda ping paketi istenilen adrese gönderilmiş oluyor. Şimdi Router4’ten Router1’in serial 0/1/0 bacağına serial kablo takıp aşağıdaki şekilde ip konfigürasyonunu yapalım.
Router4’ün Serial 0/0/1 Bacağı: 10.3.1.2 – Clock Rate 128000
Router2’nin Serial 0/1/0 Bacağı: 10.3.1.1
Tüm routerlar için SubnetMask: 255.255.255.0 şeklinde bir tanımlama yapıyoruz. Daha sonra gerekli Ripv2 konfigürasyonunu yapıp, ping ile çalışırlığını test ediyoruz. Network yapımız aşağıdaki gibi olacaktır.

Yukarıdaki traceroute örneğini şimdi bir daha çalıştıralım. 10.1.2.2 ip adresinden 10.2.2.2 ip adresine traceroute yapıyoruz. Komut çıktımız aşağıdaki gibi olacaktır.

Router#traceroute 10.2.2.2
Type escape sequence to abort.
Tracing the route to 10.2.2.2

1 10.3.1.1 32 msec 31 msec 31 msec
2 10.2.2.2 63 msec 63 msec 63 msec
Bu komut çıktısından da göreceğimiz üzere 10.1.2.2 ip adresi 10.2.2.2 ip adresine gitmek için önce 10.3.1.1 ip adresine gidiyor. Router gelen bu isteği 10.2.2.2 adresine yönlendirip görevini yerine getiriyor. Bir önceki örnekte aynı ip adresine 4 router atlayarak gidilmişti. Şimdi ise aynı adrese 1 router atlanıp, 2. routerda istenilen hedefe ulaşılmış oldu. Ripv2 protokolünde metric değeri daha öncede değindiğim gibi router atlama sayısını (hop count) baz alınır. Ayrıca routera doğrudan bağlı olan yollar router tarafından metric 0 olarak kabul edilir. Bunun nedeni söz konusu yola gitmek için arada herhangi başka bir routerın olmayışıdır. Metric değeri; routerlar neighbors ilişkisi kurduklarında router üzerinde bulunan her yol için ayrı ayrı bildirilir. Routerların birbirlerine göndermiş oldukları routing updatelerde de bu metric bilgisi yer almaktadır. Bir router komşuluk ilişkisi kurmuş olduğu bir diğer routera metric değerini gönderdiğinde, router bu metric değerini kullanarak alt ağa ulaşabileceğini öğrenir. Router neighbors ilişikisi yada routing update sırasında gönderilen metric bilgisine koşulşuz, şartsız güvenmek zorundadır. Bu güven, neighbors ilişkisi kurulduğunda gönderilen Ack paketleri ile sağlanır.

Distance Vector’ünün Döngü Oluşumunu (Loops) Engelleme

Routing protokoller ağ üzerinde hedeflerine birden çok yol ile iletişimde olabilirler. Network tasarlayıcılar olarak networkümüzü olası patlama durumlarına karşı korumak üzere networkümüzü dizayn ederken yedeklemeli (Redundancy) şekilde çalışmayı tercih etmeliyiz. Routing protokoller Networkte meydana gelebilecek topolojik değişimlere karşı hedeflere ulaşabilmek için en iyi yolları bularak bunları routing table’larına yazmak ve döngü oluşumunu (Loops) engellemelidir. Aşağıda belirttiğim kuralların bazıları networkte döngü oluşumunu engellemek üzere hazırlanmış kurallardır.


Route Poisoning Kuralı:
Distance Vector protokolünde belirli bir yolun çalışır durumdayken çalışamaz duruma gelmesi routing döngülerine sebep olmaktadır. Routerlar kendi üzerlerinde bulunan alt networkleri sürekli komşularına bildirirler demiştim makalenin başında. Bir router Static Routing protokolü dışında kendi üzerindeki alt networkler hariç, başka bir routera ait alt networkler hakkında bilgi sahibi olma ihtiyacı duymazlar. Sadece o networke hangi router üzerinden gidilebileceğini bilirler. Gerisine karışmazlar. Bu durumda bir routera bağlı alt networkün çalışıp çalışmadığı bilgisine sahip değillerdir. O networke hangi router üzerinden gidilebileceğini bildiğinden gelen veri paketini ilgili routera yönlendirir ve üzerine düşen görevi tamamlamış olur. Router bu ve benzeri sebeplerden dolayı kendi üzerlerinde bulunan alt networkleri routing update paketleri ile neighbors ilişkisi kurduğu diğer routerlara bildirir. Şimdi yukarda yapmış olduğumuz projeye bir Cisco 2960 Switch ekleyelim. Eklediğimiz switchi Router4’ün FastEthernet 0/0 bacağına bağlayalım. Bir adet bilgisayar ekleyip bunu da switchimize bağlayalım. Switch ile Router4 10.4.1.0 networkü olacak şekilde ayarlayalım. Router4’ün FastEthernet 0/0 bacağına 10.4.1.1 ip adresi verelim. Eklediğimiz bilgisayarın konfigürasyonu da aşağıdaki gibi olsun.

Tüm bu ayarlamaları yaptıktan sonra networkümüz aşağıdaki gibi olmuş olacak.

Bu işlemlerin hepsini yaptıktan sonra yaklaşık 1 dakika kadar bekleyelim. Bu süre zarfında Router4 yeni eklenmiş networkü tüm neighbors ilişkisi kurduğu cihazlara bildirecektir. Bu süremiz geçtikten sonra Router3’ten PC0(10.4.1.2)’a ping atalım. Ping isteğimiz başarılı bir şekilde PC0 (10.4.1.2) cihazına ulaştığını fark edeceksiniz.

Yukarıdaki resimde göreceğiniz gibi Router4 10.4.1.0 alt ağına Directly Connected bağlanmıştır.
Route Poisoning kuralı routerın, alt ağın geçersiz olduğunu fark etmesi ile çalışmaya başlar. Routerın FastEtherner arabirimi “UP” konumundan “Down” konumuna geçtiğini fark eder etmez route poisoning kuralını çalıştırmaya başlar. Router bu yol ile ilgili olarak hemen neighbors ilişkisi kurmuş olduğu routerlara network hakkında bilgi gönderir. Ripv1 çalıştıran bir network kullanıyorsak eğer, router “Down” duruma düşmüş alt ağ için metric değerini 16 ya çevirir. Böylece diğer routerlar metric 16 değerini gördüklerinde yolun sonsuz olduğunu düşünüp o adres ile iletişime geçmeyi keserler. Bu kural tüm routing protokolleri için farklılıklar gösterebilmektedir. Bizde şimdi çalışan 10.4.1.0 alt ağını kesiyoruz. Router üzerinde %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down şeklinde bir uyarı karşımıza gelecektir. Router4 FastEthernet 0/0 arabiriminin “Down” duruma düştüğünü bize bildiriyor. Daha sonra bu bildirimi tüm neighbors ilişkisi kurduğu cihazlara gönderecektir. Router4’ün routing table’ına bakacak olursak eğer aşağıdaki gibi olacaktır.

Yukarıdaki resime dikkat edecek olursak eğer, 10.4.1.0 alt ağının “Down” olması ile birlikte Route Poisoning kuralı çalışmıştır. Router4 bu alt ağın “down” duruma geçtiğini tüm neighbors ilişkisi kurduğu cihazlara bildirecektir.
Not: Split Horizon Kuralı, Split Horizon Kuralının Poison Reverse Kuralı ile Bütünleşik Kullanımı ve Hold Down Zamanı ile ilgili derinlemesine makalem bu serinin ikinci kısmını oluşturmaktadır. Bu kurallar ile ilgili makalem ise hazırlık aşamasındadır.


Projeler:
1-) Distance Vector Protokolü Projesi - http://www.eyupcelik.com.tr/CehLabs/...ctorProje1.pkt

2-) Döngü oluşumu - Route Poisoning Kuralı Projesi http://www.eyupcelik.com.tr/CehLabs/...ctorProje2.pkt

Yorum ekle


Güvenlik kodu Yenile

Bookmaker betfair Bonus review by ArtBetting.co.uk

Bookmaker bet365 review by ArtBetting.co.uk

Germany bookmaker b.artbetting.de review by ArtBetting.de

Bookmaker Greece BET365 review by ArtBetting.gr

Back to top