NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
28 de julho de 2000 | volume 4, número 4

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Uma ferramenta flexível para a medição de tráfego baseada no RRDtool

Luís Felipe Balbinot <>
Maiko de Andrade <>

Pesquisa em Redes de Alta Velocidade (PRAV)
Subgrupo de Gerência, Engenharia e Operações de Redes (SG-GEO)
Universidade do Vale do Rio dos Sinos (UNISINOS)

Resumo
1 Introdução
2. Pacote RRDtool
3. Descrição da Ferramenta
3.1 Arquivo de Configuração
3.2 Módulo de Coleta de Dados
3.3 Módulo de Interface Web
4 Resultados
5 Conclusões e Trabalhos Futuros
Agradecimentos
Bibliografia

Resumo

O presente artigo descreve uma ferramenta de medição de tráfego desenvolvida na UNISINOS, dentro do projeto de Redes Metropolitanas de Alta Velocidade que vem acontecendo no Brasil1. A ferramenta desenvolvida é bastante flexível, pois o usuário pode escolher on-line, através da web, seus interesses de visualização de tráfego, como por exemplo, a duração da medição, o tamanho do gráfico de resultado, com ou sem legendas, mostrando ou não picos de tráfego, e assim por diante. Para o seu desenvolvimento, criou-se um programa na linguagem Perl para obter via SNMP os dados de tráfego nos equipamentos da rede que são analisados. Um CGI permite que o usuário possa configurar suas necessidades. Ambos trabalham em conjunto com a base de dados do RRDtool, uma ferramenta de auxílio à manutenção de dados medidos e geração de gráficos.

^

1 Introdução

As ferramentas de medição de uso de enlaces distribuídas como software livre foram consideras insuficientes para o monitoramento dos enlaces da Rede Metropolitana de Porto Alegre (MetroPoa). Os métodos tradicionais adotados pelas ferramentas de medição realizam polling em intervalos de minutos, impossibilitando a medição do tráfego em rajadas, o que é uma informação muito valiosa em redes que conseguem fornecer algum nível de garantia de serviço. Além disso, essas ferramentas possuem uma interface com o usuário muito estática, onde a maioria delas fica sempre limitada a gráficos diários, semanais, mensais e anuais.

A necessidade por uma ferramenta mais flexível foi reconhecida pelo grupo de gerência da Pesquisa em Redes de Alta Velocidade (PRAV), na Universidade do Vale do Rio dos Sinos (UNISINOS). Depois de analisadas todas as ferramentas disponíveis, foi decidido reunir as características mais interessantes de todas elas em apenas uma. A ferramenta apresentada neste artigo permite que o usuário especifique diversas visões sobre os dados coletados no enlaces que são monitorados, tudo isso de uma forma interativa, simples e sistemática. A abordagem proposta migrou a configuração da saída dos dados, que antes ficava estática dentro de arquivos de configuração, para o controle do usuário.

O restante deste artigo está organizado da seguinte maneira: na Seção 2 o pacote de software RRDtool é descrito de forma sucinta; na Seção 3 é apresentada a ferramenta desenvolvida, assim como os detalhes internos da implementação; na Seção 4 são apresentados alguns resultados; na Seção 5 este artigo é concluído e alguns tópicos para pesquisas futuras são discutidos.

^

2. Pacote RRDtool

Como base para o desenvolvimento do medidor de tráfego foi utilizado um pacote de software chamado RRDtool, que é o acrônimo para Round Robin Databases Tool, originado a partir de evoluções do MRTG (Multi Router Traffic Grapher), mas com maior flexibilidade [1]. Essa ferramenta, que está sendo desenvolvida por Tobias Oetiker, tem a contribuição de várias pessoas pelo mundo. A ferramenta é dita round robin pois trabalha com uma fila circular, fazendo com que o tamanho da base de dados seja fixo durante todo o seu tempo de vida.

O RRDtool permite que em um mesmo banco de dados sejam criadas diversas filas, mas com precisões diferentes. Um dado inserido recentemente possui uma precisão maior, mas, com o passar do tempo, ele acaba convergindo para uma fila de menor precisão. O RRDtool também permite que sejam gerados gráficos a partir dos dados armazenados. Esses gráficos são bastante dinâmicos, sendo possível até mesmo incluir várias entradas de bancos de dados diferentes em um único gráfico.

