Anda di halaman 1dari 10

Captulo 3 Camada de Transporte Tcnicas utilizadas pelos protocolos para reverter os dados perdidos ou corrompidos e congestionamentos 1.

1. INTRODUO E SERVIOS DE CAMADA DE TRANSPORTE Fornece servios de comunicao lgica (para a aplicao como se os hospedeiros estivessem conectados diretamente, quando podem estar distantes e com inmeros roteadores e enlaces entre eles) entre processos de aplicao que rodam em hospedeiros diferentes; Os protocolos da camada de transporte so implementados nos sistemas finais e no nos roteadores da rede; Transforma as mensagens da camada de aplicao em pacotes fragmentos adicionados de cabealhos (segmento) da camada de transporte; e repassa para a camada de rede do sistema final (que transformar os segmentos e datagramas: roteadores s olham p o cabealho adicionado pela camada de rede!) 1.1 Relao entre as camadas de transporte e a de rede Camada transporte: comunicao lgica entre processos (multiplexao/demultiplexao de camada de transporte) Camada rede: comunicao lgica entre hospedeiros Servios que um protocolo de transporte pode oferecer so, geralmente, limitados pelos servios oferecidos pelos protocolos de rede; entretanto, um protocolo de transporte pode oferecer certos servios mesmo que os protocolos de rede no tenham um servio equivalente; 1.2 Viso geral da camada de transporte na Internet Protocolos da internet: TCP Transmission Control Protocol (orientado a conexo, confivel) e UDP User Datagram Protocol (no orientado a conexo, no confivel) O criador de uma aplicao de rede deve escolher entre um desses dois protocolos ao criar os sockets (portas em que dados passam da rede p o processo e do processo p rede); (REDE protocolo IP, servio de entrega de melhor esforo, no garante entrega, ordem, integridade, no confivel; hospedeiro tem pelo menos um end. da camada rede, end. IP); TCP e UDP fornecem verificao de integridade (campos de deteco de erros nos cabealhos) TCP: transferncia de dados confivel corretude e ordem (controle de fluxo, nmeros de seqncia, reconhecimentos, temporizadores); controle de congestionamento (servio dirigido a toda a Internet, no a aplicao solicitante) complexo 2. MULTIPLEXAO E DEMULTIPLEXAO Ampliao do servio de entrega hospedeiro a hospedeiro (rede) para processo a processo para aplicao que roda nesse hospedeiro (transporte) Receptor: a camada transporte precisar direcionar a aplicao a receber os dados vindos da camada de rede. Processos podem ter um ou mais sockets. Demultiplexao: na extremidade receptora, a camada de transporte examina os campos, que direcionam a porta correta de um segmento que chega a camada de transporte, identifica a porta e direciona o segmento a este socket. Multiplexao: no hospedeiro de origem, reunio de dados provenientes de diferentes portas e encapsulamento com informaes de cabealho para criar segmentos. Portas precisam ter identificadores exclusivos (16 bits: 0-1023: nmeros de porta bem conhecidos) e cada segmento campos especiais para indicar a porta que ele deve ser entregue (campo de nmero de porta da fonte e campo de nmero de porta do destino) Multiplexao e demultiplexao no orientadas para conexo Hospedeiro criando uma porta UDP: DatagramSocket mySocket = new DatagramSocket(); ou DatagramSocket mySocket = new DatagramSocket(19157); Socket UDP: identificado por um tupla com dois elementos: um end. IP de destino e um nmero de porta de destino. O nmero da porta fonte um endereo de retorno Multiplexao e demultiplexao orientadas para conexo Socket TCP: identificado por uma tupla de quatro elementos: end. IP da fonte, n de porta da fonte, end. IP destino e n de porta de destino e estabelecimento de uma conexo TCP.

