3: Nível de Transporte 3b-1 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 Transmissão de dados bi-direccional: Transmissão de dados bi-direccional na mesma ligação MSS: maximum segment size Orientado-à-ligação: handshaking (transferência de mensagens de controlo) • Inicia o estado do emissor e do receptor antes de transferir os dados Fluxo controlado: Emissor não sobrecarrega o receptor Ponto-a-ponto: Um emissor, um receptor Cadeia de bytes ordenada e fiável: Não há “fronteiras nas mensagens” pipelined: TCP dimensão das janelas de controlo de congestão e de fluxo ajustável Buffers no emissor e receptor socket door TCP Buffer de envio TCP Buffer de recepção socket door Aplicação Escrita de dados Aplicação Leitura de dados segmento
42
Embed
3: Nível de Transporte3b-1 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 r Transmissão de dados bi- direccional: m Transmissão de dados bi- direccional.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transmissão de dados bi-direccional: Transmissão de dados bi-
direccional na mesma ligação
MSS: maximum segment size
Orientado-à-ligação: handshaking
(transferência de mensagens de controlo)
• Inicia o estado do emissor e do receptor antes de transferir os dados
Fluxo controlado: Emissor não sobrecarrega
o receptor
Ponto-a-ponto: Um emissor, um receptor
Cadeia de bytes ordenada e fiável: Não há “fronteiras nas
mensagens” pipelined:
TCP dimensão das janelas de controlo de congestão e de fluxo ajustável
Buffers no emissor e receptor
socketdoor
TCPBuffer de envio
TCPBuffer de recepção
socketdoor
AplicaçãoEscrita de dados
AplicaçãoLeitura de dados
segmento
3: Nível de Transporte 3b-2
TCP: estrutura do segmento
# porto origem# porto destino
32 bits
applicationdata
(variable length)
Número sequênciaNúmero
acknowledgmentrcvr window size
ptr urgent datachecksum
FSRPAUheadlen
notused
Opções (dimensão variável)
3: Nível de Transporte 3b-3
TCP: estrutura do segmento
# porto destino
32 bits
applicationdata
(variable length)
Número sequênciaNúmero
acknowledgmentrcvr window size
ptr urgent datachecksum
FSRPAUheadlen
notused
Opções (dimensão variável)
# porto origem Nº de sequência e Nº de ACKS: Contagem por bytes de dados Não segmentos !
Head Length em palavras de 32 b Dimensão sem extensões 20 B
RCVR Window Size: Nº de Bytes que o receptor espera
receber
Opções: Negociação de parâmetros
• MSS (usual 1500; 536; 512 B)• Factor de escala p/ janela em
ligações de alto débito
3: Nível de Transporte 3b-4
TCP: estrutura do segmento
# porto destino
32 bits
applicationdata
(variable length)
Número sequênciaNúmero
acknowledgmentrcvr window size
ptr urgent datachecksum
FSRPAUheadlen
notused
Opções (dimensão variável)
# porto origem Flags de sinalização de informação urgente:
U – URG: dados que o nível superior do emissor sinalizou como urgentes
P – PSH: O receptor deve passar os dados para o nível superior imediata/
Flags de controlo A – ACK: valor válido no campo ACK R- RST; S- SYN; F – FIN:
estabelecimento e terminação da ligação
Ptr Urgent data Apontador para o último byte de
dados que contém dados urgentes
3: Nível de Transporte 3b-5
TCP nº de sequência e ACKSeq. #’s:
Nº da cadeia de bytes do primeiro byte do segmento de dados
ACKs: Nº de seq. do
próximo byte esperado do outro lado
ACK acumulativoQ: Como é que o receptor
processa segmentos for a de ordem ? A: A especificação
TCP não é clara, deixando esta questão para a implementação
Host A Host B
Seq=42, ACK=79, data = ‘C’
Seq=79, ACK=43, data = ‘C’
Seq=43, ACK=80
Utilizadordigita
‘C’
Sistema Terminal confirma (ACK)
e ecoa o ‘C’
Sistema Terminal recebe ‘C’ e
e ecoa de volta o ‘C’
tempoCenário simples de Telnet
3: Nível de Transporte 3b-6
TCP: cenários de retransmissão
Host A
Seq=92, 8 bytes data
ACK=100
loss
tim
eout
tempo Perda de ACK
Host B
X
Seq=92, 8 bytes data
ACK=100
Host A
Seq=100, 20 bytes data
ACK=100
Seq=
92
tim
eout
tempo Timeout antecipado,ACKs acumulativo
Host B
Seq=92, 8 bytes data
ACK=120
Seq=92, 8 bytes data
Seq=
10
0 t
imeou
t
ACK=120
3: Nível de Transporte 3b-7
TCP: transferência de dados fiável
Emissor simplificado, assume:
waitfor
event
waitfor
event
evento: dados recebidosdas aplicações dos
níveis superiores
evento: temporizador expira para o segmento com o nº de seq. y
evento: ACK recebido com ACK y
criação, envio do segmento
Retransmisssão do segmento y
ACK processado
•Transferência de dados uni-direcccional•Sem controlo de fluxo•Sem controlo de congestão
3: Nível de Transporte 3b-8
TCP: transferência de dados fiável
00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 0203 loop (forever) { 04 switch(event) 05 event: data received from application above 06 create TCP segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum + length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 compute new timeout interval for segment y 13 restart timer for sequence number y 14 event: ACK received, with ACK field value of y 15 if (y > sendbase) { /* cumulative ACK of all data up to y */ 16 cancel all timers for segments with sequence numbers < y 17 sendbase = y 18 } 19 else { /* a duplicate ACK for already ACKed segment */ 20 increment number of duplicate ACKs received for y 21 if (number of duplicate ACKS received for y == 3) { 22 /* TCP fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 26 } /* end of loop forever */
Emissor TCP simplificado
3: Nível de Transporte 3b-10
TCP Controlo de fluxoreceptor:
Informa explicitamente o emissor da quantidade de buffer livre, de forma dinâmica
RcvWindow: • campo usado do cabeçalho TCP
emissor: Mantém a quantidade
de dados transmitidos e não confirmados (unACKed) inferior ao valor mais recente que recebeu da janela RcvWindow
Emisor não sobrecarrega o
receptor por transmitir demasiadamente
rápido
Controlo de fluxo
Não controla
o que sepassa na rede
3: Nível de Transporte 3b-11
TCP Controlo de fluxo - receptor
LastByteRead = nº do último byte lido do buffer pela aplicação do lado BLastByteRcv = nº do último byte recebido da rede e colocado no buffer do lado B
informação a um ritmo muito superior ao que a rede é capaz de processar”
Diferente do controlo de fluxo! Sintomas:
Perda de pacote (buffer overflow nos routers)
Atrasos elevados (queueing nos buffers dos router)
Problema da lista dos TOP 10!
3: Nível de Transporte 3b-22
Causas e custos do controlo de congestão: cenário 1
Dois emissores Dois receptores Um router Buffer infinito Sem
retransmissões
Atraso elevado em situação de congestão
Débito máximo atingível
3: Nível de Transporte 3b-23
um router buffers finitos Emissor retransmite pacotes perdidos
Causas e custos do controlo de congestão: cenário 2
3: Nível de Transporte 3b-24
1 - Situação ideal : (goodput)
2 - Retransmissões ocorrem quando há perdas:
3 - Retransmissões de pacotes atrasados (não perdidos) faz
maior para o mesmo
in
out
=
in
out
>
in
out
“custos” da congestão: Mais trabalho (retrans) para um dado “goodput” Retransmissões desnecessárias: ligação transporte múltiplas cópias do pacote
Causas e custos do controlo de congestão: cenário 2
1
1 2 3
3: Nível de Transporte 3b-25
4 emissores Caminho com vários nós timeout/retransmissões
in
Q: o que acontece quando e aumenta ?
in
Causas e custos do controlo de congestão: cenário 3
A C: R1 R2 B D: R2 R3 C A: R3 R4 D B: R4 R1
3: Nível de Transporte 3b-26
Causas e custos do controlo de congestão: cenário 3
A C: R1 R2 B D: R2 R3 C A: R3 R4 D B: R4 R1
in pequeno Mais dados são transmitidos na
rede e entregues ao destino Overflow de buffers é raro out também aumenta
in e ’in muito elevado (B->D) Tráfego de A que chega a R2 pode ser aproximadamente R Tráfego de B->D que chega a R2 é muito superior ao tráfego proveniente de A->C). Quando maior for o tráfego de B->D maior é a probabilidade do tráfego de A->C
encontrar o buffer de R2 cheio com um pacote de B
3: Nível de Transporte 3b-27
Outro “custo” da congestão: Quando um pacote se perde, qualquer capacidade de
transmisssão que já tenha sido usada para o transmitir é perdida!
Causas e custos do controlo de congestão: cenário 3
3: Nível de Transporte 3b-28
Aproximações ao controlo de congestão
Controlo de congestão extremo-a-extremo:
Não há feedback da rede Congestão inferida pelos
Sistemas Terminais, quando detectam perdas na rede
Aproximação do TCP
Controlo de congestão assistido pela rede:
Routers fornecem feedback aos Sistemas Terminas Um único bit indica a
congestão Envio explicíto do
ritmo a que o emissor pode enviar
Duas aproximações ao controlo de congestão:
3: Nível de Transporte 3b-29
Caso de estudo: Controlo de congestão ATM ABR
ABR: available bit rate: “Serviço elástico” Se o caminho do emissor
não está carregado: Emissor deve usar a
largura de banda disponível
Se o caminho do emissor não está congestionado : Emissor envia apenas
ao ritmo mínimo garantido
RM (resource management) cells:
Enviadas pelo emissor, intercaladas com as células de dados
Bits nas células RM activadas pelos switches (“network-assisted”) NI bit: não aumentar o ritmo
(congestão média) CI bit: indicador de
congestão Células RM cells retornadas pelo
receptor com os bits intactos
3: Nível de Transporte 3b-30
ER (explicit rate) campo de 2 bytes numa célula RM switch congestionado pode diminuir o valor de ER da célula Emissor envia ao ritmo mínimo suportado pelo caminho
EFCI bit na célula de dados: EFCI = 1 indica congestão no switch Se as células de dados que precedem a célula RM têm EFCI ctivo,
receptor activa CI na célula RM de retorno Bits CI e NI
Um switch pode activar o bit NI/CI, o qual deverá ser retornado ao emissor na próxima célula RM
Caso de estudo: Controlo de congestão ATM ABR
3: Nível de Transporte 3b-31
Controlo de congestão no TCP Controlo extremo-a-extremo (não assistido pela rede) Ritmo de transmissão limitado pela dimensão da janela
de congestão, Congwin:
W segmentos, cada um com MSS bytes enviados em cada RTT:
Débito = w * MSS
RTT Bytes/sec
Congwin
3: Nível de Transporte 3b-32
Duas fases slow start congestion avoidance
Variáveis importantes: Congwin threshold
• Define o valor de limiar (threshold) entre duas fases slow start e controlo de congestao
“probing” para a largura de banda utilizável: Idealmente: transmite
táo rápido quanto possível sem perdas (Congwin tão grande quando possível)
aumenta Congwin até perdas (congestão)
perdas: diminui Congwin, então aumenta o probing
Controlo de congestão no TCP
3: Nível de Transporte 3b-33
TCP Slowstart
Aumenta exponencialmente (por RTT) o tamanho da janela
Evento de perda: TCP Tahoe : Timeout TCP Reno: Timeout e/ou três ACKs