UNIVERSIDADE DO VALE DO RIO DOS SINOS
CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
CURSO DE INFORMÁTICA - HABILITAÇÃO EM ANÁLISE DE SISTEMAS
Implementação de Mecanismos de
Busca, Cópia e Reuso de Traços de
Protocolos na Plataforma de
Gerenciamento Trace
por
RODRIGO ARGENTA
Prof. Dr. Luciano Paschoal Gaspary
Orientador
São Leopoldo, novembro de 2002.
2
Sumário
Lista de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
7
7
1.1
1.2
1.3
1.4
Contextualização . . . . . . . . . . .
Motivação e definição do problema
Objetivos . . . . . . . . . . . . . . . .
Organização do trabalho . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 A plataforma Trace . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1 A linguagem PTSL . . . . . . . . . . . . . . . .
2.1.1
Graphical PTSL . . . . . . . . . . . . . . . . . .
2.1.2
Textual PTSL . . . . . . . . . . . . . . . . . . .
2.2 A arquitetura . . . . . . . . . . . . . . . . . . .
2.3 A aplicação de gerenciamento . . . . . . . . .
2.3.1
Processo convencional de especificação de traços
2.3.2
Modelo de dados da aplicação de gerenciamento
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
8
9
11
12
12
17
3 Mecanismos incorporados à aplicação de gerenciamento 18
3.1
3.2
3.3
Mecanismo de busca de traços . . . . . . . . . . . . . . . . . . . . . 18
Mecanismo de cópia de traços . . . . . . . . . . . . . . . . . . . . . 20
Mecanismo de reuso de traços . . . . . . . . . . . . . . . . . . . . . 21
4 Experimentação dos mecanismos implementados . . . . 25
4.1
4.2
Metodologia utilizada . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Resultados obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.1
5.2
Contribuições do trabalho . . . . . . . . . . . . . . . . . . . . . . . 28
Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Anexo 1 Roteiro de experimentação . . . . . . . . . . . . . . . 30
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3
Lista de Figuras
FIGURA 1.1 – Requisição de uma página web inválida . . . . . . . . . . . . .
FIGURA 1.2 – Representação gráfica de um traço . . . . . . . . . . . . . . . .
FIGURA 1.3 – Traço de requisições HTTP com retorno de página não encontrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
2.1 – Formato de uma especificação T-PTSL . . . . . . . . .
2.2 – Componentes da arquitetura Trace . . . . . . . . . . .
2.3 – Interface do mecanismo de gerenciamento de traços . .
2.4 – Interface de identificação de traços . . . . . . . . . . .
2.5 – Interface de inserção de campos de mensagens . . . . .
2.6 – Interface de detalhamento de campos de mensagens . .
2.7 – Interface de inserção de mensagens . . . . . . . . . . .
2.8 – Interface de detalhamento de mensagens . . . . . . . .
2.9 – Interface de inserção de agrupamentos de mensagens .
2.10 – Interface de detalhamento de agrupamentos . . . . . .
2.11 – Interface de visualização da máquina de estados . . .
2.12 – Interface de transições da máquina de estados . . . . .
2.13 – Interface de criação de estados . . . . . . . . . . . . .
2.14 – Interface de visualização integral das caracterı́sticas do
2.15 – Modelo E-R original da aplicação de gerenciamento .
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
3.1
3.2
3.3
3.4
3.5
3.6
FIGURA
FIGURA
FIGURA
FIGURA
–
–
–
–
–
–
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
traço
. . . .
Interface do mecanismo de busca de traços . . . . . . . .
Utilização do mecanismo de busca com a palavra “http”
Utilização do mecanismo de cópia . . . . . . . . . . . . .
Traço criado com o mecanismo de reuso . . . . . . . . . .
Utilização do mecanismo de reuso . . . . . . . . . . . . .
Modelo E-R da aplicação de gerencimento utilizado para
portar o mecanismo de reuso . . . . . . . . . . . . . . . .
3.7 – Implementação das listas encadeadas . . . . . . . . . . .
3.8 – Interface alterada para suportar reuso de traços . . . . .
3.9 – Máquina de estados suportando reuso (Layer 0 ) . . . . .
3.10 – Máquina de estados suportando reuso (Layer 1 ) . . . .
. .
. .
. .
. .
. .
su. .
. .
. .
. .
. .
5
6
7
10
11
12
12
13
13
13
14
14
14
15
15
16
16
17
.
.
.
.
.
18
19
20
22
22
.
.
.
.
.
23
23
23
24
24
FIGURA 4.1 – Tempo gasto pelos usuários para a realização completa do roteiro
FIGURA 4.2 – Tempo dispendido pelos usuários do grupo 1 na criação de
cada um dos traços . . . . . . . . . . . . . . . . . . . . . . . .
FIGURA 4.3 – Tempo dispendido pelos usuários do grupo 2 na criação de
cada um dos traços . . . . . . . . . . . . . . . . . . . . . . . .
FIGURA 4.4 – Taxa de utilização dos mecanismos pelos usuários do grupo 2 .
26
26
26
27
4
Resumo
O crescimento das redes de computadores tem sido uma constante nos últimos
anos, bem como o aumento do número de protocolos e aplicações que nelas trafegam.
Esse fato tem imposto alguns desafios para os gerentes de rede quanto ao monitoramento do tráfego, pois cada vez mais protocolos novos ou desconhecidos trafegam
livremente, causando problemas como congestionamento e invasões por indivı́duos.
Com a explosão do número de protocolos disponı́veis passa a ser crı́tica a definição dos cenários a serem monitorados. A plataforma Trace foi desenvolvida para
gerenciamento de protocolos de alto nı́vel e uma de suas funcionalidades é a criação
de traços de protocolos (cenários). O volume de traços criados na plataforma tende
a crescer muito com o passar do tempo, fazendo com que a busca e a identificação
de traços tornem-se tarefas gradativamente mais dispendiosas. Soma-se a esse problema a ausência na plataforma de mecanismos que permitam agilizar o processo
de especificação de novos traços, obrigando o gerente da rede a iniciar, sempre “do
zero”, uma nova especificação. Para amenizar esses problemas, foi realizada a implementação de mecanismos de busca, cópia e reuso de traços na plataforma de
gerenciamento Trace, bem como um estudo de caso com usuários da plataforma
identificando alguns benefı́cios proporcionados pela implementação dos mecanismos
desenvolvidos.
Palavras-chave: Gerenciamento de redes de computadores, busca, reuso.
5
1
1.1
Introdução
Contextualização
A plataforma Trace foi desenvolvida para o gerenciamento de protocolos de
alto nı́vel, serviços e aplicações em rede [GAS 2002a, TRA 2002]. Uma das funcionalidades primárias da plataforma é a criação de traços (interações entre um ou mais
protocolos de alto nı́vel), os quais são especificados utilizando-se a linguagem PTSL
(Protocol Trace Specification Language)[GAS 2001a, GAS 2001b, GAS 2001c]. A
linguagem PTSL baseia-se no conceito de máquinas de estados finitos, permitindo
que sejam modeladas seqüências de trocas de pacotes que, quando observados na
rede, indicam a ocorrência de eventos. Um traço representa essa troca de pacotes
(mensagens) entre duas estações interconectadas. Quando as mensagens especificadas em um traço são verificadas entre duas estações, fica caracterizada a ocorrência
deste traço. Por exemplo, quando se utiliza um navegador web para acessar alguma página é necessário o envio de uma requisição de uma página ou documento
ao servidor que possui o conteúdo desejado. Essa requisição é precedida por um
comando chamado GET, o qual significa que o usuário está requisitando ao servidor
que uma página seja visualizada em seu navegador. Para isso é enviado ao servidor
uma mensagem com um comando do tipo GET ./pagina.html. Se a requisição for
validada pelo servidor, a página será visualizada no navegador; caso contrário será
retornada uma mensagem com o código HTTP/1.1 400 indicando que a requisição
é inválida. A figura 1.1 ilustra o exemplo citado. Com a utilização da plataforma
Trace, a ocorrência desse e outros traços (definidos pelo gerente de rede) pode ser
monitorada. Essas informações podem então ser usadas para o gerenciamento de
falhas, configuração, contabilização, desempenho e segurança.
Mensagem “GET”
Web Browser
Servidor
Web
Retorno HTTP/1.1 400
FIGURA 1.1 – Requisição de uma página web inválida
Para criar um traço que verifique a situação da figura 1.1, é necessária a
criação de uma especificação que analise na rede as trocas de mensagens entre duas
estações, buscando nas mesmas as requisições GET e os códigos de retorno enviados
posteriormente pelo servidor. Quando um navegador receber o código de retorno
HTTP/1.1 400 após uma requisição GET, será verificada a ocorrência deste traço.
O traço ilustrado pela figura 1.2 descreve, através da linguagem PTSL, o
exemplo supracitado. Como pode ser observado, o traço possui um estado inicial
chamado idle que também possui uma transição de saı́da (GET) conectada ao estado
6
Traço “Requisição HTTP inválida”
GET
idle
2
Version: 1.0
Description: Acesso HTTP inválido
Key: HTTP, 400, inválido
Port: 80
Owner: Rodrigo Argenta
Last Update: Fri, 25 Sep 2002 21:45:00 GMT
HTTP/1.1 400
FIGURA 1.2 – Representação gráfica de um traço
2. O estado 2, por sua vez, se conecta de volta ao estado idle através de uma
transição de retorno (HTTP/1.1 400).
A plataforma Trace possui um agente de monitoração que utiliza as especificações definidas em um traço para contabilizar a sua ocorrência no tráfego de rede.
Considerando que o agente esteja programado para monitorar a ocorrência do traço
ilustrado na figura 1.2, a sua contabilização ocorre quando uma mensagem GET for
verificada na rede, fazendo com que a máquina de estados evolua do estado idle para
o estado 2. De forma análoga, quando uma mensagem HTTP/1.1 400 for verificada
entre os mesmos pares de estações que originaram a mensagem inicial, a máquina
de estados evolui do estado 2 para o estado idle que neste caso também é o estado
final. Com a máquina de estados chegando ao seu fim, a ocorrência desse traço é
contabilizada em uma base de dados que será consultada futuramente pela estação
de gerenciamento.
1.2
Motivação e definição do problema
Na seção anterior foi citado que uma das funcionalidades da plataforma é a
criação de traços. Depois de criados, esses traços ficam armazenados em uma base
de dados, onde ficam disponı́veis para manutenção, consulta e exclusão. Com o
passar do tempo o volume de traços criados na plataforma tende a crescer significativamente, e a busca e a identificação de traços tende a se tornar uma tarefa
dispendiosa. Por exemplo, quando o gerente de rede deseja verificar se determinado
traço tem o objetivo de analisar requisições HTTP inválidas, ele deve procurar uma
a uma as especificações previamente cadastradas que contenham as caracterı́sticas
ilustradas na figura 1.2. Esta tarefa pode tomar um tempo elevado se a base de
traços for relativamente grande e possuir traços com caracterı́sticas semelhantes.
Além desse problema, o processo de especificação de traços não permite o
reaproveitamento de especificações desenvolvidas anteriormente, mesmo que exista
na base de dados uma especificação praticamente igual a que se deseja criar. Se na
base de traços existir uma especificação que possua caracterı́sticas que podem ser
reutilizadas em um novo traço, este deverá ser criado a partir de seu ponto inicial,
não existindo nenhum meio de copiar ou reusar a especificação já existente. Por
exemplo, o traço “Requisição HTTP página não encontrada” ilustrado na figura
1.3 é praticamente igual ao traço ilustrado na figura 1.2, alterando-se somente a
7
mensagem HTTP/1.1 400 para HTTP/1.1 404. No entanto, o processo tradicional
de especificação de traços requer que esse novo traço seja criado a partir de seu
ponto inicial.
Traço “Requisição HTTP página não encontrada”
GET
idle
2
Version: 1.0
Description: Acesso HTTP com página não
encontrada
Key: HTTP, 404, página
Port: 80
Owner: Rodrigo Argenta
Last Update: Fri, 26 Sep 2002 20:48:00 GMT
HTTP/1.1 404
FIGURA 1.3 – Traço de requisições HTTP com retorno de página não encontrada
1.3
Objetivos
Diante dessa problemática, este trabalho teve como objetivos implementar
mecanismos de busca, cópia e reuso de traços e realizar um experimento junto a
usuários da plataforma, procurando identificar alguns benefı́cios proporcionados pela
implementação dos mecanismos.
1.4
Organização do trabalho
O trabalho está organizado da seguinte forma: o capı́tulo 2 descreve a plataforma Trace incluindo a linguagem PTSL, a arquitetura da plataforma e a aplicação
de gerenciamento. O capı́tulo 3 detalha o projeto e a implementação dos mecanismos de busca, cópia e reuso de traços. O capı́tulo 4 apresenta uma validação das
implementações realizadas na plataforma. O capı́tulo 5 encerra o trabalho com as
conclusões obtidas no desenvolvimento deste trabalho e com perspectivas de trabalhos futuros.
8
2
A plataforma Trace
O motivo deste trabalho foi contextualizado no capı́tulo anterior juntamente
com alguns conceitos de funcionamento da plataforma Trace. Como já explicitado, a
plataforna foi desenvolvida para o gerenciamento de protocolos de alto nı́vel, serviços
e aplicações em rede. O gerenciamento e o monitoramento dos protocolos é feito
através de elementos que auxiliam no funcionamento da plataforma como gerentes
intermediários, agentes de monitoração e agentes de ação, que são administrados
por um gerente de rede através de uma aplicação de gerenciamento. Os agentes de
monitoração utilizam as especificações PTSL para realizar a monitoração e contabilização de traços, bem como a execução de tarefas de configuração, gerenciamento
de falhas, desempenho e segurança.
Neste capı́tulo serão apresentados os componentes que fazem parte desta plataforma. Na seção 2.1 será abordada a linguagem PTSL. Na seção 2.2 a arquitetura
Trace será abordada e na seção 2.3 a aplicação de gerenciamento.
2.1
A linguagem PTSL
A linguagem PTSL baseia-se no conceito de máquina de estados finitos, possui
componentes gráficos e textuais e, por essa razão, foi dividida em Graphical e Textual PTSL. As linguagens não possuem equivalência. A linguagem textual permite
a representação completa de um traço, incluindo a especificação da máquina de estados e as mensagens que provocam as transições. A linguagem gráfica, por sua vez,
equivale a um sub-conjunto da textual, oferecendo a possibilidade de representar
pictoricamente a máquina de estados e, em um alto grau de abstração, de identificar
as transições (mensagens). É possı́vel especificar um traço completo, de forma textual, sem fazer o uso de Graphical PTSL, mas o contrário não é possı́vel, uma vez
que não há como mapear toda a sintaxe textual para sintaxe gráfica [GAS 2002b].
Especificações PTSL alimentam agentes de monitoração que capturam pacotes do segmento de rede onde se encontram, observando a ocorrência dos traços.
Dessa forma, nas especificações não é necessário definir a origem e o destinatário
do traço. Todas as ocorrências do traço entre quaisquer pares de estações serão
devidamente armazenadas e contabilizadas. Mais informações sobre esse processo
são apresentadas na seção 2.2, que descreve a arquitetura Trace.
2.1.1
Graphical PTSL
Conforme já mencionado, Graphical PTSL (G-PTSL) permite a definição parcial de um traço de protocolo. Através de uma máquina de estados, o gerente da rede
pode criar uma especificação para monitorar todo ou apenas parte de um protocolo,
ou ainda, interações abrangendo mais de um protocolo [MEN 2002].
A notação gráfica oferece um construtor onde são incluı́das informações sobre o
traço, que são relevantes para a catalogação e o controle de versão das especificações.
As informações armazenadas para um traço são:
• Version: versão da especificação;
• Description: breve comentário a respeito do traço;
9
• Key: palavras-chave relacionadas ao traço;
• Port: indica a porta TCP ou UDP do protocolo a ser monitorado;
• Owner : identificação do indivı́duo que especificou o traço;
• Last Update: data e hora da última atualização da especificação.
Os elementos básicos que fazem parte da especificação de um traço são:
• Estado: descreve o estado atual de um processo cliente;
• Mensagem cliente: responsável por fazer o processo cliente mudar de estado;
essa mensagem é enviada pelo próprio processo cliente (ex: mensagem GET
do traço ilustrado na figura 1.2);
• Mensagem servidor : responsável por fazer o processo cliente mudar de estado;
essa mensagem é enviada pelo processo servidor (ex: mensagem HTTP/1.1
400 do traço ilustrado na figura 1.2);
• Agrupamento: quando duas ou mais mensagens distintas podem causar a
transição de um mesmo estado para outro, elas são agrupadas. Neste caso,
a transição ocorrerá se qualquer uma das mensagens agrupadas for observada
na rede.
Um traço inicia sempre a partir de um estado inicial denominado idle. A
partir daı́ podem ser criados outros n estados, desde que os mesmos sejam sempre
atingidos por alguma mensagem ou agrupamento (não é permitida a criação de
estados inalcançáveis). O traço encerra no estado final que é representado por dois
cı́rculos concêntricos.
Os estados são representados por cı́rculos identificados; as mensagens do cliente são representadas por setas contı́nuas e as mensagens oriundas do servidor são
representadas por setas pontilhadas.
Os textos que identificam as mensagens ou agrupamentos indicam, em um
alto grau de abstração, os pacotes que precisam ser observados para que a máquina
de estados evolua. Na representação gráfica, contudo, não é possı́vel descrever em
detalhe as propriedades que o pacote precisa ter para causar a transição. As figuras
1.2 e 1.3 ilustram a representação gráfica de um traço em G-PTSL.
2.1.2
Textual PTSL
Como já comentado na inı́cio desta seção, a linguagem Graphical PTSL (GPTSL) é um subconjunto da linguagem Textual PTSL (T-PTSL), não representando
em detalhes todas as caracterı́sticas de um traço. A linguagem T-PTSL pode representar um traço de forma detalhada, especificando-se todas as caracterı́sticas
necessárias para que a máquina de estados evolua.
A figura 2.1 ilustra o formato de uma especificação em T-PTSL. O exemplo
usado é o mesmo que foi ilustrado na figura 1.2. A especificação de um traço inicia
com a palavra-chave Trace e termina com EndTrace (linhas 1 e 42). De forma
análoga à notação gráfica, num primeiro momento o gerente deve informar o nome
do traço e, opcionalmente, os campos Version, Description, Key, Port, Owner e
Last Update (linhas 3 a 8). Em seguida, a especificação é dividida em três seções:
10
MessagesSection (linhas 10 a 23), GroupsSection (linhas 25 a 27) e StatesSection
(linhas 29 a 40).
1
Trace "Requisiç~
ao HTTP inválida"
2
3
4
5
6
7
8
Version: 1.0
Description: Acesso HTTP com resposta 400
Key: HTTP, 400, inválida
Port: 80
Owner: Rodrigo Argenta
Last Update: 2002-09-30 19:54:41
9
10
MessagesSection
11
12
13
14
15
Message "GET"
MessageType: client
FieldCounter Ethernet/IP 0 GET "Requisiç~
ao de uma página Web"
EndMessage
16
17
18
19
20
21
Message "HTTP/1.1 400"
MessageType: server
FieldCounter Ethernet/IP 0 HTTP/1.1 "Vers~
ao do Protocolo"
FieldCounter Ethernet/IP 1 400 "Código de retorno"
EndMessage
22
23
EndMessagesSection
24
25
GroupsSection
26
27
EndGroupsSection
28
29
30
StatesSection
FinalState idle
31
32
33
34
State idle
"GET" GotoState 2
EndState
35
36
37
38
State 2
"HTTP/1.1 400" GotoState idle
EndState
39
40
EndStatesSection
41
42
EndTrace
FIGURA 2.1 – Formato de uma especificação T-PTSL
Em MessagesSection são definidas as mensagens que causarão a evolução do
traço. Quando duas ou mais mensagens causam a transição de um mesmo estado
para outro, é possı́vel agrupá-las, tornando a especificação mais clara. Esses agrupamentos são definidos na seção GroupsSection. Por fim, na seção StatesSection é
definida a máquina de estados que representa o traço.
A evolução da máquina de estados ocorre quando um pacote com campos
idênticos aos especificados em uma mensagem cliente (client) ou servidor (server )
11
é observado na rede. No exemplo apresentado na figura 2.1, a máquina de estados
evolui do estado idle para o estado 2 ao observar uma mensagem GET. Nesse
caso, é preciso identificar apenas um campo, o GET, que pode ser feito indicando
a posição do mesmo (0) a partir do inı́cio do campo de dados do protocolo TCP. A
máquina de estados continua sua evolução quando uma mensagem HTTP/1.1 400
é observada entre os mesmos pares de estações que originaram a mensagem GET.
Assim a máquina de estados evolui para o estado idle fazendo com que o traço chegue
ao seu fim, contabilizando a sua ocorrência no agente de monitoração. Informações
detalhadas sobre a linguagem podem ser obtidas em [GAS 2002a, GAS 2002b].
2.2
A arquitetura
A arquitetura de gerenciamento Trace é uma infra-estrutura centralizada de
gerenciamento de redes para, através de um modelo em três camadas, suportar o
gerenciamento hierárquico de protocolos de alto nı́vel, serviços e aplicações em rede
[GAS 2002b]. A figura 2.2 ilustra os componentes da arquitetura Trace. A arquitetura oferece mecanismos para que, a partir de uma estação de gerenciamento, seja
possı́vel a delegação de tarefas de gerenciamento (scripts em Tcl) a gerentes intermediários que, por sua vez, interagem com agentes de monitoração e agentes de ação
para concretizá-las. Especificações PTSL são usadas pelos gerentes intermediários
para programar os agentes de monitoração, que passam a observar a ocorrência
dos traços. De posse de informações obtidas através da monitoração, os gerentes
intermediários podem requisitar a agentes de ação a execução de procedimentos
(scripts em Tcl, Java or Perl), viabilizando a automação de diversas tarefas de gerenciamento. A arquitetura apresenta ainda mecanismos de notificação (traps) para
que o gerente intermediário possa sinalizar a ocorrência de eventos signaficativos à
estação de gerenciamento. Trata-se de uma arquitetura hierárquica ou parcialmente
distribuı́da, onde existem relações de subordinação entre os componentes.
Estação de gerenciamento
banco de
dados
(PTSL,Java,
Perl, Tcl)
browser
(1)
servidor
web
(2)
PHP
(4)
Agente de monitoração
(3)
(20)
scripts
(PHP)
(11)
trap
notifier
agente
SNMP
(10)
(5)
(14)
(7)
(9)
agente
SNMP
MIB
Script
(12)
monitor PTSL
repositório
scripts
(PTSL)
(13)
MIB
RMON2
(19)
(17)
Agente de ação
(8)
scripts
(Java, Perl, Tcl)
(15)
agente (16)
SNMP
MIB
Script
Interpretador
Java, Perl , Tcl
MIB
Script
interpretador
Java, Perl , Tcl
(6)
(18)
scripts
(Java, Perl, Tcl)
Gerente intermediário
FIGURA 2.2 – Componentes da arquitetura Trace
O foco do trabalho é a aplicação de gerenciamento, a partir da qual o gerente
de rede administra as especificações criadas para monitorar o tráfego da rede. A
aplicação será explicitada na próxima seção.
12
2.3
A aplicação de gerenciamento
As seções anteriores apresentaram a linguagem PTSL e a arquitetura de gerencimento Trace. A presente seção apresenta o processo de especificação de traços
realizado na aplicação de gerenciamento utilizado antes da implementação deste trabalho em sua sub-seção 2.3.1 e o modelo de dados utilizado na plataforma em sua
sub-seção 2.3.2.
2.3.1
Processo convencional de especificação de traços
O mecanismo de gerenciamento de traços da plataforma Trace está baseado em
uma interface web onde todas as tarefas de criação e administração são realizadas.
A figura 2.3 ilustra a interface inicial do mecanismo de gerenciamento de traços.
FIGURA 2.3 – Interface do mecanismo de gerenciamento de traços
O processo de especificação de traços utilizado antes do desenvolvimento desse
trabalho é composto de algumas etapas que devem ser seguidas sempre que uma
nova especificação deseja ser criada. Para ilustrar todo processo de criação de uma
nova especificação apresenta-se a simulação de criação do traço “Requisição HTTP
inválida”, já ilustrado anteiormente. O processo inicia com o desejo do usuário de
criar um novo traço, selecionando “New” identificado na figura 2.3. Após esta ação
o usuário é direcionado para a interface de identificação do traço ilustrada na 2.4
onde devem ser informadas caracterı́sticas como, nome, versão, descrição, porta e
palavras-chave.
FIGURA 2.4 – Interface de identificação de traços
13
O processo de especificação prossegue com o usuário optando por “Next” que
o leva para a próxima interface, que é ilustrada na figura 2.5, onde são informados
os campos que fazem parte de cada uma das mensagens utilizadas pelo traço na
máquina de estados. As caracterı́sticas de campos de mensagens como tipo, posição,
tamanho e outras são definidas na interface ilustrada na figura 2.6.
FIGURA 2.5 – Interface de inserção de campos de mensagens
FIGURA 2.6 – Interface de detalhamento de campos de mensagens
Realizada esta ação, o usuário passa para a interface ilustrada na figura 2.7
onde são definidas as mensagens do traço. Optando por “New”, identificado nessa
figura, o usuário é levado à interface ilustrada na figura 2.8, onde são definidas as
caracterı́sticas de cada uma das mensagens que compõem o traço. Nessa interface
são definidos os campos, inseridos na interface da figura 2.5, que farão parte de cada
uma das mensagens do traço.
FIGURA 2.7 – Interface de inserção de mensagens
14
FIGURA 2.8 – Interface de detalhamento de mensagens
A seguir podem ser inseridos os agrupamentos de mensagens. A interface está
ilustrada na figura 2.9 e o detalhamento de cada agrupamento é ilustrado na figura
2.10, onde são definidos o nome do agrupamento e as respectivas mensagens que
podem fazer parte dele. As mensagens que cada agrupamento possuiu foram prédefinidas na interface de inserção de mensagens. Para esse traço não foram criados
agrupamentos.
FIGURA 2.9 – Interface de inserção de agrupamentos de mensagens
FIGURA 2.10 – Interface de detalhamento de agrupamentos
15
A próxima etapa do processo é a criação da máquina de estados. Para isso,
depois de realizar os agrupamentos de mensagens, o usuário é levado à interface
ilustrada na figura 2.11. Nessa interface, o usuário pode criar os estados e suas
transições referenciando mensagens ou agrupamentos previamente definidos.
FIGURA 2.11 – Interface de visualização da máquina de estados
Selecionando “New” identificado na figura 2.11, o usuário tem acesso a interface de criação de transições, definindo os estados e as mensagens ou agrupamentos
que deverão fazer com que a máquina de estados evolua. Essa interface é ilustrada
na figura 2.12. O usuário tem a opção para criação dos estados ao selecionar “...”
identificado na figura 2.12. A interface de criação dos estados está ilustrada na figura
2.13.
FIGURA 2.12 – Interface de transições da máquina de estados
16
FIGURA 2.13 – Interface de criação de estados
Depois da criação dos estados e de suas transições o usuário retorna para
a interface ilustrada na figura 2.11, onde ele pode visualizar o traço através da
linguagem G-PTSL. Por fim, pode-se verificar todas as caracterı́sticas do traço na
última interface de criação de especificações que é ilustrada na figura 2.14, onde
todos os campos de mensagens, mensagens, agrupamentos de mensagens, transições
e estados podem ser visualizados na forma de tabelas. Após este último passo, o
traço está finalmente criado e pode ser usado.
FIGURA 2.14 – Interface de visualização integral das caracterı́sticas do traço
17
2.3.2
Modelo de dados da aplicação de gerenciamento
A aplicação de gerenciamento de traços foi construı́da em uma base de dados
MySQL e seu modelo E-R (Entidade-Relacionamento) está ilustrado na figura 2.15.
Essa base de dados utiliza a seguinte estrutura para modelar as especificações:
• protocol trace: armazena as descrições do traço como nome, descrição,
versão, última atualização e usuário;
• keyword: armazena as palavras-chave do traço;
• message field: armazena as definições dos campos que serão utilizados em
cada mensagem como encapsulamento, posição, tamanho e valor esperado para
o campo;
• message: armazena as definições de cada mensagem do traço como nome, tipo
e timeout;
• message message field: associa mensagens com os campos de mensagens;
• grouper: armazena agrupamentos de mensagens;
• message grouper: associa mensagens a agrupamentos de mensagens;
• state: armazena a máquina de estados;
• transition: armazena as ligações entre os estados, definindo os estados que
serão conectados, bem como as mensagens ou agrupamentos que deverão fazer
parte de cada uma dessas ligações.
FIGURA 2.15 – Modelo E-R original da aplicação de gerenciamento
18
3 Mecanismos incorporados à aplicação de gerenciamento
O capı́tulo 2 apresentou a linguagem PTSL e a aplicação de gerenciamento original da plataforma Trace com exemplos de utilização de traços. Os mecanismos de
busca, cópia e reuso implementados na plataforma são apresentados neste capı́tulo.
A seção 3.1 apresenta o mecanismo de busca de especificações, a seção 3.2 apresenta
o mecanismo de cópia e a seção 3.3 finaliza o capı́tulo apresentando o mecanismo
de reuso.
3.1
Mecanismo de busca de traços
Uma das problemáticas apresentadas na introdução deste trabalho é a busca
e identificação de especificações quando o volume de traços armazenados na plataforma cresce à medida que o tempo passa. Para prevenir-se desses problemas,
justifica-se a implementação de um mecanismo de busca e identificação de traços
através de suas caracterı́sticas.
O mecanismo de busca proposto para a plataforma Trace baseia-se em ferramentas existentes na web atualmente como alguns sites de busca já bastante
conhecidos como exemplo os sites Google[GOO 2002] e Yahoo[YAH 2002]. O mecanismo permite que uma palavra seja informada e a busca seja realizada na base de
traços conforme algumas opções pré-selecionadas. As buscas podem ser executadas
com base nas principais caracterı́sticas de um traço: nome do traço, descrição de
um campo de mensagem, nome de um agrupamento de mensagens, descrição do
traço, palavras-chave, nomes de mensagens e nomes de estados. A figura 3.1 ilustra
a interface inicial de gerenciamento de traços que já foi ilustrada na figura 2.3 no
capı́tulo 2, agora modificada para suportar o mecanismo de busca de traços.
FIGURA 3.1 – Interface do mecanismo de busca de traços
A figura 3.1 ilustra o mecanismo de busca com a execução de uma consulta
realizada na base de traços utilizando-se do nome do traço como opção de busca.
A palavra de busca pode ser especificada com a ajuda do caracter coringa “percentual”, como mostra o campo “Search” identificado na figura 3.1. O mecanismo
19
realiza a busca trazendo todos os traços que possuam a palavra digitada pelo usuário
em qualquer posição das caracterı́sticas selecionadas. No exemplo ilustrado na figura 3.1, a busca foi realizada utilizando a palavra “requisição” seguida do caracter
coringa e a opção name (nome do traço) selecionada. Dessa forma, a busca trará
para a interface somente os traços que contenham a palavra de busca no inı́cio de seu
nome. A utilização do caractere coringa é opcional. Também foi implementado o
botão Show All, o qual configura o mecanismo de busca para trazer à interface todos
os traços existentes na base, deixando o campo Search sem palavras e as opções de
busca sem marcações para a realização de novas buscas.
O mecanismo permite que mais de uma opção de busca seja selecionada, isto
é, várias opções podem ser selecionadas para que a busca da palavra informada seja
executada com uma abrangência maior dentro da base de traços.
A figura 3.2 ilustra um exemplo de utilização do mecanismo de busca com
duas opções selecionadas. Neste caso as opções fields e description foram usadas
juntamente com a palavra “http” entre os caracteres coringas.
FIGURA 3.2 – Utilização do mecanismo de busca com a palavra “http”
Visto o funcionamento da interface, é importante descrever a forma de como
esse mecanismo foi implementado. Para realizar as buscas, o mecanismo relaciona
cada uma das opções de busca com a base de dados da seguinte forma:
• name: realiza a busca no campo name da tabela protocol trace;
• fields: procura pela descrição dos campos de mensagens no campo description
da tabela message field;
• groupers: quando selecionada realiza a busca pelo nome dos agrupamentos de
mensagens através do campo name da tabela grouper;
• description: procura pela descrição do traço no campo description da tabela
protocol trace;
• keyword : procura pelas palavras-chave do traço no campo word da tabela
keyword;
20
• message: realiza uma busca pelos nomes de mensagens no campo name da
tabela message;
• state: procura pelo nome dos estados no campo name da tabela state.
3.2
Mecanismo de cópia de traços
Durante o processo de especificação de traços o gerente de rede pode vir a
desenvolver uma especificação que é muito próxima de especificações existentes na
base de traços. A partir dessa observação a implementação de um mecanismo de
cópia tornou-se importante para o processo de especificação de traços. Através desse
mecanismo o gerente de rede pode realizar uma cópia completa e modificar esta nova
especificação sem comprometer a especificação original.
A figura 3.3 ilustra o funcionamento do mecanismo de cópia implementado na
plataforma Trace. Para utilizar o mecanismo, o usuário deve selecionar o traço que
deseja copiar na interface inicial de gerencimento de traços ilustrada na figura 3.1 e
após selecionar Copy identificado na figura 3.3, que o levará à interface que possibilita o processo de cópia de especificações. Opcionalmente, para realizar a seleção do
traço a ser copiado, o usuário pode utilizar o mecanismo de busca realizando uma
procura pelo traço a ser selecionado.
FIGURA 3.3 – Utilização do mecanismo de cópia
No exemplo da figura 3.3 o traço “Requisição HTTP 401” foi selecionado para
ser copiado. Após selecionar Copy, a interface de cópia de traços será visualizada
pelo usuário com a sugestão de nome para o traço que será copiado. A interface dá
como sugestão o nome do traço original adicionado da palavra copy como ilustrado
na figura 3.3. Se o campo nome for omitido antes de realizar a cópia, o nome do
novo traço será o mesmo que foi sugerido pela interface.
Um exemplo prático de utilização desse mecanismo seria a cópia do traço
“Requisição HTTP inválida” ilustrado na introdução (figura 1.2) para a criação do
traço “Requisição HTTP página não encontrada” ilustrado, também na introdução,
na figura 1.3. Os dois traços possuem praticamente as mesmas caracterı́sticas, diferenciando apenas em um campo de mensagem. Assim cria-se um novo traço sem
necessidade de recriar uma especificação partindo do ponto zero.
21
Outra funcionalidade do mecanismo de cópia seria a de realizar cópias de segurança (backups) de traços dentro da própria base de dados da plataforma. Dessa
maneira traços existentes podem ser copiados e essa versão copiada pode ser modificada para a realização de testes ou outros tipos de experimentos. Assim a versão
original do traço fica intacta.
Visto o funcionamento da interface, é importante descrever a forma de como
esse mecanismo foi implementado. Para realizar a cópia de uma especificação, o
mecanismo cria novos registros em cada uma das tabelas da base de traços, alterando somente a chave primária dos registros inseridos. Dessa forma todas as
caracterı́sticas originais são copiadas com fidelidade para o novo traço.
3.3
Mecanismo de reuso de traços
Acredita-se que o mecanismo de cópia proporcione agilidade ao processo de
especificação de traços, considerando o simples fato de que um traço pode ser copiado através de uma única interface, minimizando o tempo de criação. A limitação
desse mecanismo, no entanto, é que, quando um traço copiado é alterado, o traço
original continua intacto, não existindo nenhuma vinculação entre o traço original e
o copiado. É possı́vel imaginar uma situação onde um traço que foi criado através do
mecanismo de cópia necessite de alterações que foram realizadas no traço original.
Com a existência do vı́nculo entre o traço original e o copiado as alterações se dariam
de forma automática. Assim o gerente de rede evitaria um trabalho redundante de
alterações de mensagens e campos de mensagens, estados e transições de cada traço
que viesse a receber alterações por falta de vinculação. Diante dessa problemática
tornou-se eficaz a implementação de um mecanismo que permitisse a “herança” de
especificações.
O mecanismo de reuso foi implementado seguindo alguns conceitos básicos de
da metodologia para programação orientada a objetos [BRU 2000, UFMS 2002]. A
partir desses conceitos algumas decisões foram tomadas durante a implementação
desse mecanismo e foram usadas como regras para reuso de traços na plataforma:
• traços derivados (filhos) recebem todas as caracterı́sticas do traço pai;
• as caracterı́sticas herdadas não podem ser modificadas nos traços derivados;
• as caracterı́sticas modificadas nos traços pais são refletidas automaticamente
nos traços derivados.
A partir das decisões de projeto apresentadas, um traço pode ser representado
como ilustra a figura 3.4. O traço “Requisição HTTP página não encontrada” é
derivado do traço “Requisição HTTP”, que possui os estados idle e 2 e a mensagem
HEAD. Essas caracterı́sticas estão presentes no traço “Requisição HTTP página
não encontrada”, mas alterações nas caracterı́sticas herdadas deste traço só podem
ser realizadas a partir do traço “Requisição HTTP”. Ao traço “Requisição HTTP
página não encontrada” foi acrescentada a mensagem HTTP/1.1 404, fazendo com
que o traço se torne mais especializado, isto é, a partir de um traço com caracterı́sticas básicas, podem ser agregadas caracterı́sticas para o traço com funções
mais especializadas.
22
Traço “Requisição HTTP”
Traço “Requisição HTTP página não encontrada”
HEAD
idle
HEAD
2
idle
2
HTTP/1.1 404
FIGURA 3.4 – Traço criado com o mecanismo de reuso
A interface do mecanismo de reuso utiliza as mesmas definições da interface
do mecanismo de cópia, ilustrado na figura 3.3. A figura 3.5 ilustra a utilização do
mecanismo de reuso de traços.
FIGURA 3.5 – Utilização do mecanismo de reuso
A implementação do mecanismo de reuso envolve algumas mudanças na base
de dados da plataforma Trace. Foram criadas estruturas auxiliares para realizar a
ligação entre os traços pais e os seus respectivos filhos. Essas estruturas funcionam
como listas encadeadas, onde um traço pai pode reconhecer todos os seus filhos e
um traço filho pode reconhecer o seu pai.
A implementação das listas encadeadas envolve as seguintes adições à base de
traços: para a tabela protocol trace foi acrescentada a tabela reuse protocol
trace e o mesmo foi realizado para as tabelas message, message field, grouper,
state e transition. A figura 3.6 ilustra a implementação das estrututas auxiliares
na base de dados da plataforma Trace.
A figura 3.7 ilustra o esquema de implementação das listas encadeadas utilizando como exemplo a tabela protocol trace. A tabela reuse protocol trace
serve como lista encadeada para a tabela protocol trace. Esse mesmo esquema
foi implementado para o restante das tabelas ilustradas na figura 3.6.
As interfaces do mecanismo de gerenciamento de traços sofreram alterações
para suportar a visualização de traços criados a partir do mecanismo de reuso. Essas alterações visam separar as caracterı́sticas herdadas das caracterı́sticas criadas
23
FIGURA 3.6 – Modelo E-R da aplicação de gerencimento utilizado para suportar o
mecanismo de reuso
FIGURA 3.7 – Implementação das listas encadeadas
no próprio traço. A figura 3.8 ilustra a interface de gerenciamento de campos de
mensagens, servindo também como exemplo para as interfaces de gerenciamento
de mensagens, agrupamentos, criação de estados e visualização integral das caracterı́sticas do traço, pois seguem o mesmo padrão. Os elementos foram separados
em duas divisões: caracterı́sticas próprias (Own) e caracterı́sticas reusadas (Reuse).
Somente as caracterı́sticas que fazem parte da divisão (Own) aparecem na caixa de
seleção respeitando uma das regras estipuladas para o funcionamento do mecanismo
de reuso, onde as caracterı́sticas dos traços pais não podem ser alteradas pelos traços
filhos.
FIGURA 3.8 – Interface alterada para suportar reuso de traços
A interface de gerenciamento da máquina de estados também sofreu alterações
para permitir a visualização dos traços filhos em camadas de reuso. Foi implemen-
24
tado o conceito de camadas (layers) e uma simbologia de cores. As camadas são
utilizadas para diferenciar os nı́veis de reuso que o traço possui. A camada 0 contém
o traço em seu último nı́vel de reuso e a camada n possui o traço em seu nı́vel mais
baixo (origem de todas as outras camadas). Assim podemos ter uma visão incremental de todas as camadas de reuso que um traço possui. A simbologia de cores
foi utilizada para diferenciar os estados herdados dos estados adicionados durante
as fases de reuso. Os estados representados pela cor verde foram herdados do traço
pai e os estados em amarelo foram acrescentados posteriormente ao reuso.
A figura 3.9 ilustra o traço “Requisição HTTP 401” que foi criado com o mecanismo de reuso a partir do traço “Requisição HTTP”, onde pode ser visualizada a
camada 0 (Layer 0 ) do traço. Nesta camada o usuário pode visualizar o traço herdado com a mensagem (HEAD) e a mensagem (HTTP/1.1 401 ) que foi adicionada
posteriormente à sua criação. A figura 3.10 ilustra o mesmo traço, mas visualizado
em sua camada superior (Layer 1 ), onde somente o traço pai é visualizado. Os estados na cor verde fazem parte das caracterı́sticas herdadas do traço pai e os estados
na cor amarela fazem parte das caracterı́sticas próprias do traço (adicionadas após
sua criação).
FIGURA 3.9 – Máquina de estados suportando reuso (Layer 0 )
FIGURA 3.10 – Máquina de estados suportando reuso (Layer 1 )
25
4 Experimentação dos mecanismos implementados
O capı́tulo anterior apresentou as implementações realizadas na aplicação de
gerenciamento da plataforma Trace. Para ilustrar os resultados obtidos com essas
implementações esse capı́tulo apresenta uma experimentação realizada com usuários
da plataforma. A seção 4.1 apresenta a metodologia utilizada e a seção 4.2 apresenta
os resultados obtidos.
4.1
Metodologia utilizada
A experimentação dos mecanismos de busca, cópia e reuso procurou identificar alguns benefı́cios proporcionados pela implementação desses mecanismos. Para
realizar a experimentação foi utilizado um roteiro. Este roteiro, que se encontra no
anexo 1, visa a criação de 10 traços pré-definidos, dos quais alguns possuem relações
de semelhança e dependência entre si onde os mecanismos de cópia e reuso podem
ser utilizados. No roteiro os traços foram especificados de forma gráfica e textual.
A execução do roteiro foi realizada por quatro usuários da plataforma Trace,
todos possuiam algum tipo de conhecimento quanto ao processo de criação de traços.
Os usuários foram divididos em dois grupos, cada qual possuia um usuário com nı́vel
médio de conhecimento do processo de especificação de traços e um usuário com
elevado nı́vel de conhecimento. O primeiro grupo recebeu o roteiro para trabalhar
na versão convencional da aplicação de gerenciamento e o segundo grupo recebeu o
roteiro para trabalhar na versão implementada neste trabalho já podendo utilizar
os novos mecanismos de busca, cópia e reuso. Cabe ressaltar que o roteiro utilizado
pelos dois grupos foi o mesmo, sem quaisquer alterações.
Antes de iniciar o roteiro, os dois grupos de usuários foram convocados para
uma reunião, onde foram explicitados os processos de criação de traços. Cada grupo
recebeu instruções de como realizar o roteiro na versão da plataforma Trace a que
foi destinado.
Cada usuário deveria cumprir o roteiro de forma ininterrupta, pois o tempo
para realizar o roteiro foi monitorado. Para realizar a monitoração do tempo de
execução do roteiro foi implementado um log de acessos na aplicação de gerenciamento, onde as principais atividades de cada usuário ficavam gravadas na base de
dados indicando a tarefa realizada e a data/hora da execução dessa tarefa.
4.2
Resultados obtidos
Os resultados obtidos na realização do roteiro foram coletados logo após cada
usuário dar por terminada a sua execução. A figura 4.1 ilustra os resultados do
tempo gasto para especificar todos os traços para cada usuário dos grupos 1 e 2.
26
&('*),+!-/.!0213(-/+!15416'20+('(758 98 7:154*;-(3-20
&(')E+!-/.!0(13-/+(1(4 1F'0!+B':758 9 8 7(1*45;-3*-G0
-20<;41=-0?>(@A4.(+B-DC
-(0H;41=5-(0?>(@A4.(+(-?I
!"#$ % B"#$ % FIGURA 4.1 – Tempo gasto pelos usuários para a realização completa do roteiro
Analisando os gráficos da figura 4.1 podemos verificar que os usuários do grupo
2 obtiveram um tempo total menor na execução do roteiro. Esse fato evidencia que
os novos mecanismos contribuiram para a diminuição dos tempos de criação de
traços. As figuras 4.2 e 4.3 ilustram os tempos dispendidos por cada usuário para a
criação de cada um dos traços do roteiro.
f:g2h6ijlkm:no jligBp jrqnBqs(t u j<vxw5jykBt qBij6vrimBt m
gn2ig:z5u {u zm(t!zmwmrot m|5j
TU5VXWY
JJK RSK RS
JJK ROK LO
JJK RRK NR
JJK JQK NQ
JJK JMK OP
JJK JLK MN
JJK JJK JJ
fg2h6ij€k:mno j6igBp jrqnBqsBt u jlyw5jAkBt qBijlvrim(t m
gn2igz5u {u z:mBt!zmw:mrot m|5j
TU5V<WY
JJK RSK RS
JJK ROK LO
JJK RRK NR
JJK JQK NQ
JJK JMK OP
JJK JLK MN
JJK JJK JJ
RZL[N\O]M^P]S^Q`_aRJ
T!b cdYe
R]L]N\O[M}P[S}Q~_RJ
T5b cdY:e
FIGURA 4.2 – Tempo dispendido pelos usuários do grupo 1 na criação de cada um
dos traços
–—2˜6™š€›:œ5ž š6™—5Ÿ šr ! ¡2¢ £ š6¤¦¥šA›2¢ !™šA§l™œ(¢ œ
—:(™—¨5£ © £ ¨:œB¢!¨œ:¥:œ€ž¢ œªš
–—2˜«™šl›œ:ž šl™—BŸ š€ B ¡B¢£ šl§A¥5šA›(¢ B™šA§X™œB¢ œ
—2™—¨!£ ©£ ¨œB¢!¨:œ¥œrž¢ œª5š
‚‚:ƒ Š‹ƒ Š‹
‚‚:ƒ Š‡ƒ „‡
Œ5Ž<
‚‚:ƒ ŠŠƒ †:Š
‚‚:ƒ ‚‰ƒ †‰
‚‚:ƒ ‚…ƒ ‡ˆ
‚‚:ƒ ‚„ƒ …†
‚‚:ƒ ‚‚ƒ ‚‚
‚‚ƒ Š‹ƒ Š‹
‚‚ƒ Š‡ƒ „‡
Œ:5ŽX
Š]„]†^‡]…^ˆ`‹}‰[‘aŠ‚
Œ!’“”•
‚‚ƒ ŠŠƒ †Š
‚‚ƒ ‚‰ƒ †‰
‚‚ƒ ‚…ƒ ‡ˆ
‚‚ƒ ‚„ƒ …†
‚‚ƒ ‚‚ƒ ‚‚
ŠZ„[†\‡[…}ˆ[‹}‰`‘aŠ‚
Œ5’“”•
FIGURA 4.3 – Tempo dispendido pelos usuários do grupo 2 na criação de cada um
dos traços
Pode-se verificar que os usuários do grupo 2 gastaram, em média, 11 minutos
e 43 segundos enquanto que os usuários do grupo 1 gastaram 13 minutos e 50
segundos para criar todos os traços do roteiro. Baseado nesse fato é possı́vel afirmar
que a criação dos mecanismos trouxe benefı́cios para a aplicação de gerenciamento
da plataforma Trace tanto na facilidade de criação de novas especificações quanto
27
na organização da base de traços. A figura 4.4 ilustra a taxa de utilização dos
mecanismos de busca, cópia e reuso por parte dos usuários do grupo 2.
&
#'(
) * +,-#./.10)234 0526.10(7809#:; ./<
&
$'(
) * +#,-.6.
0/2=
4# 0
2>.
0675809#:? ./@
5 !#"$%
$#
# !"#%
FIGURA 4.4 – Taxa de utilização dos mecanismos pelos usuários do grupo 2
Como ilustra a figura 4.4, os mecanismos de busca e cópia não foram muito
utilizados pelos usuários do grupo 2, por dois motivos: a base de traços estava vazia
no inı́cio da execução e o roteiro possui traços para os quais o mecanismo de reuso
possui maior aplicabilidade. Assim o mecanismo de reuso foi o mais utilizado pelos
usuários, contribuindo para diminuição do tempo gasto para a criação de todos os
traços do roteiro.
28
5
Conclusões
O capı́tulo 1 contextualizou o motivo deste trabalho ilustrando alguns conceitos e problemas da aplicação de gerenciamento. O capı́tulo 2 apresentou a linguagem
PTSL e a versão convencional da aplicação de gerenciamento de traços. No capı́tulo
3 foram apresentados os mecanismos de busca, cópia e reuso implementados neste
trabalho. E o capı́tulo 4 apresentou uma experimentação na aplicação de gerenciamento realizada com alguns usuários da plataforma Trace. Neste capı́tulo serão
apresentadas algumas conclusões através de contribuições e trabalhos futuros para
a aplicação de gerenciamento da plataforma Trace.
5.1
Contribuições do trabalho
A principal contribuição deste trabalho, com a implementação dos mecanismos
de busca, cópia e reuso foi a resolução dos seguintes problemas que haviam na
aplicação de gerenciamento de traços:
a) redução do número de traços idênticos dentro da base de traços: esse problema
ocorria porque não era possı́vel identificar um traço na plataforma sem que
se explorasse todas as suas caracterı́sticas através da navegação completa por
sua especificação;
b) diminuição do tempo de busca de traços: esse problema ocorria pelo mesmo
motivo apontado no item anterior;
c) redução do tempo despendido para criação de novos traços: somente era possı́vel
criar um novo traço a partir de seu ponto inicial, não sendo possı́vel a cópia
ou o reuso de especificações;
As melhorias alcançadas no desenvolvimento dos novos mecanismos permitem
que a aplicação de gerenciamento de traços torne-se bastante flexı́vel suportando
um maior número de especificações através de uma melhor organização da base
de traços. Com a base de traços melhor organizada, o gerente de rede pode dar
maior ênfase para as tarefas relacionadas à monitoração e execução das tarefas de
gerenciamento que a plataforma Trace permite executar.
5.2
Trabalhos futuros
A finalização deste trabalho traz algumas atividades que poderiam ser realizadas para a melhoria da interface de gerenciamento de traços:
a) reestilização da interface WEB da aplicação de gerenciamento: a criação de um
novo estilo para a interface de gerenciamento de traços facilitaria o trabalho
dos usuários da plataforma, através da criação de ı́cones e links de acesso
direto a cada traço sem a necessidade de escolha nas caixas de selecão, como
é realizado atualmente;
b) redesenho do mecanismo de visualização da máquina de estados: a visualização
da máquina de estados poderia ser redesenhada, melhorando a qualidade de
29
sua interface com a utilização de transições em curva ao invés de transições
quebradas em duas retas. Com a utilização de linhas curvas nas transições de
estados a visualização da máquina de estados tornaria-se mais legı́vel.
30
Anexo 1
Roteiro de experimentação
Estão presentes neste roteiro alguns traços que deverão ser criados na plataforma de forma ininterrupta, isto é, todo o experimento deverá ser realizado de uma
única vez, não podendo haver pausas entre a criação dos traços. O nome de cada
traço deverá possuir o nome do usuário em seu inı́cio, para que não haja nomes
de traços duplicados, pois o experimento será realizado em conjunto com vários
usuários. A plataforma deverá ser acessada via navegador web através do endereço
http://www.atendebem.com.br:8080/tracen. O login e a senha para acessar a plataforma são individuais. Após informar o login e senha, a opção ”Specification”deverá
ser clicada e logo após a opção ”Protocol Trace”. Clicando nestas opções, será
aberta a interface de gerenciamento de traços, onde este roteiro de experimentação
será realizado.
Login:
Senha:
31
1- Traço ”Requisição HTTP inválida”
Vers~
ao: 1.0
Descriç~
ao: Acesso http com resposta 400
Palavras-chave: http, 400, inválida
Porta: 80
Campos de Mensagens
"GET"
Tipo: client
Encapsulamento: Ethernet/IP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: GET
Descriç~
ao: Requisiç~
ao de uma página Web
"HTTP 1.1"
Tipo: server
Encapsulamento: Ethernet/IP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: HTTP/1.1
Descriç~
ao: Vers~
ao do protocolo
"Código 400"
Tipo: server
Encapsulamento: Ethernet/IP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: 400
Descriç~
ao: Código de retorno
Mensagens
"GET"
Tipo: client
Timeout: 0
Campos: GET
"HTTP/1.1 400"
Tipo: server
Timeout: 0
Campos: Código 400, HTTP 1.1
Estados
"idle"
Estado final: sim
32
"2"
Estado final: n~
ao
Transiç~
oes
"GET"
Tipo: message
Estado fonte: idle
Estado destino: 2
"HTTP/1.1 400"
Tipo: message
Estado fonte: 2
Estado destino: idle
33
2- Traço ”Duração de conexão TCP”
Vers~
ao: 1.0
Descriç~
ao: Medir o tempo entre um TCP SYN e um FYN/ACK
Palavras-chave: TCP, duraç~
ao, conex~
ao, SYN, FYN/ACK
Campos de Mensagens
"SYN"
Tipo: client
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 110
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag SYN está ligado
"ACK"
Tipo: server
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 107
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag ACK está ligado
"FYN"
Tipo: server
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 111
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag FYN está ligado
Mensagens
"TCP SYN"
Tipo: client
Timeout: 0
Campos: SYN
"TCP FYN/ACK"
Tipo: server
Timeout: 0
Campos: ACK, FYN
34
Estados
"idle"
Estado final: sim
"2"
Estado final: n~
ao
Transiç~
oes
"TCP SYN"
Tipo: message
Estado fonte: idle
Estado destino: 2
"TCP FYN/ACK"
Tipo: message
Estado fonte: 2
Estado destino: idle
35
3- Traço ”Ataque por inundação”
Vers~
ao: 1.0
Descriç~
ao: Final do three-way handshaking
Palavras-chave: SynFlood, TCP
Campos de Mensagens
"SYN"
Tipo: client
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 110
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag SYN está ligado
"ACK client"
Tipo: client
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 107
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag ACK está ligado
"ACK server"
Tipo: server
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 107
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag ACK está ligado
Mensagens
"TCP SYN/ACK"
Tipo: client
Timeout: 0
Campos: SYN, ACK client
"TCP ACK"
Tipo: server
Timeout: 0
Campos: ACK Server
Estados
"idle"
Estado final: sim
36
"2"
Estado final: n~
ao
Transiç~
oes
"TCP SYN/ACK"
Tipo: message
Estado fonte: idle
Estado destino: 2
"TCP ACK"
Tipo: message
Estado fonte: 2
Estado destino: idle
37
4- Traço ”Sondagem de Portas”
Vers~
ao: 1.0
Descriç~
ao: Acesso a service TCP n~
ao disponı́vel
Palavras-chave: portas, sondagem, TCP
Campos de Mensagens
"SYN"
Tipo: client
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 110
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag SYN está ligado
"RST"
Tipo: server
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 109
Tamanho: 1
Valor esperado: 1
Descriç~
ao: Flag RST está ligado
Mensagens
"TCP SYN"
Tipo: client
Timeout: 0
Campos: SYN
"TCP RST"
Tipo: server
Timeout: 0
Campos: RST
Estados
"idle"
Estado final: sim
"2"
Estado final: n~
ao
Transiç~
oes
"TCP RST"
Tipo: message
Estado fonte: idle
38
Estado destino: 2
"TCP SYN"
Tipo: message
Estado fonte: 2
Estado destino: idle
39
5- Traço ”Sondagem de RPC”
Vers~
ao: 1.0
Descriç~
ao: Verificar sondagem de RPC
Palavras-chave: sondagem, RPC
Campos de Mensagens
"Type Reply"
Tipo: server
Encapsulamento: Ethernet/IP/UDP
Offset: Bit Counter
Posiç~
ao: 32
Tamanho: 32
Valor esperado: 00000000000000000000000000000001
Descriç~
ao: Type Reply
"Port Mapper"
Tipo: client
Encapsulamento: Ethernet/IP
Offset: Bit Counter
Posiç~
ao: 16
Tamanho: 16
Valor esperado: 0000000001101111
Descriç~
ao: Port Mapper
"RPC Get Port"
Tipo: client
Encapsulamento: Ethernet/IP/UDP
Offset: Bit Counter
Posiç~
ao: 160
Tamanho: 32
Valor esperado: 00000000000000000000000000000011
Descriç~
ao: RPC Get Port
"Type Call UDP"
Tipo: client
Encapsulamento: Ethernet/IP/UDP
Offset: Bit Counter
Posiç~
ao: 32
Tamanho: 32
Valor esperado: 00000000000000000000000000000000
Descriç~
ao: Type Call UDP
40
"Type Call TCP"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Bit Counter
Posiç~
ao: 64
Tamanho: 32
Valor esperado: 00000000000000000000000000000000
Descriç~
ao: Type Call TCP
"Program Mount"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Bit Counter
Posiç~
ao: 128
Tamanho: 32
Valor esperado: 00000000000000011000011010100101
Descriç~
ao: Program Mount
Mensagens
"Port Mapper 1"
Tipo: client
Timeout: 2
Campos: Port Mapper, RPC Get Port, Type Call UDP
"Port Mapper 2"
Tipo: server
Timeout: 2
Campos: Type Reply
"Port Mapper 3"
Tipo: client
Timeout: 2
Campos: Type Call TCP, Program Mount
Estados
"idle"
Estado final: sim
"RPCState2"
Estado final: n~
ao
"RPCState3"
Estado final: n~
ao
Transiç~
oes
"Port Mapper 1"
Tipo: message
Estado fonte: idle
Estado destino: RPCState2
"Port Mapper 2"
Tipo: message
Estado fonte: RPCState2
Estado destino: RPCState3
41
"Port Mapper 3"
Tipo: message
Estado fonte: RPCState3
Estado destino: idle
42
6- Traço ”Autenticação usuário POP3 inexistente”
Vers~
ao: 1.0
Descriç~
ao: Verificar tentativas de conex~
ao POP3 com username existente
Palavras-chave: e-mail, POP3
Campos de Mensagens
"USER"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: USER
Descriç~
ao: Username POP3
"ERR"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: ERR
Descriç~
ao: Operaç~
ao falhou
Mensagens
"USER"
Tipo: client
Timeout: 0
Campos: USER
"ERR"
Tipo: server
Timeout: 0
Campos: ERR
Estados
"idle"
Estado final: sim
"2"
Estado final: n~
ao
Transiç~
oes
"USER"
Tipo: message
Estado fonte: idle
Estado destino: 2
"ERR"
43
Tipo: message
Estado fonte: 2
Estado destino: idle
44
7- Traço ”Autenticação usuário/senha POP3”
Vers~
ao: 1.0
Descriç~
ao: Verificar tentativas de conex~
ao POP3 com username e password inválidos
Palavras-chave: e-mail, POP3
Campos de Mensagens
"USER"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: USER
Descriç~
ao: Username POP3
"ERR"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: ERR
Descriç~
ao: Operaç~
ao falhou
"OK"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: OK
Descriç~
ao: Operaç~
ao realizada com sucesso
"PASS"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: PASS
Descriç~
ao: Password do usuário
"QUIT"
Tipo: client
45
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: QUIT
Descriç~
ao: Encerra conex~
ao
Mensagens
"USER"
Tipo: client
Timeout: 0
Campos: USER
"ERR"
Tipo: server
Timeout: 0
Campos: ERR
"OK"
Tipo: server
Timeout: 0
Campos: OK
"PASS"
Tipo: client
Timeout: 0
Campos: PASS
"QUIT"
Tipo: client
Timeout: 0
Campos: QUIT
Estados
"idle"
Estado final: sim
"2"
Estado final: n~
ao
"3"
Estado final: n~
ao
"4"
Estado final: n~
ao
Transiç~
oes
"USER"
Tipo: message
Estado fonte: idle
Estado destino: 2
"ERR"
Tipo: message
Estado fonte: 2
Estado destino: idle
46
"OK"
Tipo: message
Estado fonte: 2
Estado destino: 3
"PASS"
Tipo: message
Estado fonte: 3
Estado destino: 4
"QUIT"
Tipo: message
Estado fonte: 3
Estado destino: idle
"OK"
Tipo: message
Estado fonte: 4
Estado destino: idle
"ERR"
Tipo: message
Estado fonte: 4
Estado destino: 3
47
8- Traço ”Requisição HTTP”
Vers~
ao: 1.0
Descriç~
ao: Requisiç~
oes HTTP
Palavras-chave: retorno, HTTP
Campos de Mensagens
"HEAD"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: HEAD
Descriç~
ao: Cabeçalho da página
"HTTP 1.1"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: HTTP/1.1
Descriç~
ao: Vers~
ao de protocolo
Mensagens
"HEAD"
Tipo: client
Timeout: 0
Campos: HEAD
Estados
"idle"
Estado final: sim
"2"
Estado final: n~
ao
Transiç~
oes
"HEAD"
Tipo: message
Estado fonte: idle
Estado destino: 2
48
9- Traço ”Requisição HTTP 401”
Vers~
ao: 1.0
Descriç~
ao: Requisiç~
oes HTTP com retorno 401
Palavras-chave: retorno, HTTP
Campos de Mensagens
"HEAD"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: HEAD
Descriç~
ao: Cabeçalho da página
"HTTP 1.1"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: HTTP/1.1
Descriç~
ao: Vers~
ao de protocolo
"401"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 1
Valor esperado: 401
Descriç~
ao: Código de retorno
Mensagens
"HEAD"
Tipo: client
Timeout: 0
Campos: HEAD
"HTTP/1.1 401"
Tipo: server
Timeout: 0
Campos: HTTP/1.1, 401
Estados
"idle"
Estado final: sim
49
"2"
Estado final: n~
ao
Transiç~
oes
"HEAD"
Tipo: message
Estado fonte: idle
Estado destino: 2
"HTTP/1.1 401"
Tipo: message
Estado fonte: 2
Estado destino: idle
50
10- Traço ”Requisição HTTP 402”
Vers~
ao: 1.0
Descriç~
ao: Requisiç~
oes HTTP com retorno 402
Palavras-chave: retorno, HTTP
Campos de Mensagens
"HEAD"
Tipo: client
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: HEAD
Descriç~
ao: Cabeçalho da página
"HTTP 1.1"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 0
Valor esperado: HTTP/1.1
Descriç~
ao: Vers~
ao de protocolo
"402"
Tipo: server
Encapsulamento: Ethernet/IP/TCP
Offset: Field Counter
Posiç~
ao: 1
Valor esperado: 402
Descriç~
ao: Código de retorno
Mensagens
"HEAD"
Tipo: client
Timeout: 0
Campos: HEAD
"HTTP/1.1 402"
Tipo: server
Timeout: 0
Campos: HTTP/1.1, 402
Estados
"idle"
Estado final: sim
"2"
51
Estado final: n~
ao
Transiç~
oes
"HEAD"
Tipo: message
Estado fonte: idle
Estado destino: 2
"HTTP/1.1 402"
Tipo: message
Estado fonte: 2
Estado destino: idle
52
Bibliografia
[BRU 2000] Bruegge, Bernd. Dutoit, ALLEN H.. Object-oriented software engineering:
conquering complex and changing systems. Upper Saddle River: Prentice-Hall, 2000.
[GAS 2001a] GASPARY, Luciano P.; BALBINOT, Luis F.; STORCH, Roberto;
WENDT, Fabrı́cio; TAROUCO, Liane R. Towards a Programmable Agent-based
Distributed Architecture for Enterprise Application and Service Management. In:
IEEE/IEC ENTERPRISE NETWORKING APPLICATIONS AND SERVICES
CONFERENCE, (ENTNET), 2001, Atlanta, USA. Proceedings Piscataway, USA:
IEEE Operations Center, 2001. p. 39-46.
[GAS 2001b] GASPARY, Luciano P.; BALBINOT, Luis F.; STORCH, Roberto;
WENDT, Fabrı́cio; TAROUCO, Liane R. Uma Arquitetura para Gerenciamento Distribuı́do e Flexı́vel de Protocolos de Alto Nı́vel e Serviços de Rede. In: SIMP ÓSIO
BRASILEIRO DE REDES DE COMPUTADORES, (SBRC), 19., 2001, Florianópolis.
Anais... Florianópolis, 2001.
[GAS 2001c] GASPARY, Luciano P.; BALBINOT, Luis F.; STORCH, Roberto;
WENDT, Fabrı́cio; TAROUCO, Liane R. Distributed Management of High-Layer
Protocols and Network Services through a Programmable Agent-Based Architecture.
In: INTERNATIONAL CONFERENCE ON NETWORKING, (ICN), 1., July 2001,
Colmar, France. Proceedings... Berlin: Springer, 2001. p. 204–217. (Lecture Notes in
Computer Science, v.2093, n. 1).
[GAS 2002a] GASPARY, Luciano P.; MENEGHETTI, Edgar; WENDT, Fabrı́cio;
BRAGA, Lucio; STORCH, Roberto; TAROUCO, Liane R. Trace: An Open Platform for High-layer Protocolos, Services and Networked Applications Management.
To appear in: IFIP/IEEE NETWORK OPERATIONS AND MANAGEMENT SYMPOSIUM, 2002, Florence.
[GAS 2002b] GASPARY, Luciano P.; Gerenciamento Distribuı́do e Flexı́vel de Protocolos de Alto Nı́vel, Serviços e Aplicações em Rede. 2002. Tese (Doutorado em Ciência
da Computação) - Instituto de Informática, Universidade Federal do Rio Grande do
Sul, Porto Alegre.
[GOO 2002] Ferramenta de busca Google. Disponı́vel em http://www.google.com.br.
Acessado em junho de 2002.
[MEN 2002] MENEGHETTI, Edgar; Uma Proposta de Uso da Arquitetura Trace como
um Sistema de Detecção de Intrusão. 2002. Dissertação (Mestrado em Ciência da
Computação) - Instituto de Informática, Universidade Federal do Rio Grande do Sul,
Porto Alegre.
53
[TRA 2002] Trace
Management
Platform
HP.
http://prav.unisinos.br/ trace. Acessado em setembro de 2002.
Disponı́vel
[UFMS 2002] Mecanismos
para
Reuso
de
Software.
Disponı́vel
http://www.dct.ufms.br/ marcelo/teaching/too. Acessado em junho de 2002.
em
em
[YAH 2002] Ferramenta de busca Yahoo. Disponı́vel em http://www.yahoo.com. Acessado em junho de 2002.
Download

artigo