Ana içeriğe geç

Bölüm 24:Anahtarlama ve Ortam Erişimi

10 dakikalık okumaGüncelleme:

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
  1. Giriş
  2. Adres Çubuğundan İsteğe
  3. Paket Anahtarlamalı Yol
  4. İsimden Adrese
  5. Önbellek, Tazelik ve Güven
  6. Port Numarası ve Soket
  7. Bağlantısız Taşıma: UDP
  8. Üç Adımlı El Sıkışma
  9. Simetrik Şifreleme
  10. Açık Anahtarlı Kriptografi
  11. TLS El Sıkışması
  12. Sertifika Zinciri
  13. HTTP Mesajının Anatomisi
  14. Durum, Çerez ve Oturum
  15. HTTP/2'den HTTP/3'e
  16. İçerik Dağıtım Ağları
  17. Diğer Uygulama Protokolleri
  18. Katmanlı Mimari
  19. Kapsülleme ve Başlıklar
  20. Paket Yakalama ve Çözümleme
  21. Ağ Arayüz Kartı
  22. Fiziksel Adresleme
  23. Hata Sezme ve CRC
  24. Adres Çözümleme: ARP
  25. Anahtarlama ve Ortam Erişimi
  26. Ağ Topolojileri
  27. Sanal Yerel Ağlar
  28. Kablosuz Erişim: 802.11
  29. Radyo Kanalı ve Kapasite
  30. Kablosuz Ağ Güvenliği
  31. Hücresel Ağlar
  32. Spektrum ve Kuşaklar
  33. Hareketlilik ve Aktarma
  34. Adres Kiralama: DHCP
  35. Adresin Anatomisi
  36. Adres Tükenmesi ve IPv6
  37. Yönlendirici Mimarisi
  38. Kuyruk Yönetimi
  39. Cihaz Yapılandırma
  40. Yönlendirme Protokolleri
  41. Kontrol Düzlemi ve SDN
  42. Ağ İzleme ve Yönetimi
  43. Alanlar Arası Yönlendirme
  44. Adres Çevirisi
  45. Ara Kutular
  46. Tünelleme ve IPsec
  47. Güvenlik Duvarları
  48. Operatör ve Metro Ağları
  49. Bitten Sinyale
  50. Çoklama Teknikleri
  51. İletim Ortamları
  52. Kablo Sonlandırma
  53. Fiber Optik İletim
  54. Bakır Erişim Ağı: DSL
  55. Pasif Optik Ağlar
  56. Kablo Erişim Ağları
  57. Denizaltı Kabloları
  58. Veri Merkezi Ağları
  59. Kapsülleme Çözme
  60. Güvenilir Aktarım
  61. Tıkanıklık Denetimi
  62. Trafik Çözümleme
  63. Gecikme Bütçesi
  64. Son Söz

ARP isteği bütün ağa bağırıldığında o çerçeveyi gerçekten herkes duyuyordu. Duyanların sınırını kimin çizdiğini söylemedim.

Sınırı bir kural çizmiyor. Kablonun öbür ucundaki kutu çiziyor. Peki o kutu hangi çerçeveyi nereye göndereceğini nereden biliyor?

Tabloyu kim yazıyor?

Anahtar bir bağ katmanı cihazı ve hiç de edilgen bir kutu değil. Çerçeveyi alıyor, saklıyor, sonra iletiyor; kararını verirken de çerçevenin başına bakıyor.

Makinen çerçeveyi anahtara adreslemiyor; karşı makinenin fabrika adresini yazıyor ve arada bir cihaz durduğundan haberi bile olmuyor. Anahtar ağın görünmez elemanıdır.

Görünmez olduğu kadar da bakımsızdır. Kutuyu prize takar, kabloları geçirir, işine dönersin. Tablosunu kendi doldurur; hiçbir yönetici tek satır yapılandırmaz.

O tablonun her satırı üç alan taşıyor: bir MAC adresi, o adrese ulaşan arayüz ve kaydın zaman damgası. Standart metnindeki adı iletme veritabanı, sahadaki adı MAC adres tablosu.

