Cloud Computing

29 mai, 2014

Falando de redes de baixa latência – Parte 2

Publicidade

Dando continuidade à série de redes de baixa latência, nesta segunda parte, abordo os protocolos de medição de baixa latência.

O fator de latência está se tornando muito crítico no que se refere à avaliação de desempenho dos equipamentos de redes. Especialmente para redes de alto desempenho. Baixa latência de comutação é um elemento chave para permitir um bom desempenho da aplicação na camada superior e para realização mais rápida possível do trabalho, seja ele para negociação de alta frequência ou de computação de alto desempenho. Devido ao avançado projeto de arquitetura de comutação e o avanço da tecnologia de processadores, a latência para switch Ethernet está diminuindo, nos últimos anos, de milissegundos de dois dígitos para sub-1 microssegundo. Esta abordagem trata da definição de latência, dos diferentes métodos de comutação, e outros fatores importantes que podem alterar drasticamente os resultados da medição de latência.

A latência do equipamento de rede (switch) é definida como o tempo que o equipamento leva para transmitir um pacote a partir da sua porta de entrada para a sua porta de saída. Quanto menor a latência, menos tempo o pacote precisa ficar no equipamento, à espera de ser processado, e mais rápido estes pacotes podem ser enviados para o host de destino e, finalmente, o tempo de resposta da aplicação é mais rápido.

É muito importante entender a terminologia do switch de baixa latência, bem como seus vários métodos de comutação e as metodologias para medição das latências mais precisas. Muitas variáveis ​​podem afetar a precisão dos resultados da medição de latência, tais como a posição do carimbo de tempo (Time Stamp) em pacotes de teste, a taxa de tráfego, quantidade de portas, e configuração do equipamento de testes .

Às vezes uma configuração incorreta de uma única variável pode mudar drasticamente os resultados da medição de latência. Este artigo analisa todos os aspectos para medida de latência e facilita a compreensão de todos os detalhes necessários.

Você pode medir a latência de quatro maneiras:

Último a entrar, primeiro a sair (LIFO)

Definido na RFC 1242, o temporizador de latência para medição começa logo que o último bit do pacote entra no switch (T0) e para quando o primeiro bit do pacote deixa o switch ( T1). A Figura 1 mostra um diagrama de LIFO.

Figura 1. LIFO Latência Medição

Captura de Tela 2014-05-21 às 20.19.27

Última-in, last-out (LILO)

Definido na RFC 4689, o temporizador de medição de latência começa logo que o último bit do pacote entra no switch e para quando o último bit do pacote deixa o switch. A Figura 2 mostra um diagrama de LILO.

Figura 2. LILO Latência Medição

Captura de Tela 2014-05-21 às 20.19.27

 Primeiro-in, first-out (FIFO)

Definido na RFC 1242, o temporizador de medição de latência começa logo que o primeiro bit do pacote entra no interruptor e para quando o primeiro bit do pacote deixa o switch. A Figura 3 mostra um diagrama de FIFO.

Figura 3. FIFO Latência Medição

Captura de Tela 2014-05-21 às 20.20.39

Primeiro-in, last-out (FILO)

Este método não está atualmente definido em qualquer RFC. O temporizador de medição de latência começa logo que o primeiro bit do pacote fica no interruptor e para quando o último bit do pacote deixa o switch. A Figura 4 mostra um diagrama de FILO.

Figura 4. FILO Latência Medição

Captura de Tela 2014-05-21 às 20.21.39

 Como as ferramentas de medição calculam a Latência?

LILO Latência

O equipamento de medição geralmente coloca o carimbo de tempo (Time Stamp) no local fixo de todos os pacotes que ele gera. Os medidores Spirent ou IXIA colocam o carimbo de tempo no final do quadro, pouco antes Frame Checksum Sequence (FCS) e não mudam a sua localização, independentemente do método de medição de latência escolhido, o que significa que as ferramentas de medição terão sempre de medir a latência do LILO. Todos os outros resultados de medição de latência são derivados do LILO, então a questão é: como podemos obter todos os outros resultados de latência com base nos resultados do LILO?

FIFO Latência

Sob circunstâncias normais, a latência LILO é a mesma que a latência FIFO. Este fato pode ser verificado com os resultados da medição de latências Lilo e FIFO mostrados neste artigo. Porque FIFO é muito mais popular em toda a configuração da ferramenta de teste e documentação, daqui para a frente neste artigo, vamos utilizar FIFO latência para representar tanto FIFO e a latência  de medição LILO.

LIFO Latência

Latência LIFO pode ser calculada da seguinte forma: LIFO = FIFO – (tamanho do pacote em velocidade bits / Link)

Tamanho do pacote em velocidade bits / Ligação é o atraso de serialização, que é o tempo que leva para um pacote dentro ou fora de um determinado meio de transmissão. Por exemplo, o atraso de serialização de um pacote de 64 byte de uma ligação 10 Gbps é (64 bytes x 8 bits) / 1 x 109 bps = 51,2 nanossegundos. Desta forma vamos calcular o tempo que leva para que um único pacote atravesse o fio quando o primeiro bit atinge a porta de entrada, que não deve adicionar um preâmbulo ou espaçamento entre na fórmula. Esta fórmula também pode ser verificada através da comparação dos resultados de latência entre FIFO e LIFO latências e medidos para a mesma chave (ver Tabelas 1).

