• Nenhum resultado encontrado

Modelagem analítica baseada em experimentação de sistemas de inspeção profunda de pacotes

N/A
N/A
Protected

Academic year: 2021

Share "Modelagem analítica baseada em experimentação de sistemas de inspeção profunda de pacotes"

Copied!
94
0
0

Texto

(1)

"Modelagem Analítica Baseada em Experimentação de Sistemas

de Inspeção Profunda de Pacotes"

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/˜posgraduacao

Recife

2017

(2)

"Modelagem Analítica Baseada em Experimentação de Sistemas

de Inspeção Profunda de Pacotes"

Este trabalho foi apresentado à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Fe-deral de Pernambuco como requisito parcial para obtenção do grau de Mestre Profissio-nal em Ciência da Computação.

Orientador: Prof. Dr. Stenio Flávio de La-cerda Fernandes

Coorientador: Prof. Dr. Rafael Thyago Anto-nello

Recife

2017

(3)

Catalogação na fonte

Bibliotecária Monick Raquel Silvestre da S. Portes, CRB4-1217

C837m Costa, Diego Pereira Martins da

Modelagem analítica baseada em experimentação de sistemas de inspeção profunda de pacotes / Diego Pereira Martins da Costa. – 2017.

95 f.:il, fig., tab.

Orientador: Stênio Flávio de Lacerda Fernandes.

Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIn, Ciência da Computação, Recife, 2015.

Inclui referências.

1. Ciência da computação. 2. Teoria das filas. I. Fernandes, Stênio Flávio de Lacerda (orientador). II. Título.

004 CDD (23. ed.) UFPE- MEI 2017-154

(4)

Diego Pereira Martins da Costa

Modelagem Analítica Baseada em Experimentação de Sistemas de

Inspeção Profunda de Pacotes

Dissertação apresentada ao Programa de Pós-Graduação em Ciência da Computação da Universidade Federal de Pernambuco, como requisito parcial para a obtenção do título de Mestre Profissional em 28 de junho de 2017.

Aprovado em: 28/06/2017.

BANCA EXAMINADORA

__________________________________________ Prof. Odilon Maroja da Costa Pereira Filho

Centro de Informática / UFPE

__________________________________________ Prof. Ramide Augusto Sales Dantas

Instituto Federal de Pernambuco

__________________________________________ Prof. Stênio Flávio de Lacerda Fernandes

Centro de Informática / UFPE (Orientador)

(5)
(6)

Agradeço a Deus pela oportunidade da vida, a minha família pela crença na minha capacidade, a meu orientador e ao meu coorientador que sempre cumpriram com os seus papeis fundamentais na elaboração desta dissertação, aos colegas de trabalho que nunca desistiram de acreditar em mim e aos que mesmo não presentes fisicamente torcem, rezam e acreditam no meu sucesso. Não poderia deixar de agradecer a equipe do projeto “ntop”, em especial ao Michelle Campus.

(7)

tes terão livros. Sem livros, sem leitura, os nossos filhos serão incapazes de escrever -inclusive a sua própria história.

(8)

Inicialmente as pesquisas relacionadas a Internet eram focadas em melhora-mentos na velocidade de transmissão de dados, capacidade e cobertura geográfica. Atualmente medição, modelagem e análise em redes de computadores, particular-mente classificação de tráfego, tornaram-se pontos cruciais para manutenção do funcionamento da rede, principalmente devido ao constante crescimento das redes de computadores, com relação ao tamanho físico, a complexidade topológica e a di-versidade de serviços. Sistemas de Inspeção Profunda de Pacotes (do inglês, Deep Packet Inspection – DPI) vem se tornando um importante artifício para análise de tráfego de rede, uma vez que a classificação de aplicações baseando-se nas portas perdeu a confiabilidade, especialmente devido ao tunelamento de protocolos bem como ao uso indevido de portas padrões. Por exemplo, softwares P2P ou Proxy podem utilizar-se de portas não bloqueadas para burlar regras de firewalls. Assim, o conceito de Inspeção Profunda de Pacotes pode ser definido como uma análise minuciosa do conteúdo do pacote, no qual se verifica o payload (carga útil) com o intuito de buscar padrões conhecidos que identifiquem a aplicação que o gerou. Desta forma, o pacote pode ser tratado de acordo com as políticas de firewall que regem aquela rede de computadores. O objetivo desta dissertação foi identificar os “gargalos” no sistema nDPI através da verificação das etapas que compõem o funcionamento de um sistema de inspeção profunda de pacotes, mensurar cada uma dessas etapas e modelar o sistema através da teoria das filas, bem como utilizando o software Arena, realizar a simulação e validação do modelo apresentado. Esta pesquisa optou por analisar o sistema nDPI, por ser open-source e ter um ótimo desempenho dentre os demais sistemas classificadores de tráfego. Dessa forma foi possível identificar gargalos que possam existir nesses sistemas, facilitando o desenvolvimento dessas ferramentas. Tal tarefa é necessária tendo em vista que, com a crescente demanda por links de grandes velocidades, sistemas que possam classificar corretamente o tráfego em redes de altas velocidades são fundamentais ao bom funcionamento das redes de computadores. Observou-se que a modularização de um sistema de inspeção profunda de pacotes é essencial para a correta análise deste. A análise realizada demonstra que a teoria das filas é um bom método analítico para modelagem de um sistema de inspeção profunda de pacotes, uma vez que as características dos módulos deste sistema são semelhantes as características de uma rede de filas de espera, possuindo processo de chegada, processamento e saída. Os resultados demonstram que o processo de classificação do payload é a etapa que demanda maior tempo dentre as etapas existentes no sistema. No entanto os testes apresentam que em links de até 1 Gbps praticamente não houve a formação de filas de espera no sistema analisado. Palavras-chave: Teoria das Filas. Inspeção Profunda de Pacotes. Modelagem.

(9)

Initially, the research about the Internet focused on improvements in data trans-mission speed, capacity, and geographic coverage. Currently measurement, modeling and analysis in computer networks, particularly traffic classification, have become cru-cial factors for maintenance of network operation. Mainly due to the constant growth of computer networks, especially with respect to the physical size, the topological complexity and the diversity of services. Deep Packet Inspection (DPI) has become an important artifice for analyzing network traffic. Since the port-based classification of applications has lost its reliability, especially due to protocol tunneling as well as improper use of standard ports. For example, P2P or Proxy software can use unlocked ports to circumvent firewalls rules. The concept of Deep Packet Inspection can be defined as an thorough analysis of the contents of the packet, in which the payload is search for known patterns in order to identify the application that generated it. In this way, the packet can be handled in accordance with the firewall policies that govern that computer network. The objective of this dissertation was to identify the “bottlenecks” in the nDPI system by verifying the steps that make up the operation of DPI system, to measure each one of these stages and to model the system through of the queu-ing theory. As well, usqueu-ing the Arena software perform the simulation and validation of the presented model. This research opted to analyze the nDPI system, because it is open-source and performs optimally among other traffic classifier systems. This way it will be possible to identify bottlenecks that may exist in these systems, facilitating the development of these tools. Such a task is necessary because, with the increasing demand for high-speed links, systems that can correctly classify traffic in high-speed networks are fundamental to the proper functioning of computer networks. It was ob-served that the modularization of a DPI system is essential for its correct analysis. The analysis performed demonstrates that queuing theory is a good analytical method for modeling a deep packet inspection system, since the characteristics of the modules of this system are similar to the characteristics of a network queue, possessing arrival, processing and exit. The results show that the payload classification process is the stage that demands the most time among the steps in the system. However the tests show that in links of up to 1 Gbps there was practically no queuing in the analyzed system. Keywords: Queuing Theory. Deep Packet Inspection. Modeling.

(10)

Figura 1 – Principais componentes de sistemas de Inspeção Profunda de Pacotes 22 Figura 2 – Esquema de funcionamento do PF_RING, PF_PACKET e TCP/IP . 26

Figura 3 – População de um Sistema de Filas . . . 28

Figura 4 – Exemplo de curva de uma PDF . . . 40

Figura 5 – Exemplo de histograma . . . 40

Figura 6 – Exemplo de uma CDF . . . 41

Figura 7 – Exemplo de Q-Q Plot de distribuições idênticas . . . 43

Figura 8 – Exemplo de Q-Q Plot de distribuições diferentes . . . 43

Figura 9 – Módulos do nDPI . . . 45

Figura 10 – Esquema de Funcionamento do Buffer Circular do PF_RING. . . 47

Figura 11 – Viagem do pacote através dos módulos. . . 48

Figura 12 – Etapas da modelagem. . . 52

Figura 13 – Características do trace apresentado pelo ndpiReader . . . 54

Figura 14 – Histograma do módulo placa de rede. . . 55

Figura 15 – Q-Q Plot do módulo placa de rede. . . 56

Figura 16 – ECDF x CDF do módulo placa de rede . . . 56