Cliente TCP estabelecendo uma conexo com o servidor (cria um socket TCP para o processo cliente, atravs do qual os dados iro entrar e sair do processo cliente): Socket clientSocket = new Socket (serverHostName, 6789); Servidor criando uma nova conexo: Socket connectionSocket = welcomeSocket.accept(); O servidor olha para o tupla de quatro nmeros e todos os prximos segmentos que chegarem com esses quatro valores sero demultiplexados para esta porta. O servidor pode suportar vrios sockets TCP simultneos Servidores Web e TCP Servidores Web geram um novo processo (cada um com seu prprio socket) ou criam uma nova thread para cada conexo cliente (sem uma correspondncia unvoca entre processo e socket, aumenta o desempenho). Obs.: HTTP persistente e no-persistente 3. TRANSPORTE NO ORIENTADO PARA A CONEXO: UDP Protocolo de transporte simples, servio de multip./demultiplexao e verifica erros A aplicao praticamente fala com o IP Mensagens do processo aplicao + campos n porta fonte e destino + 2 campos No h apresentao entre remetente e destinatrio DNS um protocolo da camada de aplicao que utiliza UDP Porque UDP: - no h controle de congestionamento, nem insistncia no envio, assim logo que uma aplicao envia uma mensagem ela encapsulada e colocada na rede, no tem que esperar, ideal para aplicaes em tempo real, que podem admitir algumas perdas, mas no atrasos. - no h apresentao inicial (h no TCP), no induz atrasos para estabelecer conexo - no h estados (h no TCP) de conexo nos sistemas finais, no usa buffers/parmetros - a sobrecarga nos pacotes pequena: 8 bytes (no TCP so 20 bytes) Aplicao Correio eletrnico Acesso a terminal remoto Web Transferncia de arquivo Servidor remoto de arquivo Recepo de multimdia Telefonia por Internet Gerenciamento de rede Protocolo de roteamento Traduo de nome Protocolo de aplicao SMTP Telnet http FTP NFS Tipicamente proprietria Tipicamente proprietria SNMP RIP DNS Protocolo de transporte TCP TCP TCP TCP Tipicamente UDP Tipicamente UDP Tipicamente UDP Tipicamente UDP Tipicamente UDP Tipicamente UDP

UDP no tem controle de congestionamento, se transferncias fossem altas pode haver transbordamento com muitas perdas e acmulo de sesses TCP??? possvel que uma aplicao tenha transferncia de dados confivel utilizando UDP: adicionase mecanismos de reconhecimento e retransmisso na prpria aplicao (vantagem no gasta o tempo do TCP e nem submete-se ao seu controle; desvantagem tarefa no trivial). 3.1 Estrutura do segmento UDP Campo de dados (mensagem da aplicao) + cabealho (quatro campos com 2 bytes cada: porta da fonte, porta destino, comprimento B , soma de verificao(receptor verifica se h erros)) 3.2 Soma de verificao UDP Remetente realiza complemento de 1 da soma de todas as palavras de 16 bits Destinatrio soma todas as palavras de 16 bits incluindo a soma de verificao: - sem erros = tudo 1 No faz nada para recuperar erros encontrados, repassa com aviso ou descarta 4. PRINCPIOS DA TRASFERNCIA CONFIVEL DE DADOS Um protocolo com esta caracterstica implementa a abstrao do servio fornecido a camadas