Uma das grandes vantagens do RRDtool está nas interfaces de programação. Ao mesmo tempo o RRDtool possui interfaces para as linguagens C/C++, Perl e Tcl, além de permitir que todas as funções sejam realizadas através da linha de comando de um shell, fazendo com que praticamente todas as linguagens capazes de fazer chamadas do externas através de pipes sejam capazes de utilizar as suas facilidades.

Na implementação descrita neste artigo, o RRDtool é utilizado para armazenar dados capturados de objetos gerenciáveis por SNMP ou de roteadores multicast rodando o mrouted. Ele também é utilizado para gerar os gráficos de saída. Toda a funcionalidade da implementação está limitada a apenas dois programas escritos na linguagem Perl, um deles para realizar a coleta e o armazenamento das informações e o outro para cuidar da interface CGI e da geração dos gráficos de saída. Esses dois programas são descritos em mais detalhes na próxima seção.

^

3. Descrição da Ferramenta

O medidor de tráfego é composto por dois módulos, como mostra a Figura 1: o primeiro é o linkstat.pl, que utiliza SNMP para capturar as informações (definidas no arquivo de configuração) dos comutadores e roteadores da rede, colocando essas informações dentro dos bancos de dados do RRDtool. O segundo é o linkstat.cgi, recebe as informações de consultas vindas dos usuários e utiliza os bancos de dados do RRDtool para projetar os resultados gráficos desejados, que podem ser visualizados em um navegador web qualquer.

Figura 1 - Descrição dos módulos das ferramentas.

Para melhor ilustrar o funcionamento do sistema será descrita a seguir a ordem cronológica dos acontecimentos, desde a criação do arquivo de configuração até a consulta do usuário. Os seguintes passos devem acontecer:

  1. Definir parâmetros a serem medidos e criar o arquivo de configuração.
  2. Colocar o programa linkstat.pl para executar como um cron job, coletando os dados solicitados no arquivo de configuração (através de SNMP). Na nossa configuração, esse programa é disparado a cada 60 segundos.
  3. Após algum tempo o programa já terá abastecido os bancos do RRDtool. A estação realizando a medição na rede MetroPoa pode ser acessada através do endereço http://200.132.73.107/cgi-bin/linkstat.cgi . A tela inicial, que é mostrada na Figura 2, deve aparecer. O CGI consulta o arquivo de configuração e monta a HTML dinamicamente com as informações dos enlaces.
  4. O usuário define os parâmetros que deseja analisar, dentro do permitido pela interface, e clica o botão "Ok".
  5. O programa linkstat.cgi entra em contato com a base de dados do RRDtool, buscando obter o gráfico da consulta do usuário. Isso é feito através de uma única chamada a uma função do RRDtool.
  6. O RRDtool retorna uma imagem (PNG ou GIF), que entra como referência na página HTML gerada pelo CGI, sendo apresentada para o usuário. Um exemplo é o mostrado na Figura XXX.
  7. O usuário pode então refazer a consulta com outros valores, e o processo se repete a partir do item 4.

Figura 2 - Interface com o usuário.

^

3.1 Arquivo de Configuração

O arquivo de configuração de definição dos alvos de monitoramento é bastante simples e fácil de ser criado. Atualmente ele suporta dois tipos diferentes de coleta: (1) coleta por SNMP, utilizando os objetos gerenciáveis ifInOctets e ifOutOctets da MIB-II, e (2) coleta através de uma ferramenta desenvolvida por João Carlos Mendes Luís 2 , que permite que as informações de uso dos túneis multicast sejam obtidas de roteadores usando o software mrouted. Abaixo está um exemplo da sintaxe de configuração de dois enlaces:

poll 60;
# exemplo 1
target crt_2_uni {
        descr "Link entre a CRT e a Unisinos";
        type snmp {
                ip_addr 200.132.73.129;
                community public;
                instance 101;
                ifspeed 155000000;
        }
}

# exemplo 2
target uni_2_poprs {
        descr "Túnel DVMRP entre a UNISINOS e o POP-RS";
        type tunnel {
                ip_addr 200.132.73.101;
                vif 1;
                rate_limit 256;
        }
}

No exemplo 1 é monitorado o enlace STM-1 que liga a UNISINOS com a CRT. Esse enlace está conectado na porta 1.01 do comutador da CRT (200.132.73.129). No exemplo 2 é monitorado um túnel multicast (associado com a interface virtual número 1) de 256 Kbps entre a UNISINOS e o POP-RS.

