Ana içeriğe geç

Bölüm 26: Ortam Erişimi: CSMA/CD

6 dakikalık okumaGüncelleme:

Ağlar'a “Sen”i Katmak kitabının bir bölümü: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine inip karşı taraftan geri dönen uzun bir teknik yolculuk.

Kısım 4: Makineden Yerel Ağa (Bölüm 18-29)

Tüm bölümler
  1. Giriş
  2. Adres Çubuğundan İsteğe
  3. Paket Anahtarlamalı Yol
  4. İsimden Adrese
  5. DNS Kayıtları
  6. Önbellek, Tazelik ve Güven
  7. Port Numarası ve Soket
  8. Bağlantısız Taşıma: UDP
  9. Üç Adımlı El Sıkışma
  10. Simetrik Şifreleme
  11. Açık Anahtarlı Kriptografi
  12. TLS El Sıkışması
  13. Sertifika Zinciri
  14. HTTP Mesajının Anatomisi
  15. Durum, Çerez ve Oturum
  16. HTTP/2'den HTTP/3'e
  17. İçerik Dağıtım Ağları
  18. Diğer Uygulama Protokolleri
  19. Katmanlı Mimari
  20. Hizmet ve Protokol
  21. Encapsulation ve Başlıklar
  22. Paket Yakalama ve Çözümleme
  23. Ağ Interface Kartı
  24. Fiziksel Adresleme
  25. Hata Sezme ve CRC
  26. Adres Çözümleme: ARP
  27. Ortam Erişimi: CSMA/CD
  28. Switch'ler
  29. Ağ Topolojileri
  30. Sanal Yerel Ağlar
  31. Kablosuz Erişim: 802.11
  32. Radyo Kanalı ve Kapasite
  33. Kablosuz Ağ Güvenliği
  34. Hücresel Ağlar
  35. Spektrum ve Kuşaklar
  36. Hareketlilik ve Aktarma
  37. Adres Kiralama: DHCP
  38. Adresin Anatomisi
  39. Adres Tükenmesi ve IPv6
  40. Router Mimarisi
  41. Kuyruk Yönetimi
  42. Cihaz Yapılandırma
  43. Routing Protokolleri
  44. Kontrol Düzlemi ve SDN
  45. Ağ İzleme ve Yönetimi
  46. Alanlar Arası Routing
  47. Adres Çevirisi
  48. Ara Kutular
  49. Tünelleme ve IPsec
  50. Firewall'lar
  51. Ağ Saldırıları
  52. Operatör ve Metro Ağları
  53. Bitten Sinyale
  54. Sembol Hızı ve Kanal Kapasitesi
  55. Multiplexing Teknikleri
  56. İletim Ortamları
  57. Bakır Kablo Sonlandırma
  58. Fiber Sonlandırma
  59. Fiber Optik İletim
  60. Bakır Erişim Ağı: DSL
  61. DSL'de Hız ve Mesafe
  62. Pasif Optik Ağlar
  63. Kablo Erişim Ağları
  64. Kablo Modem ve CMTS
  65. Denizaltı Kabloları
  66. Veri Merkezi Ağları
  67. Encapsulation Çözme
  68. Güvenilir Aktarım
  69. Tıkanıklık Denetimi
  70. Trafik Çözümleme
  71. Gecikme Bütçesi
  72. Soket Programlama
  73. Eşten Eşe ve Protokol Tasarımı
  74. Uyarlanır Video Akışı
  75. Gerçek Zamanlı Ses ve Görüntü
  76. Kablosuz Sensör Ağlarının Mimarisi
  77. Sensör Ağlarında Ortam Erişimi
  78. Sensör Ağlarında Yönlendirme ve IP
  79. Zaman Eşitleme ve Konum Bulma
  80. Sensör Ağı Uygulamaları
  81. Mobil Kablosuz Sensör Ağları
  82. Son Söz

Ethernet’in ilk yıllarında “herkes” kelimenin tam anlamıyla herkesti. Bütün kartlar aynı kabloya bağlıydı ve kabloya konan her frame, o kablodaki her kartın önünden geçiyordu.

Herkesin her şeyi duyduğu bir kabloda asıl sorun duymak değil, konuşmak. İki kart aynı anda konuşmaya başlarsa ne oluyor ve sıra kime, nasıl veriliyor?

Aynı kabloyu paylaşmak

Klasik Ethernet’te kartlar tek bir koaksiyel kabloya boncuk gibi dizilirdi. Bir kart gönderdiğinde sinyal kablonun iki ucuna doğru yayılıyor ve yol üstündeki her karta ulaşıyordu; her kart frame’in hedef adresine bakıp kendisine ait olmayanı atıyordu. 25. bölümdeki ARP isteğinin herkese ulaşması bu yüzden özel bir çaba istemiyordu. Kablonun doğası buydu.