Figura 17 – Histograma do módulo PF_PACKET . . . 57

Figura 18 – Q-Q Plot do módulo PF_PACKET . . . 57

Figura 19 – ECDF X CDF do módulo PF_PACKET . . . 58

Figura 20 – Histograma do módulo PF_RING . . . 58

Figura 21 – Q-Q Plot do módulo PF_RING . . . 59

Figura 22 – ECDF X CDF do módulo PF_RING . . . 59

Figura 23 – Histograma do módulo captura. . . 60

Figura 24 – Q-Q Plot do módulo captura. . . 60

Figura 25 – ECDF X CDF do módulo captura. . . 61

Figura 26 – Histograma do módulo extração . . . 61

Figura 27 – Q-Q Plot do módulo Extração . . . 62

Figura 28 – ECDF X CDF do módulo extração. . . 62

Figura 29 – Histograma do módulo classificação . . . 63

Figura 30 – Q-Q Plot do módulo classificação. . . 63

Figura 31 – ECDF X CDF do módulo classificação. . . 64

Figura 32 – Histograma do módulo resultado. . . 64

Figura 33 – Q-Q Plot do módulo resultado . . . 65

Figura 34 – ECDF X CDF do módulo resultado. . . 65

Figura 35 – Histograma do tempo entre chegadas dos pacotes. . . 66

(11)

Figura 38 – Cenário da modelagem - Teoria das Filas . . . 71

Figura 39 – Implementação dos módulos no software Arena. . . 75

Figura 40 – Módulo Placa de Rede - Dados coletados X Dados Simulados . . . 81

Figura 41 – Módulo PF_PACKET - Dados coletados X Dados Simulados . . . . 81

Figura 42 – Módulo PF_RING - Dados coletados X Dados Simulados . . . 82

Figura 43 – Módulo Captura - Dados coletados X Dados Simulados . . . 82

Figura 44 – Módulo Extração - Dados coletados X Dados Simulados . . . 82

Figura 45 – Módulo Classificação - Dados coletados X Dados Simulados . . . . 83

Figura 46 – Módulo Resultado - Dados coletados X Dados Simulados . . . 83

Figura 47 – Módulo Placa de Rede - Dados coletados X Dados simulados . . . 84

Figura 48 – Módulo PF_PACKET - Dados coletados X Dados simulados . . . 84

Figura 49 – Módulo PF_RING - Dados coletados X Dados simulados . . . 84

Figura 50 – Módulo Captura - Dados coletados X Dados simulados . . . 85

Figura 51 – Módulo Extração - Dados coletados X Dados simulados . . . 85

Figura 52 – Módulo Classificação - Dados coletados X Dados simulados . . . . 85

Figura 53 – Módulo Resultado - Dados coletados X Dados simulados . . . 86

(12)

Tabela 1 – Fórmulas para cálculos dos parâmetros das filas . . . 32

Tabela 2 – Características do Trace . . . 49

Tabela 3 – Resultado da análise dos módulos. . . 68

Tabela 4 – Parâmetros dos dados coletados - 10 Mbps . . . 72

Tabela 5 – Parâmetros dos dados coletados - 100 Mbps . . . 73

Tabela 6 – Parâmetros dos dados coletados - 500 Mbps . . . 74

Tabela 7 – Análise dos módulos através do Input Analyser . . . 75

Tabela 8 – Parâmetros dos dados simulados - 10 Mbps . . . 76

Tabela 9 – Parâmetros dos dados simulados - 100 Mbps . . . 77

Tabela 10 – Parâmetros dos dados simulados - 500 Mbps . . . 78

Tabela 11 – Parâmetros dos dados simulados - 1 Gbps . . . 79

(13)

BFGS Broyden, Fletcher, Goldfarbe Shano CDF Função de Densidade Acumulada CPU Unidade Central de Processamento DPI Deep Packet Inspection

ECDF Função de Densidade Acumulada Empírica FIFO First-in-first-out

GPU Unidade Gráfica de Processamento IC Intervalo de Chegadas

IFAL Instituto Federal de Alagoas IPP Inspeção Profunda de Pacotes

KS Kolmogorov-Smirnov

LIFO Last In First Out

MLE Máxima Verossimilhança NDA Non Disclosure Agreement OSI Open System Interconnection

P2P Peer-to-peer

PDF Função Densidade de Probabilidade Q-Q Quantil a Quantil

REGEX Expressões Regulares SSL Secure Socket Layer

TCP Protocolo de Controle de Transmissão

(14)

1 Introdução . . . . 15 1.1 Objetivos . . . . 15 1.2 Objetivos Específicos . . . . 17 1.3 Metodologia da Pesquisa . . . . 18 1.4 Estrutura do Trabalho . . . . 18 2 Fundamentação Teórica . . . . 20

2.1 Inspeção Profunda de Pacotes . . . 20

2.1.1 Estrutura de um Sistema de Inspeção Profunda de Pacotes . . . 21

2.1.2 Fluxo do pacote de rede através do sistema operacional . . . 23

2.1.3 nDPI . . . 23

2.1.4 PF_PACKET . . . 25

2.1.5 PF_RING . . . 25

2.2 Teoria das Filas . . . 27

2.2.1 Elementos de uma fila . . . 28

2.2.2 Características de uma fila . . . 28

2.2.3 Notação de Kendall . . . 30

2.2.4 Medidas de Desempenho . . . 31

2.2.5 Simulação . . . 32

2.3 Software Arena . . . . 33

2.4 Trabalhos Relacionados . . . . 34

2.4.1 Sistemas de Inspeção Profunda de Pacotes . . . 34

2.4.2 Modelagem e medição em sistemas de rede . . . 35

2.4.3 Teoria das filas em sistemas de rede . . . 36

3 Análise e Modelagem de Sistemas . . . . 38

3.1 Avaliação de Desempenho . . . . 38

3.1.1 Métricas . . . 39

3.1.2 Variáveis Aleatórias . . . 39

3.1.2.1 Função Densidade de Probabilidade (PDF) . . . 39

3.1.2.2 Função de Densidade Acumulada (CDF) . . . 40

3.1.3 Criação de Modelos . . . 41

3.1.3.1 Método da Máxima Verossimilhança (MLE) . . . 42

3.1.3.2 Algoritmos de Otimização . . . 42

(15)

4.1 Seleção da Ferramenta de Inspeção Profunda de Pacotes . . . . 44

4.1.1 Estrutura do nDPI . . . 44

4.1.2 Alterações no código do nDPI . . . 45

4.2 Kernel Space . . . . 46

4.2.1 Alterações do PF_PACKET . . . 46

4.2.2 Alterações no PF_RING . . . 47

4.2.3 Alterações no Driver da Placa de Rede . . . 48

4.3 Trace . . . . 49

4.4 Tcpreplay . . . . 50

4.5 Metodologia Aplicada . . . . 50

4.5.1 Modelagem dos Módulos . . . 51

4.5.1.1 Geração de Histogramas . . . 53

4.5.1.2 Estimação dos parâmetros . . . 53

4.5.1.3 Geração de gráfico Q-Q Plot . . . 53

4.5.1.4 Comparação entre ECDF e CDF . . . 53

4.6 Simulação do nDPI . . . 53

5 Modelagem e Simulação do nDPI . . . . 55

5.1 Modelos dos módulos . . . . 55

5.1.1 Módulo Placa de Rede . . . 55

5.1.2 Módulo PF_PACKET . . . 56 5.1.3 Módulo PF_RING . . . 58 5.1.4 Módulo Captura . . . 59 5.1.5 Módulo Extração . . . 61 5.1.6 Módulo Classificação . . . 62 5.1.7 Módulo Resultado . . . 64

5.1.8 Taxa de chegada dos pacotes . . . 65

5.2 Modelagem por meio da Teoria das Filas . . . . 69

5.2.1 Parâmetros inerentes a teoria das filas . . . 72

5.3 Simulação do modelo no Arena . . . . 74

5.4 Validação do modelo . . . . 81

6 Conclusão . . . . 87

6.1 Contribuições . . . 88

6.2 Limitações . . . . 88

6.3 Relação da Pesquisa com o Ambiente de Trabalho . . . 88

6.4 Trabalhos Futuros . . . . 89

(16)

1 Introdução

Gerenciamento do tráfego de redes é uma importante tarefa para quem administra redes de computadores. Manter o controle sobre o conteúdo deste tráfego é tarefa ainda mais complexa, visto que utilizar firewalls que bloqueiam aplicações através de suas portas padrões já não demonstra a eficiência de anos atrás, uma vez que com o tunelamento de protocolos e o uso indevido das portas padrões esta técnica já não se mostra eficaz na manutenção e gerenciamento da rede. Por exemplo, softwares P2P que, em tempo real, mudam as suas portas padrões por portas não bloqueadas para burlar o firewall. Ou seja, o conceito “porta = aplicação” caiu em desuso, e assim surgiu a necessidade de buscar novas técnicas para manter a eficiência no gerenciamento do tráfego de pacotes de rede.

