A latência na rede refere-se ao tempo de atraso observado durante a transferência de solicitações ou dados entre a origem e o destino dentro de um ambiente de rede. Vamos explorar como solucionar problemas de latência em redes.
Qualquer ação que demande o uso da rede, como abrir uma página web, clicar em um link ou executar um aplicativo e desfrutar de um jogo online, é considerada uma atividade. A ação do usuário é essencialmente uma solicitação, e o tempo de resposta de um aplicativo web representa o intervalo necessário para atender a essa solicitação.
Esse atraso temporal também engloba o período que um servidor leva para finalizar a solicitação. Consequentemente, é definido como o tempo de ida e volta – o tempo que uma requisição necessita para ser enviada, processada e, subsequentemente, recebida pelo usuário, onde é decodificada.
O termo “baixa latência” é usado para descrever atrasos na transferência de dados que são relativamente curtos. Por outro lado, atrasos prolongados ou latência excessiva são indesejáveis, pois prejudicam a experiência do usuário.
Como Resolver a Latência da Rede?
Existem diversas ferramentas e softwares disponíveis na internet para analisar e solucionar problemas de rede. Alguns são pagos, enquanto outros são de acesso gratuito. Contudo, existe uma ferramenta chamada Wireshark, que é um aplicativo de código aberto, licenciado pela GPL, usado para capturar pacotes de dados em tempo real. O Wireshark é o analisador de protocolo de rede mais popular e amplamente utilizado no mundo.
Ele permite capturar pacotes de rede e exibi-los de forma detalhada. É possível utilizar esses pacotes para análise em tempo real ou offline, já que ele armazena os pacotes de rede. Esse aplicativo possibilita examinar o tráfego de rede de forma minuciosa, filtrando e detalhando para identificar a origem dos problemas, auxiliando na análise da rede e, por fim, na segurança da mesma.
Quais são as Causas do Atraso na Rede?
Algumas das principais razões para a lentidão na conectividade de rede incluem:
- Latência elevada
- Dependências de aplicativos
- Perda de pacotes
- Dispositivos de interceptação
- Tamanhos de janela ineficientes
Neste artigo, vamos analisar cada causa de atraso na rede e como solucionar os problemas utilizando o Wireshark.
Analisando com o Wireshark
Latência Elevada
A alta latência refere-se ao tempo que os dados levam para percorrer um caminho de um ponto final para outro. O impacto da alta latência nas comunicações de rede é significativo. Na ilustração abaixo, podemos observar o tempo de ida e volta de um download de arquivo em um ambiente de alta latência como exemplo. Geralmente, o tempo de latência de ida e volta pode ultrapassar um segundo, o que é considerado inaceitável.
- Acesse Estatísticas do Wireshark.
- Selecione a opção Gráfico de Fluxo TCP.
- Escolha o gráfico de tempo de ida e volta para avaliar o tempo necessário para o download de um arquivo.
O Wireshark é usado para calcular o tempo de ida e volta em um determinado caminho, a fim de verificar se essa é a causa de falhas no desempenho da rede de comunicação do protocolo de controle de transmissão (TCP). O TCP é utilizado em diversas aplicações, como navegação online, transmissão de dados, protocolo de transferência de arquivos e muitos outros. Em muitos casos, o sistema operacional pode ser ajustado para operar de forma mais eficiente em canais de alta latência, especialmente quando os hosts utilizam o Windows XP.
Dependências de Aplicativos
Certos aplicativos dependem de outros aplicativos, processos ou comunicações com hosts. Por exemplo, suponha que seu aplicativo de banco de dados dependa de conexões com outros servidores para obter informações do banco de dados. Nesse caso, o desempenho lento nesses outros servidores pode afetar o tempo de carregamento do aplicativo local.
Imagine, por exemplo, uma experiência de navegação na web em que o servidor de destino se conecta a vários outros sites. Por exemplo, para carregar a página inicial do site www.espn.com, você precisará acessar primeiro 16 hosts que fornecem anúncios e conteúdo para a página principal do site www.espn.com.
Na figura acima, a janela HTTP Load Distribution no Wireshark apresenta uma lista com todos os servidores usados pela página inicial www.espn.com.
Perda de Pacotes
Um dos problemas mais comuns encontrados nas redes é a perda de pacotes. A perda de pacotes ocorre quando pacotes de dados não são entregues corretamente entre o emissor e o receptor através da internet. Quando um usuário acessa um site e começa a baixar os elementos da página, a perda de pacotes causa retransmissões, aumentando a demanda para baixar os arquivos web e retardando o processo geral de download.
Ademais, quando um aplicativo utiliza o TCP, pacotes ausentes têm um efeito particularmente negativo. Ao detectar um pacote descartado, uma conexão TCP automaticamente reduz sua taxa de transferência para compensar problemas de rede.
Ela aumenta gradualmente para uma taxa mais aceitável até que o próximo pacote seja descartado, levando a uma diminuição significativa na taxa de transferência de dados. Downloads de arquivos grandes, que deveriam fluir facilmente pela rede, sofrem consideravelmente com a perda de pacotes.
O que acontece quando um pacote é perdido? É um tema discutível. A perda de pacotes pode ocorrer de duas formas se o programa estiver operando via TCP. Em um caso, o receptor monitora os pacotes com base em seus números de sequência e detecta um pacote ausente. O cliente faz três solicitações para o pacote perdido (confirmações duplicadas), resultando em uma retransmissão. Quando um emissor percebe que um receptor não confirmou o recebimento de um pacote de dados, o emissor esgota o tempo e retransmite o pacote.
O Wireshark indica que ocorreu um congestionamento na rede, e várias confirmações causam a retransmissão do tráfego problemático, codificando-o por cores. Um grande número de confirmações duplicadas indica perda de pacotes e um atraso significativo na rede.
Para otimizar a velocidade da rede, é fundamental identificar o local exato da perda de pacotes. Quando ocorre a perda de pacotes, percorremos o caminho com o Wireshark até que nenhuma perda seja observada. Nesse ponto, estamos “upstream” do ponto de entrega do pacote, o que nos permite saber onde concentrar nossos esforços de depuração.
Dispositivos de Interceptação
Dispositivos como switches, roteadores e firewalls atuam como guardas de tráfego de rede, tomando decisões de roteamento. Quando a perda de pacotes ocorre, esses dispositivos devem ser considerados como um possível motivo.
Esses dispositivos de interconexão podem acrescentar latência ao caminho. Por exemplo, caso a priorização de tráfego esteja ativada, podemos notar uma latência adicional introduzida em um fluxo com baixo nível de prioridade.
Tamanhos de Janela Ineficientes
Além do sistema operacional Microsoft, existem outras “janelas” na rede TCP/IP.
- Janela Deslizante
- Janela do Receptor
- Janela de Controle de Congestionamento
Essas janelas, em conjunto, compõem o desempenho de comunicação baseado em TCP da rede. Comecemos por definir cada uma dessas janelas e seu impacto na largura de banda da rede.
Janela Deslizante
À medida que os dados são confirmados, a janela deslizante é usada para transmitir os próximos segmentos TCP pela rede. O emissor recebe confirmações para trechos de dados transmitidos, a janela deslizante se expande. Desde que não haja transmissões perdidas na rede, maiores quantidades de dados podem ser transferidas. Quando um pacote é perdido, a janela deslizante diminui, pois a rede não consegue administrar o aumento na quantidade de dados em linha.
Janela do Receptor
A janela receptora na pilha TCP é um espaço de buffer. Quando os dados são recebidos, eles são armazenados nesse espaço de buffer até que um aplicativo os utilize. A janela do receptor se enche quando um aplicativo não acompanha a taxa de recebimento, eventualmente levando a um cenário de “janela zero”. Toda transmissão de dados para o host deve ser interrompida quando um receptor anuncia uma condição de janela zero. A taxa de transferência cai para zero. Um método chamado Window Scaling (RFC 1323) permite que um host aumente o tamanho da janela do receptor e diminua a chance de um cenário de janela zero.
A imagem acima mostra um atraso de 32 segundos nas comunicações de rede devido a um cenário de janela zero.
Janela de Congestionamento
A janela de congestionamento estabelece a quantidade máxima de dados que a rede consegue gerenciar. A taxa de envio de pacotes do emissor, a taxa de perda de pacotes na rede e o tamanho da janela do receptor contribuem para esse número. A janela de congestionamento aumenta constantemente durante uma comunicação de rede saudável até que a transferência seja finalizada ou atinja um “teto” definido pela integridade da rede. As capacidades de envio do emissor ou o tamanho da janela do destinatário. Cada nova conexão inicia o processo de negociação do tamanho da janela novamente.
Dicas para uma Rede Saudável
- Aprenda a usar o Wireshark como ferramenta de primeira resposta para descobrir de maneira ágil e eficaz a origem do baixo desempenho.
- Identifique a origem da latência no caminho da rede e, se possível, reduza-a para um nível aceitável.
- Localize e solucione a origem da perda de pacotes.
- Verifique o tamanho da janela de transmissão de dados e, se possível, reduza-o.
- Examine o desempenho dos dispositivos de interceptação para verificar se adicionam latência ou descartam pacotes.
- Otimize os aplicativos para que consigam fornecer maiores quantidades de dados e, se possível, recuperar informações da janela do receptor.
Considerações Finais 👨🏫
Analisamos os principais motivos para problemas no desempenho da rede, porém, um aspecto importante que não pode ser ignorado é a falta de compreensão do funcionamento das comunicações de rede. O Wireshark oferece visibilidade da rede como raios-X, enquanto as varreduras CAT fornecem visibilidade do corpo humano para diagnósticos precisos e imediatos. Essa ferramenta se tornou crucial para identificar e diagnosticar problemas de rede.
Agora, você poderá avaliar e corrigir o desempenho da rede através de diversos filtros e ferramentas usando o Wireshark. 👍