Um terceiro tipo de monitoramento está sendo desenvolvido e deverá suportar a coleta de dados a partir da saída da execução de programas, assim como é feito no MRTG. A tendência é que o tipo de monitoramento de túneis multicast seja migrado para esse novo tipo.

^

3.2 Módulo de Coleta de Dados

O módulo de coleta de dados é responsável pela manutenção de todos os bancos de dados dos enlaces monitorados. O funcionamento desse módulo resume-se a três etapas:

  1. Leitura do arquivo de configuração;
  2. Leitura objetos gerenciados via SNMP;
  3. Atualização ou criação dos bancos de dados do RRDtool.

A simplicidade da operação desse módulo permite que diversos enlaces sejam monitorados ao mesmo tempo. Ele roda como um cron job em intervalos regulares, dependendo da necessidade do usuário. No ambiente de testes do MetroPoa o intervalo estabelecido foi de 1 minuto (tempo mínimo permitido pelo cron). Após ter feito a leitura de todas as definições de enlaces do arquivo de configuração, o programa realiza a leitura de todos os objetos gerenciados (por SNMP). Com os valores em memória, o ele faz uma chamada à função de atualização dos bancos de dados, que por sua vez, coloca todas as informações lidas nos respectivos arquivos e, se esses arquivos não existirem (foram apagados ou se um enlace novo foi configurado), eles são criados automaticamente.

Para evitar problemas de sobreposição da execução (um novo job é disparado antes do anterior terminar) é utilizado um simples mecanismo de lock file. Essas sobreposições podem ocorrer em ambientes onde muitos enlaces são monitorados e, por problemas na rede, os alvos de gerenciamento ficam inalcançáveis, gerando muitos timeouts nas funções de leitura SNMP.

Dois problemas principais tiveram que ser abordados, ambos relacionados com o SNMP: (1) os contadores SNMP são finitos e zeram assim que o seu valor exceder o limite e (2) quando os equipamentos são reiniciados os contadores também zeram. O RRDtool assume que os valores que são inseridos nos bancos de dados são sempre crescentes, ou seja, o próximo valor a ser adicionado deve ser sempre maior que o último valor adicionado. Isso acontece quando um contador zera. Para contornar esses problemas foram utilizados os seguintes mecanismos:

  1. O RRDtool reconhece quando contadores de 32 e 64 bits zeram. Nesses casos ele simplesmente ignora o valor lido (ele insere um valor do tipo unknown, que não possui valor algum).
  2. Se o contador zerar por causa do reinício de um equipamento, a seguinte abordagem é tomada: se o dobro do valor do objeto gerenciado sysUpTime (convertido para segundos) do equipamento for menor que o tempo de polling (também em segundos), então assume-se que o equipamento reiniciou e adiciona-se o valor unknown ao último dado lido.
  3. O RRDtool reconhece mudanças bruscas e inconcebíveis nas leituras através da configuração dos limites dos valores lidos em um enlace (p. ex., de 0 a 155 Mbps em um enlace OC-3) no momento de criação dos bancos de dados. Se um valor absurdo for lido, o RRDtool irá simplesmente ignorá-lo através da inserção de um valor do tipo unknown.

Os resultados desses mecanismos podem ser observados nos gráficos gerados. Alguns apresentam pequenas lacunas vazias, como se o tráfego não tivesse sido medido naqueles momentos. Essas lacunas são comuns, já que os contadores em enlaces OC-3 em total uso zeram aproximadamente a cada 220 segundos.

^

3.3 Módulo de Interface Web

A interface com o usuário é feita através de um CGI, que gera uma página HTML inicial para configuração, que já foi mostrada na Figura 2. Inicialmente o usuário deve escolher qual é o enlace desejado, selecionando-o dentre as diversas opções mostradas (no quadro superior esquerdo). No caso da RMAV-RS, estamos monitorando o estado dos enlaces entre a CRT (núcleo da estrela da rede) e os outros cinco parceiros. Além disso, estamos monitorando o túnel multicast entre POP-RS da RNP e a UNISINOS, que é o ponto de entrada do MBONE no MetroPoa.

