Ana içeriğe geç

Bölüm 32:Hareketlilik ve Aktarma

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

Otobüs kalkıyor ve sayfayı yeni açtın. Birkaç yüz metre sonra bağlandığın hücre değişecek, ama isteğin kopmayacak.

Kopmamasının sebebi şans değil. Hücreler arasında el değiştirmek yönetilen bir iş. Peki o devri kim yönetiyor?

Yer değiştirmek adresi neden bozuyor?

Hareketlilik tek bir durum adı taşımıyor; dört kademeli bir yelpaze oluşturuyor ve her kademenin bedeli farklı.

kademene oluyorzorluk
yerinde duruyorsunhiçbir şey değişmiyoryok
kapanıp başka ağda açılıyorsuntaşınacak oturum yokdüşük
aynı sağlayıcının hücreleri arasında geziyorsunaçık oturum taşınıyororta
sağlayıcı ağları arasında geçiyorsunoturum ve kimlik birlikte taşınıyoryüksek

Yelpazenin kolay ucunda ayakta tutulacak bir şey yok. Cihaz yeni yerde sıfırdan bağlanıyor. Zorluk oturum açıkken yer değiştirmekten doğuyor.

Kökü de adreste. Her IP adresi iki parça taşıyor: birinci parça hangi ağda olduğunu, ikinci parça o ağın neresinde olduğunu söylüyor. Adres yer bilgisi taşıdığı için yer değiştiren, adresini de değiştirmek zorunda kalıyor.

Bu tek başına felaket sayılmaz. Felaket, üstteki katmanın o adrese yaslanmasıyla başlıyor. Bir bağlantı soket four-tuple’ıyla tanınıyordu: kaynak IP, kaynak portu, hedef IP, hedef portu. Four-tuple’ın herhangi bir üyesi değişirse alıcı gelen segmenti aynı sokete yönlendiremiyor. Bağlantı kopmuş sayılıyor.

Somut bir vakaya bakalım. Tarayıcın 203.0.113.9:51820 adresinden 192.0.2.30:443 sunucusuna bağlandı. Başka bir alt ağa geçtiğin anda cihaza 198.51.100.7 düşüyor. Four-tuple’ın ilk üyesi değişti, kalan üçü aynı kaldı. Sunucudaki tabloda bu yeni four-tuple’ın karşılığı yok. Gelen segment bir sokete değil, bir RST yanıtına gidiyor.

Buradan yalnızca iki çıkış var. Ya ağ değişikliği gizler ve üst katman adresin değiştiğini hiç görmez, ya da bağlantı adresle tanınmaktan vazgeçer. Hücresel ağ birinci yolu seçti, QUIC ikinciyi.

Aktarmayı kim başlatıyor?

Aktarma, cihazın ağa bağlanma noktasının değişmesi. Cihaza giden veri akışı kaynak baz istasyonundan hedef baz istasyonuna aktarılıyor. Gerekçesi her zaman zayıflayan sinyal olmuyor. İkinci gerekçe yük: hedef daha az cihaz ve daha az trafik taşıyorsa karar onun lehine çıkabiliyor.

Bir hücresel baz istasyonu kulesinin tepesi: dikdörtgen panel antenler farklı yönlere bakacak biçimde direğe dizilmiş. Her panelin baktığı yön ayrı bir hücre demek, ve yürürken bağlantın bu panellerden biriyle diğeri arasında devrediliyor.

Kararı veren de cihaz değil. Hâlâ bağlı olduğun kaynak baz istasyonu hedefi seçiyor ve ona bir Handover Request iletisi gönderiyor. Cihazın işi ölçmek. Modülasyonu seçen 4 bitlik CQI raporu tanıdık; aynı rapor aktarma kararının da girdisi.

Rapor sürekli bir ölçek taşımıyor, basamaklı bir ölçek taşıyor. 4 bitlik alan 16 ayrı seviye kodluyor. Ölçmenin bir de pil bedeli var. LTE radyosu iletirken ya da almayı beklerken 1000-3500 mW harcıyor. Kapalıyken 15 mW’ın altına iniyor, yani açık hâlin %1 ile %2’si kadar.

