A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 Ponto-a-ponto:

Apresentações semelhantes


Apresentação em tema: "TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 Ponto-a-ponto:"— Transcrição da apresentação:

1 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 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 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 Aplicação Aplicação Escrita de dados socket Leitura de dados socket door door TCP TCP Buffer de envio Buffer de recepção segmento 3: Nível de Transporte

2 TCP: estrutura do segmento
# porto origem # porto destino 32 bits application data (variable length) Número sequência Número acknowledgment rcvr window size ptr urgent data checksum F S R P A U head len not used Opções (dimensão variável) 3: Nível de Transporte

3 TCP: estrutura do segmento
32 bits # porto origem # porto destino 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 Número sequência Número acknowledgment head len not used U A P R S F rcvr window size checksum ptr urgent data Opções (dimensão variável) application data (variable length) 3: Nível de Transporte

4 TCP: estrutura do segmento
32 bits # porto origem # porto destino 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 Número sequência Número acknowledgment head len not used U A P R S F rcvr window size checksum ptr urgent data Opções (dimensão variável) application data (variable length) 3: Nível de Transporte

5 TCP nº de sequência e ACK
Seq. #’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 acumulativo Q: 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 Utilizador digita ‘C’ Seq=42, ACK=79, data = ‘C’ Sistema Terminal recebe ‘C’ e e ecoa de volta o ‘C’ Seq=79, ACK=43, data = ‘C’ Sistema Terminal confirma (ACK) e ecoa o ‘C’ Seq=43, ACK=80 tempo Cenário simples de Telnet 3: Nível de Transporte

6 TCP: cenários de retransmissão
Host A Seq=92, 8 bytes data ACK=100 loss timeout tempo Perda de ACK Host B X Host A Host B Seq=92, 8 bytes data Seq=100, 20 bytes data Seq=92 timeout ACK=100 Seq=100 timeout ACK=120 Seq=92, 8 bytes data ACK=120 tempo Timeout antecipado, ACKs acumulativo 3: Nível de Transporte

7 TCP: transferência de dados fiável
evento: dados recebidos das aplicações dos níveis superiores Emissor simplificado, assume: Transferência de dados uni-direcccional Sem controlo de fluxo Sem controlo de congestão criação, envio do segmento wait for event evento: temporizador expira para o segmento com o nº de seq. y wait for event Retransmisssão do segmento y evento: ACK recebido com ACK y ACK processado 3: Nível de Transporte

8 TCP: transferência de dados fiável
00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 loop (forever) { switch(event) event: data received from application above create TCP segment with sequence number nextseqnum start timer for segment nextseqnum pass segment to IP nextseqnum = nextseqnum + length(data) event: timer timeout for segment with sequence number y retransmit segment with sequence number y compute new timeout interval for segment y restart timer for sequence number y event: ACK received, with ACK field value of y if (y > sendbase) { /* cumulative ACK of all data up to y */ cancel all timers for segments with sequence numbers < y sendbase = y } else { /* a duplicate ACK for already ACKed segment */ increment number of duplicate ACKs received for y if (number of duplicate ACKS received for y == 3) { /* TCP fast retransmit */ resend segment with sequence number y restart timer for segment y } } /* end of loop forever */ TCP: transferência de dados fiável Emissor TCP simplificado 3: Nível de Transporte

9 TCP geração de ACKs [RFC 1122, RFC 2581]
Evento Chegada ordenada de segmentos, Sem “buracos”, tudo o mais já confirmado (ACKed) Um ACK pendente por atraso Chegada de segmentos desordenada Nº de seq. superior ao esperado “Buraco(s)” detectados Chegada de segmento que preenche completa ou incompletamente o buraco TCP Acção no receptor ACK atrasado. Espera máxima de 500 ms pelo próximo segmento. Se não chega segmento, envia ACK Envia imediatamente um único ACK Acumulativo, referente a todos os segmentos que chegaram ordenadamente Envia ACK duplicado, indicando o nº de seq. do próximo byte esperado ACK imediato se o segmento começa no limite inferior do “buraco” 3: Nível de Transporte

10 TCP Controlo de fluxo Controlo de fluxo receptor:
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 Não controla o que se passa na rede 3: Nível de Transporte

11 TCP Controlo de fluxo - receptor
RcvBuffer = dimensão do buffer de recepção do TCP RcvWindow = quantidade de espaço disponível no buffer LastByteRcv LastByteRead LastByteRead = nº do último byte lido do buffer pela aplicação do lado B LastByteRcv = nº do último byte recebido da rede e colocado no buffer do lado B LastByteRcv – LastByteRead <= RcvBuffer RcvWindow = RcvBuffer – [LastByteRcv – LastByteRead] 3: Nível de Transporte

12 TCP Controlo de fluxo - emissor
RcvBuffer = dimensão do buffer de recepção do TCP RcvWindow = quantidade de espaço disponível no buffer LastByteSend= nº do último byte enviado para a rede LastByteAck = nº do último byte que foi confirmada a recepção LastByteSend – LastByteAcK <= RcvWindow receptor: Sinaliza o emissor RcvWindow = 0 Não tem mais informação para enviar para o emissor emissor: Não pode enviar mais informação ! Solução: TCP “obriga” o emissor a enviar um segmento de 1 B para obrigar o receptor a responder 3: Nível de Transporte

13 TCP Round Trip Time eTimeout
Q: como estabelecer o valor de timeout do TCP? Superior a RTT nota: RTT vai variar Muito pequeno: timeout antecipado Retransmissões desnecessárias Muito longo: reacção lenta à perda de segmentos Q: Como estimar RTT? SampleRTT: tempo medido desde a transmissão do segmento para o nível de rede até à recepção do ACK Ignora retransmissões, Faz o ACK acumulativo dos segmentos SampleRTT vai variar, Estimar RTT de forma “suave” Usar várias medidas recentes e não apena o valor corrente de SampleRTT 3: Nível de Transporte

14 TCP Round Trip Time e Timeout
EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT Exponential weighted moving average Influência de uma amostra decresce com uma rapidez exponencial Valor típico de x: 0.125 Parametrizando o timeout EstimatedRTT mais “margem de segurança” Grande variação em EstimatedRTT -> margem de segurança superior Timeout = EstimatedRTT + 4*Deviation Mede a variação de SampleRTT em relação ao EstimatedRTT Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT| 3: Nível de Transporte

15 TCP Gestão das ligações
Cliente: Inicia a ligação socket_fd=socket(Domínio, Tipo, 0) connect(socket_fd,estr_ender,dim_estr_ender) Domínio =PF_INET(comunicação entre STs IPVv4) Tipo = SOCK_STREAM (TCP) ou SOCK_DGRAM (UDP) estr_end = domínio; porto; end IP destino) Servidor: contactado pelo cliente bind(socket_fd1,estr_endereços,dim_estr_ender) listen (socket_fd1, num_lig_em_espera) new_fd=accept(socket_fd1, estr_endereços, dim) estr_end = domínio; porto; end IP origem) Recordar: O emissor TCP estabelece uma ligação antes de iniciar a transmissão dos segmentos Inicialização das variáveis TCP: Nº de sequência Buffers Informação de janela de controlo de fluxo (RcvWindow) 3: Nível de Transporte

