Foi publicado o stack de rede F-Stack 2.0, que opera no espaço do usuário

Foi lançado o projeto F-Stack 2.0, que desenvolve uma edição da pilha de rede FreeBSD, adaptada para operar de forma isolada no espaço do usuário em forma de biblioteca. O projeto foi criado pela maior empresa de telecomunicações da China, Tencent, e é utilizado em seus produtos e serviços. O código é escrito em C e é distribuído sob a licença BSD. O funcionamento é suportado tanto no Linux quanto no FreeBSD. O projeto também oferece suporte a versões traduzidas do Nginx 1.28 e do banco de dados Redis 6.2.6, que demonstram desempenho superior em comparação com as compilações padrão que operam sobre a pilha de rede do sistema.

O F-Stack permite que aplicações utilizem sua própria pilha de rede local, independente da pilha de rede do sistema operacional, funcionando no espaço do usuário e interagindo diretamente com o hardware de rede. O F-Stack é posicionado como uma solução que aumenta o desempenho dos processadores de solicitações de rede em situações onde a pilha TCP/IP padrão do núcleo Linux se torna um gargalo e limita a escalabilidade. Teoricamente, o F-Stack consegue atingir o teto de desempenho de rede possível para a placa de rede utilizada e, em algumas situações, permite um aumento exponencial no número de pequenas solicitações de rede processadas.

O aumento de desempenho é alcançado através da eliminação de operações como a cópia de pacotes de rede, agendamento de threads, processamento de interrupções e chamadas de sistema. Para interagir com a placa de rede, contornando as interfaces do núcleo do sistema operacional, é utilizado o framework DPDK (Data Plane Development Kit), que desenvolve um conjunto de bibliotecas para trabalho de baixo nível com adaptadores de rede. O DPDK possibilita a redução de sobrecarga e permite que o número de ciclos da CPU para a recepção ou envio de pacotes de rede seja minimizado.

A funcionalidade da pilha TCP/IP está de acordo com a pilha de rede do FreeBSD 15 e foi isolada deste sistema operacional em uma biblioteca independente. Para desenvolvimento de aplicativos, pode-se utilizar a API padrão POSIX (socket, epoll, kqueue) ou uma interface própria baseada em microthreads, simplificando a criação de aplicativos de rede e permitindo evitar a lógica complexa de processamento assíncrono de requisições. É possível usar com aplicativos não modificados através do carregamento via LD_PRELOAD.

As mudanças mais notáveis na nova versão:

  • Os componentes da pilha de rede foram atualizados para o estado do FreeBSD 15 (anteriormente usava-se o FreeBSD 13).
  • Foi implementado um modo de operação multithread (thread_mode=1) em um único processo, complementando o modo multiprocesso anteriormente disponível.
  • Adicionado um modo de operação leve (primary_slim), onde o processo principal executa apenas tarefas básicas de inicialização e coordenação, enquanto a recepção de pacotes e o processamento de filas de recepção/transmissão (rx/tx) são realizados apenas pelos processos filhos.
  • Adicionada a suporte ao mecanismo de aceleração de hardware.
    TSO (TCP Segmentation Offload) para descarregar para a placa de rede operações de agregação de pacotes, com a possibilidade de revertê-lo para uma implementação de software. Melhorado o suporte a TSO (TCP Segmentation Offload, descarregamento para a placa de rede para processamento de segmentos de pacotes) para IPv6.
  • Adicionada a possibilidade de alterar o tamanho do MTU (Maximum Transmission Unit) e implementado suporte a quadros jumbo.
  • Expandidas as capacidades de gerenciamento da aceleração de hardware no cálculo de somas de verificação de pacotes enviados.
  • Adicionada a função ff_zc_recv() para receber dados sem buffer intermediário (zero-copy). A função análoga ff_zc_send() para envio foi reformulada. Otimizada e ampliada. suporte a IPv6 A função ff_rss_check().
  • Adicionada a opção FF_KERNEL_COEXIST para operação conjunta com a pilha de rede do núcleo.
  • Possibilidade de armazenar informações sobre tráfego em dumps pcap com precisão de nanossegundos.
  • Novos parâmetros idle_loop_interval, extra_eal_args, drain_ring_size, reload_heartbeat_timeout_ms e reload_udp_idle_ms foram adicionados ao config.ini.
  • Em uma versão especializada do nginx, foi implementado o suporte à recarga de configuração e atualização do arquivo binário sem interrupção de conexões (graceful_reload=1).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster