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

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

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

    View full-size slide

  2. Agenda
    Problema Arquitetura Implementação Avaliação e
    experimentos
    Trabalhos Futuros Conclusão

    View full-size slide

  3. 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

    View full-size slide

  4. - 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

    View full-size slide

  5. 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++)

    View full-size slide

  6. 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

    View full-size slide

  7. Arquitetura Shenango
    IOKernel Kernel
    Core 2 Core 3 Core n
    Filas da interface de
    rede NIC
    Filas de pacotes
    Core 1
    Núcleo ativo

    View full-size slide

  8. 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

    View full-size slide

  9. 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

    View full-size slide

  10. 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

    View full-size slide

  11. 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

    View full-size slide

  12. 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)

    View full-size slide

  13. 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

    View full-size slide

  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

    View full-size slide

  15. 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

    View full-size slide

  16. 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

    View full-size slide

  17. 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)

    View full-size slide

  18. 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

    View full-size slide

  19. Calisto: Sistema para processamento rápido
    de pacotes com baixa latência em centro de
    dados
    Lucas Bleme Gustavo Pantuza Marcos Vieira Luiz Vieira

    View full-size slide