FreeBSD: Fluxo Netflix a quase 400 GBit/s por servidor

FreeBSD: Fluxo Netflix a quase 400 GBit/s por servidor

setembro 20, 2021 0 Por Tobias

Por seu serviço de streaming, a Netflix otimizou extremamente o hardware AMD e o FreeBSD que utiliza ao longo dos anos. Os planos para mais já estão em andamento.

Para o provedor de streaming de vídeo Netflix, é tecnicamente vantajoso fornecer o máximo de dados de vídeo o mais rápido possível, sem ter que investir muito em hardware. O desenvolvedor Drew Gallatin otimiza, portanto, entre outras coisas, o sistema FreeBSD utilizado de tal forma que a distribuição dos dados de vídeo seja a mais próxima possível do limite técnico do hardware de rede, como ele descreve em uma apresentação na conferência EuroBSD (PDF). Um único servidor agora atinge taxas de dados de quase 400 GBit/s.

O problema técnico básico aqui é que, devido às características do hardware e também devido a certos processos de software, o limite tecnicamente possível do hardware da rede muitas vezes não pode ser alcançado. Graças a várias otimizações, a Netflix conseguiu, entretanto, aumentar as taxas de dados de cerca de 200 GBit/s no ano passado para 400 GBit/s por servidor.

Problemas com hardware e otimizações como solução

Os servidores são baseados nas CPUs AMD Epyc-7502P (32 núcleos), que são suportadas por 256 GByte DDR4-3200 RAM. Duas Mellanox ConnectX-6 Dx, que oferecem quatro conexões 100GbE, são usadas para a conexão de rede. Os resultados ideais são inicialmente impedidos pela largura de banda de memória de cerca de 240 GBit/s. A arquitetura NUMA também limita a largura de banda de memória.

A arquitetura NUMA das CPUs Epyc também limita o fluxo de dados. A grande quantidade de dados simplesmente leva a um processamento atrasado pela CPU, já que os acessos à memória competem entre si. No melhor dos casos, os dados não passaram pelas CPUs NUMA, de acordo com a Gallatin.

A Netflix, portanto, testou o uso de apenas um único endereço IP por host e depende da agregação de links. A idéia por trás disso era sempre realizar cálculos com certos dados sobre um dos nós NUMA a fim de evitar transferências. No entanto, a mudança de um para quatro nós provavelmente trouxe apenas melhorias mínimas.

Kernel TLS como solução

Para alcançar velocidades ainda melhores, a equipe teve a idéia de retirar a CPU do transporte de dados o máximo possível. Isto é possível graças ao hardware de rede agora utilizado e ao uso de um TLS descarregado com a ajuda da implementação do TLS no kernel do FreeBSD (kTLS).

Gallatin já havia descrito detalhes disso em uma palestra dois anos atrás (PDF). A sessão real de TLS ainda é estabelecida no espaço do usuário, mas as chaves utilizadas então migram com a ajuda do kernel para o hardware da rede, onde a criptografia é realizada. Um desvio através da CPU não é mais necessário.

Usando o firmware mais recente das placas de rede e otimizações TLS, a Netflix atinge cerca de 380 GBit/s de transmissão de dados com cerca de 400.000 sessões ativas por servidor. Com as CPUs de servidor ARM da Ampere, que também foram testadas, a equipe ainda atinge cerca de 320 GBit/s, mas isto provavelmente se deve à conexão PCIe. A equipe ainda não foi capaz de testar o descarregamento de TLS com hardware Intel. Além disso, a equipe já possui protótipos de hardware com os quais poderiam ser possíveis conexões de rede de até 800 GBit/s, mas a equipe ainda não testou isto.

Share