domingo, 20 de janeiro de 2013

Por que minha rede está lenta?



Quando você está em uma determinada rede interna e tem a sensação de que a velocidade de resposta da Internet, de modo geral, está muito lenta em relação ao que você está acostumado para essa posição, há forte chance de que um dos elementos no caminho dos dados seja, destacadamente, o principal responsável.
Na maioria das vezes, entretanto, nossa percepção de velocidade nos engana, por se basear em vários aspectos subjetivos como, por exemplo, nossa pressa naquele momento.
Para ir de um ponto a outro, os dados passam por diversos elementos que, sequencialmente, os manipulam de alguma forma.

As comunicações digitais atuais se dão pela modalidade “comutação de pacotes”, ou seja, os bits de dados são agrupados em pacotes e assim trafegam pelas redes. Pacotes IP, TCP, UDP, RTP(VoIP), HTTP, Ethernet, HDLC, Frame Relay, entre outros.

Latência
O intervalo de tempo total, decorrido entre o início da entrada de um pacote de dados em um dispositivo e o início da saída desse pacote é denominado “latência” do dispositivo. Esse tempo (tempo de trânsito) é composto de três parcelas:
1)  Tempo para o dispositivo processar o pacote de dados
2) Tempo em que os dados ficam esperando em filas internas
3) Tempo de propagação do pacote no dispositivo (comprimento do pacote em bits dividido pela velocidade de transmissão em bps)

Então, alta latência não significa necessariamente baixa velocidade. Comparando com um trajeto de automóvel na cidade, a latência é o tempo que levamos da origem ao destino e esse tempo não depende só da velocidade do veículo, mas também de quantos sinaleiros encontraremos pelo caminho e do tempo que eles nos obrigam a ficar esperando.
Cada elemento age como um funil. Quando sua capacidade de transferir os dados é atingida, o funil vai enchendo mais rápido do que esvazia, aumentando a latência. Imagine uma fila, onde cada pessoa (equivale a um pacote) deve esperar por sua vez. Se, durante esse tempo, o tráfego de entrada não diminuir, pode haver perda de pacotes quando a memória (buffer) do dispositivo se esgotar. Fenômeno semelhante ocorre quando jogamos água em um funil com um balde: se jogar demais transborda.
A figura mostra simplificadamente os principais elementos. Podemos considerar a placa de rede do computador como sendo o primeiro funil. Cada placa tem sua limitação. Uma placa de 100 Mbps transmite, em geral, de 400 a 900 kbps, dependendo principalmente de sua capacidade de processamento e do tamanho do pacote (quantos bits). As placas de 1 e 10 Gbps também só conseguem transferir uma parte do valor nominal da rede.
Como a placa de rede interage com outros dispositivos internos do computador, como o disco rígido, estes também podem também limitar a velocidade de transferência dos dados.
Um trabalho de Hurwitz e Wu-chun Feng apresenta detalhes sobre o desempenho de uma placa de rede de 10 Gbps, mostrando que ela consegue operar no máximo a 3,9 Gbps.

      O segundo funil é o cabeamento. Veremos adiante que uma rede com baixa taxa de erros é importante para transmissões em alta velocidade e isto deve começar com um bom cabeamento. Daí a primeira explicação de por que os fabricantes recomendam cabeamento categoria 6 e não 5e, sendo que ambos suportam transmissão a 1 Gbps: o cabeamento categoria 6 oferece menor taxa de erro. Este funil é passivo, portanto sua latência é somente o tempo de propagação.
O próximo funil é a rede de equipamentos ativos que transportam os dados dentro da rede interna. Quem sabe em outra matéria falamos mais sobre isso?
O roteador de saída é um vilão famoso nas redes de pequeno porte e nas residências, onde se opta pelo baixo custo. Não economize no roteador.
A seguir vem o enlace do provedor. Mesmo que a velocidade do enlace seja exatamente a que você contratou, digamos 10 Mbps, na verdade isto pouco ajudará se houver um funil mais apertado no caminho.
Logo de entrada, na rede do provedor, os dados chegam ao primeiro roteador que pode estar ligado a diversas redes remotas e, por isso, está também sujeito a congestionamento. E assim a história se repete pela Internet até o destino de seus dados.

Eficiência da comunicação
A comunicação ocorre com os dados agrupados em pacotes e cada pacote possui certa quantidade de bits de controle que depende do protocolo utilizado. A eficiência do pacote é a divisão da quantidade de bits de dados pela quantidade total de bits do pacote. Portanto, considerando que não há erro de comunicação, quanto maior o pacote, mais eficiente fica a comunicação.
Então, para aumentar a eficiência da comunicação os protocolos utilizam pacotes cada vez maiores. Consequentemente, a rede deve oferecer uma comunicação com baixa taxa de erro a fim de se evitar retransmissões, senão o tiro sai pela culatra.

Tempo de resposta
O tempo de resposta da rede é o intervalo de tempo entre a emissão de uma requisição até o recebimento da resposta. Ou seja, é a soma dos seguintes tempos:
1)    A latência total (ida e volta) da rede entre os dois pontos
2) Tempos gastos em retransmissões devido a erros de   comunicação
3)   Tempo de processamento do servidor remoto

Tudo o que foi falado vale também para acesso aos servidores da rede interna. A diferença é que, no caso da rede interna, as latências são pequenas e só conseguimos perceber alguma diferença quando o problema é realmente grave.

Conclusões:
1      Tempo de resposta” é o tempo decorrido entre a emissão de uma requisição e o recebimento da resposta;
2       Velocidade é medida em bits por segundo (bps);
3       Latência” é o tempo de trânsito pelos elementos considerados. A latência depende da velocidade, mas inclui também os tempos de processamento dos dispositivos envolvidos e os tempos de espera nas filas;
4     Quanto maior a velocidade, melhor deve ser o cabeamento;
5      A rede interna deve estar balanceada tecnologicamente, o que significa calibrar o tamanho de todos os funis internos;
6     De que adianta uma excelente placa de rede se o computador tem um acesso lento ao seu disco rígido?

2 comentários:

  1. O gráfico mostra duas situações: uma para MTU de 1500 que é o padrão Ethernet, e outra para MTU de 9000 bytes que acomoda pacotes jumbo. Em ambas, quanto maior o tamanho do pacote dos dados, mais eficiente é a comuicação. Por exemplo, para MTU de 1500 bytes: com pacotes de 2048 bytes, o teste conseguiu chegar a 2 Gbps; aumentando o pacote para 10.240 a taxa efetiva de transmissão subiu para 2,5 Gbps (apenas 25% da velocidade nominal da placa). Isso considerando que o canal não introduz erros. Havendo erro de transmissão, o protocolo pede retransmissão, então a taxa efetiva de transmissão cai. Sabendo que quanto maior o pacote maior a chance de ocorrer um erro nele, na prática há sempre um ponto de máxima taxa de transmissão, que depende da taxa de erro do canal.

    ResponderExcluir
  2. Materia importante, na medida em que elucida nos a entender melhor o que leva em algum momento que as comunicacoes numa certa LAN esteja lentas.

    ResponderExcluir