superiores um canal de dados confivel (dados no so corrompidos, nem perdidos, nem entregues fora de ordem), quando a camada abaixo pode no ser confivel! Ex: TCP confivel, mas implementado sobre uma camada de rede fim-a-fim no confivel (IP)! Remetente: rdt_send() utd_send() Canal no confivel Destinatrio: rdt_rcv() deliver_data Alm de pacotes com dados, h trocas de pacotes de controle 4.1 Construindo um protocolo de transferncia confivel de dados Transferncia confivel de dados sobre um canal perfeitamente confivel: rdt1.0 Remetente: Aceita dados da camada superior = rdt_send(data) Cria um pacote com os dados = make_pkt(data) Envia-o para o canal = udt_send(data) Destinatrio: Recebe um pacote do canal subjacente = rdt_rcv(packet) Transferncia confivel de dados por um canal com erros de bits: rdt2.0 Mensagens de controle: reconhecimentos positivo ACK e negativo NAK provoca retransmisso protocolos ARQ (Automatic Repeat reQuest) exigem: deteco de erros, realimentao do destinatrio (com um ACK ou com um NAK) e retransmisso. Protocolo pare-e-espere (stop-and-wait) ACKs ou NAKs comrrompidos? - ficar pedidndo confirmaes (loop infinito) - bits suficientes p q a soma de verificao alm de detectar, consiga recuperar os erros - ACK ou NAK truncados reenvia o pacotepacotes duplicados, mas o destinatrio no sabe se um pacote que chegou um novo pacote ou se retransmisso! adiciona-se um novo campo (contendo o nmero de seqncia) ao pacote de dados para que o remetente enumere seus pacotes. Obs.: neste protocolo pare-e-espere um bit sufucuente! rdt2.1 Eliminando o NAK, no lugar envia-se um ACK do ltimo pacote recebido corretamente: ACKs duplicados indicam que o destinatrio no recebeu corretamente o pacote seguinte equivalente aos AKCs Transferncia confivel de dados por um canal com perdas e com erros de bits: rdt3.0 Como detectar a perda de pacote e o que fazer quando isso ocorre Soma de verificao, nmeros de seqncia, pacotes ACKs e retransmisses resolvem o 2 Perda: o remetente detectar e se recuperar da perda, esperar algum tempo Tempo: o ideal o quanto mais cedo detectar a perda reenviar, difcil clculo, a escolha ponderada de um valor provvel, se um ACK no chegar nesse intervalo o remetente retransmite Possibilidade de pacotes duplicados (os nmeros de seqncia lidam com isso) Retransmisso baseada no tempo: temporizador de contagem regressiva que interrompa o processo remetente aps ter decorrido determinado tempo - aciona-se o temporizador cada vez que um pacote enviado - responde-se a uma interrupo feita pelo temporizador - parar o temporizador Como o nmero de seqncia varia entre 0 e 1 protocolo bit alternante 4.2 Protocolos de transferncia confivel de dados com paralelismo O protocolo para-e-espere tem baixssimo desempenho (estimativa = 30 milissegundos) A frao de tempo em que o remetente realmente envia dados para o canal = (L/R)/(RTT + L/R) Tempo real = capacidade de transmisso R (1 gigabit/seg) Tamanho de pacote L (1 kbyte/pacote) Tempo de tranmissao = L/R = 8 microssegundos O remetente pode enviar vrios pacotes sem esperar reconhecimentos pipelining/paralelismo Paralelismo: -faixa de nmeros de seqncia ampliada -os lados remetente e destinatrio precisaro reservar buffers para mais de um -1 e 2 dependero da maneira como um protocolo de transferncia (pode ser GOBAck-N ou repetio seletiva) responde a pacotes perdidos, corrompidos e atrasados

4.3 Go-Back-N (GBN) Remetente pode transmitir mltiplos pacotes, limitado por um n mximo (N) de pacotes no reconhecidos Base: n de seqncia do mais antigo pacote no reconhecido Nextseqnum: menor n de seqncia no utilizado Intervalos: [0, base-1] pacotes j transmitidos e j reconhecidos [base, nextseqnum-1] pacotes j enviados, mas no reconhecidos [nextseqnum, base+N-1] podem ser enviados quando estiverem disponveis >= base+N no podem ser usados at que base seja reconhecido Janela de tamanho N (Protocolo da janela deslizante) O limite N: o controle de fluxo uma das razes, controle de congestionamento tambm O n de seqncia carregado num campo fixo do cabealho, de k bits, assim o intervalo de valores [0, 2k -1] O GBN responde a trs tipos de eventos: Chamada vinda de cima (verifica se a janela est cheia (nextseqnum<base+N), se no estiver, cria pacote (ajustas variveis, tiver, nextseqnum), se estiver devolve p camada superior) Recebimento de um ACK (o recebimento cumulativo, at o n de seqncia daquele AKC recebeu todos os pacotes corretamente) Esgotamento de temporizao (envia todos os pacotes que j tinham sido enviados, mas no tinham recebido a confirmao) (temporizador para o mais antigo) O destinatrio: enviar um ACK se todos os pacotes anteriores ao pacote recebido j estiverem OK, se no descarta e reenvia um ACK para o ultimo pacote OK o reconhecimento cumulativo natural para o GBN Poderia armazenar em um buffer os que chegassem fora de ordem, mas o remetente reenviaria de todo jeito, por isso descarta simplicidade de buffers no destinatrio S mantm o n de seq do prximo pacote esperado = expectedseqnum Obs.: o GBN incorpora quase todas as tcnicas da transferncia de dados confivel (n de seqncia, reconhecimentos cumulativos, somas de verificao, operao de esgotamento de temporizao/retransmisso) 4.4 Repetio seletiva (Selective Repeat - SR) O GNB pode sofrer com problemas de desempenho (tamanho da janela e produto atraso e largura da banda so grandes retransmisses desnecessrias) SR faz o remetente retransmitir apenas os pacotes suspeitos de terem erros ou se perdido, o destinatrio deve reconhecer individualmente os pacotes recebidos corretamente Janela de tamanho N, mas pode j haver recebido ACKs de pacotes internos a janela Remetente: - Dados recebidos de cima: verifica se o prximo n de seq. est na janela, envia/devolve - Esgotamento de temporizao: cada pacote tem o seu temporizador - ACK recebido: marca aquele pacote, se ele for o send_base arrasta a janela at o menos pacote no reconhecido Destinatrio: Pacotes fora de ordem ficam no buffer, at que os flutuantes sejam recebidos - Pacote com o n de seq. no intervalo [rcv_base, rcv_base+N-1] foi corretamente recebido: est dentro da janela do destinatrio, um ACK devolvido, vai p o buffer, se for a rcv_base a janela deslocada (de acordo com o n de pacotes que puderam ser entregues) - Pacote com o n de seq. no intervalo [rcv_base - N, rcv_base - 1] recebido: envia ACK, reconhecimento duplo necessrio porque a janela do remetente poderia ficar fixa - Qualquer outro: ignorado A falta de sincronizao entre as janelas do remetente e destinatrio tem conseqncias para faixa finita de nmeros de seqncia (o tamanho da janela pode ser <= tamanho do espao de numerao seqencial/2) Os pacotes tem tempo de vida mximos (3 min) para no ressurgirem e ficar no lugar de outro por causa do n de seqncia.