Os sistemas de Inspeção Profunda de Pacotes surgiram como alternativa para solução deste problema, eles analisam de forma aprofundada pacotes de dados que trafegam no meio, seja internet, rede local, ou até mesmo entre aplicações. Estes sistemas realizam a leitura do payload (parte que contém as informações mais relevantes, excluindo cabeçalhos, metadados etc) dos pacotes, de forma a buscar padrões conhecidos no intuito de identificar as aplicações que originaram aqueles pacotes.

Esta técnica é bastante utilizada para classificação de tráfego, já que, segundo Deri et al. (2014), a análise de tráfego de rede foi tradicionalmente limitada a cabeçalho do pacote, porque as portas do protocolo de transporte e de aplicação eram geralmente suficientes para identificar o protocolo de aplicação. Com o surgimento do peer-to-peer e protocolos criptografados, a tarefa de identificar os protocolos de aplicação tornou-se cada vez mais desafiador, criando assim uma motivação para o desenvolvimento de ferramentas e bibliotecas para a classificação do protocolo de rede.

Sistemas de inspeção profunda de pacotes buscam por padrões descritos atra-vés de expressões regulares, o que aumenta a precisão e eficácia desta técnica. Expressões Regulares – REGEX, estabelece uma forma eficaz de identificar cadeias de caracteres, como palavras ou padrões de caracteres, de forma a possibilitar um ca-samento entre o padrão encontrado no payload do pacote e as assinaturas previamente conhecidas.

1.1 Objetivos

Sistemas de Inspeção Profunda de Pacotes precisam ser mais rápidos que os links que serão analisados por estes, caso contrário ocorreria o descarte de muitos

(17)

pacotes, causando a ineficiência da análise (DERI et al., 2014). Com o constante incremento na velocidade dos links de internet, a tarefa de projetar e implementar tais sistemas torna-se cada vez mais complexa, devido as altas taxas de transmissão de pacotes. A utilização de ferramentas de modelagem e simulação podem facilitar tal tarefa, uma vez que é possível previamente verificar o comportamento do sistema e fazer as modificações necessárias antes de sua implementação.

Segundo Bujlow, Carela-Español e Barlet-Ros (2015), existem diversos sistemas de inspeção profunda de pacotes disponíveis e citados na literatura, sendo evidente a necessidade de uma comparação utilizando métricas capazes de determinar a eficiência destes. Desta maneira foi realizado um trabalho onde comparou os sistemas mais citados, focando especificamente na precisão da classificação como parâmetro para tal comparação. Logo, como resultado deste trabalho, duas ferramentas obtiveram destaque: Pace1, e nDPI2com alto nível de precisão.

As ferramentas Pace e nDPI distinguem-se por ser a primeira uma ferramenta comercial enquanto que a segunda é uma ferramenta de código aberto. O uso de código aberto é essencial porque, ainda segundo Deri et al. (2014), sistemas de inspeção profunda de pacotes comerciais são muito caros tanto em licenciamento quanto em manutenção anual, e códigos fechados não são extensíveis por usuários finais, em essência esses ficam à mercê dos fornecedores da biblioteca em termos de custos e cronograma. Desta forma o trabalho realizado nesta dissertação utilizou o sistema nDPI para realização do experimento de modelagem e simulação.

A princípio, realizou-se pesquisas sobre o funcionamento dos sistemas de inspeção profunda de pacotes, sendo estes subdivididos em módulos para melhor entendimento, ficando clara a estrutura básica do funcionamento de qualquer um desses sistemas. Ao mesmo tempo, foram surgindo algumas características comuns a teoria das filas, já que o pacote transitava de um módulo para o outro de forma estritamente sequencial, onde a saída do pacote de um módulo caracterizava a chegada no módulo seguinte.

Portanto, para representar os módulos do sistema de inspeção profunda de pacotes foi utilizado a teoria das filas, por melhor representar tais sistemas, dentre os modelos analíticos analisados, tais como modelo linear e redes de Petri.

Assim, nesse contexto, a identificação de “gargalos” mostrou-se como objetivo principal desta pesquisa, uma vez que sistemas de inspeção profunda de pacotes podem ser modelados e simulados por meio da teoria das filas, de forma a analisar seu comportamento em diversas situações e identificar possíveis “gargalos” que prejudi-quem seu desempenho, com o intuito de realizar possíveis adequações e correções. 1 Ferramenta de IPP desenvolvida por Rohde & Schwarz Cybersecurity disponível em PACE. . . (2013) 2 Ferramenta de IPP desenvolvida pela equipe nTOP, disponível em nDPI. . . (2014).

(18)

Através de análises matemáticas, a teoria das filas é capaz de prever o compor-tamento de sistemas cujos componentes gerem filas, analisando suas propriedades mensuráveis, ou seja, utilizando-se desta teoria é possível antecipar, através de cálcu-los probabilísticos, situações que ocorrerão naquele sistema. De acordo com CARRIÓN (2007), a teoria das filas tem por objetivo aperfeiçoar o desempenho de um sistema reduzindo seus custos operacionais. Cada sistema de filas possui características pró-prias, entretanto formas de funcionamento similares, onde ocorrem os processos de chegada, processamento e saída, chamados de processos de nascimento e morte.

Ao mesmo tempo em que é necessário analisar o nascimento e morte de um processo para extração de suas características, é necessário verificar a distribuição de probabilidade que rege aquele processo, ou seja, identificar corretamente a distribuição de probabilidade é fundamental para analisar possíveis congestionamentos no servidor.

O congestionamento do tráfego em um sistema de inspeção profunda de pa-cotes pode ocorrer sempre que a velocidade do link for superior a capacidade de processamento do sistema. Assim, o uso da teoria das filas visa otimizar o “gargalo” que possa ocorrer em links de altas velocidades.

Desta forma, o objetivo geral deste trabalho visa analisar e modelar um sistema de Inspeção Profunda de Pacotes utilizando a teoria das filas, com o intuito de fornecer meios para simular tais sistemas a fim de facilitar a identificação de possíveis con-gestionamentos, e com isso antecipar o comportamento destes sistemas em variadas situações.

Com os “gargalos” identificados é possível aos desenvolvedores dessas ferra-mentas projetar sistemas condizentes com o ambiente em que irão analisar, uma vez que conhecendo a etapa que demanda maior tempo de processamento, mais recursos ou algorítimos de otimização podem ser implementados naquele módulo, buscando o melhor desempenho.

Por exemplo, através do modelo e da metodologia proposta, será possível predizer que em um link de 5 Gbps a probabilidade de ocorrer fila em um determinado módulo é de X porcento, ou que o tempo desde a chegada do pacote na placa de rede até sua classificação será de X segundos. Ou mesmo identificar se em uma determinada taxa de transmissão de pacotes o sistema da inspeção profunda de pacotes ficará ocioso. Em suma será possível identificar de forma antecipada todos os parâmetros inerentes a teoria das filas.

1.2 Objetivos Específicos

Os objetivos específicos deste trabalho são primeiramente através de uma análise minuciosa do funcionamento de um sistema de Inspeção Profunda de Pacotes,

(19)

entender e fracionar tal sistema em módulos, de acordo com a atividade desenvolvida por cada uma dessas etapas, por exemplo, a obtenção do pacote, a extração do payload, a classificação do pacote etc. Então em seguida modelar cada um desses módulos de acordo com a teoria das filas, tendo em vista que cada uma destas etapas possui eventos de entrada, processamento e saída, característica básicas de um sistema de filas. E por fim identificar a distribuição de probabilidade de cada um dos módulos e por fim, realizar a modelagem e simulação do comportamento utilizando-se o software Arena.

1.3 Metodologia da Pesquisa

Esta pesquisa usa o estudo de caso como meio para analisar o comportamento de um sistema de inspeção profunda de pacotes, utilizando pacotes capturados em rede de tráfego real e a teoria das filas como ferramenta para análise e modelagem deste sistema.

Para compreensão de um sistema de inspeção profunda de pacotes, realizou-se uma pesquisa bibliográfica (estudo sistematizado realizado com base em materiais publicados em livros, revistas e redes eletrônicas) incluindo artigos e documentos publicados, os quais definem, comparam e otimizam tais sistemas.

Do mesmo modo, para compreensão da teoria das filas também se realizou uma pesquisa bibliográfica a qual, define, caracteriza e exemplifica modelos matemáticos que se adequam aos mais variados sistemas de filas, incluindo o proposto neste trabalho.

1.4 Estrutura do Trabalho

Este trabalho se inicia no capítulo 1 com a introdução, onde se evidencia os objetivos a serem alcançados ao término desta dissertação, bem como a metodologia da pesquisa aplicada para construção desta dissertação.

