Trabalho sobre Congestionamento na Camada de Rede

Trabalho sobre Congestionamento na Camada de Rede

Controle de Congestionamento na Camada de Rede

Introdução

Em gerenciamento de redes, um dos grandes problemas enfrentados são os colapsos de congestionamento. Este fenômeno causa o aumento de tempo de entrega dos pacotes, diminuição em sua vazão e desperdício de recursos, visto que neste caso o pacote deve ser retransmitido, sendo necessária a realocação de recursos.

O TCP (Transmission Control Protocol), afetado por este fenômeno, é o protocolo da camada de transporte do modelo de camadas TCP/IP (Internet Protocol) da Internet para transferência de dados orientados a conexão. Segundo estimativas, ele é responsável pelo controle de 80% dos fluxos fim-a-fim, pelo transporte de 90% dos pacotes e 95% dos byte das redes de computadores atuais;

Baseado nessas informações será descrito de forma concisa a problemática dos colapsos de congestionamento em redes TCP, considerando os mecanismos utilizados pelo TCP para seu controle.

Este trabalho estrutura-se da seguinte forma: esta parte introdutória, a segunda seção apresentando a problemática dos congestionamentos, a terceira seção trata-se dos mecanismos para controle de congestionamentos, seguida pelas variantes do protocolo TCP e por fim as considerações finais.

Congestionamento

As redes de comutação, em geral, têm recursos limitados, como largura de banda restrita entre origem em fim e comprimento limitado das filas em que são armazenados os pacotes à espera de transmissão. Quando muitos pacotes necessitam ser transmitidos através da mesma linha (meio de tranmissão), as filas ultrapassam o seu limite máximo e alguns pacotes são descartados. Logo, se o descarte é muito freqüente a rede fica congestionada.

“O congestionamento é a necessidade agregada de largura de banda que excede a capacidade disponibilizada pela linha. Dessa forma, causa a degradação de desempenho ocasionando perda múltipla de pacotes, baixa utilização do meio, tempo de atraso alto e colapsos.” – Ryu (2006).

O congestionamento pode ter duas causas básicas:

  1. Insuficiência para acomodar a carga presente; e

  2. Desbalanceamento do tráfego nos nós da rede (recursos sobrecarregados e recursos subutilizados).

Esta problemática leva ao descarte de pacotes nos roteadores e suas transmissões; uma vez descartados, os recursos que foram utilizados são desperdiçados, levando os pacotes a alocarem novos recursos diminuindo a vazão e aumentando o atraso na rede.

“[...] o fluxo, em uma conexão TCP, deveria obedecer ao princípio da conservação de pacotes. E, se este princípio fosse obedecido, colapsos devido ao congestionamento seriam uma exceção ao invés da regra.” – Filho (2004).

Nas redes onde prevalece o melhor esforço, como é o caso das redes TCP/IP, o congestionamento causa um prejuízo Bastante grande no quesito qualidade de serviço (QoS), inviabilizando o atendimento a requisitos de qualidade de serviço das aplicações.

Assim sendo, foi necessário implementar meios de prover controle de congestionamento de modo a minimizar os prejuízos causados por este fenômeno.

Controle de Congestionamento

O sistema de congestionamento pode ser visto como um sistema de controle com retroalimentação, na qual, a taxa de transmissão dos nós fontes é ajustada de acordo com o estado de congestionamento da rede, inferidos pelos roteadores através da monitoração do nível de suas filas e retornado para os nós fontes através da marcação/descarte de pacotes.

Algoritmos de controle de congestionamento devem certificar-se que a rede é capaz de transportar tráfego, lidando com tráfego ponto-a-ponto entre fonte e destino. Esses algoritmos são relacionados com a forma como os recursos são alocados às conexões ativas na rede.

O controle de congestionamento pode ser definido como um algoritmo um tanto complexo que visa evitar a sobrecarga de dados na rede baseando-se no envio de dados de acordo com uma janela de congestionamento mantido pelo transmissor que varia de tamanho de acordo com as confirmações de recebimento de pacotes pelo receptor (ACK´s) durante a conexão.

