Bölüm 26: Ortam Erişimi: CSMA/CD
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
- Giriş
- Adres Çubuğundan İsteğe
- Paket Anahtarlamalı Yol
- İsimden Adrese
- DNS Kayıtları
- Ö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
- Hizmet ve Protokol
- Encapsulation ve Başlıklar
- Paket Yakalama ve Çözümleme
- Ağ Interface Kartı
- Fiziksel Adresleme
- Hata Sezme ve CRC
- Adres Çözümleme: ARP
- Ortam Erişimi: CSMA/CD
- Switch'ler
- 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
- Router Mimarisi
- Kuyruk Yönetimi
- Cihaz Yapılandırma
- Routing Protokolleri
- Kontrol Düzlemi ve SDN
- Ağ İzleme ve Yönetimi
- Alanlar Arası Routing
- Adres Çevirisi
- Ara Kutular
- Tünelleme ve IPsec
- Firewall'lar
- Ağ Saldırıları
- Operatör ve Metro Ağları
- Bitten Sinyale
- Sembol Hızı ve Kanal Kapasitesi
- Multiplexing Teknikleri
- İletim Ortamları
- Bakır Kablo Sonlandırma
- Fiber Sonlandırma
- Fiber Optik İletim
- Bakır Erişim Ağı: DSL
- DSL'de Hız ve Mesafe
- Pasif Optik Ağlar
- Kablo Erişim Ağları
- Kablo Modem ve CMTS
- Denizaltı Kabloları
- Veri Merkezi Ağları
- Encapsulation Çözme
- Güvenilir Aktarım
- Tıkanıklık Denetimi
- Trafik Çözümleme
- Gecikme Bütçesi
- Soket Programlama
- Eşten Eşe ve Protokol Tasarımı
- Uyarlanır Video Akışı
- Gerçek Zamanlı Ses ve Görüntü
- Kablosuz Sensör Ağlarının Mimarisi
- Sensör Ağlarında Ortam Erişimi
- Sensör Ağlarında Yönlendirme ve IP
- Zaman Eşitleme ve Konum Bulma
- Sensör Ağı Uygulamaları
- Mobil Kablosuz Sensör Ağları
- 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 gecikmesiSağ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