O capítulo 2 apresenta os conceitos inerentes aos sistemas de Inspeção Pro-funda de Pacotes, demonstrando sua estrutura, seu funcionamento e demais caracterís-ticas destes sistemas, bem como a modularização aplicada aos sistemas de inspeção profunda de pacotes com o intuito de permitir o estudo através da teoria das filas. Apresenta ainda conceitos acerca do fluxo do pacote desde sua chegada na placa de rede até ser devidamente classificado, além de descrever os conceitos referentes a teoria das filas, como nomenclaturas de um sistema de filas de espera e aborda-se conceitos de distribuição de probabilidade e notação de Kendall. Logo em seguida é introduzido o conceito de simuladores e apresentado o software Arena, e por fim são apresentados os trabalhos relacionados a esta pesquisa.

(20)

Imediatamente após os capítulos da introdução e da fundamentação teórica, o capitulo 3 traz conceitos referentes a análise e modelagem de sistemas de inspeção profunda de pacotes, apresentando conceitos estatísticos inerentes a esta pesquisa.

O capítulo 4 apresenta os procedimentos metodológicos utilizados na realização do experimento. Em seguida o capítulo 5 demonstra as fases da modelagem e simula-ção do nDPI realizadas para modularizasimula-ção e mensurasimula-ção do sistema, bem como a simulação dos modelos criados através do software Arena, em seguida é apresentada a validação do modelo e discutido os resultados. Logo após, o capítulo 6 apresenta as conclusões onde são relacionadas as contribuições e limitações, bem como sugeridos trabalhos futuros. Por fim é apresentado a bibliografia consultada.

(21)

2 Fundamentação Teórica

Este capítulo tem o objetivo de apresentar uma visão geral sobre os sistemas de Inspeção Profunda de Pacotes e Teoria das Filas, abordando o seu surgimento, principais definições, características e estrutura interna, além de apresentar conceitos acerca da simulação e do software Arena. Logo após é apresentado os trabalhos relacionados ao objetivo desta pesquisa.

2.1 Inspeção Profunda de Pacotes

Com o constante aumento nas velocidades das redes de computadores, o ge-renciamento do tráfego torna-se tarefa que, cada vez mais, demanda do administrador maiores níveis de dificuldade. Principalmente porque o conceito “porta = aplicação” já não é tão confiável como há alguns anos atrás, uma vez que algumas aplicações, para burlar regras de firewall, utilizam-se de portas não padrões, como por exemplo softwares P2P que dinamicamente modificam a porta em uso afim de evitar possíveis bloqueios.

Desta forma, o gerenciamento do fluxo de dados está cada vez mais complexo e sendo de vital importância para a manutenção da qualidade dos serviços fornecidos através das redes de computadores. Nesse sentido é imprescindível a classificação do tráfego existente através da identificação da aplicação que originou aquele pacote, de forma que seja possível gerenciar aquele tráfego de maneira compatível com a classificação da aplicação que o originou e consequentemente ocorra o melhor uso dos canais de transmissão.

Assim, foi necessário buscar alternativas mais eficazes para identificar o tráfego que circula na rede. Desta forma surgiu o conceito Inspeção Profunda de Pacotes. A ideia deste conceito é capturar o pacote, extrair o payload (parte que contém as informações mais relevantes, excluindo cabeçalhos, metadados etc) e através da busca por padrões descritos por meio de expressões regulares, identificar a aplicação que gerou aquele pacote através de assinaturas previamente conhecidas.

A Inspeção Profunda do Pacote é o “estado da arte” para a classificação do tráfego. De acordo com o discernimento convencional, inspeção profunda de pacotes é a técnica de classificação mais precisa (BUJLOW et al., 2015). Logo inspeção profunda de pacotes tornou-se técnica fundamental para diversas ferramentas com diversos fins, tais como: classificação de tráfego, gerenciamento de redes, detecção de intrusão, bem como análise forense de redes. Pacotes classificados podem ser facilmente, redirecionados, bloqueados, ter sua prioridade de transmissão reduzida, dentre outros

(22)

meios de manipulação através do uso de firewalls.

Contudo, a classificação do tráfego através de inspeção profunda de pacotes depende diretamente de um banco de dados contendo assinaturas, padrões de proto-colos, aplicações e serviços web, assinaturas estas que devem ser constantemente atualizadas a fim de adaptar esses sistemas as evoluções contínuas das aplicações.

Por um lado, se sistemas de inspeção profunda do pacote podem ser utilizados com finalidades estritamente gerenciais, visando a prevenção de incidentes, por outro lado tal técnica também pode ser usada para fins menos didáticos, por exemplo, segundo Pariser (2012), a multinacional Phorm, que atualmente presta serviços a uma operadora de telefonia brasileira tem como objetivo, através da inspeção profunda de pacotes, a obtenção de dados e informações capazes de montar um perfil do usuário objetivando o direcionamento de serviços de publicidade.

O código básico no seio da nova internet é bastante simples. A nova ge-ração de filtros online examina aquilo de que aparentemente gostamos – as coisas que fazemos, ou as coisas das quais as pessoas parecidas conosco gostam – e tenta fazer extrapolações. São mecanismos de previsão que criam e refinam constantemente uma teoria sobre quem somos e sobre o que vamos fazer ou desejar a seguir. Juntos, esses mecanismos criam um universo de informação exclusivo para cada um de nós – o que passei a chamar de bolha dos filtros – que altera funda-mentalmente o modo como nos deparamos com ideias e informações. (PARISER, 2012, p. 14).

Ainda que muitas discussões já existam em torno da quebra da privacidade ocasionada pelo uso de inspeção profunda de pacotes como o descrito por Boff e Fortes (2014), em que descreve a afronta aos direitos fundamentais da privacidade, bem como em Jain, Paul e Kumar (2014) que propõe a análise dos pacotes para preservar o direito autoral de obras, é um contexto que foge do escopo deste trabalho. 2.1.1 Estrutura de um Sistema de Inspeção Profunda de Pacotes

Apesar que cada desenvolvedor de sistema de inspeção profunda de pacotes uti-lize seu próprio algoritmo para construção de sua aplicação, alguns procedimentos são padrões a todos eles. De acordo com Donato, Pescapé e Dainotti (2014), é necessário definir parâmetros comuns para medir a eficiência e comparar tais ferramentas. Desta forma o autor desenvolveu uma estrutura padrão a ser seguida pelos demais desenvol-vedores de sistemas de inspeção profunda de pacotes, com o intuito de possibilitar a implementação de técnicas de classificação e permitir a comparação e combinação destas técnicas, conforme a figura 1, na qual define os estágios necessários para a classificação do tráfego.

(23)

Figura 1 – Principais componentes de sistemas de Inspeção Profunda de Pacotes

Fonte: Adaptada de De Donato et al, 2014, p. 3

A primeira etapa do sistema inspeção profunda de pacotes (Filtro de Pacotes) basicamente limita-se a obtenção dos pacotes capturados pela placa de rede ou a ler estes a partir de um arquivo, descartando alguns pacotes caso alguma regra de filtragem tenha sido configurada. Esta fase utiliza uma biblioteca, geralmente a libpcap3, para obtenção destes frames. Em seguida o Organizador de Sessão agrupa o tráfego da rede em sessões, ou seja, organiza os pacotes de acordo com o seu fluxo (origem e destino), com isso é possível implementar contadores para melhor precisão da classificação.

Após a obtenção e organização do pacote, a próxima etapa de um sistema de inspeção profunda de pacotes é a extração do payload, ou seja, extrair as característi-cas básicaracterísti-cas necessárias para a correta classificação do tráfego. Logo após, através do Combinador de Decisões o sistema precisa classificar o payload. Para isso ele combina técnicas de classificação como por exemplo Naive Bayes4, autômatos finitos determinísticos, autômatos finitos não determinísticos ou uma forma hibrida dessas duas últimas técnicas, de forma a alcançar uma melhor precisão na classificação do payload.

A última etapa de um sistema de inspeção profunda de pacotes visa gerar os arquivos de saída, contendo informações acerca das sessões processadas e suas respectivas classificações.

Com o propósito de alcançar um equilíbrio entre precisão, desempenho e custo, várias técnicas estão sendo desenvolvidas para viabilizar o uso de inspeção profunda de pacotes tal como o proposto em Hsieh, Vespa e Weng (2016), no qual utiliza a unidade de processamento gráfico (GPU) para implementar algoritmos que possibilitem altas taxas de processamento de pacotes. Segundo o autor, um bom sistema de 3 Biblioteca open source portável e que provê funcionalidades para captura de tráfego das interfaces

de rede (SILVA; CANCIAN, ).

4 Família de classificadores probabilísticos simples baseados na aplicação do teorema de Bayes com

(24)

classificação deve possuir grande poder de detecção de assinaturas e geração de resultados com baixa latência e alto rendimento. Desta forma a utilização de GPU para processamento de DPI aumenta o desempenho da classificação se comparado a CPUs normais.

