Professional Documents
Culture Documents
Metas do captulo:
entender os
multiplexao/
demultiplexao
transferncia
confivel de dados
controle de fluxo
controle de
congestionamento
aprender sobre os
protocolos da camada
de transporte da
Internet:
UDP: transporte no
orientado a conexes
TCP: transporte
orientado a conexes
Controle de
congestionamento do
TCP
3: Camada de Transporte
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
rede
enlace
fsica
rede
enlace
fsica
rede
enlace
fsica
e
gi
l
co
fi
m
a
rede
enlace
fsica
rede
enlace
fsica
m
fi
aplicao
transporte
rede
enlace
fsica
t
or
sp
an
tr
aplicao
transporte
rede
enlace
fsica
3: Camada de Transporte
Analogia domstica:
3: Camada de Transporte
(TCP)
m
a
rede
enlace
fsica
aplicao
transporte
rede
enlace
fsica
servios no disponveis:
rede
enlace
fsica
m
fi
fi
co
ordenada: UDP
rede
enlace
fsica
gi
l
entrega no confivel, no
rede
enlace
fsica
rede
enlace
fsica
t
or
sp
an
tr
controle de
congestionamento
controle de fluxo
estabelecimento de conexo
(setup)
aplicao
transporte
rede
enlace
fsica
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
Multiplexao/demultiplexao
Multiplexao no transm.:
rene dados de muitos sockets,
adiciona o cabealho de transporte
(usado posteriormente para a
demultiplexao)
Demultiplexao no receptor:
Usa info do cabealho para
entregar os segmentos
recebidos aos sockets corretos
aplicao
aplicao
P3
P1
P2
aplicao
P4
transporte
transporte
rede
transporte
rede
enlace
rede
enlace
fsica
enlace
fsica
socket
processo
fsica
3: Camada de Transporte
datagramas IP
cada datagrama possui
os endereos IP da
origem e do destino
cada datagrama
transporta um segmento
da camada de
transporte
cada segmento possui
nmeros das portas
origem e destino
O hospedeiro usa os
endereos IP e os
nmeros das portas para
direcionar o segmento ao
socket apropriado
32 bits
porta origem
porta destino
outros campos
do cabealho
dados da
aplicao
(mensagem/payload)
formato de segmento
TCP/UDP
3: Camada de Transporte
Demultiplexao no orientada a
conexes
Lembrete: socket criado possui Lembrete: ao criar um
datagrama para enviar para
nmero de porta local ao host:
um socket UDP, deve
DatagramSocket mySocket1 = new
DatagramSocket(12534);
especificar:
o segmento UDP:
Endereo IP de destino
Nmero da porta de destino
Demultiplexao no orientada a
conexes: exemplo
DatagramSocket
serverSocket = new
DatagramSocket
(6428);
DatagramSocket
mySocket2 = new
DatagramSocket
(9157);
application
application
DatagramSocket
mySocket1 = new
DatagramSocket
(5775);
application
P1
P3
P4
transport
transport
transport
network
network
link
network
link
physical
link
physical
physical
source port: 6428
dest port: 9157
source port: ?
dest port: ?
source port: ?
dest port: ?
3: Camada de Transporte
10
Demultiplexao Orientada a
Conexes
Socket TCP identificado
pela qudrupla:
endereo IP origem
nmero da porta origem
endereo IP destino
nmero da porta destino
Demultiplexao:
3: Camada de Transporte
11
Demultiplexao Orientada a
Conexes: exemplo
application
application
P3
P4
application
P5 P6
P2
transport
transport
transport
network
network
link
network
link
physical
link
physical
host: IP
address
A
server:
IP
address
B
source IP,port: B,80
dest IP,port: A,9157
source IP,port: A,9157
dest IP, port: B,80
P3
physical
host: IP
address
C
12
application
application
P3
application
P4
P2
transport
transport
transport
network
network
link
network
link
physical
link
physical
host: IP
address
A
server:
IP
address
B
source IP,port: B,80
dest IP,port: A,9157
source IP,port: A,9157
dest IP, port: B,80
P3
physical
host: IP
address
C
13
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
14
[RFC 768]
Uso do UDP:
aplicaes de streaming
multimdia (tolerante a
perdas, sensvel a taxas)
DNS
SNMP
transferncia confivel
sobre UDP:
adiciona confiabilidade na
camada de aplicao
recuperao de erros
especfica da aplicao
3: Camada de Transporte
15
porta dest.
comprimento
checksum
Dados de
aplicao
(mensagem)
Formato do segmento UDP
elimina estabelecimento de
16
trata contedo do
Receptor:
checksum do
segmento recebido
verifica se o checksum
calculado bate com o valor
recebido:
NO - erro detectado
SIM - nenhum erro
detectado. Mas ainda
pode ter erros? Veja
depois .
calcula
3: Camada de Transporte
17
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
transbordo 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
soma 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
soma de 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
verificao
3: Camada de Transporte
18
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
19
camadas de
transporte e de
enlace
na lista dos 10
tpicos mais
importantes em
redes!
caractersticas
do canal no
confivel
determinam a
complexidade de
um protocolo de
transferncia
confivel de
dados (rdt)
3: Camada de Transporte
20
lado
transmissor
lado
receptor
21
estado
1
estado
2
evento
aes
3: Camada de Transporte
22
rdt1.0:
perfeitamente
confivel
no h erros de bits
no h perda de pacotes
transmissor e
receptor:
23
3: Camada de Transporte
24
deteco de erros
Realimentao (feefback): mensagens de controle (ACK,NAK) do
receptor para o transmissor
3: Camada de Transporte
25
Animao
no slide
seguinte!
3: Camada de Transporte
26
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)
Wait for
call from
below
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
3: Camada de Transporte
27
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)
Wait for
call from
below
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
3: Camada de Transporte
28
se passou no receptor!
no pode apenas
retransmitir: possibilidade
de pacotes duplicados
Lidando c/ duplicatas:
transmissor retransmite o
pare e espera
Transmissor envia um pacote,
e ento aguarda resposta
do receptor
3: Camada de Transporte
29
3: Camada de Transporte
30
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
Esperar
1 de
baixo
rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) &&
has_seq0(rcvpkt)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
3: Camada de Transporte
31
rdt2.1: discusso
Transmissor:
no. de seq no pacote
bastam dois nos. de
seq. (0,1). Por qu?
deve verificar se
ACK/NAK recebidos
esto corrompidos
duplicou o no. de
estados
Receptor:
deve verificar se o
pacote recebido uma
duplicata
3: Camada de Transporte
32
apenas ACKs
ao invs de NAK, receptor envia ACK para
ltimo pacote recebido sem erro
3: Camada de Transporte
33
rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
aguarda
0 de
baixo
aguarda
ACK
0
fragmento FSM
do transmissor
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
udt_send(sndpkt)
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)
fragmento FSM
do receptor
3: Camada de Transporte
34
Abordagem: transmissor
aguarda um tempo
razovel pelo ACK
35
Transmissor rdt3.0
3: Camada de Transporte
36
rdt3.0 em ao
3: Camada de Transporte
37
rdt3.0 em ao
Destinatrio
Remetente
send pkt0
rcv ack0
send pkt1
pkt0
rcv pkt0
send ack0
ack0
pkt1
rcv pkt1
send ack1
ack1
timeout
pkt1
resend pkt1
rcv ack1
pkt0
send pkt0
ack1
rcv ack1
ack0
ignora
rcv pkt1
(detect duplicate)
send ack1
rcv pkt0
send ack0
38
Desempenho do rdt3.0
rdt3.0 funciona, porm seu desempenho sofrvel
Exemplo: enlace de 1 Gbps, retardo fim a fim de 15
L 8000bits
d trans
8 microsegun dos
9
R 10 bps
U
sender
L/R
RTT + L / R
0,008
= 8
30,008
= 0,00027
microsec
onds
enlace de 1 Gbps
protocolo limita uso dos recursos fsicos!
3: Camada de Transporte
39
U tx
L/R
0,008
0,00027
RTT L / R 30,008
3: Camada de Transporte
40
41
Aumenta a utilizao
por um fator de 3!
U tx
3 L / R
0,024
0,00081
RTT L / R 30,008
3: Camada de Transporte
42
Retransmisso seletiva:
No reconhece pacote se
houver falha de seq.
Transmissor possui um
temporizador para o pacote
mais antigo ainda no
reconhecido
Se o temporizador
estourar, retransmite
todos os pacotes ainda no
reconhecidos.
Transmissor possui um
temporizador para cada
pacote ainda no reconhecido
Se o temporizador
estourar, retransmite
apenas o pacote
correspondente.
3: Camada de Transporte
43
Go-back-N (GBN)
Transmissor:
reconhecidos
ACK/reconhecimento cumulativo
pode receber ACKs duplicados (veja receptor)
temporizador para o pacote mais antigo ainda no confirmado
Estouro do temporizador: retransmite todos os pacotes
pendentes.
3: Camada de Transporte
44
If getacknum(rcvpkt)>=base
3: Camada de Transporte
45
46
012345678
012345678
sender
send pkt0
send pkt1
send pkt2
send pkt3
(wait)
012345678
012345678
012345678
012345678
timeout
send pkt2
send pkt3
send pkt4
send pkt5
receiver
Xloss
send
send
send
send
47
ack2
ack3
ack4
ack5
Retransmisso seletiva
individualmente todos os
pacotes recebidos corretamente
receptor reconhece
janela do transmisso
N nmeros de sequncia consecutivos
outra vez limita nmeros de sequncia de pacotes
enviados, mas ainda no reconhecidos
3: Camada de Transporte
48
reconhecido
3: Camada de Transporte
49
Retransmisso seletiva
transmissor
dados de cima:
estouro do temporizador(n):
receptor
pacote n em
[rcvbase, rcvbase+N-1]
envia ACK(n)
fora de ordem: armazena
em ordem: entrega (tb.
entrega pacotes
armazenados em ordem),
avana janela p/ prxima
pacote ainda no recebido
pacote n em
[rcvbase-N,rcvbase-1]
ACK(n)
seno:
ignora
3: Camada de Transporte
50
Retransmisso seletiva em ao
3: Camada de Transporte
51
Retransmisso
seletiva: dilema
Exemplo:
nos. de seq : 0, 1, 2, 3
tam. de janela =3
receptor no v diferena
3: Camada de Transporte
52
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
estrutura do segmento
transferncia confivel de
dados
controle de fluxo
gerenciamento da conexo
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
53
ponto a ponto:
um transmissor, um receptor
no estruturado em msgs
orientado a conexo:
fluxo controlado:
3: Camada de Transporte
54
contagem por
bytes de dados
(no
segmentos!)
nmero de bytes
receptor est
pronto para
aceitar
Internet
checksum
(como no UDP)
3: Camada de Transporte
55
Nos. de seq.:
nmerodentro do
fluxo de bytes do
primeiro byte de dados
do segmento
ACKs:
no. de seq do prx. byte
esperado do outro lado
ACK cumulativo
P: como receptor trata
segmentos fora da ordem?
R: espec do TCP omissa
- deixado ao
implementador
dest port #
sequence number
acknowledgement number
rwnd
checksum
urg pointer
window size
N
dest port #
sequence number
acknowledgement number
rwnd
A
checksum
urg pointer
3: Camada de Transporte
56
57
a transmisso do segmento e o
recebimento do ACK
correspondente
ignora retransmisses
SampleRTT varia de forma
rpida, desejvel um
amortecedor para a estimativa
do RTT
usa vrias medies recentes,
no apenas o ltimo
SampleRTT obtido
3: Camada de Transporte
58
3: Camada de Transporte
59
60
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
estrutura do segmento
transferncia confivel de
dados
controle de fluxo
gerenciamento da conexo
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
61
Segmentos transmitidos
em paralelo (pipelined)
Acks cumulativos
O TCP usa um nico
temporizador para
retransmisses
As retransmisses so
disparadas por:
estouros de
temporizao
acks duplicados
Considere inicialmente
um transmissor TCP
simplificado:
62
Estouro do temporizador:
Retransmite o segmento
que causou o estouro do
temporizador
Reinicia o temporizador
Recepo de Ack:
Se reconhecer segmentos
ainda no reconhecidos
63
Transmissor TCP
(simplificado)
NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
wait
for
event
timeout
retransmit not-yet-acked
segment
with
smallest seq. #
start timer
if (y > SendBase) {
SendBase = y
/* SendBase1: last cumulatively ACKed byte */
if (there are currently not-yet-acked segments)
start timer
else stop timer
}
3: Camada de Transporte
64
Religa
temporizao
Religa
temporizao
Religa
temporizao
Desliga
temporizao
Desliga
temporizao
Temporizao prematura,
ACKs cumulativos
3: Camada de Transporte
65
Desliga
temporizao
66
Evento no Receptor
Ao do Receptor TCP
67
temporizador
frequentemente bastante
longo:
Detecta segmentos
O transmissor
normalmente envia
diversos segmentos
Se um segmento se
perder, provavelmente
haver muitos ACKs
duplicados.
68
Host B
Host A
X
ACK=100
timeout
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data
69
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
estrutura do segmento
transferncia confivel de
dados
controle de fluxo
gerenciamento da conexo
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
70
Controle de Fluxo
do TCP
processo
de aplicao
aplicao
Buffers de recepo
do socket TCP
TCP
code
IP
code
Controle de fluxo
o receptor controla o
transmissor, de modo que
este no inunde o buffer do
receptor transmitindo muito
e rapidamente
SO
do transmissor
71
Tamanho do RcvBuffer
configurado atravs das opes do
socket (o valor default de 4096
bytes)
muitos sistemas operacionais ajustam
RcvBuffer automaticamente.
os dados no reconhecidos ao
tamanho do rwnd recebido.
Garante que o buffer do receptor
no transbordar
RcvBuffer dados
rwnd
armazenados
espao livre
armazenamento no
lado do receptor
3: Camada de Transporte
72
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
estrutura do segmento
transferncia confivel de
dados
controle de fluxo
gerenciamento da conexo
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
73
aplicao
estado conexo: ESTAB
variveis conexo:
No.seq cliente-p/servidor
servidor-p/-cliente
tamanho rcvBuffer
no servidor,cliente
network
network
Socket clientSocket =
newSocket("hostname","port
number");
Socket connectionSocket =
welcomeSocket.accept();
3: Camada de Transporte
74
Lets talk
ESTAB
choose x
ESTAB
OK
ESTAB
atrasos variveis
mensagens retransmitidas
req_conn(x)
acc_conn(x)
P: a apresentao em duas
vias sempre funciona em
redes?
ESTAB
3: Camada de Transporte
75
escolhe x
escolhe x
req_conn(x)
req_conn(x)
ESTAB
ESTAB
retransmit
e
req_conn(
ESTAB
x)
retransmit
e
req_conn(
ESTAB
x)
acc_conn(x)
req_conn(x)
cliente
termina
trmino da
conexo x
servidor
esquece
x
ESTAB
retransmit
e
dados(x+
1)
cliente
termina
acc_conn(x)
data(x+1)
aceita
dados(x+1
)
trmino da
conexo x
servidor
req_conn(x) esquece
x
data(x+1)
3: Camada de Transporte
ESTAB
aceita
dados(x+1
)
76
estado do servidor
LISTEN
LISTEN
escolhe no seq inicial, x
envia msg TCP SYN
SYNSENT
SYNbit=1, Seq=x
escolhe no seq inicial, y
envia msg SYNACK,
reconhecendo o SYN SYN RCVD
SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1
ESTAB
SYNACK(x) recebido
Indica que o servidor
est ativo;
envia ACK para ACKbit=1, ACKnum=y+1
SYNACK;
ACK(y) recebido
este segmento pode
indica que o cliente
conter
est ativo
dados do cliente para
servidor
3: Camada de Transporte
ESTAB
77
SYN(x)
SYNACK(seq=y,ACKnum=x+1)
cria novo socket para
comunicao com o cliente
listen
SYN(seq=x)
SYN
sent
SYN
rcvd
ACK(ACKnum=y+1)
Socket clientSocket =
newSocket("hostname","port
number");
ESTAB
SYNACK(seq=y,ACKnum=x+1)
ACK(ACKnum=y+1)
3: Camada de Transporte
78
3: Camada de Transporte
79
estado do servidor
ESTAB
ESTAB
clientSocket.close()
FINbit=1, seq=x
enviar, mas
CLOSE_WAIT
pode receber
dados ACKbit=1; ACKnum=x+1
ainda pode
FIN_WAIT_2 espera o trmino
enviar dados
pelo servidor
FINbit=1, seq=y
TIMED_WAIT
espera temporizada
por 2*tempo mximo
de vida do segmento
LAST_ACK
no pode mais
enviar dados
ACKbit=1; ACKnum=y+1
CLOSED
CLOSED
3: Camada de Transporte
80
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
81
Princpios de Controle de
Congestionamento
Congestionamento:
82
Causas/custos de congestionamento:
cenrio 1
dois remetentes,
dois receptores
um roteador,
buffers infinitos
sem retransmisso
capacidade do link
de sada: R
Vazo mxima por
conexo: R/2
83
Hospedeiro C
Hospedeiro B
Hospedeiro D
3: Camada de Transporte
84
out
R/2
in
out
R/2
Hospedeiro C
Hospedeiro B
espao livre em buffer!
Buffers de enlace de
sada finitos
compartilhados
Hospedeiro D
3: Camada de Transporte
85
in : dados originais
out
cpia
Hospedeiro B
A
Hospedeiro D
3: Camada de Transporte
86
out
in
R/2
ao transmitir a R/2,
alguns pacotes so
retransmisses, mas
assintoticamente a
goodput ainda seria
R/2 (por que?)
in : dados originais
out
Hospedeiro B
A
Hospedeiro D
3: Camada de Transporte
87
out
Realidade: duplicatas
pacotes podem ser perdidos,
descartados no roteador devido
a buffers cheios
retransmisso prematura, envio
de duas cpias, ambas entregues.
in
R/2
in : dados originais
out
timeout
Hospedeiro B
A
Hospedeiro D
3: Camada de Transporte
88
out
Realidade: duplicatas
pacotes podem ser perdidos,
descartados no roteador devido
a buffers cheios
retransmisso prematura, envio
de duas cpias, ambas entregues.
in
R/2
custos do congestionamento:
mais trabalho (retransmisses) para uma dada goodput
Retransmisses desnecessrias: link transporta mltiplas cpias
do pacote
diminuindo a goodput
3: Camada de Transporte
89
Causas/custos de congestionamento:
cenrio 3
P: o que acontece medida que
quatro remetentes
enlaces
temporizao/
retransmisso
in crescem ?
in
in : dados originais
out
3: Camada de Transporte
90
Causas/custos de congestionamento:
cenrio 3
R/2
3: Camada de Transporte
91
roteadores enviam
informaes para os sistemas
finais
bit indicando
congestionamento (SNA,
DECbit, TCP/IP ECN,
ATM)
taxa explcita para envio
pelo transmissor
3: Camada de Transporte
92
servio elstico
se caminho do transmissor
est pouco usado:
transmissor pode usar
banda disponvel
se caminho do transmissor
estiver congestionado:
transmissor limitado
taxa mnima garantida
clulas RM (resource
management):
93
congestionados
94
Contedo do Captulo 3
3.1 Introduo e
servios de camada de
transporte
3.2 Multiplexao e
demultiplexao
3.3 Transporte no
orientado para
conexo: UDP
3.4 Princpios da
transferncia
confivel de dados
3.5 Transporte
orientado para
conexo: TCP
3.6 Princpios de
controle de
congestionamento
3.7 Controle de
congestionamento no
TCP
3: Camada de Transporte
95
Controle de Congestionamento do
TCP: aumento aditivo, diminuio multiplicativa
Abordagem: aumentar a taxa de transmisso
Comportamento de
dente de serra:
testando a largura
de banda
96
Controle de Congestionamento do
TCP: detalhes
transmissor limita a
transmisso:
LastByteSent-LastByteAcked
cwnd
Aproximadamente,
taxa =
cwnd
RTT
Bytes/seg
congestionamento detectado na
rede
AIMD
partida lenta
conservador aps eventos
de estouro de
temporizao (preveno
de congestionamento)
3: Camada de Transporte
97
aumenta a taxa
exponencialmente at o
primeiro evento de
perda:
RTT
No incio da conexo,
B
um segme
nto
dois segm
en
tos
quatro seg
m
entos
tempo
3: Camada de Transporte
98
3: Camada de Transporte
99
Implementao:
(ssthresh)
Com uma perda o limiar
(ssthresh) ajustado para
1/2 da cwnd imediatamente
antes do evento de perda.
3: Camada de Transporte
100
Controle de congestionamento do
transmissor TCP
ACK duplicado
dupACKcount++
cwnd = 1 MSS
ssthresh = 64 KB
dupACKcount = 0
partida
lenta
timeout
ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
retransmite os segmentos que faltam
dupACKcount == 3
ssthresh= cwnd/2
cwnd = ssthresh + 3
retransmite os segmentos que faltam
Novo
ACK!
Novo
ACK!
novo ACK
cwnd = cwnd + MSS (MSS/cwnd)
dupACKcount = 0
transmite novos segmentos, como permitido
novo ACK
cwnd = cwnd+MSS
dupACKcount = 0
transmite novos segmentos, como permitido
cwnd > ssthresh
timeout
ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
retransmite os segmentos que faltam
preveno
de
congest.
ACK duplicado
dupACKcount++
Novo
ACK!
timeout
ssthresh = cwnd/2
cwnd = 1
dupACKcount = 0
retransmite os segmentos que faltam
Novo ACK
cwnd = ssthresh
dupACKcount = 0
recuperao
rpida
dupACKcount == 3
ssthresh= cwnd/2
cwnd = ssthresh + 3
retransmite os segmentos que faltam
ACK duplicado
cwnd = cwnd + MSS
transmite novos segmentos, como permitido
3: Camada de Transporte
101
e do RTT?
perda
W/2
3: Camada de Transporte
102
Futuro do TCP
Exemplo: segmentos de 1500 bytes, RTT de
1,22 MSS
vazo do TCP
RTT L
Taxa de perdas demasiado baixa!!!
So necessrias novas verses do TCP para altas
velocidades!
L = 210-10
3: Camada de Transporte
103
Conexo
TCP 2
Roteador
com gargalo, de
capacidade R
3: Camada de Transporte
104
Vazo da conexo 2
Vazo da conexo 1
R
3: Camada de Transporte
105
Equidade (mais)
Equidade e UDP
Aplicaes multimdia
frequentemente no usam
TCP
no querem a taxa
estrangulada pelo controle
de congestionamento
3: Camada de Transporte
106
Captulo 3: Resumo
Princpios por trs dos
servios da camada de
transporte:
multiplexao/
demultiplexao
transferncia confivel de
dados
controle de fluxo
controle de congestionamento
instanciao e implementao na
Internet
UDP
TCP
Prximo captulo:
samos da borda da
rede (camadas de
aplicao e transporte)
entramos no ncleoda
rede
3: Camada de Transporte
107