Relatório submetido para análise e aprovação à comissão examinadora do trabalho de conclusão do curso de Ciência da Computação. Conclusão de Curso (Graduação em Ciência da Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, São José, 2007.
PROBLEMATIZAÇÃO
- Formulação do Problema
- Solução Desenvolvida
- Objetivo Geral
- Objetivos Específicos
Este trabalho realizou um estudo sobre o desempenho da biblioteca libpcap, baseado em um projeto experimental, utilizando fatores e níveis baseados em caracterizações de sua utilização em um ambiente de testes de três estações rodando o sistema operacional Linux. O objetivo deste trabalho foi realizar uma análise experimental do desempenho da biblioteca de captura de pacotes libpcap, aplicando a metodologia de projeto experimental, e contribuir com outros projetos utilizando esta biblioteca.
METODOLOGIA
Quanto à metodologia de elaboração do experimento, foi utilizada a técnica de planejamento de experimentos - DOE (Design of Experiments) (MONTGOMERY, 2001; JAIN, 1991).
ESCOPO DO TRABALHO
ESTRUTURA DO TRABALHO
Esses avanços impulsionaram o crescimento das redes de computadores e garantiram o aumento da sua utilização devido à popularização dessas tecnologias. Este capítulo apresenta a definição e o princípio de funcionamento da libpcap (Seção 2.4), e na Seção 2.5 aspectos que afetam o desempenho da captura passiva de pacotes usando libpcap.
GERENCIAMENTO DE REDES
Análise de disponibilidade de rede: baseada em estatísticas do cliente sobre tempo médio entre falhas e tempo médio para reparo;
CAPTURA E ANÁLISE DE TRÁFEGO
O lado esquerdo da Figura 1 mostra o modelo de coleta de tráfego em uma rede compartilhada baseada em um repetidor, popularmente conhecido como hub. Exemplos e descrições de ferramentas de análise de tráfego que fazem uso de captura passiva de tráfego serão elaborados na seção 2.3.
EXEMPLOS DE APLICAÇÕES DE ANÁLISE DE TRÁFEGO
O princípio de toda a operação do Snort é identificar ataques através da análise de padrões de tráfego. Realizar o gerenciamento e monitoramento de uma rede completa e não apenas monitorando o centro da rede (core) é possível, conforme mostrado nesta seção, muitas vezes utilizando soluções de código aberto baseadas em gravação de tráfego passivo via libpcap.
FRAMEWORK DE CAPTURA (LIBPCAP)
Devido à sua facilidade de uso, portabilidade e suporte a diversas tecnologias, o libcap tornou-se um padrão de captura de dados e seu formato de armazenamento uma referência para ferramentas que capturam ou importam o tráfego capturado. Segundo Ethereal (2007), o início do arquivo contém o cabeçalho global, que é definido pela estrutura de dados da Figura 13.
FATORES QUE INFLUENCIAM O DESEMPENHO DA LIBPCAP
Arquitetura e características de hardware
Existem muitos fatores que afetam o desempenho da captura passiva de pacotes usando libpcap. Na próxima seção, com base no trabalho relacionado, serão detalhados alguns possíveis fatores e características de hardware e software que podem afetar o desempenho da captura de pacotes.
Otimizações de software (kernel e método de captura)
Este módulo difere da implementação padrão porque os pacotes são filtrados pelo próprio kernel. Muito tempo é gasto movendo pacotes do adaptador de rede para o espaço do usuário através do kernel.” (DERI, 2004, tradução).
FERRAMENTAS DE GERAÇÃO DE TRÁFEGO
Descrição da ferramenta netperf
O funcionamento do netperf é baseado em duas aplicações rodando como processos, uma com a função de enviar pacotes (netperf), e outra de receber o tráfego gerado (netserver). Stream UDP (User Datagram Protocol), que permite o envio de tráfego contínuo através do protocolo UDP. Como ferramenta de suporte e testes, o netperf também pode realizar seus testes de acordo com um intervalo de confiança definido pelo usuário, consumo de CPU durante os testes, execução de testes em paralelo através de processos simultâneos, histograma RR, tempo de experimento, largura de banda da quantidade utilizada no teste, entre outras informações.
Porém, com base nos dados do experimento baseado na geração de tráfego utilizando a ferramenta netperf, pretende-se chegar a uma conclusão quanto ao desempenho da libpcap.
PROJETO DE EXPERIMENTOS
Projeto fatorial
Em geral, projetos fatoriais são mais eficientes para esse tipo de experimento.” Um planejamento fatorial é um modelo usado para determinar o efeito de todos os fatores e seus níveis em um teste experimental. Com base no modelo de planejamento fatorial, segundo Jain (1991), podem ser citadas cinco abordagens: fatorial 2k; 2cr fatorial com replicação; experimento fatorial completo com dois fatores com e sem replicação, além de experimento fatorial completo com k fatores. Além disso, acima de dois níveis o número de combinações torna-se elevado, fazendo com que o custo da experimentação aumente.
Porém, como a aplicação neste trabalho é baseada em um planejamento fatorial 2k com replicações, maiores detalhes deste modelo serão apresentados a seguir.
Projeto fatorial 2k
O efeito de cada fator é calculado em função da SST (soma total dos quadrados) utilizando a Equação 2. Onde SSA, SSB, SSAB representam a soma dos quadrados do coeficiente de efeito de cada fator e tratamento. O planejamento fatorial 2kr é utilizado quando a análise do experimento exige que o erro experimental seja medido, e assim como parte do valor medido não apenas os efeitos de cada fator, mas também o efeito do erro experimental (JAIN, 2001).
Com base no modelo de planejamento fatorial 2kr apresentado nesta seção, foi definido o projeto geral para o experimento de análise de desempenho da libpcap proposto neste trabalho.
DESCRIÇÃO DO PROBLEMA
O experimento seguiu as etapas descritas na Seção 3.2 bem como a metodologia utilizada em cada fase do trabalho.
DESENVOLVIMENTO DO PROJETO
Montagem e configuração do ambiente de testes
Durante a instalação das interfaces de rede, houve um problema de incompatibilidade física, pois as placas adquiridas não possuíam as dimensões adequadas para os gabinetes dos equipamentos do laboratório. A situação ocorrida pode ser observada na Figura 29, que mostra a imagem da placa de rede obtida junto ao espelho, retirada do gabinete onde estão localizadas as placas. A solução foi cortar o espelho original da placa de rede para encaixá-la no gabinete, como pode ser visto na Figura 30.
Após a instalação das placas de rede no equipamento, é configurado o equipamento de interligação (switch).
Testes de geração de tráfego
Com base nesta observação, foi realizado um novo teste, que agora gera tráfego diretamente na camada 2. Para tanto, foi utilizado um módulo de teste do kernel Linux chamado pktgen. Como resultado da geração de tráfego com pktgen, foi alcançado um throughput de 796Mbps, que é aproximadamente 80% do valor nominal da interface adquirida, e que demonstra que grande parte do gargalo estava na pilha de protocolos. A utilização do pktgen foi apenas para confirmar a hipótese de problemas de desempenho na geração de tráfego TCP.
Com a fase de testes de geração de tráfego bem definida, iniciou-se a análise e desenvolvimento da ferramenta de captura de tráfego utilizando libpcap.
Aplicação de captura de tráfego
Após todos os testes descritos e muita pesquisa em listas de discussão, concluiu-se que esta seria a carga máxima de tráfego que seria possível gerar utilizando uma placa de rede de custo relativamente baixo. Com isso foi definido que seria gerado um fluxo contínuo de tráfego enquanto as rodadas do experimento eram administradas no computador responsável pela captação do tráfego. Os dados antes apresentados apenas na tela passaram a ser salvos em um arquivo de texto separado por tabulações para facilitar futuras entradas em softwares de planilhas.
Concluída a fase de implementação da ferramenta de captura de tráfego, iniciou-se a etapa de execução do experimento.
O experimento
Isto resultou em uma tabela de sinais mostrando todas as combinações possíveis para os fatores e níveis do experimento. Os primeiros testes foram sobre qual seria o tempo ideal de captura de tráfego para cada replicação. Limpe compilações anteriores, construa um novo kernel e crie arquivos .deb para instalação sudo make-kpkg clean.
Edite o arquivo /etc/lilo.conf e adicione uma nova opção de inicialização que direcione para o novo kernel.
Análise dos dados
Os demais dados foram coletados conforme descrito no início desta seção, e todos os dados foram compilados em uma única planilha para facilitar análises posteriores.
Resultados
Um resultado muito interessante pode ser observado em relação ao coeficiente resultante para representar cada fator na equação de predição. É claro que os dados reais realmente se aproximam da curva resultante da equação de previsão. Os resultados da análise de variância permitiram a definição dos coeficientes para a equação do modelo de predição.
Com base nesta análise, são determinados os coeficientes da equação de predição da taxa de perdas e os intervalos de confiança desses coeficientes, conforme apresentado na Tabela 14.
OBJETIVOS
O presente trabalho consistiu em avaliar o desempenho da biblioteca libpcap para captura de tráfego de redes de computadores, mas levando em consideração a busca por resultados consistentes e confiáveis alcançados através da utilização da metodologia de design de experimentos (DOE). O andamento deste trabalho foi acompanhado de uma grande dificuldade pela ausência de outros trabalhos, pois não houve trabalhos que utilizassem a mesma metodologia para análise na área de redes de computadores; muitos detalhes foram definidos durante sua implementação. Ao analisar as métricas de desempenho, pode-se concluir que a biblioteca libpcap funciona bem desde que haja cuidado com otimizações e configurações de rede.
Sérios problemas de segurança podem ser causados quando um projeto de rede é realizado e ferramentas como um IDS ou analisador de protocolo são aplicadas e não são tão eficazes quanto deveriam ser.
CONTRIBUIÇÕES
Durante a etapa de medição de desempenho da libpcap, muitas dificuldades foram encontradas, pois envolveu não apenas o desenvolvimento de uma aplicação que fizesse uso da libpcap para captura de tráfego, mas também a configuração de todo o ambiente de testes para que a execução fosse possível. de testes para todas as combinações de fatores, mas ao analisar os resultados pode-se confirmar que a implementação da métrica bem como a execução dos experimentos foram de fato realizadas de forma correta, uma vez que todos os modelos analisados apresentaram alto grau de significância. Os resultados deixaram bem claro quanto à necessidade da aplicação, principalmente para melhorar o controle de polling dos dispositivos, sendo o fator que mais impacta no desempenho da biblioteca analisada. É o que pode acontecer se o designer não tiver conhecimento dos fatores envolvidos no desempenho, principalmente da biblioteca que capta o tráfego utilizado pelas ferramentas.
A fase de documentação dos resultados e análise da experiência realizada representou certamente o ápice da motivação para este trabalho, pois assim foi realmente possível concluir que toda a metodologia utilizada foi escolhida corretamente, que os dados recolhidos foram relevantes e na medida em que todas as análises realizadas podem trazer uma contribuição científica.
PUBLICAÇÕES CIENTÍFICAS
TRABALHOS FUTUROS
Para entender o funcionamento das ferramentas de geração de tráfego e auxiliar na tomada de decisão sobre a ferramenta mais adequada para a tarefa, foi realizado um experimento de geração de tráfego, que fornece um exemplo do comando utilizado para cada ferramenta e sua saída conforme os parágrafos a seguir.
TESTE DO PATHLOAD
TESTE DO TCPPERF
TESTE DO TCPREPLAY
TESTE DO IPERF
TESTE DO NETPERF
Copyright (C) 2007 by Ramicés dos Santos Silva * * [email protected] * * * This program is free software; you may redistribute it and/or modify * * it under the terms of the GNU General Public License as published by the * * Free Software Foundation; either version 2 of the License or * * (at your option) any later version. Reiniciar o system e Copiar or arquivo de header do pf_ring for paste /usr/include/linux cp /usr/src/linux/include/linux/ring.h /usr/include/linux. Copiar as bibliotecas geradas para pasta do sistema cp libpfring.a libpfring.so.0.9.4 /usr/local/lib cp pfring.h /usr/local/include.
Variância α Replicações)
Soma dos quadrados totais)
SST Geral)
Influência do fator)
Regressão
Efeito de todos os fatores)
Soma dos quadrados dos erros)
Erro de cada medida)
Erro experimental)
Intervalo de confiança)
Modelo de previsão GB capturados)
Modelo de previsão Throughput)
Modelo de previsão Índice de perda)