Kablo sonradan bükümlü çifte geçtiğinde görünüş değişti, öz değişmedi. Kartlar artık ortadaki bir hub’a bağlanıyordu. Hub bir porttan aldığı sinyali, o port hariç bütün portlara güçlendirerek kopyalar. Tablosu yoktur, kararı yoktur, seçeneği yoktur. Kablolar yıldız biçimini aldı ama ortam hâlâ tek parçaydı.

Tek parça ortamın kuralı basit: aynı anda yalnızca bir kart konuşabilir. İki kartın sinyali kabloda üst üste binerse ikisi de bozulur; bu olaya collision (çarpışma) deniyor. Aynı collision’a düşebilecek kartların oluşturduğu alanın adı collision domain. Koaksiyel Ethernet’te kablonun tamamı, hub’lı bir ağda hub’a bağlı bütün kartlar tek bir collision domain’dir.

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

Paylaşılan kabloda çözülmesi gereken problem şu: 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; 54. bölümde multiplexing’e indiğimizde ikisini de ayrıntısıyla göreceğiz. Adil ve collision olmadan; 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; collision 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 collision’lar ç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. 28. bölümde 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 frame 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 (Carrier Sense Multiple Access) bir adım daha atıyor: konuşmadan önce dinle. Adındaki carrier sense, hatta başka birinin sinyali olup olmadığını dinlemek demek; insan sohbetinin kuralı. Yine de collision bitmiyor, çünkü sinyalin kabloda yol alması zaman alıyor: uzaktaki bir düğüm konuşmaya başlamış olabilir ve sen henüz duymamış olabilirsin. Collision penceresi, iki uç arasındaki yayılım gecikmesi kadar.

CSMA/CD son adımı atıyor: konuşurken de dinle. Sondaki CD, collision detection; collision’u fark ettiğin anda sus. ALOHA bütün frame’i 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 frame’den ancak 16 ardışık collision olmadan sonra vazgeçiyor.

64 baytlık asgari frame nereden çıktı?

Kitap boyunca Ethernet’in en küçük frame’ini 64 bayt diye kullandık ve bu sayıyı hiç gerekçelendirmedim. Gerekçesi burada, collision sezmede.

Bir kartın collision’u fark edebilmesi için, collision haberi kendisine döndüğünde hâlâ gönderiyor olması gerekiyor. Aksi hâlde frame’i bitirip işine döner, collision olmadan 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, repeater’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 frame boyu bir veri kararı değil, sinyalin 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: frame’in arkasına, collision penceresi dolana kadar anlamsız bit eklemek. Yöntemin adı taşıyıcı uzatma (carrier extension) 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 collision diye bir olay olmayınca CSMA/CD standartta durmayı sürdürdü ama fiilen devre dışı kaldı.

DerinleşmeHub neden öldü, öldüğü gün collision'a 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, 1990’da bükümlü çifte geçen Ethernet’te aynı paylaşımı sürdüren cihazdı ve kendi başına hiçbir suç işlemiyordu.

Collision’un 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: repeater’la 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ı.

Özet

  • Paylaşılan ortamda herkes her şeyi duyar: koaksiyel Ethernet’te kablo, hub’lı ağda hub tek bir collision domain’dir ve aynı anda yalnızca bir kart konuşabilir.
  • Çoklu erişimin üç ailesi var: kanalı bölmek, rastgele erişim ve sıra alma; Ethernet ikinci aileden gelir.
  • Her adım bir israfı kapattı: ALOHA %18, dilimli ALOHA %37 verim verirken CSMA dinlemeyi, CSMA/CD ise konuşurken dinlemeyi ekledi.
  • 64 bayt bir veri kararı değil: collision’u sezebilmek için frame’in, haberi geri dönene kadar sürmesi gerekiyordu ve 10 Mbit/s × 51,2 µs = 512 bit eder.
  • Tam çift yönlü kip collision’u bitirdi: kart aynı anda gönderip alabilince CSMA/CD standartta kaldı ama fiilen devre dışı kaldı.

Paylaşılan kabloda sıra bir kuralla dağıtılıyordu ve her collision bir bekleme demekti. Bugün kabloların çoğunun öbür ucunda hub değil, frame’i yalnızca gereken kabloya veren bir kutu duruyor. Peki o kutu hangi frame’i nereye göndereceğini nereden biliyor?

27. bölüme devam et: Switch'ler