Simple Science

Ciência de ponta explicada de forma simples

# Informática# Sistemas operativos# Arquitetura de redes e da Internet

Unikernels: Uma Nova Abordagem para Ferramentas de Medição da Internet

Unikernels oferecem soluções eficientes para medir a Internet, precisando de menos recursos e com uma instalação mais rápida.

― 9 min ler


Eficiência dos UnikernelsEficiência dos Unikernelsem Mediçãorecursos para medições de rede.Unikernels melhoram a gestão de
Índice

Nos últimos anos, ferramentas para medir a Internet se tornaram comuns entre pesquisadores. Essas ferramentas ajudam a coletar dados de como a Internet tá funcionando. A maioria dessas ferramentas é configurada pelos pesquisadores e geralmente vem com funções já definidas. Normalmente, as pessoas que possuem essas ferramentas fazem as medições e muitas vezes compartilham os dados com a comunidade de pesquisa. Essas plataformas geralmente dependem de hardware específico colocado em locais conhecidos ou são operadas por muitos voluntários.

Ao mesmo tempo, alguns sistemas de medição foram implementados usando um modelo semelhante ao SETI@home. Esse tipo de sistema poderia permitir mais fontes de medições, mas também traz desafios. As ferramentas precisam funcionar com diferentes tipos de hardware, sistemas operacionais e configurações locais, o que pode complicar as coisas, e os dados coletados podem ser irregulares. Além disso, vários grupos criaram plataformas compartilhadas onde pesquisadores podem rodar seus próprios experimentos de medição de rede.

Todos esses métodos costumam exigir hardware ou ferramentas específicas que foram adaptadas para funcionar com os sistemas operacionais que estão rodando. Alguns sistemas novos agora usam Kubernetes e máquinas virtuais para implantação. Mas, as soluções atuais não são fáceis de implementar e não conseguem responder rapidamente a eventos como problemas de segurança ou de rede.

Unikernels

Nos últimos vinte anos, houve avanços nos sistemas operacionais. Os serviços de nuvem pública costumavam depender muito de máquinas virtuais, que são unidades que podem rodar aplicativos, mas são pesadas em recursos porque vêm com um sistema operacional completo. Isso significa que ocupam muito espaço e usam muita memória.

Para resolver esses problemas, tecnologias como Docker e LXC surgiram, permitindo que aplicativos rodem em containers-mais leves e mais eficientes em termos de recursos do que máquinas virtuais, já que compartilham o kernel do sistema operacional host. No entanto, containers podem ter problemas de segurança porque podem ser mais vulneráveis do que máquinas virtuais.

Isso levou a uma nova solução conhecida como unikernels. Unikernels são máquinas virtuais muito leves que são especialmente construídas para certos aplicativos. Elas não precisam de um sistema operacional completo, o que permite um desempenho melhor e reduz riscos de segurança. Ao incluir apenas as partes do sistema operacional que são essenciais, unikernels representam uma escolha promissora em relação a máquinas virtuais e containers tradicionais.

Desafios dos Unikernels

O principal problema com unikernels é a necessidade de mudar manualmente aplicativos existentes para se encaixar nesse novo formato, o que pode ser complicado. Tarefas como extrair componentes necessários, garantir compatibilidade com interfaces de programação de aplicativos (APIs) e otimizar o desempenho podem ser difíceis. Felizmente, alguns frameworks como o Unikraft foram criados para simplificar esse processo. Esses frameworks têm o objetivo de ajudar desenvolvedores a criar unikernels que são pequenos, inicializam rápido e usam memória mínima, facilitando o desenvolvimento e a implantação.

Este documento argumenta que unikernels podem servir como uma base para ferramentas de medição mais flexíveis e eficientes. Ele introduz um exemplo específico de um sistema baseado em unikernel que pode descobrir certas estruturas da Internet e fornecer informações úteis para fornecedores de hardware.

Contexto

Aqui, explicamos os conceitos básicos necessários para entender o resto do documento. Vamos falar sobre unikernels, o framework Unikraft para converter aplicativos em unikernels e deduplicação de memória-uma técnica que ajuda a reduzir o uso de memória.