16 TCP Gestão das ligações: Estabelecimento
Passo 1: Ligação pedidda Sistema Terminal do cliente envia segmento SYN =1 para o servidor Não tem campo de dados Define o nº de seq. original client_isn Passo 2: Ligação concedida Sistema Terminal do Servidor recebe o segmento de controlo SYN =1 Não tem campo de dados Confirma a recepção do seg. Ack = client_isn+1 Define o nº de seq. inicial do servidor Server_isn Responde com o segmento de controlo SYNACK Passo 3: Ligação confirmada Sistema Terminal do cliente envia segmento SYN = 0 para o servidor Reserva buffers e variáveis Confirma a recepção do seg. Ack = server_isn+1 3: Nível de Transporte

17 TCP Gestão das ligações: Estabelecimento
cliente servidor pedido Connection-request (SYN=1, seq=client_isn) Reserva buffers e variáveis Connection-granted (SYN=1, seq=server_isn, ack_client_isn+1) Reserva buffers e variáveis estabelecimento Acknowldege (SYN=0, seq=client_isn+1, ack=server_isn+1) tempo 3: Nível de Transporte

18 TCP Gestão das ligações: Fecho
Cliente: fecha a ligação Servidor: fecha a ligação com o cliente close(sock_fd) close(sock_fd1) Passo 3/4: Pedido de fim de ligação do servidor Sistema Terminal do servidor envia o segmento de controlo FYN = 1 para terminar a ligação TCP Cancela a reserva de recursos Sistema Terminal do cliente confirma a recepção do FYN do cliente Envia ACK Espera um tempo até dar a ligação por terminada Passo 1/2: Pedido de fim de ligação do cliente Sistema Terminal do cliente envia o segmento de controlo FYN = 1 para terminar a ligação TCP Cancela a reserva de recursos Sistema Terminal do servidor confirma a recepção do FYN do cliente Envia ACK 3: Nível de Transporte

19 TCP Gestão das ligações: Fecho
cliente servidor Fechando FIN ACK Fechando FIN ACK Tempo de espera Fechou Fechou 3: Nível de Transporte

20 TCP Gestão das ligações: ciclo de vida
Ciclo de vida do servidor TCP Ciclo de vida do cliente TCP 3: Nível de Transporte

21 Princípios de controlo de congestão
Informalmente: “demasiadas fontes enviam 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

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

23 Causas e custos do controlo de congestão: cenário 2
um router buffers finitos Emissor retransmite pacotes perdidos 3: Nível de Transporte

24 Causas e custos do controlo de congestão: cenário 2
in out = 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 l in out > l in l out 1 1 2 3 “custos” da congestão: Mais trabalho (retrans) para um dado “goodput” Retransmissões desnecessárias: ligação transporte múltiplas cópias do pacote 3: Nível de Transporte