Asıl numara satırın nereden geldiğinde. Anahtar hedef adresten hiçbir şey öğrenmez, kaynak adresten öğrenir. Gelen çerçevenin göndericisini alır, çerçevenin girdiği port numarasıyla eşler ve tabloya yazar. Konuşan herkes konuştuğu anda yerini ele veriyor.

Bunun için her port karışık modda çalışır. Yakalama arayüzünü açarken kartı bu moda almıştın; anahtarın portları zaten hep öyle durur. Kendisine gelmeyen çerçeveleri de alır, çünkü öğrenmesi gereken tam olarak onlardır. Kural çerçevenin başlığındaki kaynak adres; bazı anahtarlar bunun üstüne bir ARP çerçevesinin veri alanında duran adresi de okuyup tabloya ekler.

Mahalle bakkalı defterini nasıl tutuyorsa anahtar da tablosunu öyle tutuyor. Benzetme burada bir adım öteye gidiyor: bakkal sorup öğreniyordu, anahtar sormuyor bile.

Ölçek de dikkat ister. Adres alanı 48 bit, yani iki üzeri kırk sekiz kadar olası ad var. Bir anahtarın tablosu ise birkaç bin satır. Anahtar adres uzayını tutmuyor, yalnızca duyduklarını tutuyor.

Hedefi tanımıyorsa ne oluyor?

Çerçeve içeri girdiğinde sıra sabit: kaynak kaydı önce, hedef araması sonra. Aramanın üç sonucu var ve üçü de ayrı bir davranış üretiyor.

Hedef, çerçevenin geldiği portta görünüyorsa anahtar çerçeveyi hiç iletmez. Düşürür. İki makine aynı kabloda oturuyorsa birbirlerini zaten duymuşlardır; bu davranışın adı filtreleme.

Hedefin yeri biliniyorsa çerçeve tek bir kablodan çıkar. Ağın geri kalanı o trafiği hiç görmez. Anahtarın bütün değeri bu cümlede.

Hedef tabloda yoksa anahtar bilmediğini itiraf eder. Çerçeveyi geldiği port dışındaki bütün portlardan kopyalar. Bu davranışın adı flooding (taşkın). Kopya gönderene geri verilmez; kimse kendi çerçevesini geri almaz.

Bilinmeyen makine cevap verdiği anda çerçevesi anahtara girer, anahtar onun portunu öğrenir ve o adrese bir daha flooding (taşkın) yapmaz. Bilgisizlik tek bir çerçeve boyunca sürüyor.

Tablonun ilk çerçeveden başlayarak nasıl dolduğunu izleyelim:

Anahtar tablosunu tek bir çerçevede nasıl dolduruyor
makineleranahtariletmeveritabanıABCDE12345port numaralarıMAC adresiportkayıt00-00-5e-00-53-1c3dinamikaranan adres yoktaşkın: dört kopya00-00-5e-00-53-7b5dinamiktek kablodan
Önce gönderen yazılıyor. C çerçevesini 3. porttan veriyor. Anahtar hedefe bakmadan önce kaynak adresi alıp geldiği port numarasıyla eşliyor ve tablonun ilk satırını kendi yazıyor.
  1. Önce gönderen yazılıyor. C çerçevesini 3. porttan veriyor. Anahtar hedefe bakmadan önce kaynak adresi alıp geldiği port numarasıyla eşliyor ve tablonun ilk satırını kendi yazıyor.
  2. Hedef tabloda yok. Sıra aramaya geliyor. Aranan adres tabloda karşılık bulmuyor, çünkü o makine henüz tek bir çerçeve göndermedi; anahtar duymadığı kimseyi tanımıyor.
  3. Taşkın başlıyor. Çerçeve, geldiği port dışındaki bütün portlardan kopyalanıyor. Dört kablodan çıkıyor ve yalnızca biri hedefe varıyor. Gönderene geri verilmiyor.
  4. Cevap kayda dönüşüyor. E cevabını 5. porttan veriyor. Aynı kural yine işliyor: kaynak adres tabloya yazılıyor ve anahtar artık o adresin hangi kabloda olduğunu biliyor.
  5. Artık tek kablo yetiyor. Aynı hedefe giden sonraki çerçeve yalnızca 5. porttan çıkıyor. Öbür kablolar o trafiği hiç görmüyor ve o adres için bir daha taşkın yapılmıyor.