5. TRANSPORTE ORIENTADO PARA CONEXO: TCP O TCP inclui deteco de erro, retransmisso, reconhecimento cumulativo, temporizadores, campos de cabealho para n de seqncia e de reconhecimento. 5.1 A conexo TCP Orientado para conexo porque h apresentao! Iniciam variveis de estado nessa conexo O protocolo roda apenas nos sistemas finais, assim os elementos intermedirios no armazenam estados de conexo TCP Prove um servio full-duplex (numa mesma conexo ambos os sentidos, envia e recebe) sempre ponto-a-ponto (um nico remetente e um nico destinatrio) x multicast Processo que inicia a conexo o processo cliente, o outro processo servidor. A aplicao informa a camada transporte que deseja estabelecer a conexo (Socket clienteSocket = new Socket(hostname, portNumber)), o cliente envia um segmento especial TCP, o servidor responde com outro e o cliente envia outro (j pode conter dados da camada aplicao) = apresentao de trs vias! Estabelecida a conexo TCP, dados passam pelo socket e esto nas mos do TCP, que os direciona para o buffer de envio, a quantidade mxima a ser retira limitada pelo tamanho mximo do segmento // no o tamanho mximo do segmento TCP, mas dos dados // (MSS estabelecido pelo tamanho do maior quadro de camada de enlace que pode ser enviado - MTU) O TCP combina: dados fornecidos do cliente com um cabealho TCP segmentos TCP e extrai: os dados do segmento armazenando-os no buffer de recepo (a aplicao l) TCP consiste em: buffers, variveis e um socket de conexo em cada hospedeiro 5.2 Estrutura do segmento TCP Campo de dados: vm da aplicao, tamanho limitado pelo MSS (o TCP pode fragmentar os dados em vrios MSSs) Campo decabealho: geralmente 20 bytes, inclui: n de porta de fonte e de destino, campo de soma de verificao, campo de n de seqncia (32 bits, serv. conf.), n de reconhecimento (32 bits, serv. conf.), janela de recepo (16 bits, cont, fluxo), comprimento de cabealho (4 bits, quantas palavras de 32 bits),campo opes do TCP (pode variar, mas normalmente vazio, negociao do MSS, tempo ou janela), campo flag (6 bits, ACK, RST, SYN, FIN, PSH, URG) Nmeros de seqncia e nmeros de reconhecimento Fundamentais para o servio de transferncia confivel de dados do TCP TCP v os dados como uma cadeia de dados no estruturada, mas ordenada (numera cada byte da cedia de dados) N de seqncia = n do primeiro byte do segmento N de reconhecimento = o n de reconhecimento que o hospedeiro A atribui a seu segmento o n de seqncia do prximo byte que ele estiver aguardando do hospedeiro B. TCP s reconhece bytes at o primeiro que estiver faltando reconhecimentos cumulativos Adecisao do que fazer com pacotes que chegam fora de ordem de quem programar a implementao TCP, porque no h nada definido (na pratica, armazena-se) Telnet: um estudo de caso para nmeros de seqncia e nmeros de reconhecimento Hoje, prefere-se ssh, porque o telnet no utiliza criptografia TCP usa piggypack (carona) uma confirmao feita junta de um segmento de dados 5.3 Estimativas do tempo de viagem de ida e volta e de esgotamento de temporizao O TCP usa um mecanismo de controle de temporizao/retransmisso para recuperar segmentos perdidos Durao dos intervalos: maior que o RTT (qual o RTT, quanto maior) Estimativa do tempo de ida e volta RTT (SampleRTT) = quantidade de tempo transcorrido entre o momento que o segmento enviado (passado ao IP) (s/ retransmisso)e o momento em que recebido um reconhecimento. O TCP fica calculando, variaes ocorrem, calcula uma mdia (mvel exponencial) ponderada EstimatedRTT = (1-alfa)*EstimadedRTT + alfa*SampleRTT (alfa = 0,125 = 1/8) DevRTT (variao RTT) = (1 - beta)*DevRTT + beta*|SampleRTTEstimatedRTT| (beta=0,25) Obs.: TCP usa NAK implcito = trs ACKs duplicados e paralelismo (o n mximo de segmentos no reconhecidos determinado pelos mecanismos de controle de fluxo e de congestionamento)