Outras técnicas visam diminuir a sobrecarga computacional desses sistemas, tais como limitar o número de pacotes inspecionados por fluxo ou realizar o paralelismo, no sentido de não sobrecarregar determinado núcleo.

2.1.2 Fluxo do pacote de rede através do sistema operacional

Como já citado, o sistema de inspeção profunda de pacotes inicia suas atividades na captura do pacote, entretanto para que isso ocorra é necessário que o sistema operacional obtenha esse pacote através da placa de rede, na camada 1 do Modelo OSI5, e o entregue ao sistema, passando por todas as outras camadas do modelo citado. Porém, o modelo OSI é constituído por 7 camadas sendo elas: física, enlace, rede, transporte, sessão, apresentação e aplicação; cada uma destas camadas com suas respectivas funções. As camadas mais inferiores do modelo OSI constituem o chamado espaço de kernel, ou seja, funções especificas do sistema operacional que somente podem ser executadas pelo próprio kernel do sistema. Caso alguma aplicação deseje obter serviços do espaço de kernel, esta solicita tais serviços através de chamadas ao sistema, que são solicitações para que o kernel (com seus privilégios) execute determinado serviço para aquela aplicação.

Desta forma, ao chegar um pacote na placa de rede, o sistema de inspeção profunda de pacotes, solicita ao sistema operacional, através de uma chamada ao sistema, que aquele pacote recebido o seja encaminhado imediatamente. Assim o sistema operacional ao receber um pacote, fará uma cópia do mesmo transferindo-o através de um socket (os sockets serão tratados nas subseções 2.1.4 e 2.1.5) para o sistema de IPP e continuará enviando o pacote original através das camadas do modelo OSI até que o mesmo seja recebido pela aplicação de destino, no espaço de usuário. O espaço de usuário são as funções e endereços de memória disponíveis para as aplicações; compõe o espaço de usuário as camadas de sessão, apresentação e aplicação do modelo OSI.

2.1.3 nDPI

O nDPI é uma ferramenta de inspeção profunda de pacotes derivada da bibli-oteca OpenDPI, e foi desenvolvida pela equipe nTOP, com o objetivo de classificar o 5 Modelo de rede de computador dividido em camadas de funções, com o objetivo de ser um padrão

(25)

tráfego de rede de forma confiável e precisa em links de até 10Gbps utilizando apenas commodity hardware.

A ferramenta nDPI foi lançada sob a licença LGPL e por ser de código aberto, permite ao usuário modificá-la para adequar as suas necessidades, sendo extrema-mente extensíveis a inclusão de novas funcionalidades.

Segundo Deri et al. (2014), a importância de se fazer uso de um sistema DPI de código aberto deve-se a três principais questões: ferramentas de IPP comerciais são muito caras; sistemas de inspeção profunda de pacotes de código fechado não são extensíveis por usuários finais, ou seja, desenvolvedores dispostos a adicionar suporte a novos protocolos não o poderão fazer e sim solicitar ao fabricante da ferramenta; e bibliotecas de código aberto não podem ser incorporadas a ferramentas de IPP comerciais pois estas estão sujeitas a um acordo de confidencialidade (NDA), o que torna as ferramentas de IPP comerciais impossíveis de serem integrados a kernel de sistemas operacionais open-source.

Desta forma, o nDPI foi desenvolvido utilizando a linguagem C, e pode ser divi-dido em dois principais componentes: a biblioteca central, responsável pelo tratamento do pacote em estado bruto, extraindo as informações necessárias a classificação; e os plugins dissecadores, responsáveis pela detecção de todos os protocolos suportados por esta ferramenta. O nDPI é fornecido com uma aplicação de teste chamada ndpiRe-ader.c que mostra como implementar classificação de pacotes e fornece funções de utilidade para o processamento de fluxo eficiente, que também pode ser utilizada como esqueleto para novas aplicações.

Uma das tendências do tráfego da internet é a utilização de criptografia não só em transações que exigem segurança, como e-mails ou páginas de bancos, mas também para transações mais simples como o envio de tweets, whatsapp e mensagens para terminais móveis. Pensando nisso os desenvolvedores incluíram uma funcionali-dade no nDPI que não só identifica o tráfego criptografado como SSL6, mas também é capaz de, através da captura da chave inicial de troca (única parte decodificável de um pacote criptografado) identificar o host do certificado do servidor, desta forma, sendo possível classificar esse tráfego de acordo com o nome do servidor. Por exemplo, um pacote destinado para um servidor chamado “api.twitter.com” será classificado como twitter, ou um tráfego originário de um servidor chamado “*.whatsapp.net” será marcado como whatsapp, e assim por diante.

Com relação ao desempenho do nDPI, os desenvolvedores realizaram em (DA-NELUTTO et al., 2014), um teste utilizando tráfego real no qual atingiram a velocidade média de 3.5 Mpps/8.85Gbps utilizando um commodity hardware com um único nú-6 Tecnologia de segurança padrão para estabelecer um link criptografado entre um servidor da Web e

(26)

cleo, ou seja, segundo o autor é possível facilmente atingir os 10Gbps se realizar um balanceamento entre dois núcleos. Em referência ao uso de memória, nDPI utiliza cerca de 210 kilobytes para ser carregado utilizando a configuração padrão e mais aproximadamente 1 KB por fluxo para manter as informações destes.

O nDPI é uma ferramenta que trabalha no espaço de usuário, ou seja, para que o tráfego seja classificado é necessário que o pacote capturado no espaço de kernel seja entregue ao mesmo na camada de aplicação, para isso o nDPI utiliza-se da biblioteca libpcap integrada com um socket de captura de pacotes. Por padrão ele utiliza o PF_PACKET, mas também pode ser integrado com o socket PF_RING. 2.1.4 PF_PACKET

A captura de pacotes para classificação demanda um certo custo operacional devido a viagem deste que se inicia na placa de rede, no espaço de kernel, e que deve passar por todas as camadas do modelo OSI até atingir a camada de aplicação no espaço de usuário. Desta forma, segundo Neira-Ayuso, Gasca e Lefevre (2010), para minimizar tais custos, foram desenvolvidos tipos específicos de sockets que enviam cópias dos pacotes capturados na placa de rede diretamente para o espaço de usuário. O PF_PACKET é um socket utilizado por padrão pela biblioteca libpcap que intermedia a chegada do pacote do espaço de kernel ao nDPI.

De acordo com Insolvibile (2002), quando um socket PF_PACKET é criado qualquer pacote que chegar na máquina será interceptado e encaminhado para a função de recebimento do PF_PACKET, onde a primeira ação tomada é restaurar o cabeçalho do pacote da camada de rede, em seguida, caso algum filtro tenha sido adicionado ao socket, analisar se o pacote deve ou não ser descartado. Caso o pacote não seja rejeitado o PF_PACKET faz uma cópia exata da estrutura sk_buff7 e envia para a biblioteca libpcap no espaço de usuário. Importante frisar que é feita uma cópia, pois o pacote originário deve continuar seu trajeto por todas as camadas até chegar na sua aplicação destinatária. Por exemplo, em um computador com um socket PF_PACKET aberto ao chegar um pacote http, o mesmo será interceptado, clonado e enviado a libpcap, porém o pacote originário seguirá seu trajeto até ser visualizado pelo navegador.

2.1.5 PF_RING

De forma similar ao PF_PACKET, o PF_RING tem por objetivo enviar cópia do pacote direto da camada de rede para a aplicação de captura, no espaço de usuário. Entretanto, de acordo com Du e Liu (2012), o PF_RING cria uma estrutura de fila circular, com prévia reserva de memória, chamada de anel, onde disponibiliza a cópia 7 Estrutura de dados que contém todas as informações de controle necessárias ao pacote de rede.

(27)

do pacote para ser consumida pela biblioteca libpcap. Assim que o pacote é lido pela aplicação de captura, o espaço utilizado no anel é usado para armazenar outro pacote, dessa forma não há custo temporal, uma vez que a memória já está previamente reservada.

Ainda de forma análoga ao PF_PACKET, o PF_RING também é capaz de utilizar filtros para o descarte de pacotes (RICCIULLI; COVEL, 2011). E opcionalmente o PF_RING disponibiliza drivers personalizados para algumas placas de rede, com o intuito de otimizar a captura dos pacotes.

Segundo Ortega (2015), o PF_RING é capaz de capturar, sem perdas, apro-ximadamente 100 Mbit/s por núcleo, uma vez que é possível configurar o PF_RING para criar um anel a cada núcleo do processador. A figura 2 mostra um esquema do funcionamento do PF_PACKET, PF_RING e a pilha de protocolos TCP/IP8.

Figura 2 – Esquema de funcionamento do PF_RING, PF_PACKET e TCP/IP

Fonte: Adaptada de http://www.embedded.com/print/4008809, 2016