Bir çerçeve türü bu kuralın dışında kalıyor. Tümü bir olan FF-FF-FF-FF-FF-FF dizisi yayın adresiydi; o adrese giden çerçeve, tablo ne kadar dolu olursa olsun bütün portlarda kopyalanır. Anahtar yayını kesmez. ARP, anahtarın ardında da bağırarak çalışmayı sürdürür.

Kasten açık bıraktığım broadcast domain sınırının cevabı tam olarak burada duruyor. Ağda yalnızca hub, köprü ve anahtar varsa ortaya tek bir broadcast domain çıkıyor. O duvarı ancak yönlendirici örüyor.

Kayıtların bir de ömrü var. Bir adresten belli bir süre çerçeve gelmezse satır silinir; bu süreye yaşlanma süresi deniyor ve tipik değeri 5 dakika, yani 300 saniye. Süre ayarlanabiliyor, ders kitabı örneklerinde 60 dakikalık anahtarlar da geçiyor. Tabloya üç tür kayıt giriyor: dinamik, sürekli ve sınırlı statik. Dinamik olanlar kullanılmayınca silinir, kalan ikisi elle kaldırılır.

Bir anahtarın konsoluna girersen tabloyu tek komutla görebilirsin:

Switch# show mac-address-table

  MAC adresi          Port   Tür
  00-00-5e-00-53-1c   3      dinamik
  00-00-5e-00-53-7b   5      dinamik
  00-00-5e-00-53-a4   1      sürekli

Anahtar ağı neye böldü?

Anahtara giden her kablo kendi başına bir collision domain (çarpışma alanı). Bağlantı tam çift yönlü çalışıyor ve o kabloda çarpışma olmuyor. 24 portlu bir anahtar 24 collision domain ve tek broadcast domain demek.

Yerini aldığı cihaza bakınca fark keskinleşiyor. Hub bir porttan aldığı sinyali, o port hariç bütün portlara güçlendirerek kopyalar. Tablosu yoktur, kararı yoktur, seçeneği yoktur. 24 portlu bir hub’da tek çerçeve 23 gereksiz kopya üretir ve kutunun tamamı tek kocaman collision domain’e dönüşür.

Aynı çerçeve öğrenmiş bir anahtarda portların yalnızca %4,2’sini meşgul ediyor. Kalan yirmi üç kablo aynı anda başka konuşmalar taşıyor.

Tek bir kanalı paylaşmanın üç ailesi

Paylaşılan kabloda çözülmesi gereken problem tek cümleyle yazılıyor: N düğüm, tek bir kanal, ve aynı anda konuşan iki düğümün mesajı da bozuluyor. Sıra kimde? Yarım yüzyıllık literatür buna üç ayrı aile hâlinde cevap veriyor.

Kanalı bölmek. Kanalı baştan paylara ayırıp her düğüme kendi payını vermek. Zamanda bölersen TDMA, frekansta bölersen FDMA olur; çoklamaya indiğimizde ikisini de ayrıntısıyla göreceğiz. Adil ve çarpışmasız; ama bir düğümün payı, o düğüm susarken de kimseye açılmıyor. Tek bir düğüm konuşuyorsa kanalın 1/N’ini kullanabiliyor.

Rastgele erişim. Payı baştan dağıtma, isteyen istediği anda konuşsun; çarpışma olursa sonrasını kurala bağla. Az yükte muhteşem — tek konuşan kanalın tamamını alıyor. Yük arttıkça çarpışmalar çoğalıyor ve verim çöküyor.