Captura de Tela 2014-05-21 às 20.27.05

Esta fórmula indica que, para qualquer tipo de switch, a latência LIFO é sempre menor do que todos as outras latências. A observação mais interessante é que os números negativos de latência terão resultados se você medir a latência de um switch cut-through com LIFO.

FILO Latência

FILO latência pode ser derivada com base na FIFO seguinte fórmula: FILO = FIFO + (tamanho Packet / velocidade Link)

O mesmo atraso na ligação de serialização listado na Tabela 1 é também aplicado aqui. Então a pergunta é: qual deles deve ser usado? A resposta depende do método de comutação do switch Ethernet.

Alternando Método: cut-through ou Store-and-Forward?

Tendo em vista que existem várias maneiras de medir a latência de switch, o que deve ser usado para avaliar um switch? A resposta depende do método de comutação do interruptor: cut-through ou store-and-forward.

  • Cut-through switching: O switch Ethernet só envia os pacote para a frente na sua porta de entrada, logo que o destino é aprendido – normalmente nos primeiros 6 bytes. Obviamente, este tipo de switch pode encaminhar pacotes muito mais rápido e proporcionar menor latência. A maneira mais comum para medir a latência de um switch cut-through é com FIFO.
  • Store-and-forward switching: Com esta configuração todo o pacote precisa ser armazenado (aprendido) na entrada do switch para transmiti-lo depois. Obviamente, vai demorar mais tempo para encaminhar o pacote em comparação com o tempo da opção cut-through, porque não tem nada para armazenar. A maneira mais comum para medir a latência de um switch store-and-forward é LIFO. À frente encontram-se os resultados da medição de latência com um método diferente.

No entanto, a fim de ter um consistente resultado das medições, o mesmo método de medição (FIFO preferível) deve ser usado se você está comparando a latência de diferentes switches, independentemente se é cut-through ou switch store-and-forward.

Medição de Latência

Latência média

Para qualquer switch de alta performance, a latência foi medida entre centenas de milhares de milhões de pacotes, e faz sentido usar a latência média para representar as características de latência do switch, embora a latência mínima e máxima também possam fornecer uma visão diferente sobre as características de latência.

Medir a latência de um switch Cut-Through

Considere um switch de ultra-baixa latência da Arista como um exemplo para ilustrar como medir corretamente a latência. Quatro portas do switch estão ligados ao equipamento de Testes Spirent; o tráfego de teste completo é configurado como 100 por cento de taxa de transmissão, o que significa que cada porta irá transmitir e receber tráfego de todas as outras portas em 10Gbps. Cada iteração será executada através de um tamanho de pacote fixo, a partir de 64 bytes em todo o caminho para pacotes jumbo 9216 bytes.

FIFO e LILO latências de um switch Cut-Through

A Figura 5 representa graficamente as latências FIFO e LILO para um switch cut-through.

Figura 5. FIFO e LILO latências para Cut-Through

Captura de Tela 2014-05-21 às 20.38.00

Como notado anteriormente, as latências de FIFO e o LILO devem ser as mesmas em circunstâncias normais. Como mostrado na Figura 5, a diferença entre latências FIFO e LILO é apenas cerca de ~ 10 nanossegundos, que está dentro da margem de precisão do aparelho de teste. A resolução timestamp da Spirent é ± 10 ns em seus cartões de 10G , que foram usados neste teste.

LIFO Latência de um switch Cut-Through

Como observado anteriormente, um switch cut-through realmente não deve ser medido com LIFO; caso contrário, os resultados de medição mostrará negativo ou 0 latência. Alguns fornecedores de switches afirmam que eles estão correndo para 0 latência, mas eles devem usar a metodologia de teste correto para tirar essa conclusão. A Figura 6 mostra os resultados reais para medição LIFO, onde a latência se torna 0 para pacotes grandes. Os resultados são também comparados com a fórmula anteriormente mencionada:

LIFO = FIFO – (tamanho do pacote em velocidade bits / Link)

Figura 6. LIFO Latência para Cut-Through

Captura de Tela 2014-05-21 às 20.39.54

Como a ferramenta de medição não informa números de latência negativos, os resultados de latência dos dois últimos tamanhos de quadro (4096 e 9216) são mostradas como latência. Estes resultados mostram claramente que LIFO não deve ser utilizado para este tipo de medição.

Medir a latência de um switch Store-and-Forward

Para demonstrar o método de medição de latência de um switch Store-and-Forward, vamos usar a mesma configuração que foi usada no teste anterior, mas vamos medir a latência do switch store-and-forward com métodos diferentes.

LIFO Latência de switch Store-and-Forward

A forma mais comum de medir a latência de um switch é usar LIFO como definido no RFC 1242. Os resultados são mostrados na Figura 7.

Figura 7. LIFO medir um switch Store-and-Forward