Estabelecimento e gerenciamento da temporizao e retransmisso EstimatedRTT + margem (proporcional ao DevRTT) TimeoutInterval = EstimatedRTT + 4*DevRTT 5.4 Transferncia confivel de dados Com o servio IP os datagramas podem ser perdidos, chegar fora de ordem, ser corrompidos O TCP cria um servio de transferncia confivel de dados sobre este servio de melhor esforo do IP, e garante que a cadeia de dados que a aplicao l a partir do seu buffer de recebimento TCP no est corrompida, no tem lacuna, no tem duplicao e est em ordem! Temporizador para cada segmento pode exigir sobrecarga, usa-se um nico temporizador de retransmisso! 1) Usa apenas temporizadores para retransmisso 2) Usa temporizadores e reconhecimentos duplicados Eventos no remetente: - dados recebidos da aplicao acima (se o temporizador no estiver ativado, ativado) - esgotamento do temporizador (reenvio do menor n de seq. e inicializa o temporizador) - recebimento de ACK (atualiza a send_base para y e reinicia o temporizador) Alguns cenrios interessantes 1) ACK perdido, haver reenvio (quando o temporizador esgotar), o destinatrio receber dado duplicado, descartar e reenviar o ACK 2) Remetente envia dois segmentos seguidos, o destinatrio recebe e envia dois ACKs separados, mas eles atrasam. O primeiro segmento ser retransmitido quando o temporizador esgotar, se os ACKs chegarem antes do temporizador esgotar de novo o segundo segmento no ser retransmitido! 3) Remetente envia dois segmentos seguidos, o destinatrio recebe e envia dois ACKs, o primeiro perdido, se o segundo chegar antes do tempo esgotar no haver reenvio! Duplicao do tempo de expirao Quando o tempo esgotado o TCP reenvia o pacote com menos n de seqncia e ajusta o tempo de expirao para o dobro de tempo do anterior. O tempo aumenta exponencialmente a cada expirao. A causa mais provvel da expirao o congestionamento o TCP demorar mais para retransmitir Mas quando o temporizador iniciado por ter recebido dados da aplicao ou ACK o TimeoutInterval derivado dos valores de EstimatedRTT e DevRTT Retransmisso rpida O remetente pode detectar a perda de um pacote antes do timeout (pode demorar muito) analisando os ACKs duplicados Evento Ao do TCP destinatrio Chegada de um segmento esperado, na ordem, ACK retardado (espera 500 milisseg. e envia) mas todos anteriores j reconhecidos Chegada de um segmento esperado, mas outro Envio imediato de um ACK acumulativo segmento esperando p enviar ACK Chegada de um segmento fora de ordem, n de Envio imediato de um ACK duplicado com o n seq. maior que o esperado de seq. esperado Chegada de um segmento que preenche parte Envio de um ACK se este segmento comear da lacuna na extremidade mais baixa Se o remetente receber trs ACKs duplicados indicao que o segmento posterior ao segmento reconhecido trs vezes foi perdido e o TCP remetente realiza uma retransmisso rpida, antes que o temporizador expire GBN ou repetio seletiva? Semelhanas c GNB: reconhecimento cumulativo e segmentos fora de ordem corretamente recebidos no so reconhecidos individualmente, s precisa lembrar o menor n de seqncia no reconhecido e o n de seqncia do byte a ser enviado Diferenas c GNB: TCP pode armazenar segmentos fora de ordem, o GNB pode ter que retrasmitir grande quantidade de dados se um ACK se perder, enquanto que o TCP pode nem precisar retransmitir se um ACK de um segmento posterior retornar antes do timeout!