Mecanismo de Controle de Congestionamento

Van Jacobson ao investigar as causas dos colapsos de congestionamento ocorridos entre o Lawrence Berkely Laboratory e a UC Berkeley desenvolveu dois algoritmos para tratar a problemática do congestionamento: o Slow Start e o Congestion Avoidance.

Além dos dois citados acima, outros algoritmos foram incluídos no TCP a fim de melhorar a eficiência dos mecanismos de controle de congestionamento, a saber:

  1. Round-trip-time variance estimation;

  2. Exponential retransmit timer backoff;

  3. More aggressive receiver ack policy;

  4. Dynamic window sizing on congestion;

  5. Karn´s clamped retransmit backoff;

  6. Fast retransmit;

  7. Fast recovery.

Destes, destacam-se o Fast retransmit e o Fast recovery, largamente utilizados como parte do controle de congestionamento do protocolo TCP e suas variantes TCP Reno, TCP Vegas, TCP Sack, TCP New Reno eTCP Limited Transmit.

Funcionamento do Controle de Congestionamento do TCP

Uma vez iniciada uma conexão TCP, o algoritmo de controle de congestionamento inicia uma primeira fase que utiliza o mecanismo de Slow Start, onde um valor unitário é atribuído a uma janela de congestionamento (cwndI). À medida que os segmentos são enviados e confirmados por meio de ACK´s o valor da cwnd é incrementado até um limite (Ssthresh), caso isso não acontecesse haveria um congestionamento.

Uma segunda fase inicia-se com o Congestion Avoidance, onde o cwnd não é mais incrementada ao receber um ACK e sim a cada conjunto ACK´s, reconhecendo a janela de congestionamento por inteiro.

Se porventura ocorrer um timeout, o TCP identifica esta ocorrência como se fosse um descarte devido a um suposto congestionamento na rede; isto indica que a taxa de transmissão de segmento deve ser reduzida. Assim sendo, o algoritmo inicia novamente a fase de Slow Start e o valor de ssthresh é diminuído pela metade. A seguir, o TCP cresce até atingir o novo valor de ssthresh tornando a iniciar a fase de Congestion Avoidance.

Quando novamente se verifica a perda de segmentos através de ACK´s duplicados, ocorre então o Fast Retransmission, a janela de transmissão não mais volta à fase de Slow Start. Neste caso, a janela de congestionamento é reduzida á metade e o TCP permanece na fase de Congestion Avoidance, caracterizando o algoritmo de Fast Recovery.

Variantes do Protocolo TCP

Grande parte dos dados trafegados na internet é realizada sob o protocolo TCP, por isso é dito ser dominante na rede mundial. Desta feita, é importante analisar algumas variantes deste protocolo.

TCP Reno – Esta é a implementação mais comum do protocolo TCP. O mecanismo de controle de congestionamento é composto pelos quatro algoritmos: Slow Start, Congestion Avoidance, fast Recovery e Fast Retransmit. Uma característica do TCP Reno é tratar-se de um mecanismo de controle de congestionamento reativo.

TCP Vegas – É uma alternativa ao TCP Reno para o aumento da vazão e diminuição do atraso. Este algoritmo apresenta modificações em relação ao TCP Reno nos mecanismo de retransmissão de Congestion Avoidance e de Slow Start, além de uma modificação da janela de congestionamento. O TCP Vegas é um mecanismo pro-ativo e procura detectar e corrigir o congestionamento antes que aconteça.

TCP Sack – Caracteriza-se pela utilização de um artifício denominado SACK (Selective Acknowledgment). Com o Sack, o receptor de dados pode informar ao emissor quais pacotes foram recebidos corretamente, possibilitando ao emissor retransmitir apenas os pacotes que foram perdidos.

TCP New Remo – Neste algoritmo, no procedimento de Fast Recovery é introduzida uma nova variável denominada recover. É indicado para situações de múltiplas perdas de pacotesem uma mesma janela do TCP Reno na ausência de Sack, contudo mesmo com o Sack este algoritmo é bastante recomendado pela sua eficiência.

