Latência e Largura de Banda
“Este artigo é uma tradução de parte do livro High Performance Browser Networking”
Velocidade é um requisito importante
O surgimento e o rápido crescimento da indústria de otimização de desempenho da web (WPO - web performance optimization) nos últimos anos é um sinal claro da crescente demanda e importância por velocidade e rapidez nas experiências dos usuários. E isso não é simplesmente uma necessidade psicológica por velocidade em nosso mundo cada vez mais acelerado e conectado, mas um requisito impulsionado por resultados empíricos, medidos em relação ao desempenho final dos muitos negócios on-line:
- Sites mais rápidos levam a um melhor envolvimento do usuário.
- Sites mais rápidos levam a uma melhor retenção de usuários.
- Sites mais rápidos levam a conversões mais altas.
Simplificando, a velocidade é um requisito importante. E para entregá-la, precisamos entender os muitos fatores e limitações fundamentais que estão em jogo. Neste artigo, nos concentraremos nos dois componentes críticos que ditam o desempenho de todo o tráfego de rede: latência e largura de banda (Figura 1-1).
Latência
Tempo que leva para um pacote de dados percorrer uma rede do ponto de origem até o ponto de destino.
Largura de Banda
Máxima taxa de transferência de um canal de comunicação lógico ou físico.
Para um melhor entendimento de como a largura de banda e a latência funcionam em conjunto, teremos que usar ferramentas para que possamos nos aprofundar nas características internas e de desempenho dos pacotes TCP, UDP e de todos os protocolos de aplicativos acima deles.
Os Diversos Componentes da Latência
Latência é o tempo que leva para uma mensagem, ou um pacote, viajar do ponto de origem até o ponto de destino. Essa é uma definição simples e útil, mas muitas vezes oculta muitas informações úteis — cada sistema contém várias origens, ou componentes, contribuindo para o tempo total necessário para que uma mensagem seja entregue e é importante entender quais são esses componentes e o quê caracteriza seu desempenho.
Vamos dar uma olhada mais de perto em alguns componentes comuns que contribuem no efeito latência em um roteador típico na Internet, que é o elemento responsável por retransmitir uma mensagem entre o cliente e o servidor:
Atraso de propagação
Quantidade de tempo necessária para uma mensagem viajar do emissor para o receptor, que é uma função da distância em relação à velocidade com a qual o sinal se propaga.
Atraso de Transmissão
Quantidade de tempo necessária para enviar todos os bits do pacote através do link, que é uma função do tamanho do pacote e da taxa de velocidade do link.
Atraso de Processamento
Quantidade de tempo necessária para processar o cabeçalho do pacote, verificar se existe erros no nível de bit e determinar o destino do pacote.
Atraso na Fila
Quantidade de tempo que o pacote fica aguardando na fila até que ele possa ser processado.
A latência total entre o cliente e o servidor é a soma de todos os atrasos listados. O tempo de propagação é caracterizado pela distância e pelo meio no qual o sinal viaja — como veremos, a velocidade de propagação é representado por um pequeno fator constante da velocidade da luz. Por outro lado, o atraso de transmissão é caracterizado pela taxa de velocidade disponível do link de transmissão e não tem nada a ver com a distância entre o cliente e o servidor. Por exemplo, vamos supor que queremos transmitir um arquivo de 10 Mb em dois links: 1 Mbps e 100 Mbps. Levará 10 segundos para colocar todo o arquivo “on the wire” no link de 1 Mbps e apenas 0,1 segundos no link de 100 Mbps.
Em seguida, uma vez que o pacote chega ao roteador, este deverá examinar o cabeçalho do pacote para determinar a rota de saída e pode executar outra verificação nos dados - isso também leva tempo. Muito dessa lógica é realizada pelo hardware, por isso os atrasos são muito pequenos, mas eles existem. E, finalmente, se os pacotes estão chegando a um ritmo mais rápido do que o roteador é capaz de processar, em seguida, os pacotes são enfileirados dentro de um buffer de entrada. O tempo que os dados passam na fila dentro do buffer é conhecido como atraso de fila.
Cada pacote que viaja pela rede poderá sofrer o efeito de muitos casos de cada um destes atrasos. Quanto maior for a distância entre o ponto de origem e o ponto de destino, mais tempo levará para se propagar. Quanto mais roteadores enontrarmos no meio do caminho , maior serão os atrasos de processamento e transmissão para cada pacote. Finalmente, quanto maior for a densidade de tráfego ao longo do caminho, maior a probabilidade de pocotes serem enfileirados e polr conseguinte sofrendo atraso dentro de um ou mais buffers.
Velocidade da Luz e Latência de Propagação
Como Einstein descreveu em sua teoria da relatividade, a velocidade da luz é a velocidade máxima em que toda a energia, matéria e informação pode viajar. Essa observação coloca um limite rígido no tempo de propagação de qualquer pacote de rede.
A boa notícia é que a velocidade da luz é alta: 299.792.458 metros por segundo. No entanto, e há sempre uma no entanto, que é a velocidade da luz no vácuo. Em vez disso, nossos pacotes viajam através de um meio, como um fio de cobre ou um cabo de fibra ótica, o que reduz a velocidade do sinal (Tabela 1–1). Essa relação entre a velocidade da luz e a velocidade com que o pacote viaja em um material é conhecida como índice de refração do material. Quanto maior o valor, a luz viaja mais devagar nesse meio. (Tabela 1–1).
O valor típico do índice de refracção de uma fibra óptica, através do qual a maioria dos nossos pacotes viajam através saltos de longa distância, podem variar entre 1,4 e 1,6 — lenta mas seguramente estamos melhorando a qualidade dos materiais e a reduzindo o índice de refração. Mas, para simplificar, a regra prática é assumir que a velocidade da luz na fibra é de cerca de 200.000.000 metros por segundo, o que corresponde a um índice de refração de aproximadamente 1,5. A parte notável sobre isso é que já estamos dentro de um pequeno fator constante da velocidade máxima! Uma incrível conquista de engenharia por si só.
A velocidade da luz é rápida, mas ainda assim leva 160 milissegundos para fazer a viagem de ida e volta (RTT - Round-trip time ) de Nova York a Sydney. De fato, os números na Tabela 1–1 são irreais, pois eles assumem que o pacote viaja através de um cabo de fibra ótica ao longo do caminho do grande círculo (a menor distância entre dois pontos no globo) entre as cidades. Na prática, esse raramente é o caso, e o pacote levaria uma rota muito mais longa entre Nova York e Sydney. Cada salto ao longo desta rota introduzirá atrasos adicionais de roteamento, processamento, enfileiramento e transmissão. Como resultado, o RTT real entre Nova York e Sydney, sobre nossas redes existentes, parece estar na faixa de 200 a 300 milissegundos. Tudo considerado, isso ainda parece bem rápido, certo?
Não estamos acostumados a medir nossos acessos web em milissegundos, mas estudos mostram que a maioria de nós perceberá um atraso de mais de 100–200 milissegundos introduzindo em um acesso. Quando o atraso é maior que 300 milissegundos, o acesso web é frequentemente relatado como lento, na barreira de 1.000 milissegundos (1 segundo), muitos usuários já executaram uma alternância de contexto mental enquanto aguardavam a resposta.
A questão é simples: para proporcionar a melhor experiência e manter os usuários envolvidos na tarefa, precisamos que nossos aplicativos respondam dentro de centenas de milésimos de segundo. Isso não nos deixa, e especialmente a rede, com muito espaço para erros. Para ter sucesso, a latência de rede deve ser cuidadosamente gerenciada e ter um critério de arquitetura e design explícito em todos os estágios de desenvolvimento.
Latência da Última Milha
Ironicamente, muitas vezes são as últimas milhas, não o cruzamento dos oceanos ou continentes, onde a latência significativa é introduzida: o infame problema de última milha. Para conectar sua casa ou escritório à Internet, seu provedor de Internet precisa encaminhar os cabos pelo bairro, agregar o sinal e encaminhá-lo para um nó de roteamento local. Na prática, dependendo do tipo de conectividade, metodologia de roteamento e tecnologia implantada, esses primeiros poucos saltos sozinhos podem levar dezenas de milissegundos.
De acordo com os relatórios anuais “Measuring Broadband America” conduzido pela Federal Communications Commission (FCC), as latências de ultima milha para banda larga terrestre (DSL, cabo, fibra) dentro dos Estados Unidos permaneceram relativamente estáveis ao longo do tempo: a fibra tem melhor desempenho médio (10–20 ms), seguido por cabo (15–40 ms) e DSL (30–65 ms).
Na prática isso se traduz em 10–65 ms de latência apenas para o nó de medição mais próximo na rede principal do provedor, antes do pacote ser mesmo encaminhado para o seu destino! O relatório da FCC está focado nos Estados Unidos, mas a latência de última milha é um desafio para todos os provedores de Internet, independentemente da sua localização. Para os curiosos, um simples traceroute
muitas vezes pode lhe dizer muito sobre a topologia e desempenho do seu provedor de Internet.
No exemplo anterior, o pacote inicia sua jornada na cidade de Sunnyvale, passa por Santa Clara, depois por Oakland, retorma a San Jose e é encaminhado para o datacenter “529 Bryant”, no ponto em que foi roteado para o Google e chega ao seu destino no 11º salto. Todo esse processo levou, em média, 18 milissegundos. Nada mal, considerando todo este percuruso, mas ao mesmo tempo o pacote poderia ter viajado por toda a extensão dos Estados Unidos!
As latências de última milha podem variar muito entre os provedores de Internet devido a tecnologia implantada, topologia da rede e até a hora do dia. Como usuário final, e se você estiver procurando por uma melhor navegação na Web, certifique-se de medir e comparar as latências de última milha do svários provedores disponíveis em sua região.
Largura de Banda nas Redes Centrais (Core Networks)
Uma fibra ótica funciona como um “tubo de luz”, ligeiramente mais grosso do que um cabelo humano, projetado para transmitir luz entre as duas extremidades do cabo. Fios de metal também são usados, mas estão sujeitos a maior perda de sinal, interferência eletromagnética e custos de manutenção mais altos durante a vida útil. As chances são de que seus pacotes percorram os dois tipos de cabos, mas para qualquer salto de longa distância, eles serão transmitidos por um link de fibra ótica.
As fibras ópticas têm uma vantagem distinta quando se trata de largura de banda porque cada fibra pode transportar muitos comprimentos de onda diferentes (canais) de luz através de um processo conhecido como multiplexação por divisão de comprimento de onda (WDM).
No início de 2010, os pesquisadores conseguiram multiplexar mais de 400 comprimentos de onda com a capacidade máxima de 171 Gbit/s por canal, totalizando mais de 70 Tbit/s de largura de banda total para um único link de fibra! Nós precisaríamos de milhares de links de fios de cobre(elétricos) para se comparar com a fibra. Não surpreendentemente, a maioria dos saltos de longa distância, como a transmissão de dados entre continentes, agora é feita através de links de fibra óptica. Cada cabo carrega vários fios de fibra (normalmente quatro cordões), o que se traduz em capacidade de largura de banda em centenas de terabits por segundo para cada cabo.
Largura de Banda nas Redes de Borda (Network Edge)
Os backbones, ou os links de fibra, que formam os principais caminhos de dados da Internet são capazes de movimentar centenas de terabits por segundo. No entanto, a capacidade disponível nas redes de borda é muito, muito menor, e varia descontroladamente com base na tecnologia implantada: dial-up, DSL, cabo, uma série de tecnologias sem fio, fiber-to-home e até mesmo o desempenho do roteador local. A largura de banda disponível para o usuário é função da ligação de menor capacidade entre o cliente eo servidor de destino (Figura 1.1).
Akamai Technologies opera um CDN global, com servidores posicionados em todo o mundo, e fornece relatórios trimestrais gratuitos Akamai’s website mostrando a média da velocidades de largura de banda, relacionado com seus srevidores distribuidos pelo mundo. Tabela 1.2 mostra os valores de tendência do final de 2015.
Os dados anteriores excluem o tráfego de operadoras de celular, um tópico que voltará ser examinado com detalhes mais tarde. Por enquanto, basta dizer que as velocidades de aparelhos móveis variam muito e geralmente são mais lentas. No entanto, mesmo com isso em mente, a média global largura de banda no final de 2015 foi de apenas 5,1 Mbps! Coréia do Sul liderou o mundo com uma taxa de transferênica (throughput) médio de 20,5 Mbps, e os Estados Unidos ficaram em 21º lugar com 12,6 Mbps.
Como referência, a transmissão de um vídeo com qualidade HD pode exigir de 2 a 10Mbps, dependendo da resolução e do codec. Então um usuário mediano dentro dos estados Unidos pode transmitir um vídeo de alta resolução na rede de borda, mas isso também consumiria grande parte da sua capacidade do link — não é um ambiente muito promissor para uma residência com vários usuários.
Descobrir o gargalo de largura de banda é para qualquer usuário, muitas vezes, um exercício pouco comum, mas importgante. Mais uma vez, para os curuisos, existem vários serviços on-line como speedtest.net mantido pela Ookla (Figura 1.2), que fornecem testes de upstream e downstream trabalhando em conjunto com um servidor próximo — nós veremos por que escolher um servidor local é importante em nossa discussão sobre o TCP. Executando um teste em um desses serviços é uma boa maneira de verificar se sua conexão atende às velocidades anunciadas do seu ISP local.
No entanto, embora um link com largura de banda alta para o seu ISP seja desejável, isto também não é uma garantia de desempenho de ponta a ponta; só porque um teste de largura de banda informa altas taxas de dados não significa que você pode ou deve esperar o mesmo desempenho de outros servidores remotos. A rede poderia estar congestionada em qualquer nó intermediário devido à alta demanda, falhas de hardware, um ataque de rede concentrado ou uma série de outras razões. Alta oscilação da taxa de transferênica e desempenho de latência é uma propriedade inerente de nossas redes de dados — prever, gerenciar e adaptar-se a mudança continua do “clima da rede” é uma tarefa complexa.
Fornecendo Maior Largura de Banda e Menores Latências
Nossa demanda por maior largura de banda está crescendo rapidamente, em grande parte devido a popularidade crescente do streaming de vídeo, que agora é responsável por bem mais da metade de todo o tráfego da Internet. A boa notícia é que, embora possa não ser barato, existem várias estratégias disponíveis para crescermos a capacidade disponível: podemos adicionar mais fibras em nossos links de fibra óptica, nós podemos implantar mais links através das rotas congestionadas, ou podemos melhorar as técnicas de WDM para transferir mais dados através de links existentes.
TeleGeography, uma empresa de consultoria consultoria e pesquisa do mercado de telecomunicações, estima que a partir de 2011, estavamos utilizando, em média, apenas 20% da capacidade disponível dos links submarinos de fibra óptica implantados. Ainda mais importante, entre 2007 e 2011, mais da metade de toda a capacidade de utilização dos cabos transoceânicos teve como responsável a atualizações de atualização de hardware utilizando tecnoliga WDM: a mesmo link de fibra, utilinzadp uma tecnologia melhor em ambas as extremidades para multiplexar os dados. Claro, não podemos esperar que esses avanços continuem indefinidamente. No entanto, enquanto economia das empresas permitirem, não há razão fundamental para que a largura de banda e a taxa de transferência não possam aumentar com o tempo — se tudo isso falhar, podemos adicionar mais links de fibra.
A questão da latência, por outro lado, é uma história muito diferente. A qualidade dos links de fibra poderiam ser melhorados para nos aproximar um pouco mais da velocidade da luz: melhores materiais com menor índice de refração e roteadores mais rápidos ao longo do caminho. No entanto, dado que nossas velocidades atuais já estão dentro de aproximadamente 2/3 da velocidade da luz, o máximo que podemos esperar dessa estratégia é apenas uma melhoria modesta de 30%. Infelizmente, simplesmente não há maneira de contornar as leis da física: a velocidade da luz coloca um limite rígido na latência mínima.
Alternativamente, como não podemos fazer viagens de forma mais rápida, podemos encurtar as distâncias. Contudo, colocar novos cabos nem sempre é possível devido às restrições impostas pelo terreno físico, por razões sociais e políticas, e logicamente, os custos associados.
Como resultado, para melhorar o desempenho de nossos aplicativos, precisamos arquitetar e otimizar nossos protocolos e código de rede com consciência das limitações da largura de banda disponível e da velocidade da luz: precisamos reduzir viagens de ida e volta, aproximar os dados do cliente e construir aplicativos que possam ocultar a latência por meio do cache, pré-busca, e uma variedade de técnicas similares, como será explicado em artigos futuros.