Na figura acima é possível verificar os sockets criados através do uso do PF_RING e PF_PACKET, bem como a pilha de protocolos a qual o pacote teria que 8 Modelo de rede similar ao modelo OSI, entretanto com apenas 4 camadas, com o objetivo de gerar

(28)

percorrer caso não fizesse uso desses sockets. É possível ver que os sockets criados pelo PF_RING e PF_PACKET permitem enviar o pacote recebido diretamente da placa de rede para o espaço de usuário, sendo recebido pela aplicação que requisitou aquele pacote.

2.2 Teoria das Filas

A concepção da Teoria das Filas é atribuída ao engenheiro dinamarquês Agner Krarup Erlang que, em 1909, analisou os painéis de controle telefônico da companhia telefônica dinamarquesa “Copenhagen Telephone Company” e teve que resolver um clássico problema de determinar quantos circuitos são necessários para providenciar um atendimento aceitável nas chamadas telefônicas (WIESNER; FRANTZ, 2015).

Desde aquela primeira análise realizada por Erlang, a teoria das filas vem sendo utilizada nos mais variados campos do conhecimento, desde o entendimento de um simples fluxo de um caixa de supermercado até mesmo o aperfeiçoamento da linha de produção de uma grande fábrica.

Por exemplo, seria economicamente inviável que em um supermercado fosse mantido um número excedente de caixas de forma a garantir que os clientes jamais enfrentariam filas, bem como manter um número muito baixo de caixas poderia causar grandes filas e desistências dos clientes, o que também causaria prejuízo ao dono do estabelecimento. Desta forma, a teoria das filas visa, através de prévia análise matemática, determinar um equilíbrio satisfatório e econômico entre os clientes e o provedor de determinado serviço (KLEINROCK, 1975). Ou seja, possibilita determinar a probabilidade da formação de filas e do tempo gasto entre a chegada e saída da fila, com o intuito de manter uma razoabilidade na prestação do serviço sem comprometer seu investimento.

Em geral as filas advêm de problemas na maioria das vezes envolvendo conges-tionamento nos provedores que fornecem determinado serviço. A teoria das filas nos permite analisar diversos parâmetros desses congestionamentos, tais como: proporção de tempo em que os servidores estão ocupados, número médio de usuários no sistema, número médio de usuários na fila, probabilidade de um cliente chegar e não enfrentar fila, dentre diversos outros parâmetros (MELLO; BRIESEMEISTER; DÁVALOS, 2016). Segundo Fontanella e Morabito (1997), estudar um sistema em congestão tem como objetivo entendê-lo e, se possível melhorá-lo, mudando-o de alguma forma. A teoria das filas, pela análise matemática detalhada, procura calcular essas medidas, com a intenção de melhor entender o comportamento do sistema (GROSS, 2008).

(29)

2.2.1 Elementos de uma fila

Os elementos de um sistema de filas são os clientes e os provedores de serviços, também chamados de servidores. O termo cliente é utilizado de forma genérica e pode representar qualquer entidade que chegue ao sistema a ser analisado, por exemplo, pessoas em um caixa de banco, carros em uma oficina mecânica, pacotes em uma placa de rede etc. Enquanto que os servidores seriam aqueles que prestam o serviço, ou seja, o caixa do banco, o mecânico da oficina, a placa de rede etc.

2.2.2 Características de uma fila

Algumas características comuns às filas de espera devem ser conceituadas de forma a facilitar o entendimento destes sistemas:

• População - Refere-se ao conjunto de elementos que podem se tornar clientes do sistema de filas em análise, por exemplo, pessoas que podem ou não ir a determinado banco, ou carros que podem ir ou não a determinada oficina etc. A figura 3 demonstra com mais clareza o conceito de população. Em suma todo cliente origina-se de uma população.

Figura 3 – População de um Sistema de Filas

Fonte: AURELIO, Marco 2009. p 8

• Processo de chegada - O processo de chegada geralmente é determinado pela quantidade de clientes que chegam em determinado período de tempo, bem como o intervalo de tempo entre as suas chegadas. Este processo pode ser

(30)

determinístico, ou seja, previamente conhecido, ou pode ser uma variável alea-tória, nesse caso uma distribuição de probabilidade deve ser antecipadamente presumida.

Como exemplo pode-se imaginar um posto de pedágio em que num intervalo de um minuto chegam 30 carros (definido como taxa de chegada indicado pela letra grega λ), ou seja, um veículo a cada 2 segundos, isto é um intervalo de chegada - IC de 2 segundos. Entretanto esse é um valor médio, pois não é regra que sempre a cada 1 minuto chegará exatamente os 30 carros, pode ocorrer de chegar menos ou mais que 30 veículos no minuto seguinte.

Contudo, pode-se imaginar um outro sistema de filas com a mesma taxa de chegada λ, porém com um intervalo entre chegadas variando entre 0 e 10 segundos por exemplo, nesse caso seria necessário analisar como essa variável se distribui em torno da média e identificar a distribuição de probabilidade que melhor represente tal situação.

Ainda existe o processo de chegada chamado de regular, no qual rigorosa-mente o intervalo entre chegadas é igual. Entretanto isso apenas ocorre em processos automatizados, no qual é possível definir esse parâmetro.

Outra importante característica a ser levada em consideração em um processo de chegada, é identificar se os clientes chegam individualmente ou em conjuntos, ou seja, quando o intervalo entre chegadas é igual a zero. Bem como se pode ocorrer o impedimento e a renegação. O impedimento ocorre quando o cliente chega ao sistema e se recusa a entrar na fila por acha-la muito grande. Já a renegação ocorre quando o cliente já está na fila e por entender que levará muito tempo para ser atendido resolve sair do sistema. Segundo Bronson (1985), normalmente faz-se uma suposição de que todos os usuários chegam sozinhos e que nem o impedimento nem a renegação ocorrem.

• Processo de Atendimento- O processo de atendimento é definido como tempo necessário pelo servidor para atender determinado cliente, esse tempo pode ser determinístico, bem como uma variável aleatória, onde também será necessário a identificação de uma distribuição de probabilidade que melhor represente o tempo necessário ao atendimento.

Também é necessário identificar se após o atendimento por aquele servidor será necessário encaminhar o cliente à uma outra fila de outro servidor para complemento do atendimento. Nesse caso esse sistema é conhecido como sistema de filas de multiestágio.

(31)

O atendimento pode ocorrer através de um único servidor ou múltiplos servi-dores, como ocorre na figura 3. A letra grega µ é comumente utilizada para identificar a taxa de atendimento. Continuando no exemplo anterior podemos dizer que se o atendente leva 10 segundos para atender um carro, então a taxa de atendimento µ seria 6 carros por minutos.

• Capacidade do sistema - Pode-se definir a capacidade do sistema como o número máximo de clientes no sistema de filas, ou seja, os clientes que estão sendo atendidos e os que estão aguardando na fila. Sempre que um cliente chega a um sistema cuja capacidade esteja esgotada este é impedido de adentrar.

• Disciplina da fila - Trata-se da ordem pela qual os clientes serão atendidos, nor-malmente é utilizado como padrão que o primeiro a chegar seja o primeiro a ser atendido (em inglês, diz-se FIFO: First In First Out). Entretanto outras disciplinas podem ser adotadas como a LIFO (Last In First Out), onde o último a chegar é o primeiro a sair, ou determinar prioridades, onde a cada cliente é atribuído uma prioridade, nesse caso podendo ser preemptivo ou não-preemptivo. Em filas preemptivas ao chegar um cliente com maior prioridade o servidor interrompe o atendimento atual para atender aquele cliente recém-chegado, retomando o atendimento anterior assim que o atendimento prioritário for encerrado. No caso das filas não-preemptivas o cliente com maior prioridade é colocado no topo da fila para ser atendido assim que o servidor encerrar o atendimento atual. 2.2.3 Notação de Kendall

A notação de Kendall é um importante elemento que possibilita a classificação das filas de acordo com diversos fatores, tais como: o processo probabilístico de chega-das, o processo probabilístico de atendimento, o número de posições de atendimento em paralelo, a capacidade física do sistema, a disciplina de atendimento (NOVAES; TAKEBAYASHI; BRIESEMEISTER, 2015).

A disposição da notação de Kendall é A/S/c/K/N/D, onde: A – descreve o pro-cesso de chegada; S – descreve a distribuição do tempo de atendimento; c – descreve o número de servidores; K – indica a capacidade do sistema; N – define o tamanho da população; e D – indica a disciplina adotada pela fila. No caso dos três últimos parâmetros serem omitidos assume-se que estes são respectivamente ∞/∞/FIFO. Por exemplo uma fila do tipo M/M/1/∞/∞/FIFO, teria as seguintes características:

• M - Os clientes chegam obedecendo um processo Markoviano9que é represen-9 Processo estocástico onde a probabilidade de qualquer comportamento futuro, quando o estado

(32)

tado pela letra M;