Sıra alma. Bir düzenleyici sırayı dağıtsın (yoklama), ya da konuşma hakkı bir jeton gibi düğümden düğüme dolaşsın (jeton geçirme). İki ailenin iyi yanlarını birleştiriyor, karşılığında bir düzenleyiciye ya da dolaşan bir jetona bağımlı hâle geliyor. Halka topolojisini konuşurken ikincisini göreceğiz.

Ethernet ikinci aileden ve o ailenin tarihi tek bir soyağacı çiziyor.

ALOHA’dan CSMA/CD’ye: her adım bir kayıp kapatıyor

ALOHA, 1970’te Hawaii’de doğdu: verin varsa gönder, çarpışırsa rastgele bekleyip yeniden dene. Dinleme yok, kontrol yok. Analizi klasiktir ve verimi 1/(2e), yani yaklaşık %18. Kanalın beşte dördü boşa gidiyor.

Dilimli ALOHA tek bir kural ekliyor: gönderime ancak dilim sınırında başla. Böylece iki çerçeve ya tam çakışıyor ya hiç çakışmıyor; kısmi çakışmanın yarattığı israf kalkıyor. Verim 1/e, yani yaklaşık %37. Tek bir senkronizasyon kuralı verimi ikiye katlıyor.

CSMA bir adım daha atıyor: konuşmadan önce dinle. İnsan sohbetinin kuralı. Yine de çarpışma bitmiyor, çünkü sinyalin kabloda yol alması zaman alıyor: uzaktaki bir düğüm konuşmaya başlamış olabilir ve sen henüz duymamış olabilirsin. Çarpışma penceresi, iki uç arasındaki yayılım gecikmesi kadar.

CSMA/CD son adımı atıyor: konuşurken de dinle. Çarpışmayı fark ettiğin anda sus. ALOHA bütün çerçeveyi boşa gönderirken, CSMA/CD birkaç mikrosaniye sonra kesiyor.

Paylaşılan kablonun kuralı bu sonuncusuydu ve dört adımda yürüyordu: hattı dinle, boşsa gönder, gönderirken sezmeye devam et, başka bir iletim duyarsan kes. Kesen kart bir karıştırma sinyali yolluyor, sonra ikili üstel geri çekilmeye giriyor: rastgele bir süre bekleyip yeniden deniyor. Algoritma 1.024 ayrı geri çekilme süresi ayırt ediyor ve kart bir çerçeveden ancak 16 ardışık çarpışmadan sonra vazgeçiyor.

64 baytlık asgari çerçeve nereden çıktı?

Kitap boyunca Ethernet’in en küçük çerçevesini 64 bayt diye kullandık ve bu sayıyı hiç gerekçelendirmedim. Gerekçesi tam olarak burada, çarpışma sezmede.

Bir kartın çarpışmayı fark edebilmesi için, çarpışma haberi kendisine döndüğünde hâlâ gönderiyor olması gerekiyor. Aksi hâlde çerçeveyi bitirip işine döner, çarpışmadan hiç haberi olmaz ve veri sessizce kaybolur. Şart bu yüzden zamansal:

gönderim süresi ≥ 2 × en uzak iki düğüm arasındaki yayılım gecikmesi

Sağdaki değere dilim süresi deniyor. 10 Mbit/s’lik klasik Ethernet’te, tekrarlayıcılar dahil azami 2.500 metrelik bir ağ için bu süre 51,2 µs olarak sabitlendi. Şimdi soldaki tarafa çevir:

10.000.000 bit/s × 51,2 µs = 512 bit = 64 bayt

İşte o kadar. Asgari çerçeve boyu bir veri kararı değil, ışığın kabloda ne kadar yavaş gittiğinin sonucu. Kırk baytlık bir onay paketi niçin dolguyla 64 bayta tamamlanıyordu? Sebebi kırk yıl önceki bir kablonun uzunluğu.

Geri çekilmedeki 1.024 sayısı da aynı yerden geliyor: bekleme süresi dilim süresinin katları cinsinden ölçülüyor ve 2^10 en fazla kaç dilim beklenebileceğini söylüyor.