Gelen rapor tek başına aktarmayı başlatmaya yetmiyor. Cihaz komşu hücreyi kendi hücresinden bir tık iyi buldu diye karar tetiklenmiyor; komşunun belirgin biçimde iyi olması ve bu üstünlüğün bir süre devam etmesi aranıyor. Aradaki paya histerezis deniyor ve olmadığında iki hücrenin sınırında duran bir telefon aralarında gidip geliyor. Her gidiş gelişte yeni bir aktarma yükü doğuyor; sahadaki adı ping-pong aktarma.

Hedef baz istasyonu, cihaz daha oraya geçmeden radyo zaman dilimlerini ayırıyor ve gereken bilgiyi taşıyan bir HR ACK ile yanıt veriyor. Yer önce hazırlanıyor, cihaz sonra taşınıyor.

Sıranın her adımının bir adı var. Ölçüm raporu, aktarma isteği ve isteğin onayı; ardından cihaza giden RRC yeniden yapılandırma iletisi. Cihazı asıl yerinden oynatan ileti bu. Cihaz yeni istasyona tutununca bir yeniden yapılandırma tamam iletisi dönüyor. Hedef de kaynağa aktarmanın başarılı olduğunu bildiriyor.

Asıl incelik kaynak tarafta. Kaynak baz istasyonu cihaza doğrudan göndermeyi bıraktığı anda elindeki datagramları atmıyor; onları hedefe iletiyor, hedef de radyo kanalından cihaza ulaştırıyor. Cihaz iki istasyon arasında havadayken hedef o veriyi tamponda bekletiyor. Kaybı önleyen şey bu yönlendirme.

Cihaz açısından iş burada bitmiş sayılıyor. Yeni istasyondan gönderebildiği anda aktarma tamamlanmış görünüyor. Oysa çekirdek tarafındaki yol hâlâ eski istasyona bakıyor.

Devrin hangi adımda kimin elinde olduğunu izleyelim:

Bir aktarmanın sırası: ölçümden çekirdekteki yol değişikliğine
cihazUEkaynakbaz istasyonuhedefbaz istasyonuçekirdekUPF ve SMFölçüm raporu · CQI 4 bitHandover RequestHR ACK · yer ayrıldıayrıl ve hedefe tutunbiriken datagramlarkesinti yalnızca ayrıl-tutun aralığındatünelin ucu değişirtamamlandı, serbest bırak
Ölçüm raporu gider. Cihaz aldığı referans sinyallerin kalitesini ölçüyor ve kaynak baz istasyonuna 4 bitlik bir kanal kalitesi değeri bildiriyor. Karar bu ölçümle besleniyor.
  1. Ölçüm raporu gider. Cihaz aldığı referans sinyallerin kalitesini ölçüyor ve kaynak baz istasyonuna 4 bitlik bir kanal kalitesi değeri bildiriyor. Karar bu ölçümle besleniyor.
  2. Kaynak hedefi seçer. Kararı cihaz vermiyor. Hâlâ bağlı olunan kaynak baz istasyonu hedefi seçiyor ve ona bir Handover Request iletisi gönderiyor.
  3. Hedef yeri hazırlar. Hedef, cihaz daha gelmeden radyo zaman dilimlerini ayırıyor ve cihaz için gereken bilgiyi taşıyan bir HR ACK ile yanıt veriyor.
  4. Cihaz el değiştirir. Cihaz kaynaktan ayrılıp hedefe tutunuyor. Kaynak elindeki datagramları atmıyor, hedefe iletiyor; hedef de cihaz gelene kadar onları tamponda bekletiyor.
  5. Çekirdek yolu değiştirir. Radyo tarafı bitince tünelin ucu yeni baz istasyonuna çevriliyor. Hedef tamamlandığını bildirince kaynak taraf ayırdığı radyo kaynaklarını serbest bırakıyor.

Bu sıranın ne kadar sık tekrarlandığını hücrenin boyutu belirliyor. Yukarı bantlar kapsamayı daraltıyordu; hücre küçüldükçe aynı yolda daha çok aktarma oluyor. 300 m yarıçaplı, yani 600 m çaplı bir hücreyi 5 km/sa hızla yürüyen biri 432 saniyede, yani 7,2 dakikada kat ediyor. Aynı hücre 100 km/sa giden bir araç için 21,6 saniyeye iniyor.