TCP Limited TransitMesmo com as melhorias realizadas com TCP Sack e no TCP New Reno, as estratégias de Fast Recovery presentes nestas propostas não foram eficientes quando a janela de congestionamento do TCP emissor é pequena e quando múltiplos pacotes são perdidos em uma única janela. Este algoritmo é útil na prevenção das transmissões em rajadas.Random early detection

Random Early Detection (RED)

A fim de lidar com o transiente de congestionamento nos links, roteadores do backbone freqüentemente implementam-se grandes filas. Infelizmente, ao tempo que essas filas são boas para taxa de transmissão, por outro lado podem aumentar de forma substancial a latência e pode se comportar causando rajadas muito fortes durante o congestionamento nas conexões TCP. Esses problemas com o tail-drop está se tornando uma dor de cabeça enorme na Internet devido ao uso de aplicações exigentes da rede estar aumentando. O Kernel Linux oferece-nos o RED, que é a contração para Random Early Detect – Detecção Randômica Antecipada –, também chamado de Random Early Drop – Descarte Randômico Antecipado –, porque é assim como ele funciona. O RED não é a cura total para tudo, aplicações que falha na implementação de backoff exponencial ainda possuem uma distribuição não justa da banda, no entanto, com o RED elas não causam tanto dano à taxa de transmissão e latência das outras conexões. O RED estatisticamente descarta pacotes dos fluxos antes deles alcançarem seu limite rígido. Isso provoca a um link do backbone congestionado ficar lento mais suavemente, e evita sincronização de retransmissão. Isso também ajuda ao TCP encontrar a sua velocidade ‘justa’ mais rápida permitindo que alguns pacotes sejam descartados rapidamente mantendo o tamanho baixo da fila e latência sob controle. A probabilidade de um pacote ser descartado de uma conexão particular é proporcional ao seu uso de largura de banda e não o número de pacotes que ele transmite. O RED é uma boa fila para backbones, onde você não tem a complexidade da monitoração de estado por sessão necessária pelo enfileiramento justo. A fim de usar o RED, você precisa decidir sobre três parâmetros: Min, Max e burst. Min define o tamanho de fila mínimo em bytes antes de começar a descartar, Max é um mínimo soft sobre o qual o algoritmo tentará ficar, e burst define o número máximo de pacotes que pode ‘burst through’. Você deve definir o valor min calculando que latência de enfileiramento base mais alta aceitável que você deseja, e multiplicá-la por sua largura de banda. Por exemplo, no meu link ISDN 64kbit/s, eu posso desejar uma latência de enfileiramento base de 200ms assim eu defino em 1600 bytes. Definir min muito pequeno degradará a taxa de transmissão e muito grande degradará a latência. Definição de um min pequeno não é uma troca pela redução do MTU em um link lento para melhorar a resposta interativa

Você deve tornar max pelo menos duas vezes o valor de min para evitar sincronização. Em links lentos com pequeno Min´s pode ser esperto para tornar max talvez quatro ou mais vezes maior do que min.

O parâmetro burst controla como o algoritmo RED responde a rajadas. O parâmetro burst precisa ser definido maior do que min/avpkt. Experimentalmente, eu encontrei (min+min+max)/(3*avpkt) para funcionar ok. Adicionalmente, você precisa definir limit e avpkt. O parâmetro limit é um valor seguro, depois existirá limit bytes na fila, RED ‘entra’ em tail-drop. Eu tipicamente defino limit em oito vezes o valor de max. O parâmetro avpkt deve ser seu tamanho médio de pacote. 1000 funcionam OK em links Internet de lata velocidade com MTU de 1500 bytes. Leia o artigo sobre Enfileiramento RED de autoria de Sally Floyd e de Van Jacobson para informações técnicas.

Best Effort