Captura de Tela 2014-05-21 às 20.42.16

Comparando a Figura 7 com a Figura 5, FIFO e LILO, e as latências de um switch cut-through, nota-se que a latência LIFO de um switch store-and-forward é menor do que a latência FIFO de um switch cut-through; O que este resultado significa? Que o interruptor de store-and-forward é realmente mais rápido do que o switch cut-through? Claro que não. A razão é simplesmente porque nós usamos LIFO para medir o interruptor store-and-forward e usamos FIFO para medir o switch cut-through; e LIFO latência = FIFO latência – (tamanho do pacote em velocidade bits / Link). Para comparar adequadamente esses resultados, nós precisamos usar a latência FIFO para comparar a latência do store-and-forward e cut-through switches.

FIFO latências de um switch Store-and-Forward

A fim de comparar maçã com maçã, nós também medimos a latência FIFO desse switch store-and-forward para comparar os resultados de diferentes métodos de medição. A Figura 8 ilustra os resultados reais de medição de FIFO latência.

Como fizemos no teste anterior, nós também medimos o LILO para mostrar que FIFO e LILO são idênticos nesta configuração também.

Figura 8. LILO um latências FIFO de um switch Store-and-Forward

Captura de Tela 2014-05-21 às 20.44.30

Os resultados acima mostram claramente a latência FIFO de um interruptor de armazenamento e que é muito mais elevada do que a latência FIFO, significando que o switch precisa de mais tempo para armazenar todo o pacote – especialmente para  grandes pacotes.

Qual é o mais rápido – cut-through ou Store-and-Forward?

A comparação dos resultados de latência FIFO de ambos através de métodos e de armazenamento (checagem), mostrada na Figura 9, revela claramente o resultado. E podemos notar no caso do cut-through, onde ele só encaminha o pacote e não armazena, tem um desempenho muito mais rápido que o switch em modo store-and-fowarding.

Figura 9. FIFO comparação de latência entre a comutação cut-through e store-and-forwarding

Captura de Tela 2014-05-21 às 20.48.27

Outros fatores a considerar

Todas as medições anteriores foram feitas à taxa de transferência totalmente entrelaçada com todos as portas ligadas às ferramentas de teste. Este é um teste de stress sobre o switch e esta deve ser a forma padrão para medir a latência, ou seja, necessidade de latência para medida a taxa de transferência máxima, sem congestionamento. Os resultados de latência irá ser menor se:

  • ● Número de portas for menor;
  • ● Padrão de tráfego alterado – mudança de malha de rede;
  • ● Taxa de Tráfego mudado – mudança de trafego para menor.

O diagrama abaixo ilustra os diferentes padrões de tráfego:

Captura de Tela 2014-05-21 às 20.53.35

Dependendo da arquitetura do switch, a diferença de latência entre a configuração mais complicada e configuração mais simples pode ser enorme (300-500% ou até mais!), devido à arquitetura de encaminhamento de pacotes

Equipamento de testes não restringem ou determinam quais configurações devem ser usadas. Em vez disso, ele oferece uma grande flexibilidade no número de portas, padrão de tráfego e configuração de taxa de tráfego – é importante lembrar que quanto menos portas, menos carga de tráfego e menos complicados forem os padrões de tráfego, melhor (e menor) será a latência que você obterá.

Latência intrínseca em ferramentas de medição e Latência física (cabo)

Agora, considere o que acontece com a latência introduzida pelos transceptores, cabos entre os equipamentos de medição e interruptores, e do próprio equipamento de medição. Normalmente, dependendo do equipamento de teste, da sua versão do software e do comprimento do cabo etc, há um ~ 110 – para ~ 130 nanossegundos de latência intrínseca com um cabo de fibra de 2 metros e SFP , que devem ser subtraídos dos resultados iniciais – isso se o objetivo é obter o resultado “absoluto” de latência.

É compreensível que a latência intrínseca também pode ser mantida nos resultados de testes, uma vez que este é o que a maioria dos usuários iria ver – porque todos interruptores 10G precisam usar transceptores e cabos para se conectar à rede. Neste caso, a melhor prática para comparar a latência de múltiplos switches é mover exatamente os mesmos cabos e transceptores de um switch para outro, para que todos os resultados incluam a mesma latência intrínseca, mas vai ser um pouco maior do que a latência das especificações do projeto.

Escolher as ferramentas para medição

As próprias ferramentas de medição podem ter erros ou leituras imprecisas, por isso é importante escolher direito as ferramentas e suas versões de software de medição. Por exemplo, devido a um erro de software, uma ferramenta de medição de teste pode dar até~ 180ns de latência mais baixa do que outra ferramenta durante os testes de laboratório.

Se possível, o ideal é obter os resultados a partir de duas ferramentas de medição diferentes, ou pelo menos, a partir de duas versões de software diferentes, se esta é a sua primeira medição de latência; em seguida, se os dois resultados são bastante diferentes, é provável que há algo de errado com uma das ferramentas, e precisa de mais investigação com o fornecedor da ferramenta de teste.

No próximo artigo encerro com a terceira parte sobre o Time Stamp.

Até a próxima!