• M - A distribuição de probabilidade do tempo de atendimento é a exponencial negativa, uma vez que esta distribuição está diretamente ligada à distribuição de chegada de Poisson;

• 1 - Haveria apenas um servidor atendendo aos clientes da fila; • ∞ - Indica que o sistema tem capacidade infinita;

• ∞ - Define que a população possui tamanho infinito;

• FIFO – indica que a disciplina da fila segue o padrão no qual o primeiro a chegar será o primeiro a ser atendido.

2.2.4 Medidas de Desempenho

A teoria das filas utiliza diversas medidas como parâmetros para análise do comportamento dos sistemas de filas. Segundo Moreira (2010), as seguintes notações servem como parâmetro para utilização das fórmulas para os cálculos da teoria das filas:

• λ = taxa de chegada; • µ = taxa de atendimento;

• P(0) = probabilidade que o sistema esteja ocioso; • P(n) = probabilidade que haja n clientes no sistema;

• P (n – K) = probabilidade que a fila não tenha mais que K clientes; • Lf = número médio de clientes na fila;

• L = número médio de clientes no sistema; • Wf = tempo médio que o cliente espera na fila; • W = tempo médio que o cliente espera no sistema.

A tabela 1 descreve as fórmulas para a obtenção dos parâmetros acima mencio-nados.

(33)

Tabela 1 – Fórmulas para cálculos dos parâmetros das filas

Descrição Fórmula

Utilização do sistema (taxa de ocupação) ρ= λ/µ

Probabilidade de que o sistema esteja ocioso P(0) = 1–ρ = 1 - λ/µ Probabilidade de que haja n clientes esperando ou sendo

atendidos no sistema; P(n) = (λ/µ )n P(0)

Probabilidade de que a fila não tenha mais que K clientes P(n = K) = 1 – (λ/µ)K+1

Número médio de clientes na fila Lf = λ2/ (µ (µ - λ))

Número médio de clientes no sistema L = Lf+ (λ/µ )

tempo médio que o cliente espera na fila Wf = Lf/λ

Tempo médio que o cliente espera no sistema W = L/λ

Fonte: Adaptado de Moreira, 2010

Importante mencionar que se ρ < 1 então não existe congestionamento no sistema, caso ρ = 1 então o sistema encontra-se em estado de equilíbrio e caso ρ >1, existe um congestionamento no mencionado sistema.

2.2.5 Simulação

De acordo com Prado (2004), a teoria das filas por sua natureza pode-se considerar como um método analítico que aborda o assunto por meio de fórmulas matemáticas, e a simulação é uma técnica que usando o computador procura montar um modelo que melhor represente o sistema em estudo.

Portanto através da simulação, pode-se reproduzir sistemas de filas que são de alta complexidade para o entendimento unicamente através de modelos matemáticos. A grande vantagem do uso de simuladores é a possibilidade de obter dados sobre o comportamento de sistemas sem a necessidade de construir ou modificar os existentes (PAULO, 2008).

Os softwares de simulação podem ser de uso geral ou voltados para aplicações específicas, tais como transporte, manufatura, serviços, telecomunicações, reengenha-ria e outros. Os principais pacotes de simulação de uso geral são o Arena, ProModel, FlexSim, Micro Saint, Extend, AnyLogic, dentre outros (SALIBY, 1997).

(34)

2.3 Software Arena

Neste trabalho foi utilizado o software Arena para a realização da simulação, uma vez que o mesmo utiliza a linguagem de simulação SIMAN, a qual permite que, através da seleção de módulos, com propriedades similares aos processos a serem modelados, pode-se obter as características encontradas no sistema real.

O Arena é um software de simulação bastante conhecido na comunidade acadê-mica e vem sendo muito utilizado em pesquisas sobre a teoria das filas, tendo em vista a sua facilidade de implementação bem como a disponibilidade de versões voltadas para a comunidade acadêmica.

Além disso, o Arena possui grande nível de riqueza na geração dos seus relatórios, o que permite ao usuário obter informações precisas sobre todas as etapas do sistema modelado, tais como aquelas já mencionados neste capitulo como: tempo médio do cliente no sistema, taxa de ocupação, quantidade de clientes em determinado momento etc.

Outra vantagem que indicou a escolha deste software para a simulação neste trabalho, foi o fato do Arena, através do módulo Input Analyser, utilizar-se de dados estocásticos para a simulação, ou seja, não são utilizados valores médios como parâ-metros do modelo, e sim distribuições estatísticas geradas pelo próprio Arena, a partir dos dados obtidos no sistema real.

Segundo Freitas (2001), o Input Analyser tem o propósito de auxiliar o analista nas tarefas de tratamento dos dados brutos, identificação da distribuição de probabili-dades por meio de testes de aderência e estimação de seus parâmetros, que é a sua principal função. Estas análises visam identificar e avaliar as melhores opções para as distribuições de probabilidades. O resultado é uma expressão que pode ser usada nos modelos implementados no Arena.

O software Arena ainda possui alguns módulos que realizam testes de ade-rência10, Qui-Quadrado e Kolmogorov-Smirnov, permitindo ao usuário verificar se há algum erro associado a aproximação dos dados coletados com a distribuição sugerida.

Ainda de acordo com Freitas (2001), o teste Qui-Quadrado testa se as distribui-ções estão casando perfeitamente, isto é, se não existem diferenças entre a distribuição teórica e a observada. Quanto maior o valor calculado de x², maior a discrepância entre as distribuições. O teste KS baseia-se na comparação das probabilidades acumuladas das distribuições teórica e observada, para concluir sobre a hipótese em teste.

Para a implementação da modelagem do sistema de inspeção profunda de pacotes proposto neste trabalho, foram utilizados 8 módulos, de acordo com a estrutura 10 Teste que visa verificar a adequabilidade de um modelo probabilístico a um conjunto de dados

(35)

já descrita do sistema de IPP. O capítulo 5 trará mais riqueza de detalhes acerca da implementação do sistema de inspeção profunda de pacotes através do simulador Arena.

2.4 Trabalhos Relacionados

Nas próximas três subseções serão apresentados os trabalhos mais relevantes relacionados a inspeção profunda de pacotes, modelagem baseada em medições e teoria das filas em sistemas de rede.

2.4.1 Sistemas de Inspeção Profunda de Pacotes

Nos últimos anos muitas pesquisas acerca de sistemas de inspeção profunda de pacotes foram desenvolvidas, e embora haja muitos avanços, ainda existe a ne-cessidade de melhorias, especialmente devido ao constante aumento da velocidade dos links de internet e das redes locais, o que ocasiona a necessidade de meios para mensurar e identificar gargalos nos sistemas de IPP. Desta forma são apresentados alguns trabalhos relacionados ao tema desta pesquisa.

Em Cascarano et al. (2009), foi proposta uma avaliação do custo computacional de um classificador de tráfego, com relação a classificadores estatísticos11. Além de realizar a comparação descrita, o autor propôs um modelo para classificadores de tráfego que utilizam a inspeção profunda de pacotes. Segundo o autor esses sistemas e classificadores estatísticos se tornam equivalentes com relação ao custo computacional necessário. Entretanto Donato, Pescapé e Dainotti (2014), propôs um novo modelo para classificadores de inspeção profunda de pacotes de forma a fornecer uma estrutura padrão a ser seguida por tais classificadores com o intuito de permitir a mensuração e comparação entre diversas ferramentas de inspeção profunda de pacotes.

O trabalho apresentado em Bujlow, Carela-Español e Barlet-Ros (2015) realizou uma comparação de diversos parâmetros das ferramentas de inspeção profunda de pacotes mais conhecidas da literatura acadêmica, tanto ferramentas comerciais como de ferramentas de código aberto. Em Megyesi, Szabó e Molnár (2015), foi proposto a criação de um tráfego sintético misto, ou seja, geração de tráfego com características semelhantes ao de tráfego real, para a realização de testes em sistemas classificadores de tráfego sem a preocupação com questões de privacidade.

Embora que, comparar sistemas de inspeção profunda de pacotes, seja fun-damental para escolha da ferramenta adequada a solução de determinado problema, muitas pesquisas relacionadas a esses sistemas visam otimizar o desempenho destes, 11 Os métodos estatísticos são apropriados quando o foco é evidenciar tendências no espaço amostral

(36)

como a pesquisa realizada em Zhan e Wang (2015), na qual propõe a utilização de inspeção profunda de pacotes em plataformas many-core12, com o objetivo de atingir o máximo desempenho em altas taxas de transmissão. Bem como em Fusco e Deri (2010), que apresenta uma estrutura multi-core para possibilitar a classificação de tráfego em altas velocidades. Ou mesmo os trabalhos realizados em Hsieh, Vespa e Weng (2016), o qual utiliza de GPU para realizar a classificação dos pacotes e em Lee, Lin e Chen (2015), que sugere um algoritmo híbrido para inspeção profunda de pacotes utilizando CPU/GPU, visando otimizar o processo de classificação.