Best effort delivery describes a network service in which the network does not provide any guarantees that data is delivered or that a user is given a guaranteed quality of service level or a certain priority.Best Effort descreve um serviço de rede em que a rede não fornece nenhuma garantia que os dados sejam entregues ou que um usuário recebe uma qualidade garantida de serviço ou certa prioridade. In a best effort network all users obtain best effort service, meaning that they obtain unspecified variable bit rate and delivery time, depending on the current traffic load. Em uma rede de melhor esforço de todos os usuários obter o serviço de melhor esforço, o que significa que obter taxa de bits não especificada variável e prazo de entrega, dependendo da carga de tráfego atual. By removing features such as recovery of lost or corrupted data and preallocation of resources, the network operates more efficiently, and the network nodes are inexpensive. Ao remover recursos como recuperação de dados perdidos ou danificados e pré-alocação de recursos, a rede funciona de forma mais eficiente, e os nós da rede são baratos.

The postal service delivers letters using a best effort delivery approach. O serviço postal entrega cartas usando uma abordagem melhor esforço de entrega. The delivery of a certain letter is not scheduled in advance - no resources are preallocated in the post office. A entrega de uma determinada letra não é programada com antecedência - não existem recursos consignados nos correios. The mailman will make his "best effort" to try to deliver a message, but the delivery may be delayed if too many letters arrive to a postal office all of a sudden. O carteiro fará o seu "melhor esforço" para tentar entregar uma mensagem, mas a entrega pode ser adiada se muitas cartas chegam a uma estação de correios de repente. The sender is not informed if a letter has been delivered successfully. O remetente não é informado se a carta foi entregue com êxito. However, the sender can pay extra for a delivery confirmation receipt, which requires that the carrier get a signature from the recipient to prove the successful delivery. No entanto, o remetente pode paga mais por um recibo de confirmação de entrega, que exige que o transportador receba a assinatura do destinatário para comprovar a entrega bem sucedida.

Conventional telephone networks are not based on best-effort communication, but on circuit switching . Redes de telefonia convencionais não são baseadas na comunicação de melhor esforço, mas em comutação de circuitos. During the connection phase of a new call, resources are reserved in the telephone exchanges , or the user is informed that the call is blocked due to lack of free capacity. Durante a fase de ligação de uma nova chamada, os recursos são reservados a centrais telefônicas, ou o usuário é informado de que a chamada é bloqueada devido à falta de capacidade livre. An ongoing phone call can never be interrupted due to overloading of the network, but is guaranteed constant bandwidth. Uma chamada de telefone permanente nunca pode ser interrompida devido a sobrecarga da rede, mas é garantido largura constante.

Conventional IP routers only provide best-effort service. Roteadores convencionais IP somente para fornecer serviço de melhor esforço. The simplicity of routers is a key factor why IP has been much more successful than more complex protocols such as X.25 and ATM . A simplicidade de roteadores é um fator essencial porque IP tem sido muito mais bem sucedidos do que os protocolos mais complexos, como X.25 e ATM. In X.25, data was retransmitted on a node-to-node basis in case of detected errors. Em X.25, os dados foram retransmitidas em um nó a nó com base em caso de erros detectados. An ATM network can offer service categories with guaranteed bandwidth or latency. Uma rede ATM pode oferecer categorias de serviços, com largura de banda garantida ou latência. The Available Bit Rate (ABR) ATM service category gives best effort delivery, without Quality of Service guarantees. Categoria A Available Bit Rate (ABR) serviço ATM dá a entrega de melhor esforço, sem garantia de qualidade de serviço.

However, the best-effort paradigm is to some extent abandoned on the Internet. No entanto, o paradigma do melhor esforço é em certa medida, abandonada na Internet. Modern IP routers also provide mechanisms for differentiated or guaranteed quality of service to certain data flows, based on for example the IntServ or DiffServ protocols. Modern IP roteadores também prever mecanismos de qualidade diferenciada ou garantia de serviço para certos fluxos de dados, com base, por exemplo, o IntServ ou protocolos DiffServ. This may be utilized in networks with capacity problems for the reservation of resources to delay-sensitive services and services that require constant bit rate, for example real time multimedia communication such as IP telephony and IP-TV . Isto pode ser utilizado em redes com problemas de capacidade de reserva de recursos para atrasar os serviços sensíveis e serviços que exigem a taxa de bits constante, por exemplo, comunicação multimídia em tempo real, como telefonia IP e IP-TV.

