Bölüm 76: Sensör Ağlarında Ortam Erişimi
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 12: Kablosuz Sensör Ağları (Bölüm 75-80)
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
İki yolu var. Ya herkes aynı anlarda uyanmayı önceden kararlaştırır, ya da gönderen, alıcı kendiliğinden uyanıp kulak verene kadar seslenip durur. Sensör ağlarının ortam erişim protokolleri, yani MAC’leri, bu iki fikrin ve ikisinin karışımlarının tarihi.
30. bölümdeki Wi-Fi’ın ortam erişimi başka bir soruyu cevaplıyordu: havayı paylaşanlar birbirinin üstüne konuşmasın. Burada o soru hâlâ var ama asıl soru şu: radyo ne zaman kapalı kalabilir?
Önce enerjinin nereye kaçtığını sayalım.
Enerji nereye gidiyor?
2002’de yayımlanan ve bu alandaki ilk etkili MAC protokollerinden birini, S-MAC’i tanıtan makale enerji israfının dört kaynağını saydı. Sonraki bütün tasarımlar bu listeye göre kendini tanımladı:
| Kaynak | Ne oluyor |
|---|---|
| boşta dinleme | radyo açık, ama gelen bir şey yok |
| çarpışma | iki paket üst üste bindi, ikisi de yeniden gönderilecek |
| kulak misafirliği | radyo, başkasına giden bir paketi baştan sona dinliyor |
| denetim yükü | RTS, CTS, onay ve zamanlama paketleri veri taşımıyor ama enerji yiyor |
Listenin başındaki kalem açık ara en pahalısı. 75. bölümde gördüğün CC2420 radyosu alırken 18,8 miliamper çekiyordu ve bu akım, gelen bir şey olsa da olmasa da ödeniyor. Trafiğin seyrek olduğu bir sensör ağında radyonun açık kaldığı sürenin neredeyse tamamı boşta dinlemeyle geçer. Bu yüzden bütün stratejiler aynı yere varıyor: radyoyu kapat. Zor olan, kapalıyken ulaşılabilir kalmak.
802.15.4’ün kendi erişim yöntemi
802.15.4’ün temel erişim kuralı Wi-Fi’ınkine benziyor ama enerji için iki yerde ayrışıyor. Koordinatörün işaret yaymadığı kipte, yani dilimsiz CSMA-CA’da kural şöyle:
- Gönderecek bir frame’i olan düğüm, 0 ile 2^BE − 1 arasında rastgele bir sayı çekiyor. BE başta 3. Her birim 20 sembol, 2,4 GHz’te 320 mikrosaniye.
- O kadar bekliyor. Beklerken radyoyu dinlemiyor; kapatabiliyor.
- Bekleme bitince kanala bir kez bakıyor. Bu bakış 8 sembol, yani 128 mikrosaniye sürüyor.
- Kanal boşsa gönderiyor. Doluysa BE’yi birer birer 5’e kadar artırıp baştan başlıyor. Beşinci denemede de kanal doluysa gönderim başarısız sayılıyor.
İlk denemede bekleme 0 ile 2,24 milisaniye arasında, en geniş pencerede 0 ile 9,92 milisaniye arasında. Onay istenmişse ve gelmezse frame en fazla üç kez daha deneniyor.
İlk fark ikinci adımda. 30. bölümde Wi-Fi’ın geri çekilme sayacının kanal dolunca donduğunu, boşalınca kaldığı yerden devam ettiğini görmüştün. Bunun için radyonun bekleme boyunca kanalı dinlemesi gerekiyor. 802.15.4 bu dinlemeyi kaldırdı: bekleme süresince radyo uyuyabiliyor ve kanala yalnızca sonunda bakıyor. Bedeli adalette. Donmayan sayaç, uzun süredir bekleyen düğüme öncelik tanımıyor. İkinci fark, RTS ve CTS’in hiç olmaması. Frame’ler zaten kısa; onları ayırtmak için ayrı bir konuşma, taşıdıkları veriye oranla fazla pahalı.
Standardın bir de işaretli kipi var. Koordinatör düzenli aralıklarla bir işaret frame’i yayıyor ve iki işaret arası bir süper çerçeveye bölünüyor. Süper çerçevenin başındaki etkin kısımda 16 dilim var. Bunların çoğu yarışmalı erişime açık, sondaki birkaçı ise tek tek cihazlara ayrılabiliyor; bu garantili zaman dilimleri en fazla yedi tane. Etkin kısım bitince herkes bir sonraki işarete kadar uyuyor.
Uyuma oranını iki sayı belirliyor. İşaret aralığı 15,36 ms × 2^BO, etkin kısım 15,36 ms × 2^SO. BO = 8 ve SO = 2 seçilirse işaretler 3,93 saniyede bir geliyor, etkin kısım 61,44 ms sürüyor ve radyo zamanın yalnızca 64’te birinde, yaklaşık %1,6’sında açık kalıyor.
Eşzamanlı uyku: S-MAC ve T-MAC
İşaretli kip tek bir koordinatörün çevresinde çalışıyor. Çok sekmeli bir ağda herkesin aynı programa uyması başka bir düzenek istiyor. S-MAC’in çözümü, komşuların uyku programlarını birbirine duyurması. Düğümler kısa zamanlama paketleriyle “ben şu anda uyanıyorum” diyor ve komşular aynı programa katılıyor. Herkes aynı anda uyanıyor, aynı anda uyuyor. Uyanık kısımda RTS ve CTS ile konuşuluyor; kendisine gelmeyen bir RTS ya da CTS duyan düğüm o konuşma bitene kadar hemen uyuyor ve kulak misafirliğinden kurtuluyor.
Sabit bir program, örneğin zamanın %10’unda uyanık kalmak, trafiğin olmadığı saatlerde bile aynı enerjiyi harcıyor. Bir de gecikme bedeli var. Bir paket bir sekmede ilerledikten sonra bir sonraki düğüm uyuyor olabilir. Paket onun uyanmasını bekliyor ve bu bekleme her sekmede tekrarlanıyor. Çok sekmeli bir yolda gecikme sekme sayısıyla birlikte uyku süresinin katlarına çıkıyor.
2003’teki T-MAC sabit programı esnetti. Uyanık kısmın sonunu bir zaman aşımı belirliyor: bir süre hiçbir şey duyulmazsa düğüm erkenden uyuyor. Trafik azken enerji kazancı büyük. Yeni bir sorun doğdu: bir düğüm, kendisine gönderilmek üzere olan bir paketi haber alamadan uykuya dalabiliyor. Adı erken uyuma.
Eşzamansız uyku: düşük güçlü dinleme
Programları eşleştirmek hem denetim trafiği hem saat hassasiyeti istiyor. İkinci yol eşleştirmeyi tamamen bırakıyor. Her düğüm kendi ritmiyle, örneğin her 100 milisaniyede bir, birkaç milisaniyeliğine uyanıyor ve kanalda bir enerji var mı diye bakıyor. Yoksa hemen uyuyor. Buna düşük güçlü dinleme deniyor.
Gönderen, alıcının ne zaman uyanacağını bilmediği için ona denk gelene kadar sesleniyor. 2004’teki B-MAC bunu en düz hâliyle yapıyor: verinin önüne, alıcının uyanma aralığından uzun bir önsöz koyuyor. Alıcı ne zaman uyanırsa uyansın önsözün bir kısmına denk geliyor, uyanık kalıyor ve arkasından gelen veriyi alıyor. B-MAC uzun süre TinyOS’un varsayılan MAC’iydi.
Bedelin üç kalemi var. Gönderen her paket için bir uyanma aralığı boyunca konuşuyor. Veri her sekmede bir aralık kadar gecikiyor, çünkü önsöz bitmeden gönderilmiyor. En pahalısı da kulak misafirliği: önsözü duyan her komşu uyanık kalıyor, çünkü paketin kime gittiği ancak önsözün sonundaki veri başlığında yazıyor.
2006’daki X-MAC bu üç kalemi birden küçülttü. Tek uzun önsöz yerine kısa önsözler art arda gönderiliyor ve her birinin içinde alıcının adresi yazıyor. Aralarında kısa boşluklar var. Uyanan bir komşu ilk önsözde adresin kendisine ait olmadığını görüp hemen uyuyor. Hedef düğüm ise uyandığında bir boşlukta erken onay gönderiyor ve gönderen önsözleri kesip veriyi hemen yolluyor. Ortalamada önsözün yarısı hiç gönderilmiyor.
- Düğümler aralıklarla kısa uyanıyor. Hedef ve komşu, radyolarını her uyanma aralığında bir kez kısa süre açıp kanala bakıyor; bir şey duymazlarsa yeniden uyuyor. İkisinin uyanma anları birbirinden bağımsız ve gönderen onları bilmiyor.
- B-MAC: önsöz bütün aralığı kaplıyor. Hedef ne zaman uyanırsa uyansın onu yakalayabilmek için gönderen, bir uyanma aralığı boyunca kesintisiz önsöz gönderiyor. Veri ancak önsöz bitince gidiyor.
- B-MAC: uyanan herkes sona kadar bekliyor. Hedef önsözü duyunca uyanık kalıp veriyi bekliyor. Komşu da önsözü duyuyor ve paketin kime gittiği ancak verinin başlığında yazdığı için o da sonuna kadar uyanık kalıyor: kulak misafirliği.
- X-MAC: kısa ve adresli önsözler. Gönderen tek uzun önsöz yerine aralarında boşluk olan kısa önsözler gönderiyor; her birinde hedefin adresi var. Komşu uyandığında ilk tam önsözde adresin kendisine ait olmadığını görüp hemen uyuyor.
- X-MAC: erken onay, hemen veri. Hedef uyanınca bir sonraki önsözde adresini görüyor ve boşlukta erken onay gönderiyor. Gönderen önsözleri kesip veriyi hemen yolluyor. Önsözün kalanı hiç gönderilmiyor ve hedef de daha kısa süre uyanık kalıyor.
Contiki işletim sisteminin 2011’den beri varsayılanı olan ContikiMAC fikri bir adım daha ileri götürdü. Önsöz diye ayrı bir şey göndermiyor; veri frame’inin kendisini art arda yineliyor ve alıcı uyandığı anda doğrudan veriyi yakalıyor. İki numara daha ekledi. Uyanan düğüm kanalda bir enerji görür ama bir paket yakalayamazsa bunu gürültü sayıp hemen uyuyor. Gönderen de her komşunun uyanma zamanını öğreniyor ve bir sonraki paketi tam o andan az önce yollamaya başlıyor. Varsayılan ayarda düğümler saniyede 8 kez, yani 125 milisaniyede bir kanala bakıyor ve radyolar zamanın yaklaşık %99’unda kapalı kalıyor.
Tersini deneyen de oldu. 2008’deki RI-MAC’te gönderen susuyor, alıcı uyandığında “buradayım” diye kısa bir işaret yayıyor ve bekleyen gönderen ancak onu duyunca konuşuyor. Havayı uzun önsözler işgal etmediği için birçok gönderenin yarıştığı yoğun trafikte daha iyi davranıyor.
Uyanma aralığı neye göre seçilir?
Düşük güçlü dinlemenin tek ayarı uyanma aralığı ve doğru değeri trafik belirliyor. Bir örnek: her uyanış radyoyu açmak dahil 2 milisaniye sürsün ve düğüm dakikada bir paket göndersin. B-MAC gibi her paket için bir aralık boyunca konuşan bir gönderen düşünelim.
| Uyanma aralığı | Boşta dinleme payı | Gönderme payı | Toplam |
|---|---|---|---|
| 100 ms | %2,0 | %0,17 | %2,2 |
| 500 ms | %0,4 | %0,83 | %1,2 |
Seyrek trafikte aralığı uzatmak kazandırıyor: dinleme payı düşüyor, gönderme payının artışı onu telafi etmiyor. Trafik yoğunlaştıkça denge tersine dönüyor, çünkü gönderme payı paket sayısıyla büyüyor. Aralığı uzatmanın gizli bir bedeli de gecikme: her sekmedeki bekleme aralıkla birlikte uzuyor.
Zaman bölmeli ve kanal atlamalı: TSCH
Sanayide başka bir şey isteniyor. Bir vana kontrol döngüsünün verisi hem kesin bir sürede gelmek hem de neredeyse hiç kaybolmamak zorunda. Rastgele bekleme ve önsözler bu garantiyi veremiyor. Cevap, 54. bölümdeki zaman bölmeli çoğullamanın ağ çapındaki hâli: TSCH (Time-Slotted Channel Hopping). 2012’de 802.15.4’e eklendi, 2015’te standardın ana metnine girdi.
Bütün ağ ortak bir saatle çalışıyor; düğümlerin saatlerini birbirine nasıl eşitlediğini 78. bölümde göreceksin. Zaman dilimlere bölünüyor; bir dilim, bir frame ile onun onayına yetecek kadar ve uygulamalarda tipik olarak 10 milisaniye. Dilimler tekrarlayan bir dilim çerçevesi oluşturuyor ve her bağlantıya bu çerçevede sabit bir yer ayrılıyor: hangi dilimde ve hangi kanal kaydırmasıyla konuşulacağı. Bir düğüm yalnızca kendi dilimlerinde uyanıyor, geri kalan her an uyuyor. Ayrılmış dilimde başka kimse konuşmadığı için çarpışma yok.
Adın ikinci yarısı en zekice kısım. Ağ, açıldığından beri geçen dilimleri sayıyor; bu sayıya mutlak dilim numarası (ASN) deniyor ve beş baytlık bir sayaç. Her iletimin kanalı şu formülle seçiliyor:
kanal = F[ (ASN + kanal kaydırması) mod kanal sayısı ]Aynı bağlantı her tekrarında farklı bir frekansta konuşuyor. Bir kanaldaki Wi-Fi girişimi ya da 31. bölümde gördüğün çok yollu yayılımın yol açtığı sönümleme bir iletimi bozarsa, yeniden gönderim bambaşka bir frekansta yapılıyor ve aynı engele takılmıyor. Farklı kanal kaydırmaları sayesinde aynı dilimde birden çok bağlantı da aynı anda konuşabiliyor.
2007’de yayımlanan WirelessHART bu yaklaşımın sanayideki ilk büyük uygulamasıydı. IETF’in 6TiSCH çalışması da TSCH’nin üstüne IPv6’yı taşıyor. Zor soru, programı kimin yazacağı. Merkezi bir yönetici bütün ağın dilimlerini dağıtabiliyor; ya da her düğüm programını komşularının kimliklerinden kendisi türetebiliyor.
| Yaklaşım | Örnekler | Gücü | Zaafı |
|---|---|---|---|
| eşzamanlı uyku | S-MAC, T-MAC | kulak misafirliğini keser | program trafiğe uymaz, sekme başına bekleme |
| düşük güçlü dinleme | B-MAC, X-MAC, ContikiMAC | eşleştirme gerektirmez, basit | gönderen öder, yoğun trafikte zorlanır |
| alıcı başlatmalı | RI-MAC | havayı meşgul etmez | alıcının işaretleri de enerji yer |
| zaman bölmeli | TSCH, WirelessHART | kesin gecikme, çarpışmasız, girişime dayanıklı | saat eşitlemesi ve program gerekir |
DerinleşmeWi-Fi da uyuyabiliyor mu?
Evet, ama farklı bir sözleşmeyle. 30. bölümdeki access point, bağlı cihazlardan birinin uyuduğunu biliyorsa ona gelen frame’leri tamponda tutuyor. Her işaret frame’inde bekleyen verisi olan cihazların listesini yayımlıyor. Telefon yalnızca işaret anlarında uyanıp bu listeye bakıyor; adını görürse veriyi istiyor. Wi-Fi 6 bunu bir adım ileri götürdü: cihaz ile access point, bir sonraki uyanma zamanını baştan pazarlık edebiliyor. Bu sayede uzun süre sessiz kalan bir cihaz, her işareti dinlemek zorunda kalmıyor.
Fark, iki dünyanın varsayımında. Wi-Fi’da hep uyanık, prize takılı bir access point var ve bütün yükü o taşıyor. Sensör ağında öyle bir merkez çoğu zaman yok; her düğüm hem uyuyan hem başkası için uyanık kalması gereken bir aktarıcı. Sensör ağı MAC’lerinin karmaşıklığı bu simetriden geliyor.
Özet
- Enerjinin dört kaçağı: boşta dinleme, çarpışma, kulak misafirliği ve denetim yükü. Seyrek trafikte açık ara en büyüğü boşta dinleme.
- 802.15.4 beklerken dinlemez: geri çekilme süresince radyo uyur, kanala yalnızca sonunda bakılır. İşaretli kipte süper çerçevenin etkin kısmı bitince herkes uyur.
- Eşzamanlı uyku programı paylaşır: S-MAC herkesi aynı anda uyandırır, T-MAC trafik yoksa erken uyutur. İkisinin de bedeli sekme başına bekleme.
- Düşük güçlü dinlemede gönderen seslenir: B-MAC uzun önsözle, X-MAC adresli kısa önsözler ve erken onayla, ContikiMAC verinin kendisini yineleyerek.
- TSCH zamanı ve frekansı böler: her bağlantının dilimi belli, her yinelemede kanal değişiyor. Sanayi ağlarının kesin gecikme ve güvenilirliği buradan.
Komşunu uyandırmayı öğrendin. Ama veri tarladan binaya yirmi sekme ötede ve her düğüm yalnızca kendi komşularını tanıyor. Paketi hangi komşuya vereceğine düğüm neye bakarak karar veriyor? Ve bütün bu ağ, internete hangi dille bağlanıyor?
77. bölüme devam et: Sensör Ağlarında Yönlendirme ve IP