Entretanto a utilização dessas técnicas eleva o custo financeiro para implemen-tação de sistemas de inspeção profunda de pacotes, desta forma algumas pesquisas buscam alcançar um alto desempenho na classificação do tráfego utilizando computa-dores mais viáveis economicamente, como o trabalho realizado em Moreno et al. (2015), que descreve um passo a passo de como realizar a captura de pacotes a altas taxas de transmissão utilizando-se de commodity hardware. Bem como a pesquisa realizada em Danelutto et al. (2014), a qual também se utilizando de commodity hardware atingiu um razoável grau de eficiência em links de até 10 Gbit. Desta forma as mencionadas pesquisas enveredam para a obtenção de desempenho e confiabilidade, através de hardwares robustos ou de equipamentos mais baratos. Ficando clara a necessidade de meios que visem mensurar e modelar o comportamento desses sistemas.

2.4.2 Modelagem e medição em sistemas de rede

Nesse contexto, surge a necessidade da criação de um modelo que represente sistemas de inspeção profunda de pacotes de forma a facilitar o entendimento desses sistemas e permita a realização de simulações que possibilitem, previamente, verificar o comportamento destes.

Segundo Penha, Freitas e Martins (2004), a modelagem de um sistema compu-tacional facilita e justifica o prosseguimento de novas etapas do projeto, e a medição é uma coleta de dados para avaliação de resultados. Realizar uma modelagem baseando-se em medições permite criar modelos com maior grau de confiabilidade e baseando-segurança. Desta forma, o autor propôs uma modelagem computacional usando redes de Petri com o intuito de difundir essas redes como alternativa no processo de avaliação do comportamento e desempenho de um sistema computacional. Por se tratar de um modelo analítico, as redes de Petri podem representar com bastante propriedade um sistema computacional, uma vez que tais redes possuem um conjunto de elementos ca-paz de descrever as diversas partes destes sistemas. Embora as redes de Petri tenham se apresentado como um ótimo recurso para modelagem de sistemas computacionais outro método analítico foi utilizado nesta dissertação.

(37)

Como já mencionado a modelagem e simulação são grandes aliados na avali-ação de um sistema, embora que, alguns sistemas exijam maior grau de dificuldade nesta tarefa. Pensando nisso várias pesquisas focam em ferramentas que visam fa-cilitar tal processo, como o desenvolvido em Calheiros et al. (2011) e Buyya, Ranjan e Calheiros (2009) no qual apresentam uma ferramenta, a CloudSim, que permite a modelagem e simulação em sistemas de computação em nuvem.

O processo de simulação necessita se aproximar o máximo possível do ambiente real, assim na maioria dos casos o simulador precisa obter dados que representem os eventos, muitas vezes aleatórios, do ambiente a ser simulado. Desta forma métodos estocásticos são utilizados, ou seja, métodos que utilizam de teorias probabilísticas para representar os eventos daquele sistema. Por exemplo, em Longo et al. (2015) o autor propôs um modelo estocástico para avaliar a confiabilidade e disponibilidade de redes definidas por software, ou em Liu et al. (2009), onde um modelo foi proposto para calcular o tempo médio de entrega de conteúdo em redes centradas na informação, utilizando cenários com variado número de caches.

A primeira fase para a realização de uma modelagem é a medição, que, como já mencionado, é a coleta dos dados que serão analisados. Especificamente com relação ao tráfego de rede, essa tarefa torna-se mais difícil devido à grande variedade e quantidade de pacotes que transitam em uma rede de computadores. Desta forma alguns trabalhos vêm sendo desenvolvidos para direcionar o processo da medição, como o realizado em Ismail e Zin (2008) que apresenta uma abordagem para a medição e estimativa da utilização do tráfego de rede entre nós de rede em ambiente heterogêneo. Da mesma forma em Liu et al. (2009) é apresentado um estudo acerca da medição e modelagem do tráfego de IPTV, bem como a simulação do modelo criado utilizando o software Networking Simulator 2.

2.4.3 Teoria das filas em sistemas de rede

A teoria das filas vem se mostrando um ótimo método analítico para a realização de modelagem de sistemas em rede, uma vez que as características pertinentes a esse método analítico são similares ao comportamento do tráfego de rede, possuindo che-gada, processamento e saída. Em Daigle (2005), o autor já demonstrava a possibilidade de utilizar a teoria das filas, de forma satisfatória, em sistemas de telecomunicação. Entretanto atualmente esse método vem sendo amplamente aplicado em redes de computadores.

Assim, vários trabalhos foram realizados com o intuito de demonstrar a eficácia em se utilizar a teoria das filas para medir desempenho em redes de computadores. Por exemplo em Kamali et al. (2009), onde o autor, utilizando a teoria das filas, realizou a avaliação da eficiência e a confiança das operações de uma rede heterogênea, de

(38)

forma a entender previamente os motivos do congestionamento do tráfego. Ou em Ray e Sahoo (2011), no qual foi apresentado como construir um modelo de análise do tráfego de rede utilizando a teoria das filas, possibilitando antecipar a taxa de congestionamento do tráfego da rede através de fórmulas matemáticas.

Contudo, ainda que a teoria das filas seja amplamente utilizada para medir desempenho e prever congestionamentos de tráfego de redes, em Singh, Ghrera e Chaudhuri (2010) o autor utilizou-se da teoria das filas para desenvolver um modelo ca-paz de detectar um ataque de negação de serviço, baseando-se nos padrões coletado do sistema. Demonstrando mais uma vez toda a eficiência deste modelo analítico.

Como verificado através do levantamento do estado da arte, não há trabalho relacionado a modelagem baseado em medição de sistemas de inspeção profunda de pacotes. Assim esta pesquisa propõe um estudo detalhado de um sistema de IPP, a geração de um modelo probabilístico para representar tal sistema e a implementação do modelo em um simulador. Com isso será possível avaliar o comportamento deste sistema em diferentes cenários.

(39)

3 Análise e Modelagem de Sistemas

Este capítulo apresenta os conceitos referentes à medição, análise e modelagem dos sistemas de inspeção profunda de pacotes. Ainda serão apresentados concei-tos acerca de variáveis aleatórias, funções de densidade de probabilidade, modelos estatísticos, distribuição de probabilidades e estimação de parâmetros.

3.1 Avaliação de Desempenho

Para a realização de uma boa avaliação de desempenho, é necessário um apro-fundado conhecimento do sistema a ser avaliado, bem como uma criteriosa escolha da metodologia a ser utilizada. Segundo Jain (1990) alguns passos comuns às avaliações de desempenho podem ser seguidos para evitar erros frequentes, tais como:

• Definir os objetivos e o sistema a ser avaliado: Definir o que será estudado; • Listar os serviços e as saídas: Identificar os serviços oriundos do sistema a ser

avaliado, bem como as saídas geradas por ele;

• Selecionar métricas: Definir os critérios que serão utilizados na avaliação do sistema;

• Listar os parâmetros: Identificação dos parâmetros que afetam o desempenho do sistema;

• Selecionar os fatores: Os parâmetros são divididos entre os que variam durante a avaliação do sistema e os que não variam. Os parâmetros que variam são conhecidos como fatores e seus valores são chamados de níveis;

• Selecionar a técnica de avaliação: Basicamente existem três técnicas de avalia-ção, mediavalia-ção, modelagem e simulação;

• Selecionar a carga do sistema: Consiste em definir o nível de estresse que será utilizado para a avaliação do sistema;

• Projetar os experimentos: Após a obtenção dos parâmetros é preciso definir qual a sequência de experimentos oferece a maior quantidade de informação com menos esforços;

• Analisar e interpretar os resultados; • Apresentar os resultados.

Referências

Documentos relacionados

a) “O velho dá um passo à frente, três passos atrás, dois passos à frente” _________________. b) O velho estava desorientado

Para que o estudo seja possível, houve um levantamento bibliográfico sobre o cenário do sistema produtivo da saúde no Brasil, tendo em vista a proteção

Os autores relatam a primeira ocorrência de Lymnaea columella (Say, 1817) no Estado de Goiás, ressaltando a importância da espécie como hospedeiro intermediário de vários parasitos

Já em maio, além do pagamento da data- -base para todos e todas em parcela única, contrariando a proposta de parcelamento do governo, os(as) agentes educacionais do Paraná

da quem praticasse tais assaltos às igrejas e mosteiros ou outros bens da Igreja, 29 medida que foi igualmente ineficaz, como decorre das deliberações tomadas por D. João I, quan-

Apresenta a Campanha Obra-Prima, que visa a mudança comportamental por meio da conscientização diante de algumas atitudes recorrentes nas bibliotecas da

[r]

 Certidão de Distribuições ações Trabalhistas de competência da Justiça do Trabalho, referente a Ações em andamento nominal a empresa, (não será aceito a