Semelhana c SR: o reconhecimento seletivo permite que o TCP reconhea seletivamente segmentos fora de ordem O mecanismo de recuperao de erros do TCP hibrido dos protocolos GNB e SR 5.5 Controle de fluxo Hospedeiros de cada lado de uma conexo TCP reservam um buffer de recepo, quando os bytes esto corretos e na seqncia so colocados neste buffer e a aplicao ler da, isso pode demorar e, assim, o buffer pode ser saturado, para evitar isso o TCP tem o controle de fluxo um servio de compatibilizao de velocidades (taxas de envio e q aplicao receptora l) Controles de fluxo e de congestionamento regulam o remetente, mas tm propsitos distintos Remetente mantm uma varivel, janela de recepo (RcvWindow), que d uma idia do espao de buffer disponvel no destinatrio O receptor aloca um buffer de recepo com o tamanho RcvBuffer Variveis no destinatrio: - LastByteRead = n do ltimo byte lido do buffer pela aplicao do receptor - LastByteRcvd = n do ltimo byte que chegou no buffer do receptor Variveis no remetente: - LastByteSent - LastByteAcked Deve-se ter: LastByteRcvd LastByteRead <= RcvBuffer RcvWindow = RcvBuffer (LastByteRcvd LastByteRead) LastByteSent LastByteAcked <= RcvWindow Processo: remetente diz ao destinatrio qual o espao do seu buffer colocando RcvWindow no campo de janela de recepo, inicialmente o destinatrio estabelece RcvWindow = RcvBuffer Problema: quando a RcvWindow for igual a 0 mesmo que o processo com aplicao esvazie o buffer o remetente no saber disso porque o TCP no envia novos segmentos com o novo valor de RcvWindow para o remetente, para resolver o remetente deve continuar enviando segmentos com um byte de dados quando a janela de recepo for 0! 5.6 Gerenciamento da conexo TCP O estabelecimento da conexo tem pesa nos atrasos. O estabelecimento: o processo cliente informa ao TCP cliente que quer estabelecer uma conexo com um processo servidor, o TCP faz - lado cliente do TCP envia um segmento especial (sem dados da aplicao, o bit SYN ativado) ao lado servidor do TCP e escolhe um n de seq. inicial (client_isn) j indicando no cabealho deste segmento, chamado SYN - o servidor, quando receber o SYN, alocar buffers e variveis TCP para esta conexo e envia segmento de aceitao (sem dados, SYN ativado, campo de reconhecimento = client_isn + 1, server_isn), este segmento chamado de SYNACK - o cliente reserva buffers e variveis e envia mais um segmento (campo de reconhecimento = server_isn + 1, SYN desativado, pode conter dados) Essa a apresentao de trs vias Qualquer um do hospedeiros podem encerrar a conexo, que quando acaba libera as variveis e os buffers - o processo que deseja encerrar envia um segmento (FIN ativado) - o outro hospedeiro emite uma confirmao ACK - esse mesmo hospedeiro envia outro segmento com FIN ativado - o outro hospedeiro (que iniciou o fechamento da conexo) envia um ACK Estados do TCP Cliente = CLOSED (inicia uma nova conexo criando um socket) envia SYN SYN_SENT recebe SYNACK e envia ACK ESTABLISHED pode enviar e receber segmentos TCP de dados, se quiser fechar a conexo envia segmento FIN FIN_WAIT_1 recebe ACK FIN_WAIT_2 recebe segmento FIN e envia ACK TIME_WAIT reenvia o ACK final se tiver sido perdido (tempo 30, 60 ou 120 seg) Servidor = CLOSED aplicao cria uma porta de escuta LISTEN recebe SYN e envia SYNACK SYN_RCVD (recebe ACK, no envia nada) ESTABILISHED recebe FIN, envia ACK CLOSE_WAIT envia FIN LAST_ACK recebe ACK