Sayı hızla birlikte büyümek zorundaydı, çünkü hız artınca aynı 512 bit çok daha kısa sürede çıkıyor. 100 Mbit/s’te mesafe kısaltılarak çözüldü; 1 Gbit/s’te ise başka bir çare bulundu — çerçevenin arkasına, çarpışma penceresi dolana kadar anlamsız bit eklemek. Yöntemin adı taşıyıcı uzatma ve tam çift yönlü kip yaygınlaşınca kimse kullanmadı.

Tam çift yönlü kip geldiğinde bu kuralın dayanağı kalmadı. Aynı kabloda çarpışma diye bir olay olmayınca CSMA/CD standartta durmayı sürdürdü ama fiilen devre dışı kaldı.

DerinleşmeHub neden öldü, ve öldüğü gün çarpışmaya ne oldu?

Ethernet 1973’te Xerox PARC’ta doğdu. Robert Metcalfe ve David Boggs koaksiyel kablo üzerinde önce 2,94 Mbit/s, sonra 10 Mbit/s taşıdılar. O kabloya bağlı bütün düğümler tek bir collision domain’deydi, çünkü ortam gerçekten paylaşılıyordu. Hub o dünyanın cihazıydı ve kendi başına hiçbir suç işlemiyordu.

Çarpışmanın bir arıza sayılmaması da buradan geliyor. Yarım çift yönlü paylaşımlı bir kanalda iki kartın aynı anda konuşması beklenen bir olaydı; tasarımın yaptığı tek şey sonrasını kurala bağlamaktı. Geri çekilme aralığının 1.024 ayrı değere bölünmesi bile o dünyanın ölçüsünü taşıyor: tekrarlayıcıyla bağlanmış çok segmentli bir yerel ağın azami istasyon sayısı da aynı sebeple 1.024.

Koşul, kart aynı anda hem gönderip hem alabilir hâle gelince ortadan kalktı. 10 Mbit/s’lik bir hattın kullanılabilir bandı 20 Mbit/s’ye çıktı ve hub’ın rekabet edecek bir tarafı kalmadı.

Anahtar ile hub arasındaki farkın altında özel donanım var. Anahtar çerçeveyi genel amaçlı bir işlemcide değil, ASIC denen özel bir yongada yönlendiriyor; gecikmenin mikrosaniyeyle ölçülmesinin sebebi bu. Yongaya çerçevenin ne kadarını okutacağın ise bir tercih. Sakla-ve-ilet tamamını alıp CRC’sini denetler, kes-ve-ilet yalnızca hedef adresi okuyup yola koyulur, parçasız iletme (fragment-free) ilk 64 baytı bekler.

Küçük bir ev anahtarının veri sayfası bu tercihleri sayıya çeviriyor. MAC adres veritabanı 4.000 giriş, toplam paket tamponu 128 KB. İç gecikme 10 Mbit/s portta 30 µs, 100 Mbit/s portta 6 µs, 1000 Mbit/s portta 4 µs. Port başına iletme hızı da sırasıyla 14.800, 148.800 ve 1.480.000 paket.

Ortadaki sayı tesadüf değil. En küçük çerçeve telde 84 bayt, yani 672 bit yer kaplıyordu; aynı kanal maliyeti 100 Mbit/s’de saniyede 148.809 çerçeve veriyor. Veri sayfasındaki 148.800 tam bu sayı.

Bütün portlar aynı anda tam yüklenirse iç elektronik yetişemeyip çerçeve düşürebilir; buna bloklama, yetişebilene bloklamayan anahtar deniyor.

Flooding (taşkın) ne zaman kusura dönüşür?

Tablonun bir sınırı olduğunu söylemiştim; saldırgan da bunu biliyor. Anahtar zehirleme saldırısı sahte kaynak adresli çok sayıda çerçeveyle tabloyu doldurur, gerçek adreslere yer bırakmaz. O noktadan sonra anahtar her şeyi flooding’e (taşkına) verir. Anahtarlı ağda dinleme zorlaşıyor ama bitmiyor. Tabloda kaydı olmayan hedefler ile yayın çerçeveleri hâlâ herkese ulaşıyor.

