Elementary ve sliding window protokolleri: stop-and-wait, Go-Back-N, Selective Repeat
Hatalı bir kanalda güvenilir iletim: ACK, timeout, sıra numarası, stop-and-wait'in neden yavaş olduğu, Go-Back-N ve Selective Repeat'in pencere kuralları ve verimlilik formülü.
Önceki sayfada link katmanının hatayı nasıl fark ettiğini gördün. Fark etmek yetmez: bozuk çerçeve atılır, ve verinin yine de karşıya ulaşması gerekir. Bunun yolu ARQ (automatic repeat request): alıcı onay (ACK) yollar, gönderici onay gelmezse yeniden gönderir. Aynı fikirler 7. haftada TCP’de tekrar karşına çıkacak, o yüzden burada sağlam öğren.
Sınav soruları üç kalıptadır: verimlilik hesabı (utilization), “hangi çerçeveler yeniden gönderilir?” izi ve sıra numarası bit sayısı. Altın kurallar:
- , 1’i geçemez. Stop-and-wait’te .
- GBN alıcısı sıra dışını atar, SR alıcısı tamponlar.
- GBN’de pencere , SR’de .
- RTT iki yönlüdür. Tek yön propagation verildiyse ikiyle çarp.
Elementary protokoller: adım adım
Ders kitapları güvenilir iletimi basitten karmaşığa giden bir protokol dizisiyle kurar. Her biri bir öncekinin varsaydığı bir kolaylığı kaldırır.
| Protokol | Varsayım | Eklenen mekanizma |
|---|---|---|
| Utopia (simplex, kusursuz) | Kanal hatasız, alıcı sonsuz hızlı | Hiçbiri, sadece gönder |
| Stop-and-wait, hatasız kanal | Alıcı yavaş olabilir | Alıcı “hazırım” der (akış kontrolü) |
| Stop-and-wait, gürültülü kanal (PAR) | Çerçeve kaybolabilir/bozulabilir | ACK + timeout + yeniden gönderme |
| + sıra numarası (alternating bit) | ACK de kaybolabilir | 1 bitlik sıra numarası, tekrarı tanıma |
Neden sıra numarası? Senaryo: gönderici 0 numaralı çerçeveyi yollar, alıcı alır ve ACK yollar, ACK kaybolur. Gönderici timeout’ta 0’ı tekrar yollar. Sıra numarası olmasa alıcı bunu yeni veri sanar ve üst katmana iki kez teslim eder. Bir bit yeter: alıcı “şimdi 1 bekliyordum, bu 0 tekrar” der, atar ama yine ACK yollar.
TUZAK · tekrar gelen çerçeveye de ACK yolla. Alıcı tekrar çerçeveyi atar ama ACK’i yine yollamalı. Yollamazsa gönderici sonsuza kadar aynı çerçeveyi yeniden gönderir, çünkü ilk ACK zaten kaybolmuştu.
Stop-and-wait neden yavaş?
Gönderici bir çerçeve yollar, ACK gelene kadar bekler. Çerçevenin ilk biti ‘da çıkar, son biti ‘de, ACK anında döner. Göndericinin gerçekten bit bastığı oran:
Çözümlü örnek
Mbps, bit, ms.
L/R = 10,000 / 10^8 = 0.1 ms
U = 0.1 / (20 + 0.1) = 0.004975 (yaklaşık %0.5)
throughput = U x R = 497.5 kbps
100 Mbps’lik linkten yarım megabit bile geçmiyor. Sorun link değil, protokol.
parametresi
Bazı kitaplar tanımlar. ACK boyutu ve işlem süresi ihmal edilirse :
Örnekte ms, ms, , . Aynı sayı.
Pipelining ve kayan pencere (sliding window)
Çözüm: ACK beklemeden birden fazla çerçeve gönder. Gönderici en fazla tane onaylanmamış çerçeveyi “yolda” tutabilir. Bu , pencere boyutu (window size). Bir ACK gelince pencere ileri kayar.
Aynı örnekte : . Tam verim için:
Bu, 1. haftadaki bandwidth-delay product fikrinin çerçeve cinsinden halidir: boru dolu olmalı.
Göndericinin sıra numarası uzayı şöyle görünür:
[ onaylandı ][ gönderildi, ACK bekliyor ][ gönderilebilir ][ henüz kullanılamaz ]
^ base ^ nextseqnum
|<-------------- pencere N -------------->|
Pipelining iki farklı şekilde hatadan kurtulur: Go-Back-N ve Selective Repeat.
Go-Back-N (GBN)
- Alıcı penceresi 1. Alıcı sadece beklediği sıradaki çerçeveyi kabul eder. Sıra dışı gelen her şeyi atar.
- Kümülatif ACK (cumulative ACK). “ACK n” demek n’e kadar (n dahil) her şey alındı demek. Sıra dışı bir çerçeve gelince alıcı en son sıralı aldığı çerçevenin ACK’ini tekrar yollar.
- Tek timer, en eski onaylanmamış çerçeve için. Timeout’ta gönderici o çerçeveden başlayarak penceredeki hepsini yeniden gönderir. Adı buradan: N geri git.
İz: pencere 6, çerçeve 2 kayıp
Gönderici: 0 1 2 3 4 5
Kanal : ok ok X ok ok ok
Alıcı : al al - at at at (beklenen hep 2)
ACK : 0 1 1 1 1 (tekrar eden ACK1)
Timeout(2): yeniden gönder 2 3 4 5 -> 4 çerçeve
Artısı: alıcı basit, tampon yok. Eksisi: tek kayıp, arkasındaki doğru gelmiş çerçeveleri de çöpe atar. Hata oranı yüksek, pencere büyük linkte çok israf eder.
Selective Repeat (SR)
- Alıcı da pencere tutar ve sıra dışı ama pencere içindeki çerçeveleri tamponlar.
- Her çerçeve ayrı ayrı ACK’lenir (kümülatif değil).
- Her çerçevenin kendi timer’ı var. Sadece süresi dolan çerçeve yeniden gönderilir.
- Eksik çerçeve gelince alıcı tampondaki sıralı bloğu üst katmana birlikte verir.
Aynı iz, SR ile
Gönderici: 0 1 2 3 4 5
Kanal : ok ok X ok ok ok
Alıcı : al al - tampon tampon tampon
ACK : 0 1 3 4 5
Timeout(2): sadece 2 -> 1 çerçeve
2 gelince: 2,3,4,5 sırayla teslim
Sıra numarası kaç bit olmalı?
Sıra numarası bitse değerler arasında döner.
| Protokol | Maksimum pencere | ||
|---|---|---|---|
| Go-Back-N | 7 | 31 | |
| Selective Repeat | 4 | 16 |
GBN neden değil? Pencere olsaydı, gönderici 0..7’yi yollar, ACK’lerin hepsi kaybolur ya da hepsi gelir; iki durumda da alıcının bir sonraki beklediği 0’dır. Gönderici gelen “ACK 7”nin yeni pencere mi yoksa eski mi olduğunu ayırt edemez.
SR neden yarısı? Alıcının penceresi de ileri kayıyor. Gönderici ve alıcı pencereleri sıra uzayında çakışmamalı.
k = 2 (0..3), W = 3:
alıcı 0,1,2'yi aldı, ACK'ler kayboldu
alıcı penceresi şimdi {3, 0, 1}
gönderici eski 0'ı tekrar yollar -> alıcı YENİ 0 sanar, hatalı teslim
k = 2, W = 2:
alıcı penceresi {2, 3}, eski 0 dışarıda -> doğru şekilde atılır (ve ACK'lenir)
Çözümlü örnek: uydu linki
Mbps, bit, tek yön propagation 270 ms.
L/R = 1 ms, RTT = 540 ms
SW : U = 1 / 541 = 0.00185
GBN, k=3 (N=7) : U = 7 / 541 = 0.0129
Tam verim için : N = 541
GBN bit sayısı : 2^10 - 1 = 1023 >= 541 -> k = 10
SR bit sayısı : 2^10 = 1024 >= 541 -> k = 11
Hata olasılığıyla stop-and-wait
Her çerçeve bağımsız olarak olasılıkla bozuluyorsa bir çerçeve başına beklenen iletim sayısı:
için 1.25. Verim aynı oranda düşer. Gürültülü linkte GBN tek hatada birçok çerçeve tekrar ettiği için SR’nin avantajı büyür.
İPUCU · piggybacking. İki yönlü veri akışında alıcı ayrı bir ACK çerçevesi yollamak yerine ACK’i ters yöndeki kendi veri çerçevesinin başlığına koyar. Bant genişliği tasarrufu sağlar. TCP de böyle çalışır.
Güvenlik notu
Bu protokollerin hiçbiri karşı tarafın kim olduğunu doğrulamaz. Sıra numarası tahmin edilebilir olursa araya giren biri sahte bir çerçeveyi doğru sıra numarasıyla sokabilir. TCP’nin başlangıç sıra numarasını rastgele seçmesinin (7. hafta) bir sebebi budur.
Sık yapılan hatalar
| Yanlış düşünce | Doğrusu |
|---|---|
| Payda . | |
| RTT = tek yön propagation | (ek gecikme yoksa). |
| pencereyle sınırsız büyür | ; boru dolunca artmaz. |
| GBN alıcısı sıra dışını tamponlar | Atar. Tamponlayan SR. |
| GBN timeout’ta sadece kaybolanı gönderir | Kaybolandan itibaren penceredeki hepsini. |
| SR’de kümülatif ACK | Her çerçeveye ayrı ACK. |
| GBN pencere | . SR’de . |
| Tekrar gelen çerçeveye ACK gerekmez | Gerekir, yoksa gönderici kilitlenir. |
Kendini test et
Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.
In the stop-and-wait protocol, why does each frame need a sequence number (even a 1-bit one)?
- To encrypt the frame
- So that the receiver can detect a duplicate frame when an ACK is lost and the sender retransmits
- To measure the round-trip time
- To allow the sender to send several frames at once
Cevabı göster
ACK kaybolursa gönderici timeout sonrası aynı çerçeveyi yeniden yollar. Sıra numarası olmasa alıcı bunun yeni bir çerçeve mi tekrar mı olduğunu bilemez ve veriyi iki kez teslim eder.
Stop-and-wait'te tek bit yeter (0, 1, 0, 1...): alternating bit protocol.
A link has rate 1 Mbps, frames are 1000 bits, and the one-way propagation delay is 270 ms (satellite). What is the sender utilization with stop-and-wait (ignore ACK transmission time)?
Cevabı göster
ms. RTT ms..
Link zamanın %0.2'sinden azında kullanılıyor.
For the same satellite link, the sender uses Go-Back-N with a 3-bit sequence number and the maximum allowed window. What is the utilization?
Cevabı göster
3 bit sıra numarasıyla GBN penceresi en fazla ..
For the satellite link above, what window size is needed for 100% utilization, and how many sequence-number bits does Go-Back-N need for that window?
Cevabı göster
Tam verim için pencere, bir RTT + L/R süresinde gönderilebilecek çerçeve sayısı kadar olmalı: .
GBN'de : , . Yani .
With a -bit sequence number, what are the maximum window sizes for Go-Back-N and Selective Repeat?
- GBN: , SR:
- GBN: , SR:
- GBN: , SR:
- GBN: , SR:
Cevabı göster
GBN alıcısının penceresi 1 olduğu için gönderici 'e kadar gidebilir.
SR'de alıcının da penceresi var; eski ve yeni çerçevelerin karışmaması için iki pencere toplamı sıra uzayını geçmemeli: , yani sıra uzayının yarısı.
A Go-Back-N sender with window 6 sends frames 0 to 5. Frame 2 is lost; all others arrive. Using cumulative ACKs where 'ACK n' means all frames up to n were received, which ACKs does the receiver send, and how many frames are retransmitted after the timeout?
Cevabı göster
GBN alıcısı sadece sıradakini kabul eder. 0 ve 1 gelir: ACK0, ACK1.
2 kayıp. 3, 4, 5 sıra dışı geldiği için atılır, her biri için son doğru sıralı çerçevenin ACK'i (ACK1) tekrar gönderilir.
Timeout'ta gönderici 2'den itibaren hepsini yollar: 2, 3, 4, 5 yani 4 çerçeve.
Same situation (window 6, frames 0 to 5, frame 2 lost) but with Selective Repeat. Which frames are retransmitted?
- Frames 2, 3, 4, 5
- Only frame 2
- All frames 0 to 5
- Frames 3, 4, 5
Cevabı göster
SR alıcısı sıra dışı çerçeveleri tamponlar ve her birini ayrı ayrı ACK'ler: ACK0, ACK1, ACK3, ACK4, ACK5.
Her çerçevenin kendi timer'ı var; sadece 2'nin timer'ı dolar, sadece 2 yeniden gönderilir. 2 gelince alıcı 2, 3, 4, 5'i sırayla üst katmana verir.
A 2 Mbps link carries 12,000-bit frames with RTT = 45 ms. What is the utilization with a window of 8 frames?
Cevabı göster
ms. ms..
Pencere 9 ya da daha büyük olursa , U = 1.
Each frame on a stop-and-wait link is corrupted independently with probability 0.2 and must then be resent. What is the expected number of transmissions per frame?
Cevabı göster
Geometrik dağılım: başarı olasılığı , beklenen deneme .
Verim de aynı oranda düşer: hatasız durumdaki , 1.25'e bölünür.
Selective Repeat uses 2-bit sequence numbers (0 to 3) with window size 3. The receiver gets frames 0, 1, 2 and sends ACKs, but all three ACKs are lost. What goes wrong when the sender retransmits frame 0?
- Nothing, the receiver discards it correctly
- The receiver's window is now {3, 0, 1}, so it accepts the old frame 0 as new data
- The sender deadlocks
- The receiver sends a NAK and the problem is resolved
Cevabı göster
0, 1, 2 alındıktan sonra alıcı penceresi ileri kayar ve 3, 0, 1 bekler (sıra numaraları döner).
Gönderici ACK alamadığı için eski 0'ı yeniden yollar. Alıcı bunu penceresindeki yeni 0 sanır: yinelenen veri yeni diye teslim edilir.
Pencere 2 olsaydı () alıcı {2, 3} beklerdi ve eski 0 dışarıda kalırdı.
Express stop-and-wait utilization in terms of (ignore processing and ACK size). If , what is ?
Cevabı göster
.: . büyük (uzun, hızlı link) olunca stop-and-wait çöker.
Doğrulama: Verimlilik, gereken pencere ve sıra numarası bit sayıları node ile hesaplandı (verify/SEN2008/03b.mjs: U = min(1, N·(L/R)/(RTT + L/R)), 2^k - 1 ve 2^(k-1) sınırları, GBN/SR alıcı ACK simülasyonu, SR pencere belirsizliği gösterimi).