6. PRINCCPIOS DE CONTROLE DE CONGESTIONAMENTO Causa: demasiadas fontes tentando enviar dados a uma taxa muito alta, mecanismos para regular os remetentes 6.1 As causas e os custos do congestionamento Cenrio 1: dois remetentes, um roteador com buffers infinitos Remetentes A e B compartilham um nico trecho de rede entre a fonte e o destino, A envia dados a uma taxa mdia de in bytes/seg.. O protocolo de transporte no tem recuperao de perdas, controle de fluxo, nem de congestionamento. Desprezando-se sobrecargas a taxa que A oferece ao roteador os seus dados in bytes/seg. B igual. Os pacotes passam por um roteador e um enlace de sada compartilhado de capacidade R. A vazo por conexo igual a in desde que in seja <= R/2, quando maior a vazo igual a R/2, entretanto quando se trabalha com taxas prximas a capacidade mxima da rede, o atraso mdio fica cada vez maior e tende ao infinito (bom para vazo, pssimo para o atraso). Custo da rede congestionada: h grandes atrasos de fila quando a taxa de chegada dos pacotes se aproxima da capacidade do enlace. Cenrio 2: dois remetentes, um roteador com buffers finitos H descarte de pacotes quando o buffer j est cheio, mas h retransmisso dessas perdas, assim a taxa de envio da aplicao ao socket in, mas a taxa que a camada de transporte envia os segmentos (carga oferecida a rede) in` Se in = in` (s envia c roteadores livres) caso 1, mas sem ultrapassar R/2 (haveria perda) Com retransmisses, se in` = R/2 out = R/3 Custo da rede congestionada: remetente deve realizar retransmisses para compensar os pacotes perdidos devido ao esgotamento do buffer Caso em que no houve perda, apenas atraso, mas h retransmisso: trabalho desperdiado Custo da rede congestionada: retransmisses desnecessrias Cenrio 3: quatro remetentes, roteadores c buffers finitos, trajetos c mltiplos roteadores Para valores pequenos de in os valores de out acompanham Situao em que um roteador deve dividir entre uma conexo direta com alta taxa e outra conexo que j passou por outro roteador e tem valores limitados ser reduzida mais pode ir a zero se houver esgotamento do buffer! O trabalho do roteador j passado descartado se houver perda num roteador seguinte Custo da rede congestionada: descarte de pacotes e desperdcio da transmisso j utilizada 6.2 Mecanismos de controle de congestionamento Distino: a camada de rede oferece ou no assistncia ao controle explicita de transporte - controle de congestionamento fim-a-fim: no h assistncia (nem indica se h) da camada de rede (IP), a perda de segmentos TCP (temporizao, 3 ACKs duplicados) indicam o congestionamento (usa tambm o aumento dos atrasos de ida e volta), reduz-se a janela - controle de congestionamento assistido pela rede: os roteadores fornecem informaes ao remetente sobre o estado de congestionamento da rede (pode ser simples). Realimentao direta: pacote de congestionamento ou marcao em um pacote que est fluindo para o destinatrio leva pelo menos uma viagem de ida e volta. 7. CONTROLE DE CONGESTIONAMENTO TCP Usa controle de congestionamento fim-a-fim Obriga cada remetente a limitar a sua taxa de envio como uma funo do congestionamento de rede percebido (Como o remetente limita? Como percebe? Qual o algoritmo dessa funo?) Contexto do algoritmo Reno Varivel adicional nos hospedeiros: janela de congestionamento (CongWin), limitao a taxa de envio de um remetente, deve-se ter: LastByteSent LastByteAcked <= min (CongWin, RcvWindow) Anlise desprezando a limitao da janela de recepo

A taxa de envio do remetente de CongWin/RTT (ajusta CongWin ajusta a taxa) Detecta congestionamento: perdas de pacotes Quando o TCP percebe que os pacotes esto chegando corretamente (atravs dos reconhecimentos) aumenta o CongWin TCP auto-regulado Algoritmo de controle do congestionamento do TCP (tem trs componentes): Aumento aditivo, diminuio multiplicativa Idia bsica: remetente reduzir taxa de envio (reduzindo CongWin) se h perda Reduz metade o valor de CongWin aps um evento de perda (valor mnimo = 1 MSS) O aumento da janela gradativo, cada vez que recebe um reconhecimento aumenta 1MSS a cada tempo de viagem de ida e volta, fase de aumento linear preveno de congestionamento Partida lenta No inicio de uma conexo TCP, CongWin = 1 MSS, taxa inicial de envio = MSS/RTT Esperar um crescimento considervel de CongWin demoraria muito, assim, na fase inicial ao invs de aumentar a taxa linearmente, o valor de CongWin duplicado a cada RTT (exponencialmente) at uma perda cort-la ao meio e a partir da crescer linearmente Reao a eventos de esgotamento de temporizao TCP reage diferente a eventos de perda detectados por ACKs ou pela temporizao esgotada Com ACKs reage como j descrito (corta no meio e cresce linearmente) Com esgotamento o TCP entra numa fase de partida lenta (CongWin = 1 MSS, cresce exponencialmente at alcanar metade do valor que tinha antes do evento de esgotamento e passa a crescer linearmente) Para isso o TCP mantm a varivel Threshold indica onde a partida lenta terminar (no tem efeito inicial, ajustada com alto valor) recebe metade do valor de quando ocorreu o esgotamento Obs.: o Tahoe (verso antiga) cortava sempre para 1 MSS. Reno considera que se h ACK algum segmento chegou! (eliminao da partida lenta aps trs ACKs = recuperao rpida) Descrio macroscpica da dinmica do TCP Tamanho da janela = w bytes Tempo de viagem de ida e volta = RTT Taxa de transmisso ~= w/RTT W = w quando ocorre uma perda Taxa de transmisso ~= W/2*RTT, W/RTT Vazo mdia de uma conexo = 0,75*W/RTT TCPs futuros L = taxa de perda Vazo mdia de uma conexo = 1,22*MSS/ (RTT * raiz(L)) 7.1 Justia Um mecanismo de controle de congestionamento justo se a taxa mdia de trasmissao de cada conexo for = taxa de transmisso do enlace/n de conexes TCP TCP resulta em igual compartilhamento da largura de banda, as sesses cujos RTTs so menores conseguem obter largura da banda disponvel mais rapidamente Justia e UDP UDP usa uma taxa constante e ocasionalmente perde pacotes Busca-se desenvolver mecanismos que impeam que segmentos UDPs dominem o trfego Justia e conexes TCP paralelas Mesmo controlando o UDP, nada impede que uma aplicao rode sobre TCPs paralelos 7.2 Modelagem do atraso TCP Tempo para o TCP enviar um objeto (consideramos uma rede n congestionada e c 1 enlace) Latncia: tempo que o cliente inicia uma conexo e recebe o objeto completo (componentes fundamentais: apresentao inicial do TCP, a partida lenta e o tempo de transmisso do objeto) Consideraes: - quantidade de dados a serem transmitidos limitada s pela janela de cong. remetente - pacotes no perdido, nem corrompidos, no h retransmisso - sobrecargas de cabealhos desprezadas - o tamanho do objeto (O bits) um mltiplo do MSS (S bits)

- pacotes sem tempo de transmisso n desprezveis: segmentos TCP tamanho mximo - taxa de transmisso do enlace R bps Sem janela latncia = 2 RTT + O/R Janela de congestionamento esttica TCP usa dinmica Tamanho da janela = W (servidor no pode ter mais que W segmentos no reconhecidos) 1) WS/R > RTT + S/R servidor recebe reconhecimento antes de completar o envio da janela; latncia = 2RTT + O/R 2) WS/R > RTT + S/R envia a janela toda antes de receber um reconhecimento K = O/WS Durao de cada perodo de suspenso = RTT (W 1)S/R Latncia = 2RTT + O/R + (K - 1) [S/R + RTT WS/R] Janela de congestionamento dinmica A cada reconhecimento o servidor duplica o tamanho da janela A k-sima janela contm: 2k-1segmentos K (nmero de janelas que abrangem o objeto) = teto (log2((O/S) + 1)) Tempo de suspenso = min ([S/R + RTT - 2k-1 (S/R)], 0 ) Latncia = 2 RTT + O/R + Somatrio[k=1, k-1] (S/R + RTT - 2k-1S/R)+ N de vezes que entra em suspenso //Q = cho (log2(1 + RTT/(S/R))) + 1// (P) = min (Q, K-1) Latncia = 2 RTT + O/R + P[S/R + RTT] (2p 1) S/R Obs.: a partida lenta no aumentara de maneira significativa a latncia se RTT << O/R; para RTT maiores o efeito da partida lenta torna-se significativo para objetos pequenos para velocidades de transmisses menores

Anda mungkin juga menyukai