Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Calisto: Sistema para processamento rápido de p...

Lucas Bleme
August 23, 2021

Calisto: Sistema para processamento rápido de pacotes com baixa latência em centro de dados

Slides from my presentation from the XXXIX Brazilian Symposium on Computer Networks and Distributed Systems, presented at the 25th Workshop on Management and Operation of Networks and Service in August 2021.

Full paper: https://sol.sbc.org.br/index.php/wgrs/article/view/17183/17021

Lucas Bleme

August 23, 2021
Tweet

More Decks by Lucas Bleme

Other Decks in Research

Transcript

  1. Calisto: Sistema para processamento rápido de pacotes com baixa latência

    em centro de dados Lucas Bleme Gustavo Pantuza Marcos Vieira Luiz Vieira
  2. Sistemas operacionais ainda adicionam sobrecarga significante em operações de I/O

    e processamento de pacotes Redes de alta vazão e baixa latência 2010 2020 Vazão: 1 Gbits/s Latência: ~100 µs Vazão: 100 Gbits/s Latência: ~5 µs
  3. - Espera ocupada/ativa (polling) - Aplicações interagem com as filas

    de pacotes diretamente Arquitetura Tradicional vs Kernel Bypass Aplicação Núcleos Kernel Filas da interface de rede NIC Aplicação Kernel Filas da interface de rede NIC Núcleos Abordagem tradicional Kernel Bypass
  4. Objetivo - Realocar núcleos dinamicamente entre aplicações - Processar pacotes

    considerando sua afinidade de fluxo - Reduzir sincronização entre diferentes CPUs Abordagens anteriores não proveem estas características em conjunto (Shenango, ZygOS, RSS++)
  5. Contribuição - Algoritmo eficiente para processamento rápido de pacotes promovendo

    afinidade de fluxo entre núcleos - Nível de indireção entre filas de pacotes da NIC e aplicações aumentando a flexibilidade de extensão de políticas de balanceamento
  6. Arquitetura Shenango IOKernel Kernel Core 2 Core 3 Core n

    Filas da interface de rede NIC Filas de pacotes Core 1 Núcleo ativo
  7. Troca de Contexto IOKernel Hash RSS Núcleo CPU 4 5

    0 1 2 3 6 7 4 % 4 = 0 5 % 4 = 1 6 % 4 = 2 7 % 4 = 3 4 threads ativas
  8. Troca de Contexto IOKernel Hash RSS Núcleo CPU 4 5

    0 1 2 3 6 7 4 % 5 = 4 5 % 5 = 0 6 % 5 = 1 7 % 5 = 2 5 threads ativas 4
  9. Arquitetura Calisto Hash RSS Núcleo CPU 100 101 1 2

    3 4 5 6 Novo pacote hash 101 160 Tabela Hash contém o valor Receive Side Scaling (RSS) de cada pacote, calculado pela NIC
  10. Implementação - IOKernel modificado utiliza DPDK 18.11 - Estrutura de

    dados Tabela Hash, funções de pesquisa e inserção foram utilizadas a partir da struct rte_hash.h - ~150 linhas de código C, modificadas no IOKernel do sistema Shenango
  11. Implementação enquanto existeNovoPacote() faça var inteiro nucleoDestino lookup(tabela_hash, rss) se

    nucleoDestino = -1 então nucleoDestino++ insert(tabela_hash, rss, nucleoDestino) fimSe enviaParaThreadAtiva(pkg, nucleoDestino) fimEnquanto (chave), (valor)
  12. Avaliação e Experimentos Cliente Servidor Calisto Comutador - Ambiente CloudLab

    com máquinas Intel Xeon 2.0 GHz de 16 núcleos cada e NIC Mellanox ConnectX com 2 portas de 10 Gb - Aplicações produzindo tráfego sintético enviando milhares de pacotes TCP a cada segundo - Volume de pacotes enviados aumenta de mil em mil a cada 5 segundos
  13. Resultados Aumento de até 100% na latência durante o início

    do experimento, causado pelas operações de pesquisa (lookup) + inserção na tabela hash
  14. Resultados Aumento de até 100% na latência durante o início

    do experimento, causado pelas operações de pesquisa (lookup) + inserção na tabela hash
  15. Resultados Redução de 20ms para 18ms na latência, medido durante

    tráfego intenso contínuo após preenchimento da tabela hash, com afinidade de fluxo
  16. Trabalhos Futuros - Preenchimento da Tabela Hash a priori, buscando

    reduzir a quantidade de operações de inserção durante o processamento de pacotes de fluxos desconhecidos - Utilizar política do Shenango alternadamente com a política que promove afinidade de fluxos do Calisto - Substituir pthreads do IOKernel por lthreads (RTC e operações não bloqueantes) - Implementar NFVs produzindo experimentos com NICs de maior capacidade (100 Gbps pro exemplo)
  17. Conclusão - Sistema Calisto provê latência de cauda até 10%

    mais baixa durante o processamento rápido de pacotes quando comparado com Shenango em tráfego intenso, ferramenta considerada estado da arte - Políticas que promovem afinidade de fluxo são alternativas interessantes para processamento de pacotes em centro de dados, podendo ser incorporadas a trabalhos existentes na área de redes [email protected] https://github.com/andreybleme/calisto
  18. Calisto: Sistema para processamento rápido de pacotes com baixa latência

    em centro de dados Lucas Bleme Gustavo Pantuza Marcos Vieira Luiz Vieira