Although Internet in its primary form is based on best-effort communication, guaranteed delivery can be provided by higher layer protocols, handled by host computers rather than the network nodes. Embora o Internet em sua forma primária é baseada na comunicação de melhor esforço, entrega garantida pode ser fornecido pelos protocolos de camada superior, manipulados por computadores host em vez de os nós da rede. The TCP transport protocol provides guaranteed services while UDP transport protocol provides best effort delivery. O protocolo de transporte TCP fornece serviços garantidos enquanto UDP protocolo de transporte oferece a entrega de melhor esforço. TCP verifies that all information transmitted is received fully on the other end. TCP verifica se toda a informação transmitida é recebido integralmente na outra extremidade. UDP does its best to deliver packets to the destination, but takes no steps to recover packets that are lost or misdirected. UDP faz o seu melhor para oferecer pacotes para o destino, mas não toma medidas para recuperar os pacotes que são perdidos ou extravio. The more stable TCP protocol is often used to deliver data like web pages and e-mail , while UDP is often used for media streaming or network gaming . Quanto mais estável protocolo TCP é muitas vezes usado para entregar dados como páginas web e e-mail, enquanto que o UDP é usado frequentemente para streaming ou jogos em rede. However, e-mail itself is also an example of best effort delivery because there is no absolute guarantee that a message will be delivered to the intended recipient. No entanto, e-mail em si também é um exemplo de entrega de melhor esforço, porque não há garantia absoluta de que uma mensagem será entregue ao destinatário.

Note that TCP does not reserve any resources in advance, and does not provide any guarantees regarding quality of service, for example bit rate. Note que TCP não reserva qualquer recurso de antecedência, e não oferece quaisquer garantias quanto à qualidade de serviço, taxa de bits por exemplo. In that sense, it can be considered best-effort communication. Nesse sentido, ele pode ser considerado o melhor esforço de comunicação. For end-to-end transport layer reservation of resources, the resource reservation protocol (RSVP) may be used. Por fim-de-final da camada de transporte de reserva de recursos, o protocolo de reserva de recursos (RSVP) podem ser utilizados.

Although UDP is used, higher layer application protocols may provide guaranteed delivery of messages and files. Embora o UDP é usado, protocolos superiores da camada de aplicação pode fornecer garantia de entrega de mensagens e arquivos. Examples are protocols for shared disk access , which in the early days were based on UDP. Exemplos disso são os protocolos para acesso ao disco compartilhado, que nos primeiros dias foram baseados em UDP.

Conclusão

O congestionamento é um problema que aflige as mais diversas estruturas de redes. Portanto, isto se deve na maioria dos casos as condições de banda passante e o tráfego nos nós da rede, mas nem todas as perdas são motivadas por sobrecarga na rede, como em redes wwireless, onde o meio é constantemente sujeito às perdas.

Por essas causas, deve-se dar a devida importância aos algoritmos de controle de congestionamento, que com suas diversas implementações minimizam tal problemática. O controle de congestionamento fica mais evidente quando a distância e a banda aumentam, principalmente em redes de alta velocidade, onde ocorrem muitas rajadas acarretando a perda de grande volume de dados.

Das diversas implementações do protocolo TCP, destaca-se o TCP Vegas por apresentar um mecanismo pró-ativo, sendo mais eficiente que os demais reativos, contudo, cada implementação apresenta sua vantagem peculiar.

Referências Bibliográficas

LIMA, Michele M. A. E.; FONSECA, Nelson L. S. da. Controle de Tráfego Internet.

FILHO, Reinaldo Penno, Desvendando TCP. 2004

Comentários