no meu trabalho, tenho que aprender muito sobre vários tópicos dele. Especialmente no mercado de virtualização, muitas pessoas geralmente estão bem preparadas quando se trata de infraestrutura, servidores e armazenamento, mas descobri que o ponto mais fraco é muitas vezes a rede. Existem alguns tópicos que são obscuros para muitos, como Layer2 vs Layer3, BGP, Spanning Tree, mas há um tópico que é realmente importante mesmo para os caras da infraestrutura, mas é quase desconhecido para eles: latência.
o que é latência?
o mais rápido possível, mesmo a velocidade da luz não é infinita. Leva tempo para um fóton ir do ponto A ao ponto B e, por exemplo, a luz gerada pelo sol leva 8 minutos para chegar à Terra. Nossas redes de computadores não estão nem perto dessa velocidade, porque em primeiro lugar geralmente nossas conexões não são feitas com fibra óptica (que acabaria sendo tão rápida quanto a luz), mas com cabos elétricos e, portanto, as transmissões por esses meios são mais lentas, mas também porque existem muitos aparelhos entre a fonte e o destino que precisam manipular o pacote. O host de origem, switches, roteadores, firewalls, o host de destino; cada “salto” adiciona tempo ao tempo total que um pacote precisa para chegar ao seu destino. Podemos projetar essa situação assim:
(fonte: https://stackoverflow.com/questions/8682702/how-to-calculate-packet-time-from-latency-and-bandwidth )
então, simplesmente dito, latência é o tempo que leva para um pacote para ir de origem para destino.
em uma rede local, é fácil aplicar alguma aproximação e declarar que o atraso de processamento é 0, e também que os vários switches entre dois hosts não adicionam latência adicional. Afinal, quando é executado um comando ping para verificar se um host está conectado, a latência é sempre “abaixo de 1 ms” :
Por esta razão, não é incomum para calcular a velocidade de transferência máxima simplesmente olhando para a largura de banda disponível:
– 1 Gb ethernet link, dividido por 8, me dá 125 MBps
– 10 Gb ethernet link significa 1250 MBps
e assim por diante. E se minha largura de banda é de 125 Mbps, isso significa que posso transferir 125 MB a cada segundo.
por que a latência é importante?
porque ignorá-lo, juntamente com outros parâmetros, leva a resultados falsos!
veja o exemplo anterior. Mesmo em uma rede local, onde a latência é próxima de zero, existem outros parâmetros que podem afetar a velocidade final. Um acima de tudo: Tamanho da janela TCP. Não vou repetir o que já foi escrito de maneira perfeita pelos outros, então se você quiser saber mais, leia este post de Brad Hedlund. Qual é o problema? A velocidade do link sobre a qual geralmente falamos é a velocidade pura do link do cabo. Mas, além disso, precisamos executar vários protocolos, um acima do outro, como TCP sobre IP. O TCP divide os dados em pacotes e o tamanho dos pacotes é ditado pelo tamanho da janela TCP: maior esse valor, mais dados podem ser transferidos em uma única transmissão. Em seguida, uma carga útil é embalada dentro de um pacote, portanto, há bytes adicionais para cada pacote que nave a ser transmitida, mesmo que eles não contenham nenhum dado (há também alguma sobrecarga para o quadro ethernet subjacente, pense em toda a discussão em relação aos quadros Jumbo). Finalmente, a latência TCP desempenha seu papel, porque só posso transmitir o próximo pacote assim que o anterior atingir seu destino, porque o link está ocupado transferindo os outros pacotes.
latência e tamanho Da Janela se tornam fundamentais quando passamos de redes locais para redes públicas. Aqui, o valor <1ms desaparece e temos valores mais altos a serem levados em consideração. Maior é a latência, menor é a largura de banda máxima “real” que vou ver. Vamos dar um exemplo fácil: um cliente tem um link de 100 Mbps para a Internet e precisa transferir um arquivo de 1 TB para seu provedor de serviços.
habitual cálculos teóricos seria simples:
100 Mbps = 12,5 MBps
1 TB = 1000 GB = 1000000 MB
1000000 MB / 12,5 MBps = 80000 segundos = 1333,33 minutos = 22,22 horas ou (d:h:m:s): 22h:13m:20s
mas se você tentar enviar este arquivo para o seu provedor, nunca levará esse tempo para ser concluído, a menos que você e seu provedor de serviços estejam conectados ao mesmo link ethernet; o que significa que você não está usando a Internet!
Como calcular corretamente a velocidade de transferência de
eu calculado o valor anterior até o exato segundos usando esta ferramenta agradável:
http://wintelguy.com/transfertimecalc.pl
Se você olhar para ele, no entanto, você vai ver o mesmo “erro de aproximação” eu falei anteriormente: apenas o tamanho e a largura de banda são levados em conta. Sem Tamanho de janela e sem latência. Mas o site WintelGuy tem ferramentas mais incríveis, e uma é exatamente o que precisamos:
http://wintelguy.com/wanperf.pl
Neste, você pode ver que cada parâmetro importante é listado e usado para os cálculos. Vamos repetir o mesmo cálculo que fizemos antes, mas agora com algumas novas informações:
Nós adicionamos 40 ms de latência, e aceite os outros dois valores padrão (perda de Pacotes e MTU). Não temos chance de alterar a MTU por meio de um link da Internet, pois existem muitos aparelhos entre nós e nossos provedores de serviços que não estão sob nosso controle. Esta é uma das razões pelas quais muitas Telco oferecem aos seus clientes MPLS links privados em vez de links VPN através da internet pública, porque as configurações de conexão podem ser controladas e sintonizadas pelo Provedor (bem, há um pouco de bloqueio também, mas esta é outra história…). Aqui, você vê que a sobrecarga e a latência do TCP já estão afetando a taxa de transferência máxima real, que cai para 94,9 MBps. Eu diria, no entanto, que esta é uma situação muito boa, e pode ser pior: vamos manter todos os outros parâmetros como antes e aumentar a latência para 150ms:
a taxa de transferência é reduzida para 77,8 Mbps, uma perda de 22% da velocidade teórica. E isso pode ser ainda pior: uma conexão ADSL, por exemplo, tem mais a perda de pacotes, de modo que se continuarmos a 150 ms de latência, mas temos de aumentar a perda de pacotes por 10 vezes, podemos obter este (ignore o fato de que não ADSL pode ir até 100 Mbps, que é feito para manter a mesma velocidade em todos os exemplos):
a perda de Pacotes foi aumentado de 0.0001 (1 pacote perdido para cada 10000 transmitida) para 0.001 (1 pacote perdido para cada 1000 transmitido), e esse valor por si só diminuiu nossa velocidade máxima em 75%!!!
então, da próxima vez que você vir sua nova linha de internet brilhante não funcionando como esperado, antes de culpar seu provedor de serviços ou o software que você está usando para transferir esses dados, dê uma olhada melhor em sua rede. Você pode achar que esses 25Mbps são a velocidade mais rápida que você pode obter.