Figueiredo – 2011
Redes de Computadores Aula 6 Aula passada Aula de hoje Camada de - - PowerPoint PPT Presentation
Redes de Computadores Aula 6 Aula passada Aula de hoje Camada de - - PowerPoint PPT Presentation
Redes de Computadores Aula 6 Aula passada Aula de hoje Camada de transporte Eficincia Multiplexao Go-Back N Princpios de Selective Repeat transmisso confivel Stop-and-wait Figueiredo 2011 Eficincia do Stop-and-Wait
Figueiredo – 2011
Eficiência do Stop-and-Wait
Início da transmissão
tempo tempo
Fim da transmissão Recebe confirmação
Pacote L bytes Taxa de transmissão R Propagação p Vazão máxima do canal? Utilização?
Muito ruim!
Figueiredo – 2011
Eficiência do Stop-and-Wait
Pacote L bytes Taxa de transmissão R Propagação p Vazão = L / (L/R + 2p)
- Ex. L = 1000 bytes, R = 1Gbps, p = 10ms
V = 400Kbps Apesar do enlace ser de 1Gbps! U = 0.4/1000 = 0.0004!
Como melhorar eficiência?
Figueiredo – 2011
Protocolos com Pipeline
Problemas que teremos que resolver? Significado do ACK, número de sequência, ordenação, bufferização
Pipeline: transmissor permite múltiplos pacotes “em trânsito”, antes de receber ACK
Figueiredo – 2011
Vazão com Pipeline
Tx P1
tempo tempo
Rx ACK 1
Supor pipeline de 3 pacotes Ganho na vazão? Ganho na utilização? Transmissão de 3 pacotes Vazão 3 vezes maior!
Tx P2 Tx P3 Rx ACK 2 Rx ACK 3 Tx ACK 1 Tx ACK 2 Tx ACK 3 Tx P4 Tx P5 Tx P6
Figueiredo – 2011
Protocolos com Pipeline (ou Janela)
Go-back N Tx poder ter até N pacotes sem ACK no pipeline Rx transmite ACKs cumulativos Não envia ACK se tiver faltando na sequência Tx tem timer para pacote mais antigo sem ACK Retransmite todos
- s pacotes se timer
expira
Selective Repeat: Tx pode ter até N pacotes sem ACK no pipeline RX envia ACK individual para pacotes Tx mantém um timer para cada pacote
Retransmite somente o pacote se timer expira
Figueiredo – 2011
Go-Back-N
Sender: k-bit seq # in pkt header “window” of up to N, consecutive unack’ed pkts allowed
❒ ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK”
❍ may receive duplicate ACKs (see receiver)
❒ timer for each in-flight pkt ❒ timeout(n): retransmit pkt n and all higher seq # pkts in window
Figueiredo – 2011
GBN: sender extended FSM
Wait
start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) … udt_send(sndpkt[nextseqnum-1]) timeout rdt_send(data) if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base=1 nextseqnum=1 rdt_rcv(rcvpkt) && corrupt(rcvpkt)
Λ
Figueiredo – 2011
GBN: receiver extended FSM
ACK-only: always send ACK for correctly-received pkt with highest in-order seq #
may generate duplicate ACKs need only remember expectedseqnum
- ut-of-order pkt:
discard (don’t buffer) -> no receiver buffering! Re-ACK pkt with highest in-order seq #
Wait
udt_send(sndpkt) default rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt) expectedseqnum++ expectedseqnum=1 sndpkt = make_pkt(expectedseqnum,ACK,chksum)
Λ
Figueiredo – 2011
GBN in action
Figueiredo – 2011
Selective Repeat
receiver individually acknowledges all correctly received pkts
buffers pkts, as needed, for eventual in-order delivery to upper layer
sender only resends pkts for which ACK not received
sender timer for each unACKed pkt
sender window
N consecutive seq #’s again limits seq #s of sent, unACKed pkts
Figueiredo – 2011
Selective repeat: sender, receiver windows
Figueiredo – 2011
Selective repeat
data from above :
if next available seq # in window, send pkt
timeout(n):
resend pkt n, restart timer
ACK(n) in [sendbase,sendbase+N]:
mark pkt n as received if n smallest unACKed pkt, advance window base to next unACKed seq #
sender
pkt n in [rcvbase, rcvbase+N-1]
❒ send ACK(n) ❒ out-of-order: buffer ❒ in-order: deliver (also
deliver buffered, in-order pkts), advance window to next not-yet-received pkt
pkt n in [rcvbase-N,rcvbase-1]
❒ ACK(n)
- therwise:
❒ ignore
receiver
Figueiredo – 2011
Selective repeat in action
Figueiredo – 2011
Selective repeat: dilemma
Example:
seq #’s: 0, 1, 2, 3 window size=3 receiver sees no difference in two scenarios! incorrectly passes duplicate data as new in (a) Q: what relationship between seq # size and window size?