Bağlantı koparak mı devrediliyor, kopmadan mı?

Aktarmanın nasıl yapıldığının iki klasik cevabı var ve aralarındaki fark tek bir sözcükte: sıra.

Sert aktarma (break-before-make) önce eski bağı bırakır, sonra yenisini kurar. Arada kısa bir boşluk oluşur. Basit, ucuz ve tek bir radyo yeter — cihaz aynı anda iki hücreyle konuşmak zorunda değil. Bedeli o boşluk.

Yumuşak aktarma (make-before-break) tersini yapar: yeni bağ kurulmadan eskisi bırakılmaz. Geçiş süresince cihaz iki hücreyle birden konuşur ve aynı veriyi iki yoldan alır. Boşluk yoktur; karşılığında cihaz iki radyo zinciri, şebeke de iki kat kaynak ayırmak zorundadır. 3G’nin kod bölmeli tasarımı bunu ucuza yapabiliyordu, çünkü komşu hücreler aynı frekansı kullanıyordu.

LTE ve 5G sert aktarmaya döndü — ama boşluğu neredeyse görünmez kılarak. Hazırlığın tamamı kesinti başlamadan önce yapılıyor:

  1. Cihaz komşu hücrelerin sinyal gücünü sürekli ölçüp kaynak baz istasyonuna raporluyor.
  2. Kaynak, hedef baz istasyonuyla doğrudan konuşup yer ayırtıyor. İki baz istasyonu arasındaki bu arayüzün adı LTE’de X2, 5G’de Xn — trafik çekirdek ağa hiç uğramıyor.
  3. Kaynak, cihaza “şu hücreye geç” komutunu yolluyor.
  4. Cihaz yeni hücreye bağlanırken, kaynakta biriken paketler hedefe tünellenerek aktarılıyor. Böylece geçiş anında sırada bekleyen veri kaybolmuyor.

Kalan kesinti tipik olarak on milisaniyeler mertebesinde ve bir görüşmede duyulmuyor. Ama hâlâ sıfır değil, ve en kritik anda — sinyal zayıfken — o komutun cihaza ulaşması gerekiyor. 5G bunun için üçüncü bir yol getirdi: koşullu aktarma. Şebeke hedefi ve tetikleyici koşulu önceden cihaza veriyor, cihaz koşul sağlandığında komut beklemeden kendisi geçiyor. Karar anındaki gidiş-dönüş tamamen ortadan kalkıyor.

Çekirdek neden yerinde duruyor?

Radyo tarafı değişirken sabit duran bir taraf var. Her cihaza bir UPF atanıyordu; o UPF cihazla internet arasında röle gibi çalışıyor ve trafiği N3 arayüzünde tünelliyordu. İnternetin gördüğü sabit nokta orası.

Aktarmada değişen şey de cihazın adresi değil, o tünelin ucu. Radyo tarafı bittikten sonra SMF, UPF’ye tünelin ucunu yeni hedef baz istasyonu olacak biçimde değiştirmesini söylüyor. Hedef, aktarmanın tamamlandığını kaynağa bildirince kaynak taraf ayırdığı radyo kaynaklarını serbest bırakıyor.

Çekirdek yarısının da kendi ileti sırası var. Hedef istasyon çekirdeğe bir yol değiştirme isteği yolluyor, çekirdek PDU oturumunu güncelliyor ve isteği onaylıyor. Eski yola en sonda bir veri sonu işareti düşüyor. O işaretten sonra o tünelden veri gelmiyor. Kaynak istasyona giden son ileti cihaz bağlamını kapatıyor.

Adres vererek bakınca daha keskin. Cihazın adresi 203.0.113.9, UPF’nin adresi 198.51.100.5, kaynak baz istasyonu 198.51.100.20 ve hedef istasyon 198.51.100.21. İnternetteki gönderen 192.0.2.30 olsun. İki zarfı yan yana koyalım:

önce   dış zarf: 198.51.100.5 -> 198.51.100.20   iç zarf: 192.0.2.30 -> 203.0.113.9
sonra  dış zarf: 198.51.100.5 -> 198.51.100.21   iç zarf: 192.0.2.30 -> 203.0.113.9