Outra possibilidade de configuração é o horizonte, ou seja, o período de tempo em que se deseja visualizar os resultados (de um minuto até dois anos). Isso possibilita que um usuário veja uma estatística da rede em um determinado intervalo de tempo. Quanto mais "distante" for o período, menor será a precisão do gráfico. Para configurar o horizonte, basta especificar os valores no quadro inferior esquerdo. Para agilizar a consulta, estão disponíveis algumas configurações pré-estabelecidas (gráficos diários, semanais, mensais e anuais).

As opções do gráfico, que podem ser configuradas no quadro superior direito da página, possibilitam ao usuário as seguintes facilidades:

As "Opções da HTML", no quadro inferior direito, permitem ao usuário definir:

Um exemplo de gráfico gerado pode ser visto na Figura 3. A linha azul (sem preenchimento) indica o tráfego de saída, a área verde (com preenchimento) mostra o tráfego de entrada. O eixo das ordenadas mostra a taxa de transmissão em Mbps (esse eixo se autoconfigura, de acordo com a velocidade do enlace) e o eixo das abscissas é a linha do tempo, que nesse exemplo representa um horizonte de 6 horas. Mais abaixo são vistas as informações textuais, como a taxa mínima (Min) transmitida no intervalo, a taxa média (Avg), a taxa máxima (Max) e a última taxam lida (Lst), que corresponde ao valor atual de uso de banda (caso o valor final da linha de tempo seja o momento atual).

Figura 3 - Gráfico exemplo.

A ferramenta de monitoração de tráfego foi construída para possuir uma interface simples e de fácil manuseio, não gerando dificuldades para alguém que vá monitorar a rede. Na rede MetroPoa os usuários de ferramentas de videoconferência, que não entendem muito de gerência de redes, vêm usando essa ferramenta para monitorar o tráfego gerado durante algumas sessões de uma forma bastante natural.

É importante deixar claro que o módulo linkstat.cgi age com três papéis diferentes: (1) ele gera a página HTML inicial para o usuário; (2) ele recebe os parâmetros passados pelos usuários e cria uma nova HTML, que contém uma referência para o gráfico, que também é gerada por ele; (3) ele gera o gráfico de saída.

^

4 Resultados

Nesta seção são apresentados alguns resultados obtidos em medições na rede MetroPoa. O tráfego medido nesses resultados não foi gerado de forma artificial, sendo praticamente todo ele proveniente de sessões de videoconferência (que ficam ativadas praticamente 24 horas por dia) e de outras sessões de transmissão multimídia em IP multicast (MP3, Microsoft Windows Media, entre outros).

Nas Figuras 4 e 5 são apresentados os gráficos das últimas 6 horas (relativas à data apresentada no canto inferior direito dos gráficos) medidas no enlace que conecta a Universidade Federal do Rio Grande do Sul (UFRGS) com a Companhia Riograndense de Telecomunicações (CRT). Na Figura 4 o gráfico não apresenta os picos máximos do tráfego medido (rajadas), enquanto que na Figura 5 esses picos são mostrados.

Figura 4 - Enlace entre CRT e UFGRS (6 horas, sem picos máximos)

Figura 5 - Enlace entre CRT e UFRGS (6 horas, com picos máximos)

Nas Figuras 6, 7, 8 e 9 são mostrados diversos horizontes diferentes das medições feitas no enlace que conecta a UNISINOS com a CRT. É importante esclarecer que, devido à topologia da rede MetroPoa, que segue uma estrutura flat (sem roteamento), todo o tráfego IP multicast gerado em alguma estação conectada na rede será propagado para todos os membros da ELAN (Emulated LAN), mesmo que eles não queiram receber esse tráfego. Esse fato pode ser observado na Figura 6, onde a UNISINOS está recebendo em média aproximadamente 600 Kbps de tráfego IP multicast.

Figura 6 - Enlace entre CRT e UNISINOS (6 horas)

Figura 7 - Enlace entre CRT e UNISINOS (1 semana)

Figura 8 - Enlace entre CRT e UNISINOS (1 mês)

Figura 9 - Enlace entre CRT e UNISINOS (1 ano)

^

5 Conclusões e Trabalhos Futuros

A ferramenta linkstat vem sendo usada na rede MetroPoa há pouco mais de 4 meses, mas já pode-se afirmar que os resultados obtidos estão dentro das expectativas. Em uma rede com poucos objetos sendo monitorados, como é o caso da rede MetroPoa, a configuração da implementação desenvolvida mostrou-se muito mais fácil do que em soluções como o MRTG e o Cricket.

