320 likes | 498 Views
Oefeningen Datacommunicatie. Les 4: Retransmissieprotocols. Julie Neckebroek julie.neckebroek@telin.ugent.be. Les 4: Retransmissieprotocols. Doel – methode Parameters Effici ë ntie Basisprotocols Varianten van basisprotocols. 1. Doel – methode (1).
E N D
Oefeningen Datacommunicatie Les 4: Retransmissieprotocols Julie Neckebroek julie.neckebroek@telin.ugent.be
Les 4: Retransmissieprotocols • Doel – methode • Parameters • Efficiëntie • Basisprotocols • Varianten van basisprotocols
1. Doel – methode (1) Tot nu toe: foutdetectie, foutcorrectie Maar: wat gebeurt indien fout gedetecteerd? Rx: indien fout frame weigeren Tx: hoe weet Tx of Rx het frame goed/slecht heeft ontvangen? Protocol nodig 1 1 2 Tx ACK NAK Rx 1 1 2
wachten ACK zenden NAK zenden wachten volgend frame zenden herhaling van huidig frame 1. Doel – methode (2) Protocolbeschrijving: wat doet Tx na zenden? wat doet Rx na ontvangen? • NODIG: • tellers (framenummer) • buffers • Rx: out-of-order • Tx: frames zonder ACK • timers
ACK normaal timer timer ACK ACK ACK frame verloren ACK verloren 1. Doel – methode (3) • Waarom timers ? • frame verloren • verlies van ACK/NAK, of, • geen NAK sturen (protocolvariant)
2. Parameters (1) • ontwerparameters • (k,n)=lengte (info-,code-) woord • andere (afh. van onderliggende lagen) • Rb: bit-rate (bit/s) • Td: dode tijd (s) (aka round-trip delay) • nodig #transmissies van frame toevalsgrootheid
2. Parameters (2): voorbeeld Td n/Rb Tx 1 1 2 ACK NAK 1 1 2 Rx #tr = 2 #retr = 1 = #tr - 1
2. Parameters (3): #transmissies pframe = P[Rx detecteert fout in frame] = 1 - P[Rx detecteert geen fout in frame] = 1 - (P[geen fout in frame] + P[ngf]) = 1 - ((1-p)n+P[ngf]) 1 - (1-p)n P[#tr = 0] = 0 P[#tr = 1] = 1 - pframe P[#tr = 2] = pframe(1-pframe) P[#tr = m] = pm-1frame(1-pframe) P[#retr = 0] = 1 - pframe P[#retr = 1] = pframe(1-pframe) P[#retr = 2] = p2frame(1-pframe) P[#retr = m] = pmframe(1-pframe)
2. Parameters (4): #transmissies P[#tr = m] = pm-1frame(1-pframe) , m > 0 P[#retr = m] = pmframe(1-pframe) E[#tr] = Σm>0m P[#tr = m] E[#retr] = E[#tr] - 1
tijd nodig om k bits te zenden η = gemiddelde transmissietijd per correct ontvangen frame 3. Efficiëntie (1) tijd tot ACK tijd tot zender volgend frame begint te zenden = gemiddelde tijd tot ontvanger volgende frame zal onderzoeken protocolafhankelijk notatie : E[Ttr]
3. Efficiëntie (2): maximaal tijd nodig om k bits te zenden η = gemiddelde transmissietijd per correct ontvangen frame k / Rb ηmax = = k / n n / Rb
4. Basisprotocols (1) 3 protocols : S&W, GBN, SR efficiëntie bepalen invloed van de parameters
4. Basisprotocols (2): Stop-And-Wait Td Tx 1 1 2 NAK ACK 1 1 2 Rx Ttr Ttr = #tr . (n / Rb + Td) (in seconden)
Efficiëntie: (Rb / n) k / Rb k / Rb h = = E[Ttr] E[#tr] (n/Rb + Td) (Rb / n) k hS&W = nE[#tr] (1 + s) k (1 - pframe) hS&W = n(1 + s) 4. Basisprotocols (3): Stop-And-Wait s = Td Rb / n = dode tijd in frameduren
4. Basisprotocols (4): Stop-And-Wait s 1 Tx 1 1 2 ACK NAK 1 1 2 Rx Ttr Ttr = #tr . (1+s) (in frameduren)
voor alle protocols Ttr = #tr . (1+s) (in frameduren) 4. Basisprotocols (5): Stop-And-Wait k h= n E[Ttr] vanaf nu dus steeds Ttr in frameduren
4. Basisprotocols (6): Go-Back-N 1 + s = N s 1 s NAK NAK ACK Ttr s = dode tijd in frames s = ceil(s) = dode tijd in frames, afgerond naar boven N := 1 + s hGBN =? Ttr = N(#tr - 1) + 1 = N#retr + 1 Ttr = s (#tr - 1) + #tr
Opmerking: Ttr = s(2) + 3 Ttr = s(0) + 1 s s 1 NAK NAK ACK 4. Basisprotocols (7): Go-Back-N Ttr = s (#tr - 1) + #tr
4. Basisprotocols (8): Go-Back-N k k (1 - pframe) ηGBN = = nE[Ttr] n (1 + pframes ) k (1 - pframe) • < k/n als pframe 0 • half duplex ηS&W = n(1 + s) E[Ttr] = ( N + 1) Ttr = (N(#tr-1)+1) • k/n als pframe 0 • full duplex
4. Basisprotocols (10): Selective Repeat NAK k hSR = = k(1 - pframe)/n n E[#tr] Tx zendt zonder onderbreking bij NAK: 1 frame herzenden Tx: buffer van grootte N Rx: buffer van grootte enkel van theoretisch belang
4. Basisprotocols (11): Selective Repeat Zendvenster Doel flow control: Tx zorgt ervoor dat Rx-buffer niet overloopt Methode Tx-buffer van grootte K Beschrijving Tx beperkt het aantal frames waarvoor nog geen ACK ontvangen is tot K
1+s K 1+s K 4. Basisprotocols (12): Selective Repeat Zendvenster: grootte • Gevallen • K=1 : S&W • K < 1 + s • K 1 + s dode tijd η daalt tov basisprotocols (SR, GBN) neem K = 1 + s η zelfde als basisversies # frames in Tx-buffer nooit > 1+ s
1+s K R NAK NAK ACK k K (1 - pframe) ηSR,K = n (1+s) 4. Basisprotocols (12): Selective Repeat Zendvenster: Efficiëntie enkel voor het geval SR, K < 1 + s duur in frames stel R = 1 + s - K 1 + R/K 3 + 3*R/K R wordt gedeeld door K frames Ttr = #tr (1 + R/K)
5. Varianten van basisprotocols (1) 3 belangrijke methoden op de efficiëntie te berekenen:
5. Varianten van basisprotocols (2) 1) T uitdrukken als functie van vereiste aantal verstuurde copieën (#tr_frame) van een frame. E[#tr_frame] = 1/(1-p); E[#tr_frame - 1] = p/(1-p);
5. Varianten van basisprotocols (3) 2) Na een eerste foutieve kopie komt het protocol opnieuw in de beginsituatie Stel T(k) = transmissietijd die correspondeert met #tr_frame = k (k = 1, 2, ...)
5. Varianten van basisprotocols (4) Gevr.: bepaal T(1) en ΔT voor de driebasisprotocols Met: T(1) tijd nodig voor eerste frame T tijd nodig om terug in beginsituatie te komen (onafh van k)
5. Varianten van basisprotocols (5) 3) Herformuleer de algemene formule na het opstellen van een tabel voor k (d.w.z. #tr_frame=k) en T(k) de corresponderende tijd
S&W - begrippen 5. Varianten van basisprotocols (6) • Definities en eigenschappen • blok = m * zelfde frame • pblok = P[fout in alle frames van het blok] • = P[frame1 fout frame2 fout … framem fout] • = P[frame1 fout]…P[framem fout] • = pframem • #tr_blok = # keer zelfde blok doorsturen • P[#tr_blok = i] = (1 - pblok)pbloki-1 • E[#tr_blok] = 1/(1-pblok)
S&W – variant 1 5. Varianten van basisprotocols (7) m T NAK NAK ACK E[T]=(m + s) / (1-pmframe)
S&W – variant 3 ACK NAK NAK 5. Varianten van basisprotocols (8) m s E[T] = Σk≥1T(k) P[#tr_frame = k] E[T] = P[#tr_frame = 1] T(1) + P[#tr_frame ≠ 1] E[T|#tr_frames ≠ 1] E[T] = (1-pframe) (1+s)+ pframe [(1+s)+(m+s) E[#tr_blokken|#tr_frames ≠ 1]] met E[#tr_blokken|#tr_frames ≠ 1] = 1/(1-pmframe) E[T]=(1 + s) + pframe.(m+s)/ (1-pmframe)
GBN – variant 1 5. Varianten van basisprotocols (9)