İç zarfta tek bir bayt bile oynamıyor. Gönderen tarafta bu devri gösteren hiçbir iz yok.

Tünelin ucu neden hep aynı kutuda kalıyor? Çünkü UPF yalnızca röle değil. Politika uygulaması, yasal dinleme, trafik kullanım ölçümü ve hizmet kalitesi denetimi de orada yürüyor. Bunların hepsi akışın tamamını tek noktadan görmeyi istiyor. Çapayı oynatmak, bu dört işi birden taşımak demek olurdu.

Zaman çizgisi bu yüzden iki yarıya bölünüyor: önce radyo erişim ağındaki ayrılma ve tutunma, sonra çekirdekteki yol değiştirme. Cihaz için kesinti yalnızca ilk yarıdaki ayrıl-tutun aralığı.

Cihazın nerede olduğunu AMF takip ediyor: sen hücre değiştirirken ağa tutunmanın ve erişim yetkinin sürmesinin kaydını o tutuyor. Bir operatörde tek bir çekirdek ağ çok sayıda radyo erişim ağına hizmet ediyor.

Yelpazenin en zor ucunda sağlayıcı da değişiyor. Hücresel dünyada kimliğin bir kullanıcı adı taşımıyor, bir abonelik taşıyor: parasını ödediğin bir ev ağın var ve seni asıl tanıyan orası. Karşılaştırmayı ev tarafı yapıyor ve ziyaret edilen ağa yalnızca anchor key gönderiliyordu. 5G’nin getirdiği fark tam burada: 4G’de aynı karşılaştırma ziyaret edilen ağın kendisinde yapılıyordu.

Wi-Fi aynı sorunu neden ucuza çözüyor?

Hücresel tarafın bunca iş yapmasının sebebi, sorunu üçüncü katmanda çözmek zorunda olması. 802.11 bir bağ katmanı standardı ve dolaşımı da o katmanda ele alıyor. Üst katmanlar olan bitenden habersiz kalıyor.

Genişletilmiş hizmet kümesinin içinde access point değiştirirken IP adresi değişmiyordu; komşuya geçmek yalnızca ilişkilendirmeyi yenilemek demek. Dolaşımı hızlandıran üç ek çalışma grubunun kendi tarihi var: 802.11k-2008 komşu ölçümünü, 802.11r-2008 hızlı yeniden kimlik doğrulamayı, 802.11v-2011 ise ağın cihaza aday access point önermesini getirdi.

Bu iddiayı kendi makinende birkaç komutla doğrulayabilirsin. Windows’ta netsh wlan show interfaces, Linux’ta iw dev wlan0 link bağlı olduğun access point’i yazıyor:

SSID   : kampus-ag
BSSID  : 00:1a:2b:3c:4d:5e

Binanın öbür ucuna yürü ve komutu tekrarla. SSID satırı aynı, BSSID satırı başka. ipconfig ya da ip addr ile baktığında IPv4 adresin de değişmemiş olacak.

Ucuzluğun sınırı da burada. Alt ağın kenarını geçtiğin anda adresin değişiyor ve bağ katmanının hilesi bitiyor.

Adres değişince bağlantı neden ölmüyor?

İkinci çıkış yolu bağlantıyı adresten koparmak. QUIC bağlantıyı four-tuple’la değil bir bağlantı kimliğiyle tanıyordu ve buna bağlantı göçü deniyordu. Kimliğin birincil işi, alt katmanlardaki adres değişikliklerinin paketleri yanlış uca göndermesini engellemek.

Kimliğin bir de boyu var. QUIC sürüm 1’de bağlantı kimliği en çok 20 bayt tutuyor. Daha uzununu gören uç paketi düşürmek zorunda.

Değişikliklerin hepsi kasıtlı da değil. NAT yeniden bağlama, aradaki kutunun akışa yeni bir çıkış portu ya da yeni bir çıkış adresi vermesiyle oluyor. Uç, karşı tarafın adresinde herhangi bir değişiklik sezerse yol doğrulaması yapmak zorunda.

