Com o aumento exponencial do tráfego de rede e a demanda por maior velocidade e desempenho, surgem desafios significativos para os desenvolvedores e engenheiros de redes. Duas soluções que têm ganhado destaque nesse contexto são o XDP (eXpress Data Path) e o DPDK (Data Plane Development Kit).
Ambas oferecem abordagens inovadoras para acelerar o processamento de pacotes de rede, mas cada uma possui características distintas e pode ser mais adequada a determinados cenários. Neste artigo, exploraremos as diferenças entre XDP e DPDK, analisando seus recursos, benefícios e limitações. Assim, é possível entender como enfrentar o desafio da velocidade no tráfego e impulsionar o desempenho das redes modernas.
A evolução das redes
Se você tiver de comprar um smartphone encontrará nas lojas, com certeza, muitas opções de modelos com tecnologia 4G ou 5G. Não vai mais encontrar nenhum modelo com as tecnologias anteriores porque, embora 2G e 3G ainda estejam em operação (em dispositivos de internet das coisas, por exemplo), os consumidores de celulares querem e precisam dos serviços de alta velocidade disponíveis com as novas gerações. São serviços de streaming, de transferência de arquivos e milhares de outras aplicações que exigem alta velocidade. Para se ter uma ideia da evolução dessas velocidades: um celular da geração 2G, lançada em 1993, levaria 14 horas para baixar um filme padrão, de 6GB. Enquanto um celular da geração 5G, que começou a operar no ano de 2018, baixa o mesmo filme em um minuto e meio.
Esses dois extremos estão separados não só pelo tempo mas, também, por uma enorme evolução da tecnologia de rede. Os desafios dos provedores de serviços de rede para dar conta desse avanço envolveram inovar, evoluir e reinventar. E tudo isso numa sequência de novas soluções que tivessem total (ou quase total) compatibilidade com as tecnologias já em uso. Desse modo, um telefone da geração 4G, por exemplo, consegue usar redes 3G. E um desses desafios, particularmente no caso das redes 5G, era processar pacotes em velocidades na casa dos 10 Gbps ou mais. Sem isso, não teríamos os serviços dos quais dispomos hoje.
Velocidade evolui com aperfeiçoamentos em hardware e software
A resposta dos fabricantes de microeletrônica para esse desafio foi desenvolver processadores e seus periféricos (como as interfaces de rede) cada vez mais rápidos. A resposta das organizações que desenvolvem sistemas operacionais foi criar versões que aproveitassem ao máximo os novos recursos trazidos. Para o pessoal de rede, ficou o desafio de combinar todas as novidades disponíveis nesses dois universos – o hardware e o software – no desenvolvimento das soluções que alcançaram as espantosas velocidade e volume de tráfego atuais.
Duas das soluções mais relevantes são o XDP vs DPDK. Para entender o funcionamento dessa sopa de letrinhas, fica mais fácil se você pensar em um processador como se ele fosse um shopping center. Um local onde você encontrará todos os tipos de lojas de comércio e de serviços. Assim como pode pensar no sistema operacional como se fosse a administração do shopping: é ela quem decide horários de funcionamento, quem ocupa as lojas, por quanto tempo, quem faz a limpeza e assim por diante.
Numa comparação simplificada, o desafio de processar pacotes com extrema rapidez seria como criar um sistema de delivery do shopping para os bairros da região. E o jeito mais rápido de fazer isso, todos sabemos, é com um “drive thru”.
Atalhos para ganhar tempo dentro dos sistemas
Foi exatamente isso que os especialistas de computação e de rede conseguiram ao criar a plataforma XDP (de Express Data Path, em inglês). O XDP é um caminho de alto desempenho para os dados, e vem sendo usado em data centers para enviar e receber pacotes de rede em elevadas taxas de velocidade. Mas, simultaneamente, ignorando a maior parte dos recursos de rede do sistema operacional para gastar menos tempo. Fazendo exatamente um caminho direto para os dados (o tal do express data path), operando como um drive thru mesmo. Imagine se o entregador tivesse de estacionar o seu veículo e depois entrar no shopping para receber o pacote para a operação de delivery. Com o drive thru ele não sai do veículo e pode receber o pacote pela janela, apenas estendendo o braço.
Essa é a mágica do XDP, que pode ser usado para se conseguir alto desempenho no processamento de pacotes de dados. Isso ocorre principalmente por economizar no uso do núcleo (kernel) do sistema operacional – não perde tempo entrando no shopping. E para ganhar ainda mais tempo, essa estratégia coloca o controle da interface de rede (NIC) num programa do tipo eBPF – uma espécie de máquina virtual rodando no kernel. Isso é fundamental para acelerar o processo quando se está trabalhando em velocidades de rede de 10 Gbps ou mais elevadas.
XDP vs DPDK: XDP é uma solução excelente, mas não é a única
Felizmente, o XDP não é a única solução para o processamento de pacotes nas redes de alto desempenho, embora seja o estado da arte nesse assunto. Outra solução igualmente importante para isso é o DPDK – ou Data Plane Development Kit. Na verdade, o DPDK é uma coleção de bibliotecas – entenda biblioteca como uma caixa de ferramentas especial destinada a uma linguagem de programação (existem, por exemplo, biblioteca de geometria, bibliotecas de estatística e de outras funcionalidades). O que elas fazem é justamente acelerar o processamento dos pacotes em processadores x86, POWER e ARM.
O DPDK nasceu na Intel em 2010, foi colocado em código aberto, hospedado pela Linux Foundation e desde então vem sendo aperfeiçoado pela comunidade. Já o XDP nasceu em 2016, criado por um engenheiro da VMware e dois do Facebook, sendo atualmente apoiado por grandes empresas de computação. Mas entre DPDK vs XDP, qual dos dois é melhor?
XDP vs DPDK: Qual escolher?
Há muitos estudos sobre o assunto, mas um dos mais recentes foi feito por cinco pesquisadores da Universidade Federal de Pernambuco. Eles publicaram um trabalho acadêmico chamado “Lições de uma avaliação experimental do XDP e DPDK em um ambiente de computação em nuvem”. Assim, chegaram à conclusão de que não existe um melhor do que o outro. Cada um será melhor conforme o “ambiente operacional de um servidor. Para tomar uma decisão informada, deve-se considerar fatores importantes, como tamanhos de pacotes dominantes e VMs competindo por CPU, carga de E/S e recursos de rede. Para resumir, não existe uma configuração única que se adapte bem a todos os servidores”. O trabalho recomenda que os administradores primeiro identifiquem o tipo de ambiente em que um servidor vai operar, para depois decidir qual das abordagens oferecerá melhores resultados.
Elas são extremamente úteis para que os provedores de serviços de rede protejam seus clientes dos ataques de DDoS (ataques distribuídos de negação de serviço). O ataques DDoS são ataques destrutivos, nos quais os atacantes sobrecarregam aplicações de Internet com excesso de solicitações, até o ponto em que o servidor não consegue mais responder. Antes que isso aconteça, os algoritmos de inspeção de tráfego detectam o ataque e o DPDK ou o XDP são usados para processar e desviar, os pacotes enviados pelas solicitações do atacante, em velocidade superior à do ataque.