Bölüm 39:Yönlendirme Protokolleri
Ağlar'a “Sen”i Katmak yazısının parçası: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine kadar inen uzun bir teknik yolculuk.
Tüm bölümler
- Giriş
- Adres Çubuğundan İsteğe
- Paket Anahtarlamalı Yol
- İsimden Adrese
- Önbellek, Tazelik ve Güven
- Port Numarası ve Soket
- Bağlantısız Taşıma: UDP
- Üç Adımlı El Sıkışma
- Simetrik Şifreleme
- Açık Anahtarlı Kriptografi
- TLS El Sıkışması
- Sertifika Zinciri
- HTTP Mesajının Anatomisi
- Durum, Çerez ve Oturum
- HTTP/2'den HTTP/3'e
- İçerik Dağıtım Ağları
- Diğer Uygulama Protokolleri
- Katmanlı Mimari
- Kapsülleme ve Başlıklar
- Paket Yakalama ve Çözümleme
- Ağ Arayüz Kartı
- Fiziksel Adresleme
- Hata Sezme ve CRC
- Adres Çözümleme: ARP
- Anahtarlama ve Ortam Erişimi
- Ağ Topolojileri
- Sanal Yerel Ağlar
- Kablosuz Erişim: 802.11
- Radyo Kanalı ve Kapasite
- Kablosuz Ağ Güvenliği
- Hücresel Ağlar
- Spektrum ve Kuşaklar
- Hareketlilik ve Aktarma
- Adres Kiralama: DHCP
- Adresin Anatomisi
- Adres Tükenmesi ve IPv6
- Yönlendirici Mimarisi
- Kuyruk Yönetimi
- Cihaz Yapılandırma
- Yönlendirme Protokolleri
- Kontrol Düzlemi ve SDN
- Ağ İzleme ve Yönetimi
- Alanlar Arası Yönlendirme
- Adres Çevirisi
- Ara Kutular
- Tünelleme ve IPsec
- Güvenlik Duvarları
- Operatör ve Metro Ağları
- Bitten Sinyale
- Çoklama Teknikleri
- İletim Ortamları
- Kablo Sonlandırma
- Fiber Optik İletim
- Bakır Erişim Ağı: DSL
- Pasif Optik Ağlar
- Kablo Erişim Ağları
- Denizaltı Kabloları
- Veri Merkezi Ağları
- Kapsülleme Çözme
- Güvenilir Aktarım
- Tıkanıklık Denetimi
- Trafik Çözümleme
- Gecikme Bütçesi
- Son Söz
Bir önceki durakta iki satırı elle yazdın ve ağ çalıştı. Bin cihazlık bir ağda kimse o satırları elle yazmaz.
Yönlendiriciler komşularıyla konuşuyor ve ağın haritasını kendileri çıkarıyor. Peki bir kutu, hiç görmediği bir hattın maliyetini nereden bilecek?
Bilgi kimde duruyor?
Algoritmanın gözünde ağ bir çizge. Düğümler yönlendiriciler, kenarlar da aralarındaki hatlar oluyor. Her kenarın bir maliyeti var; o maliyeti protokol hesaplamıyor, ağı işleten kişi elle belirliyor. Bütün kenarlara 1 verirsen en ucuz yol, en az atlamalı yol hâline geliyor. Maliyet bant genişliğiyle ters orantılı da tanımlanabilir, tıkanıklıkla ters orantılı da.
Bir paketin çıkış portu, yönlendirme tablosundan en uzun önek eşleşmesiyle bulunuyordu. O tabloyu dolduran hesap her yönlendiricide ayrı ayrı dönüyor; ortada işi dağıtan merkezî bir beyin bulunmuyor.
Link state (bağlantı durumu) algoritmalarında her yönlendirici topolojinin tamamını bilir. Bütün düğümler, bütün hatlar ve bütün maliyetler elindedir. Uzaklık vektörü algoritmalarında ise yönlendirici işe yalnızca doğrudan bağlı komşularının maliyetiyle başlar. Gerisini komşusundan duyar.
Komşunun tahminine güvenmek
Uzaklık vektörünün çekirdeğinde tek bir kural var ve kural tek cümleye sığıyor: bir hedefe en ucuz yolun maliyeti, her komşuya gitmenin bedeli ile o komşunun aynı hedefe biçtiği bedelin toplamıdır — hangi komşuda bu toplam en küçükse, yol oradan geçer.
Kuralın adı Bellman-Ford. Bir yönlendirici onu uygularken elinde iki sayı bulunur: komşuya giden hattın kendi maliyeti, ki bunu kendisi bilir, ve komşunun bildirdiği tahmin, ki bunu yalnızca duyar. İkincisini doğrulayamaz, çünkü komşusunun haritasını hiç görmez. Bütün zayıflık bu tek noktada toplanıyor: karar, doğrulanmamış bir sayıya dayanıyor.
Algoritma yinelemeli, eşzamansız ve kendi kendini durdurandır. Bir düğüm komşularına yalnızca kendi vektörü değiştiğinde haber verir. Haber gelmezse hiçbir işlem yapılmaz.
Maliyet düşerse yeni değer birkaç turda ağa oturur. Yükselmesi ise turlarca sürer. Yönlendirici komşusunun eski ucuz ilanına kanabilir; oysa o ucuz yol aslında kendi üzerinden geçmektedir.
Ortaya çıkan şeyin adı sayarak sonsuza gitme. İki komşu birbirinin tahminini birer birer artırır ve aralarında bir yönlendirme döngüsü kurulur. Döngü kendiliğinden kırılır. Ama çok yavaş kırılır.
Sayalım. Hedef ağa B doğrudan bağlı ve maliyeti 2; C aynı hedefe B üzerinden 3 maliyetle ulaşıyor. C’nin pahalı bir doğrudan hattı da var: 12. Şimdi B’nin hattı bozulup 30’a çıkıyor. B, C’nin 3’lük eski ilanına bakıp kendini 4 ilan ediyor ve sayı ikisi arasında birer birer tırmanıyor. Onuncu turda C kendi 12’lik hattına düşüyor, bir tur sonra B 13’te oturuyor. RIP’in 30 saniyelik sayacıyla bu on bir tur 330 saniye eder. Yani 5,5 dakika.
İki savunma geliştirildi. Split horizon (bölünmüş ufuk) iki kuraldan oluşur: bir yönlendirme mesajı, gönderildiği arayüzün alt ağ bilgilerini taşımaz; ve bir komşudan öğrenilen bilgi aynı arayüzden geri gönderilmez. Zehirli geri dönüş bir adım daha atar. Yönlendirici hedefe komşusu üzerinden gidiyorsa, o komşuya uzaklığını sonsuz ilan eder. Gerçek uzaklığını bilir, söylemez.
Bu genel bir çözüm sayılmaz. İki komşu arasındaki döngüyü keser, üç ya da daha fazla düğümü kapsayan döngüyü yakalayamaz.
Yakınsama, ağdaki bütün yönlendiricilerin bütün alt ağlar hakkında tam ve doğru bilgiye sahip olması demektir. Döngü sonsuz metriğe kadar sürerse yakınsama o kadar gecikir.
DerinleşmeSonsuz neden tam olarak 16 seçildi?
Tavan, sayarak sonsuza gitmeyi engellemiyor. Yalnızca ne zaman biteceğini söylüyor. Az önceki örnekte C’nin yedek hattı olmasa sayaç 4, 5, 6 diye 16’ya kadar çıkar ve 14 turda tavana çarpardı: 420 saniye, yani 7 dakika. Tavan hiç olmasaydı sayma da hiç durmayacaktı.
RFC 2453 bu değerin seçimini açık bir ödünleşim olarak yazar: hiçbir gerçek yolun ulaşamayacağı kadar büyük, ama gereğinden büyük olmayan bir sayı. Bir yanda ağın büyüyebileceği çap duruyor, öbür yanda yakınsama süresi. Sonsuzu 16 seçmek, RIP’e on beş atlamadan büyük bir ağ kurdurmamayı peşinen kabul etmektir. Sayı bir doğa sınırı değil, protokolün kendine ayırdığı zaman bütçesidir.
Aynı yerde başka bir seçim de yapılabilirdi. IGRP sonsuzu 4.294.967.295 alır ve çapı fiilen sınırlamaz; karşılığında saymanın kısa sürede tavana çarpma güvencesini bırakır. O sayıya kadar birer birer saymak, hiç durmamakla aynı kapıya çıkar. Aynı denklem, başka bir bedel.
RIP’i yürüten şey sayaçlarıdır
Uzaklık vektörünün en tanıdık uygulaması RIP. 1982’de BSD-UNIX dağıtımına dahil edildiği için yayıldı ve metrik olarak atlama sayısını kullanıyor. Bir yolun taşıyabileceği en büyük geçerli değer 15 atlamadır. 16 sonsuz demektir ve sayma orada durur.
Güncellemeler komşular arasında 30 saniyede bir gider; mesajın adı response, karşılığı ilandır. Tek bir mesaj en fazla 25 hedef alt ağ taşır. Biçim de küçüktür: 4 baytlık bir başlık ve her biri 20 baytlık kayıtlar. En büyük RIP mesajı 504 bayt eder, yani tipik bir Ethernet çerçevesinin üçte birinden azdır. RIP UDP tabanlıdır ve 520 numaralı portu kullanır. Tabloyu çekirdek değil, uygulama düzeyinde koşan routed adlı sıradan bir süreç yönetir.
Sayaç üç tanedir. Güncellemenin yanında 180 saniyelik geçersizlik ve Cisco uygulamasında 240 saniyelik temizleme durur. Ortadaki sayının gerekçesi RFC 2453’te yazılıdır. Zaman aşımı güncelleme aralığının altı katı seçilmiştir, çünkü tek bir kayıp mesaj yüzünden yol geçersiz kılınmamalıdır. Geçersiz kılınan yol da hemen silinmez: 120 saniyelik bir çöp toplama sayacı kurulur ve metriği 16’ya çekilerek komşulara ilan edilir.
Sayaçların bir de kilitlenme huyu var: aynı ağdaki yönlendiriciler zamanla aynı anda güncelleme göndermeye başlar. RFC 2453 bu yüzden ya yükten etkilenmeyen bir saat ya da her kurulumda 0-5 saniyelik rastgele bir kayma zorunlu tutar.
Yapılandırması iki komuttan ibarettir. Statik yolu yazarken gidilecek hedefi de maskesini de sen söylüyordun; burada yalnızca kendi ağlarını bildirirsin.
Kenar(config)# router rip
Kenar(config-router)# network 192.0.2.0
Kenar(config-router)# network 203.0.113.0Sürüm farkı tek cümlede kapanıyor. RIPv1 güncellemelerde alt ağ maskesini taşımaz, RIPv2 taşır. Maske adresi ağ ve makine parçasına bölüyordu; maskesiz bir ilan, /27 gibi bir ağı komşusuna hiç anlatamaz.
Aynı harita, ayrı ağaçlar
Link state’te (bağlantı durumunda) her yönlendirici kendi yerel durumunu bilir: hangi arayüzleri açık, hangi komşulara erişebiliyor. Bu yerel durumu sel yayılımıyla ağın tamamına dağıtır. Yayılan şey haritanın tamamı değil, yalnızca sezilen değişikliktir.
Yayılım bittiğinde herkesin elinde birebir aynı harita durur. Sonra herkes o haritadan kendi ağacını çıkarır. Dijkstra’nın döngüsü iki satırdır. Kesinleşmemiş düğümler arasından tahmini maliyeti en küçük olanı seç ve kümeye ekle. Sonra komşularının tahminlerini D(v) = min(D(v), D(w) + c(w,v)) ile güncelle.
Beş yönlendiricili bir örnek kurayım. Sekiz hattın maliyeti sırasıyla A-B 2, A-C 5, A-E 7, B-C 1, B-D 4, C-D 2, C-E 6 ve D-E 3 olsun. A’nın çıkardığı sonuç dört satır: B’ye 2 doğrudan, C’ye 3 (B üzerinden), D’ye 5 (yine B üzerinden), E’ye 7 doğrudan. Doğrudan A-C hattı 5 iken B üzerinden 3 çıkıyor. En kısa yol her zaman doğrudan hat olmuyor.
Aynı hesabı C yaptığında ağacın kökü değişir ve tablo başka satırlar taşır. Veritabanı ortaktır, ağaç kişiseldir.
Aynı veritabanından her yönlendiricinin kendi ağacını nasıl çıkardığını görelim:
- Herkes kendi hattını bilir. Üç yönlendiricinin elinde yalnızca kendi arayüzlerinin maliyeti var. A, C'ye giden 5 maliyetli hattını bilir; B ile C arasındaki 1 maliyetli hattan haberi yoktur.
- İlan sel yayılımıyla dağılır. Her yönlendirici kendi yerel durumunu alanın tamamına gönderir. Gönderilen şey tablonun tamamı değil, yalnızca sezilen değişikliktir.
- Üç veritabanı birebir aynı. Yayılım bittiğinde üç kutuda da aynı harita durur: aynı düğümler, aynı hatlar, aynı maliyetler. Ortak olan şey veritabanıdır.
- Herkes kendini kök alır. Aynı haritadan her yönlendirici ayrı bir en kısa yol ağacı hesaplar. Kök her seferinde hesabı yapan düğümün kendisidir.
- Tablolar farklı çıkıyor. A için C'ye giden yol B üzerinden 3 maliyetlidir; B için aynı hedef doğrudan 1 maliyetlidir. Tek veritabanından üç ayrı tablo çıkıyor.
OSPF bu haritayı nasıl taşıyor?
OSPF bu ailenin standart üyesidir ve adındaki Open sözcüğü belirtimin herkese açık olduğunu anlatır. Sürüm 2, RFC 2328’de tanımlıdır: J. Moy, Nisan 1998, STD 54. Belge protokolü tek bir otonom sistemin içinde çalışmak üzere tanımlar; otonom sistem, tek bir yönetimin altındaki ve dışarıya tek bir ağ gibi görünen yönlendirici kümesidir.
Taşıma tarafı RIP’ten ayrılıyor. OSPF doğrudan IP üzerinde koşar ve protokol numarası 89’dur. İki çoklu yayın adresi kullanır: 224.0.0.5’i OSPF koşan her yönlendirici dinler, 224.0.0.6’yı yalnızca atanmış yönlendirici ile yedeği dinler.
Komşuluk Hello protokolüyle kurulur. Yerel alan ağında Hello 10 saniyede bir gider, ölüm aralığı bunun dört katıdır: 40 saniye. NBMA ağlarda aynı çift 30 ve 120 saniyedir. Hello paketi yönlendirici kimliğini, alt ağ maskesini, alan kimliğini, önceliği ve iki zamanlayıcıyı taşır. Alan kimliği, maske ve zamanlayıcılar iki uçta aynı değilse komşuluk hiç kurulmaz. Kurulma da adım adımdır: Down, Init, Two-way, Exstart, Exchange, Loading, Full.
Yayın ağlarında bir atanmış yönlendirici ve onun yedeği seçilir; ilanları kendinde toplayıp dağıttığı için ağdaki mesaj sayısı düşer. Noktadan noktaya bağlantılarda böyle bir seçime gerek yoktur.
Ölçek büyüyünce otonom sistem alanlara bölünür. İlanlar yalnızca kendi alanında yayılır ve alan sınır yönlendiricileri kendi alanlarındaki uzaklıkları özetleyip omurgada ilan eder. Bir yönlendirici kendi alanının topolojisini ayrıntısıyla bilir; diğer alanlar için yalnızca yönü bilir. Alanlar arası bütün özetler omurga alanından geçer. Alan 0 diye anılır, kimlikler 32 bit olduğu ve IP adresi biçiminde yazıldığı için 0.0.0.0 diye de görülür.
Sessiz bir ağ da sessiz sayılmaz. RFC 2328 LSRefreshTime’ı 30 dakika, MaxAge’i bir saat, MinLSInterval’ı 5 saniye ve CheckAge’i 5 dakika olarak sabitler. İçerik hiç değişmese bile her ilan 1.800 saniyede bir yeniden üretilir. 50 yönlendiricili bir alanda bu, ortalama 36 saniyede bir ilan ve tam tazeleme turu başına 2.450 teslimat demektir.
Aynı hedefe iki protokol iki yol kurar
OSPF maliyetinin standart bir hesaplama kuralı yoktur. Cisco’nun varsayılanı 10^8 / bant genişliğidir ve cost 1 ile 65.535 arasında bir değer alır. Bir yolun metriği, yol üzerindeki bütün hatların cost toplamıdır. Formül 100 Mbit/s hattı cost 1, 10 Mbit/s hattı cost 10 yapar. 1 Gbit/s için ham sonuç 0,1’dir ama alt sınır 1 olduğu için gigabit hat ile fast ethernet aynı kefeye düşer. Formülün 100 Mbit/s üstünde gözü yoktur.
Şimdi aynı hedefe giden iki yolu yan yana koy.
| yol | atlama | RIP metriği | OSPF cost |
|---|---|---|---|
| iki adet 10 Mbit/s hat | 2 | 2 | 20 |
| üç adet 1 Gbit/s hat | 3 | 3 | 3 |
RIP birinciyi seçer, çünkü 2 sayısı 3’ten küçüktür ve hattın hızını hiç görmez. OSPF ikinciyi seçer, çünkü onun gözünde 3 maliyeti 20 maliyetinden ucuzdur. Aynı ağda, aynı hedefe, iki ayrı yol. Eşit maliyetli birden çok yol çıkarsa OSPF hepsini birden kullanır.
İkisi aynı cihazda birden koşuyorsa karar yönetimsel uzaklığa düşer ve küçük olan kazanır: OSPF 110, RIP 120. Tabloda kimin kazandığını satır başındaki harften okursun.
Kenar# show ip route
C 192.0.2.0/24 is directly connected, GigabitEthernet0/0
R 198.51.100.0/24 [120/2] via 203.0.113.2, 00:00:11, Serial0/0/0
O 203.0.113.64/26 [110/3] via 203.0.113.2, 00:04:52, Serial0/0/0show ip ospf database komutu ise haritanın kendisini listeler: Link ID, ilanı gönderen yönlendirici, ilanın yaşı, sıra numarası ve checksum. Durum çıktısındaki SPF sayacı da topolojinin ne sıklıkta değiştiğinin doğrudan ölçüsüdür.
Son fark dayanıklılıkta. Link state’te (bağlantı durumunda) bozuk bir yönlendirici en fazla kendi hatlarının maliyetini yanlış ilan eder; herkes kendi tablosunu ayrı hesapladığı için hata orada kalır. Uzaklık vektöründe bir düğümün vektörünü başkaları kullanır. Her yere çok ucuz yolu olduğunu söyleyen bir yönlendirici, bütün trafiği kendine çeker.
Özet
Peki, ne öğrendik?
- Uzaklık vektörü komşusuna inanır: Bellman-Ford denklemi komşunun tahminini kanıt görmeden kabul eder; yükselen bir maliyetin ağa yerleşmesi bu yüzden turlarca sürer.
- Sonsuz sonlu bir sayıdır: RIP’te 16 değeri saymayı durdurur ve aynı seçim ağın çapını on beş atlamayla sınırlar.
- Link state’te (bağlantı durumunda) ortak olan veritabanıdır: aynı haritadan her yönlendirici kendini kök alan ayrı bir ağaç çıkarır, tablolar bu yüzden farklıdır.
- Sayaçlar protokolün karakteridir: RIP 30 saniyede bir konuşur, OSPF 10 saniyede bir Hello gönderir ve 40 saniye susan komşuyu ölü sayar.
- Metrik seçimi yolu değiştirir: atlama sayan RIP ile bant genişliğine bakan OSPF aynı hedefe iki ayrı yol kurar.
Yönlendiriciler haritayı kendileri çıkardı ve kimse tek bir satır yazmadı. Peki bu kararın illa o kutuların içinde verilmesi mi gerekiyor?
40. bölüme devam et: Kontrol Düzlemi ve SDN