25 Causas e custos do controlo de congestão: cenário 3
4 emissores Caminho com vários nós timeout/retransmissões Q: o que acontece quando e aumenta ? l in l in A  C: R1  R2 B  D: R2  R3 C  A: R3  R4 D  B: R4  R1 3: Nível de Transporte

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

27 Causas e custos do controlo de congestão: cenário 3
Outro “custo” da congestão: Quando um pacote se perde, qualquer capacidade de transmisssão que já tenha sido usada para o transmitir é perdida! 3: Nível de Transporte

28 Aproximações ao controlo de congestão
Duas 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 3: Nível de Transporte

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

30 Caso de estudo: Controlo de congestão ATM ABR
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 3: Nível de Transporte

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: Congwin W segmentos, cada um com MSS bytes enviados em cada RTT: Débito = w * MSS RTT Bytes/sec 3: Nível de Transporte

32 Controlo de congestão no TCP
“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 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 3: Nível de Transporte

33 TCP Slowstart Algoritmo de Slowstart initialize: Congwin = 1
Host A Host B Algoritmo de Slowstart one segment initialize: Congwin = 1 for (each segment ACKed) Congwin++ until (loss event OR Congwin > threshold) RTT two segments four segments Aumenta exponencialmente (por RTT) o tamanho da janela Evento de perda: TCP Tahoe : Timeout TCP Reno: Timeout e/ou três ACKs duplicados (recebidos antes do timeout) Tempo 3: Nível de Transporte

34 TCP Congestion Avoidance
/* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart 1 1: TCP Reno ultrapassa o slowstart (recuperação rápida ) após 3 ACKs duplicados 3: Nível de Transporte

35 TCP Fairness AIMD –Additive Increase Multiplicative Decrease
Método de evitar congestão: Incrementa a janela 1 unidade por RTT Decrementa a janela 2 unidades por evento de perda Objectivo de justiça: se uma ligação estrangulada é partilhada por N sessões TCP, cada uma delas deve obter 1/N da capacidade da ligação Ligação TCP 1 bottleneck router Capacidade = R Ligação TCP 2 3: Nível de Transporte

36 Porque é que o TCP é justo ?
Duas sessões em competição: Aumento aditivo: Aumento origina um declive de 1, quando o débito aumenta Decréscimo multiplicativo: Débito decresce proporcionalmente R Largura de Banda partilhada igualmente D Evitar a congestão: aumento aditivo Débito da ligação 2 B Perdas: janela decresce por um factor 2 C A Débito da ligação 1 R 3: Nível de Transporte

37 Modelo de latência do TCP
Q: Quanto tempo demora a receber um objecto um dum Web servidor depois de enviar um pedido ? Estabelecimento duma ligação TCP Fase de transferência de dados Pressupostos: Ligação Cliente e o Servidor não é partilhada com outro tipo de tráfego TCP ou UDP. Sem retransmissões Sem perdas Sem corrupção Headers desprezáveis Tempo de transmissão Só é significativo para os segmentos de dimensão máxima Controlo de fluxo: Não afecta os resultados Controlo de congestão Threshold tão elevado que não é atingido 3: Nível de Transporte

38 Modelo de latência do TCP
Notações: R = Ritmo de transferência [b/s] W= Dimensão da janela de congestão [segmentos] S = MSS Dimensão do maior segmento [bits] O = Dimensão do objecto [bits] Dois casos a considerar: Servidor recebe o ACK do 1º segmento antes de transmitir todos os dados da janela WS/R > RTT + S/R O Servidor transmite os dados da janela antes de receber o ACK do 1º segmento; espera ACK antes de prosseguir a transmissão WS/R < RTT + S/R 3: Nível de Transporte

39 Modelo de latência TCP Nº de janelas que é preciso para txd o objecto
K:= O/WS Caso 1: latencia = 2RTT + O/R Caso 2: latencia = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] W = 4 W = 2 3: Nível de Transporte

40 Modelo de latência TCP: Slow Start
Supondo que a janela cresce de acordo com o SlowStart. A latência de um objecto de dimensão O é: Em que P é o nº de vezes que o TCP no servidor bloqueia (stall) em que Q é o nº de vezes que o servidor pára se o objecto tiver uma dimensão infinita - K é o nº da janela que cobre o objecto 3: Nível de Transporte

41 Modelo de latência TCP: Slow Start
Exemplo: O/S = 15 segmentos K = 4 janelas Q = 2 P = min{K-1,Q} = 2 Servidor pára P=2 vezes. 3: Nível de Transporte

42 Modelo de latência TCP: Slow Start
3: Nível de Transporte

43 Chapter 3: Summary Próximo:
Princípios do serviço do nível de transporte: multiplexagem/demultiplexagem Transferência de dados fiável Controlo de fluxo Controlo de congestão Instanciação e implementação na Internet UDP TCP Próximo: Deixar a periferia da rede Entrar no ”core” da rede 3: Nível de Transporte


Carregar ppt "TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 Ponto-a-ponto:"

Apresentações semelhantes


Anúncios Google