Unikernels são uma abordagem moderna onde um aplicativo e o kernel do sistema operacional trabalham juntos de perto. Em termos simples, o software é compilado para incluir apenas o que é necessário, como chamadas de sistema e drivers requeridos, formando uma única imagem executável. Esse design permite que unikernels reduzam o potencial de problemas de segurança, já que não incluem código extra que não é necessário para o funcionamento do aplicativo.

Tipos de Unikernels

Existem principalmente dois tipos de unikernels:

  1. Unikernels compatíveis com POSIX: Esses tipos podem rodar tanto aplicativos antigos quanto novos usando uma técnica chamada cross-compiling. Eles costumam ter uma base de código maior porque requerem mais recursos. No entanto, oferecem um caminho relativamente fácil para mover aplicativos tradicionais para o espaço unikernel através de recompilação. O sistema Unikraft é um exemplo disso.

  2. Unikernels baseados em linguagem: Esses unikernels são construídos como sistemas operacionais simples com uma API personalizada, focando na criação de novos componentes. O lado negativo é que normalmente requerem reescrever o código existente para se encaixar na nova API. Um exemplo disso é o MirageOS, que é projetado do zero usando a linguagem de programação OCaml.

O Unikraft se destaca porque combina elementos de sistemas operacionais tradicionais e princípios modernos. Ele utiliza um design modular, permitindo componentes separados que funcionam através de limites de API claros, garantindo assim um desempenho eficiente.

Framework Unikraft

O Unikraft tem duas características principais:

  1. Micro-bibliotecas: Essas são pequenos componentes de software que implementam as principais APIs do Unikraft. Dentro de um conjunto de bibliotecas, cada biblioteca segue os mesmos padrões, tornando-as intercambiáveis. Isso permite que os desenvolvedores integrem funções de vários projetos de bibliotecas facilmente.

  2. Sistema de construção: O Unikraft inclui um menu de configuração amigável que permite aos usuários escolher quais micro-bibliotecas incluir em seu aplicativo durante o processo de construção. Os usuários podem definir as plataformas e arquiteturas de CPU que desejam suportar, juntamente com micro-bibliotecas específicas que podem querer personalizar.

Para portar um aplicativo existente para o Unikraft, os desenvolvedores precisam fornecer alguns arquivos essenciais, incluindo arquivos Makefile específicos para indicar onde o repositório do Unikraft está localizado e quaisquer caminhos para arquivos fonte. Em muitos casos, as mudanças no código do aplicativo são mínimas, envolvendo principalmente a criação de um Makefile.uk para compilar o código fonte corretamente.

Deduplicação de Memória

Usar várias máquinas virtuais ou unikernels pode levar a um alto uso de memória devido à sua separação. Para gerenciar isso, provedores de nuvem podem usar scanners de deduplicação de memória que procuram páginas de memória idênticas e as combinam em uma só. Por exemplo, o recurso Kernel Samepage Merging (KSM) no Kernel Linux faz isso. Outros scanners como UKSM podem ser mais eficientes, mas precisam de kernels personalizados.

Portando um Aplicativo para Unikernel

O processo de converter uma ferramenta de medição de rede em um unikernel usando o Unikraft tem várias etapas. A primeira envolve definir como o aplicativo funcionará dentro da estrutura unikernel. Depois disso, mudanças precisam ser feitas para garantir que ele se ajuste ao modelo de processo único do Unikraft. Uma das principais mudanças é remover o suporte a múltiplos processos, já que o Unikraft suporta apenas aplicativos de processo único.

Durante o processo de portabilidade, várias bibliotecas podem precisar de atualizações para garantir que o aplicativo funcione corretamente. Isso envolve ajustar as comunicações dentro do aplicativo para que ele use sockets compatíveis com o framework do Unikraft. Uma vez feitas as mudanças, o aplicativo pode ser compilado.

Avaliação de Desempenho

Na avaliação de desempenho, analisamos o quão bem o aplicativo roda em comparação com configurações tradicionais como máquinas virtuais e containers. Realizamos vários testes para entender o uso de memória, uso de CPU, tempo de execução e a eficácia geral de cada método.

Uso de Memória

Nos nossos testes, o unikernel foi muito menor do que imagens Docker e até menor do que imagens de máquinas virtuais. O unikernel consumiu significativamente menos memória do que os outros dois setups, o que era esperado já que é feito sob medida para tarefas específicas e elimina componentes desnecessários.

Tempo de Implantação e Execução

Quando consideramos o tempo de execução, o unikernel teve um desempenho notavelmente melhor. O tempo que levou para implantar e executar foi consistentemente menor em comparação com Docker e máquinas virtuais. O unikernel começa de um pequeno arquivo binário, permitindo uma execução rápida porque há menos componentes para inicializar.

Consumo de CPU

O uso de CPU com o unikernel também foi mais eficiente do que tanto o Docker quanto as máquinas virtuais. O design leve do unikernel permitiu fazer mais com menos recursos, permitindo que várias instâncias rodassem simultaneamente sem perda de desempenho. Em contraste, o Docker foi mais pesado em recursos, levando a um uso de CPU menos eficiente.

Implantação Flexível

Um dos principais objetivos deste trabalho é mostrar como unikernels podem ser implantados rapidamente para medições de rede em qualquer lugar da Internet. Para isso, configuramos um cenário onde unikernels são implantados em servidores remotos.

Para testar isso, usamos servidores em nuvem localizados em diferentes partes do mundo, como Cingapura e Canadá. Um script controlador foi criado para gerenciar a implantação de diferentes tipos de instâncias nesses nós remotos. Esse script foi projetado para lidar com vários eventos de implantação, permitindo respostas rápidas a solicitações.

Nos nossos testes, descobrimos que o unikernel foi implantado mais rapidamente do que Docker e máquinas virtuais. Ele também conseguiu gerenciar mais implantações bem-sucedidas dentro de um tempo limitado, mostrando sua capacidade de escalar melhor sob pressão.

Conclusão

Este trabalho destacou como unikernels podem melhorar a eficiência e flexibilidade dos sistemas de medição da Internet. Usando unikernels, os pesquisadores podem implantar ferramentas para medições de rede que requerem menos recursos e conseguem responder rapidamente a mudanças. A capacidade de rodar várias instâncias com menor uso de memória e CPU demonstra a força dos unikernels em comparação com abordagens tradicionais.

O objetivo geral de usar unikernels é fornecer ferramentas que possam se adaptar facilmente a diversas situações, tornando a pesquisa na Internet mais eficaz. As etapas delineadas para portar aplicativos para unikernels podem servir como uma estrutura para futuros desenvolvimentos nessa área.

Avanços na tecnologia de unikernel poderiam levar a uma aceitação e uso mais amplos desses sistemas nas infraestruturas de rede daqui pra frente.

Fonte original

Título: uTNT: Unikernels for Efficient and Flexible Internet Probing

Resumo: The last twenty years have seen the development and popularity of network measurement infrastructures. Internet measurement platforms have become common and have demonstrated their relevance in Internet understanding and security observation. However, despite their popularity, those platforms lack of flexibility and reactivity, as they are usually used for longitudinal measurements. As a consequence, they may miss detecting events that are security or Internet-related. During the same period, operating systems have evolved to virtual machines (VMs) as self-contained units for running applications, with the recent rise of unikernels, ultra-lightweight VMs tailored for specific applications, eliminating the need for a host OS. In this paper, we advocate that measurement infrastructures could take advantage of unikernels to become more flexible and efficient. We propose uTNT, a proof-of-concept unikernel-based implementation of TNT, a traceroute extension able to reveal MPLS tunnels. This paper documents the full toolchain for porting TNT into a unikernel and evaluates uTNT performance with respect to more traditional approaches. The paper also discusses a use case in which uTNT could find a suitable usage. uTNT source code is publicly available on Gitlab.

Autores: Maxime Letemple, Gaulthier Gain, Sami Ben Mariem, Laurent Mathy, Benoit Donnet

Última atualização: 2024-05-07 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2405.04036

Fonte PDF: https://arxiv.org/pdf/2405.04036

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Artigos semelhantes