Nos últimos anos, a evolução tecnológica tem proporcionado um cenário de conectividade nunca antes visto, com redes de alta velocidade se tornando cada vez mais comuns. Nosso cotidiano no mundo digital tem se transformado rapidamente, com crescimento exponencial do tráfego de dados e surgimento de novas aplicações de rede. Logo, os desafios enfrentados pelos provedores de serviços têm se intensificado. Como você pode imaginar, esses desafios são ainda maiores quando se tratam de entregar um fluxo volumoso de informações de forma eficiente. Nesse contexto, o conceito de “kernel bypass” emergiu como uma solução indispensável para garantir a fluidez e a velocidade necessárias nas nossas redes modernas.
Assim, este artigo vai te apresentar uma análise do “kernel bypass”. Iremos demonstrar como essa abordagem prova que a velocidade das redes superou a dos processadores, impulsionando a conectividade para patamares jamais imaginados. Além disso, mostraremos as razões do DPDK ser uma das alternativas de Kernel Bypass mais utilizadas. Acompanhe e boa leitura!
Kernel Bypass: um breve contexto
Numa época em que a TV já está transmitindo em padrão 8K, como é o caso da estação japonesa NHK, tráfego de rede volumoso e em alta velocidade deixou de ser exceção. Para você, uma rede de alta velocidade pode representar inovação, entretenimento de qualidade e conforto. Contudo, para os provedores de serviços (incluindo os provedores de Internet), entregar esse tráfego é um desafio nem sempre fácil de vencer. Se você voltar há alguns anos, quando a tecnologia de rede estava engatinhando, os cabos eram de cobre, transmitindo sinais elétricos. Contudo, hoje sabemos que fibras ópticas compõem os cabos, transmitindo pulsos de laser na velocidade da luz.
Embora você possa pensar que a fibra óptica resolveu o problema, na verdade ela solucionou apenas um: o transporte dos sinais entre dispositivos. Com um detalhe: dispositivos estes separados por alguma distância. Ainda não era a solução para os problemas trazidos pela explosão das aplicações de rede, como é o caso dos streamings de vídeo. O núcleo do problema é que existem muitas pessoas, incluindo eu e você, solicitando certos streamings ao mesmo tempo. Não apenas os cabos de fibra óptica são solicitados, mas também as conexões sem fio. Dessa forma, entre o servidor que hospeda o vídeo e o dispositivo onde ele vai ser visualizado, existem muitos problemas de rede a serem resolvidos. Entre eles, está o roteamento dos pacotes.
Para simplificar, você pode entender os pacotes como todos os pequenos conjuntos de dados que, reunidos, formam as imagens na sua tela. Também, pode entender o roteamento como a lista de ruas que os carteiros recebem para entregar a correspondência do dia.
O kernel do Linux tem limitações para processar pacotes de dados
Para melhor compreensão do Kernel Bypass, é crucial entender que, nos computadores, a parte do sistema operacional responsável pelo tratamento de redes geralmente realiza o roteamento. Nesse processo, os dados ingressam pela interface de rede (ou placa de rede) e, em seguida, o sistema operacional os processa, indicando sua rota. Essa parte acontece dentro da unidade central de processamento dos computadores, a CPU.
Porém, com o passar do tempo, a experiência dos engenheiros de rede demonstrou que fazer roteamento utilizando o sistema operacional não era a melhor solução. Em geral, o sistema operacional utilizado era o Linux. Havia limitações impostas pelo kernel, o núcleo do Linux, e essas limitações tornavam impossível ganhar mais velocidade. A razão é que a arquitetura desses recursos do kernel foi criada no início dos anos 1980. Isso significa que foi antes mesmo da invenção do Linux, em 1991, quando as velocidades da rede Ethernet ainda estavam em 10 Mbps.
Como você pode imaginar, os números podem variar conforme as versões do sistema operacional. Entretanto, uma experiência feita por uma empresa de rede em 2015 com o Vanilla Linux, por exemplo, não roteava mais do que 1M pps (um milhão de pacotes por segundo). Para qualquer operador de rede isso é pouco, já que as interfaces de rede modernas, de 10 Gbps, podem processar cerca de 10M pps.
Para piorar, os fabricantes já dispõem de interfaces da classe “terabit ethernet”. Esta classe são os circuitos que entregam 400 gigabits por segundo e que estarão evoluindo, brevemente, para 800 gigabits por segundo. Em essência, o que está acontecendo é que a rede ficou mais rápida do que a CPU.
A velocidade das redes já ultrapassou a casa dos terabits
Ainda que tenham vários núcleos, as CPUs genéricas – aquelas instaladas nos nossos computadores – não dão conta da grandeza desses números. Além disso, também não suportam a voracidade dos serviços que consomem dados enviados pelas redes. A solução era desviar da CPU e do kernel, fazendo “Kernel Bypass”.
Várias estratégias de Kernel Bypass foram desenvolvidas para resolver o problema do roteamento. Porém, cada uma atendendo a características específicas dos sistemas em que operam. Em cada solução Kernel Bypass, a mudança fundamental ocorre quando o kernel deixa de processar a tarefa de protocolo. Nesse cenário, o processamento é transferido para o user space ou userland, que é o ambiente que abriga os programas e bibliotecas utilizados pelo sistema operacional.
Uma das alternativas de Bernel Bypass é fazer com que nosso sistema operacional dedique a interface de rede a um aplicativo, como acontece no caso do DPDK (Data Plane Development Kit). Assim, a interface passa a ser programada a partir do user space. Seja qual for a opção, o principal resultado é que os pacotes fluem da interface de rede para o nosso espaço de usuário. Assim, acontece interferência mínima do sistema operacional. Nesse caso, o sistema operacional se limita a gerenciar a entrada e saída de pacotes, sendo o espaço do usuário o responsável por implementar o restante das funções de rede.
Quando a velocidade da rede atinge a ordem de 10 Gbps ou é ainda mais elevada, trabalhar dessa maneira torna-se fundamental. Caso contrário, não se obtém alto desempenho no processamento de pacotes.
As vantagens do DPDK como solução de Kernel Bypass
Atualmente, o DPDK é uma das alternativas de Kernel Bypass mais utilizadas pelos operadores de rede. Primeiro, porque é uma solução em código aberto. Segundo, porque conta com a contribuição de pelo menos 160 profissionais de altíssimo nível. Para exemplificar, gente que trabalha para 27 diferentes empresas, entre as quais Red Hat, NVIDIA, ARM e Google.
O resultado dessas e outras alianças do projeto DPDK (dpdk.org) é que ele se tornou a solução mais popular para acelerar o processamento de pacotes nas três grandes arquiteturas de processadores (x86, ARM e POWER). Portanto, não é mais incomum encontrarmos negócios aproveitando os benefícios do DPDK. O projeto continua evoluindo, e testamos algumas de suas funções de processamento de pacotes em até centenas de milhões de pacotes por segundo.
A existência dessa e de outras soluções de Kernel Bypass resolvem, ao menos por enquanto, os desafios que os engenheiros de rede (e nós, usuários) precisam superar. No futuro, a computação quântica vai trazer outros desafios para o nosso cotidiano, por causa da assombrosa velocidade de processamento. Pode ser que os processadores quânticos sejam tão rápidos, que a velocidade de rede ainda demore algum tempo para alcançá-los. Porém, até lá, a liderança em velocidade é delas.
Para conhecer mais sobre o DPDK, não deixe de ler o nosso artigo sobre o assunto!
E aí, gostou do conteúdo? Então, não deixe de compartilhar com seus amigos e colegas de trabalho! Até a próxima!