A primeira vantagem do uso dessa ferramenta é a geração de resultados em demanda, ao contrário de outras ferramentas, que geram todos os gráficos cada vez que executam, mesmo que esses gráficos não sejam visualizados. Essa abordagem consome desnecessariamente muitos recursos, impossibilitando o polling em intervalos curtos. Através da abordagem adotada na implementação descrita neste artigo, muito mais enlaces podem ser monitorados em uma mesma estação, já que a sua única tarefa é buscar as informações de gerenciamento e atualizar os bancos de dados (levando em conta que poucos relatórios serão requisitados em demanda nesse período).

A segunda vantagem está na portabilidade dos relatórios. Toda a informação desejada por um gerente está presente dentro de uma única imagem (o gráfico e os valores textuais incluídos). Dessa forma, um gerente precisa apenas utilizar uma imagem para mostrar os resultados, permitindo que referências em outras páginas na web sejam feitas de forma bastante simples e dinâmica, através do CGI. A mobilidade dos arquivos de banco de dados do RRDtool também deve ser considerada. Toda a informação de monitoramento de um enlace está contida dentro de apenas um arquivo, que pode ser movido ou armazenado em um backup, sem preocupação com possíveis inconsistências. A interface CGI não precisa nem mesmo estar presente na estação de coleta de dados, já que os arquivos do RRDtool podem ser exportados em um sistema de arquivos compartilhado entre duas estações: uma com os dados e o módulo de coleta e outra com a interface web, que fará todo o processamento pesado na geração em demanda dos gráficos.

Como trabalho futuro foram identificados alguns itens principais:

  1. Há uma falta de uma organização hierárquica nos enlaces. Quanto mais enlaces forem monitorados, mais ficará difícil de encontrar os itens desejados na lista. Uma possível solução para esse problema seria introduzir um mecanismo de hierarquia no arquivo de configuração.
  2. A configuração da ferramenta via web, desde a entrada do módulo como um cron job até a gerência dos objetos gerenciados.
  3. Permitir a visualização de mais de um enlace simultaneamente, de forma organizada e sistemática.
  4. Melhorar a granularidade do tempo de polling, que pode ser no mínimo de 1 minuto, possivelmente transformando o módulo de coleta em um daemon.
  5. Introduzir mecanismos de segurança.

Como evolução do linkstat está iniciando-se o desenvolvimento de uma nova ferramenta de medição de tráfego, só que esta para realizar a medição do real tráfego capturado das células ATM nos enlaces. Atualmente, na rede MetroPoa, existem dois enlaces metropolitanos sendo monitorados e a metodologia adotada é descrita em maiores detalhes pelos autores em [2]. Essa nova ferramenta possuirá uma configuração ainda mais flexível, permitindo a filtragem de fluxos pelo par VP:VC, bem como irá permitir a análise dos pacotes IP sobre ATM.

O trabalho apresentado neste artigo mostra que o RRDtool está viabilizando o desenvolvimento de aplicações de monitoramento proprietárias, o que há algum tempo atrás não justificaria o esforço despendido (a parte funcional da implementação apresentada foi desenvolvida por apenas um programador em menos de uma semana). Outros trabalhos realizados, como é o exemplo do ORCA3, mostram que o monitoramento auxiliado pelo RRDtool não precisa ficar limitado apenas ao uso dos enlaces, mas pode ser estendido ao monitoramento de outros recursos.

^

Agradecimentos

Os autores gostariam de agradecer a Valter Roesler e Fábio Vieira Mello pela ajuda dada no desenvolvimento desse trabalho, bem como a equipe de pesquisadores da UFRGS, que sempre nos auxiliou nas experiências de medição de tráfego.

^

Bibliografia

[1] RRDtool. URL: http://www.caida.org/Tools/RRDtool/ .

[2] Balbinot, L. F., Schneider, E., Bastos, E. L. Uma solução flexível, de baixo custo e de alto desempenho para a medição de tráfego ATM. Anais do Workshop sobre Software Livre (WSL'2000), Porto Alegre, RS, maio de 2000.

1 Projeto do Edital RNP-PROTEM-CNPq de Redes Metropolitanas de Alta Velocidade - RNP/Internet2

2 ver http://www.jonny.eng.br .

3 ver http://www.caida.org/Tools/ORCA .

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004