1 / 42

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:

lynde
Download Presentation

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  5. 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 tempo TCP nº de sequência e ACK Host B Host A 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 Cenário simples de Telnet 3: Nível de Transporte

  6. Host A Host B Seq=92, 8 bytes data ACK=100 timeout X loss Seq=92, 8 bytes data ACK=100 tempo tempo Perda de ACK TCP: cenários de retransmissão Host A Host B Seq=92, 8 bytes data Seq=100, 20 bytes data Seq=92 timeout ACK=100 ACK=120 Seq=100 timeout Seq=92, 8 bytes data ACK=120 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 evento: temporizador expira para o segmento com o nº de seq. y wait for event wait for event Retransmisssão do segmento y evento: ACK recebido com ACK y ACK processado 3: Nível de Transporte

  8. 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 03 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 */ TCP: transferência de dados fiável Emissor TCP simplificado 3: Nível de Transporte

  9. 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 Controlo de fluxo TCP Controlo de fluxo 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

  10. TCP Controlo de fluxo - receptor RcvBuffer= dimensão do buffer de recepção do TCP RcvWindow = quantidade de espaço disponível no buffer LastByteRead LastByteRcv 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

  11. 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 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 3: Nível de Transporte

  12. 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 TCP Round Trip Time eTimeout 3: Nível de Transporte

  13. Parametrizando o timeout EstimatedRTT mais “margem de segurança” Grande variação em EstimatedRTT -> margem de segurança superior 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 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

  14. 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) 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 socket_fd=socket(Domínio, Tipo, 0) 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) TCP Gestão das ligações 3: Nível de Transporte

  15. 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 TCP Gestão das ligações: Estabelecimento 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

  16. 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

  17. close(sock_fd) TCP Gestão das ligações: Fecho • Cliente: fecha a ligação • Servidor: fecha a ligação com o cliente 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

  18. 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

  19. 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

  20. 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! Princípios de controlo de congestão 3: Nível de Transporte

  21. 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 Causas e custos do controlo de congestão: cenário 1 3: Nível de Transporte

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

  23. 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 l l > = l l l in in in out out out Causas e custos do controlo de congestão: cenário 2 1 1 3 2 “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

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

  25. 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

  26. 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

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

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

  29. 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

  30. Controlo extremo-a-extremo (não assistido pela rede) Ritmo de transmissão limitado pela dimensão da janela de congestão, Congwin: w * MSS Débito = Bytes/sec RTT Controlo de congestão no TCP Congwin • W segmentos, cada um com MSS bytes enviados em cada RTT: 3: Nível de Transporte

  31. 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) aumentaCongwin até perdas (congestão) perdas: diminui Congwin, então aumenta o probing Controlo de congestão no TCP 3: Nível de Transporte

  32. 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) Algoritmo de Slowstart Tempo TCP Slowstart Host A Host B one segment RTT initialize: Congwin = 1 for (each segment ACKed) Congwin++ until (loss event OR Congwin > threshold) two segments four segments 3: Nível de Transporte

  33. TCP Congestion Avoidance 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

  34. 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 Método de evitar congestão: Incrementa a janela 1 unidade por RTT Decrementa a janela 2 unidades por evento de perda TCP Fairness AIMD –Additive Increase Multiplicative Decrease Ligação TCP 1 bottleneck router Capacidade = R Ligação TCP 2 3: Nível de Transporte

  35. 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 Porque é que o TCP é justo ? 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

  36. 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 Modelo de latência do TCP 3: Nível de Transporte

  37. 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] Modelo de latência do TCP 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

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

  39. 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

  40. 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

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

  42. 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 Chapter 3: Summary 3: Nível de Transporte

More Related