Yol doğrulaması, yeni adresten gelen paketlerin sahte kaynak taşımadığını sınıyor. Gönderen, tür kodu 0x1a olan PATH_CHALLENGE çerçevesinin 8 baytlık veri alanına 64 bitlik rastgele bir değer koyuyor. Alıcı aynı veriyi taşıyan bir PATH_RESPONSE üretmek zorunda. Datagram ayrıca en az 1.200 bayta genişletiliyor, böylece yeni yolun bu boyutu taşıyabildiği de sınanmış oluyor. Gerçek yük datagramın %0,67’si, kalanı dolgu.

Göç serbest de değil. El sıkışma doğrulanmadan göç başlatılamıyor ve başlatma sorumluluğu istemcide. Sunucu, bir istemci adresinden yoklama dışı paket görmeden o adrese yoklama dışı paket göndermiyor. Bu sınama tek yönü kanıtlıyor; ters yönü karşı taraf kendi başına yapıyor.

Doğrulama bitince uç, tıkanıklık denetleyicisini ve gidiş-dönüş süresi kestiricisini yeni yol için başlangıç değerlerine sıfırlamak zorunda. Tek istisna yalnızca portun değiştiği durum; o genelde NAT yeniden bağlamasıdır ve eski durum korunabiliyor. Bir kural daha var. Uç, birden fazla yerel adresten gönderirken aynı bağlantı kimliğini yeniden kullanamıyor. Sebep gizlilik: sabit bir kimlik, pasif bir gözlemcinin iki ayrı ağdaki etkinliği aynı kişiye bağlamasına izin verirdi.

DerinleşmeMobil IP yirmi yıl uğraştı, QUIC nasıl bu kadar ucuza çözdü?

Ağ katmanının bu soruya verdiği eski cevabın adı mobil IP ve çekirdek fikri iki adres. Ev adresi, düğüm internete nereden bağlanırsa bağlansın değişmiyor. Ziyaret adresi ise düğümün o an bulunduğu yeri gösteriyor. Üst katman ev adresini görüyor, ağ ziyaret adresini kullanıyor.

Bunu yürütmek için ağda iki yeni rol gerekiyordu. Ev aracısı, düğümün ev ağındaki bir yönlendirici; düğüm evden uzaktayken datagramları ona tünelleyerek ulaştırıyor. Yabancı aracı ise ziyaret edilen ağdaki yönlendirici ve kayıtlı düğüme yönlendirme hizmeti veriyor. İkisi de altyapı demek: çözümün çalışması için yolun her iki ucundaki yönlendiricilerin bu işi bilmesi gerekiyor.

QUIC’in kolaylığı zekâsından değil, durumun nerede durduğundan geliyor. Bağlantı durumu uçlarda; ağdaki hiçbir kutunun bir şey bilmesi gerekmiyor. Üstelik QUIC’te güvenilirlik, tıkanıklık denetimi, kimlik doğrulama ve şifreleme durumu tek bir gidiş-dönüşte kuruluyor. Yani bağlantıyı yeniden kurmanın bedeli zaten bir gidiş-dönüş, ve bağlantı göçü o bedeli de ödememeyi sağlıyor.

Özet

Peki, ne öğrendik?

  • Hareketlilik bir yelpaze: kapalı cihazı taşımak bedava, açık oturumu taşımak pahalı, ve pahalı olanın kökü adresin yer bilgisi taşımasıdır.
  • Aktarmayı kaynak yönetir: hedefi seçen ve isteği gönderen kaynak baz istasyonudur, cihaz yalnızca ölçüm raporu üretir.
  • Yer önce hazırlanır: hedef radyo dilimlerini cihaz gelmeden ayırır ve kaynak biriken datagramları atmak yerine hedefe iletir.
  • Çekirdek yerinde durur: aktarmada değişen şey UPF’ye giden tünelin ucudur, cihazın adresi değil.
  • Bağlantı kimliği adresin yerini alır: QUIC bağlantıyı four-tuple’la tanımadığı için adres değişse de bağlantı yaşar, ama yeni yol önce doğrulanır.

Yer değiştirirken bağlantının neden ayakta kaldığını artık iki ayrı katmanda izleyebiliyorsun. İkisinin de dayandığı şey aynı: cihazın elinde bir adres olması. Telsiz de olsan telli de olsan bağlandın; peki bağlanır bağlanmaz aldığın o adresi sana kim verdi?

33. bölüme devam et: Adres Kiralama: DHCP