Savunması port güvenliği. Bir porta kaç MAC adresinin ilişkilendirilebileceğini sınırlarsın; sınır aşılınca port askıya alınır, gelen veri yok sayılır ya da port tümden kapatılır.

İkinci tuzak kabloda. İki anahtar arasına yedek olsun diye ikinci bir bağlantı çekmek makul bir fikir gibi durur. Sonucu döngü yolu oluyor. Döngüye giren çerçeve sonsuza dek dolaşır, trafik hattın azami hızına tırmanır ve ağ doyar.

Kapalı bir makineye yollanan tek bir çerçeve bunu başlatmaya yetiyor. Adres hiçbir anahtarın tablosunda karşılık bulmaz, her anahtar onu flooding’le (taşkınla) çoğaltır ve döngü varsa kopyalar birikmeye başlar.

IEEE 802.1D bu yüzden Spanning Tree Protocol’ü (yayılan ağaç protokolü) tanımlıyor. Yedekli bağlantılar fiziksel olarak yerinde durur ama bazı portlar bloklanır, geriye tek bir etkin yol kalır. Köprüler birbirlerine BPDU adı verilen küçük mesajlar yolluyor; kimliği en küçük olan kök köprü seçiliyor. Kimlik, varsayılanı 32.768 olan öncelik değeri ile cihazın MAC adresinin birleşimi.

Bir port beş durumdan birinde bulunur: bloklama, dinleme, öğrenme, gönderme, kapama. Özgün protokolde dinleme ve öğrenme 30 saniye sürüyordu; bir kablo koptuğunda ağın kendine gelmesi yarım dakikayı buluyordu. Hızlı sürümü 2 saniyede bir BPDU yollayarak topolojiyi izliyor, yol koptuğunda bloklu portu açıyor.

Buraya kadar ayrı ayrı gördüğün şeyler tek bir arayüz çıktısında yan yana duruyor. MTU paketin üst sınırını çiziyordu; anahtarın portunda o sınır da, spanning tree durumu da, flooding (taşkın) anahtarı da ayrı birer satır:

Switch# show interface fastethernet 0/2

  MTU 1500 bayt
  Spanning tree durumu: gönderme
  Bilinmeyen tekli yayın flooding'i: açık

Özet

Peki, ne öğrendik?

  • Anahtar kendi öğreniyor: tablosunu kaynak adreslerden kurar, tak-çalıştır çalışır, ve her satırında bir adres, bir arayüz, bir zaman damgası tutar.
  • Üç karar veriyor: hedef aynı porttaysa çerçeveyi düşürür, yeri biliniyorsa tek kablodan yollar, bilinmiyorsa bütün portlara kopyalar.
  • Flooding (taşkın) bilgisizliğin bedeli: yalnızca bir çerçeve sürer, ama yayın adresine giden çerçevelerde hiç bitmez.
  • Anahtar çarpışmayı böler, yayını bölmez: port sayısı kadar collision domain üretir ve hepsini tek bir broadcast domain’in içinde bırakır.
  • Ethernet rastgele erişim ailesinden gelir: ALOHA %18, dilimli ALOHA %37 verim verirken CSMA dinlemeyi, CSMA/CD ise konuşurken dinlemeyi ekledi; her adım bir israfı kapattı.
  • 64 bayt bir veri kararı değil: çarpışmayı sezebilmek için çerçevenin, haberi geri dönene kadar sürmesi gerekiyordu ve 10 Mbit/s × 51,2 µs tam olarak 512 bit eder.
  • Yedeklilik denetimsiz kurulmuyor: ikinci bir kablo döngü demektir ve Spanning Tree Protocol (yayılan ağaç protokolü) protokolü olmadan ağ kendi kopyalarında boğulur.

Anahtar artık kimin hangi kabloda olduğunu biliyor ve ağı senin adına parçalara ayırdı. Ama o kabloları kimse rastgele çekmedi. Binadaki her prizin bu kutuya nasıl ulaştığının bir düzeni var; peki o düzenin adı ne?

25. bölüme devam et: Ağ Topolojileri