Simple LAN Monitor - Descrição

 

Descrição

A corrente versão do Simple LAN Monitor (SLM) encontra-se composta por 3 componentes, e 4 executáveis na sua forma compilada.

A componente servidor, que na realidade é representada por 2 binários executáveis, apenas corre em UNIX. Foi desenvolvido e testado em Debian 2.2r2 com um kernel Linux 2.4.12 e kernel 2.4.13.

No entanto, deverá ser fácil compilar ou adaptar estas para outras versões de UNIX que suportem gcc e libpcap.

O cliente e o emulador de servidor foram desenvolvidos em JAVA (para a JVM 1.1) em Microsoft Visual J++ 6.0 SP4 e em Sun JDK 1.3. Foram testados com sucesso com:

  • AppletViewer e Java do Sun JDK 1.3, a correr em Windows 2000 Workstation SP2;
  • IE 6.0 e JView, a correr em Windows 2000 Workstation SP2;
  • IE 5.0 e JView, a correr em Windows 2000 Workstation;
  • IE 4.0 e JView, a correr em Windows NT 4.0 Workstation.
  • Netscape Communicator 4.75, a correr em Red Hat Linux 7.0. (apenas a applet).

 

Descrição Técnica

No que toca ao funcionamento, este e o seguinte:

- O programa de sniffing encontra-se a "ouvir" os pacotes que passam na rede.

Apenas recolhe os cabeçalhos de cada pacote para minimizar a carga no servidor onde se encontra instalado.

Através dos cabeçalhos, determina o tamanho real dos pacotes a circular na rede, e vai somando uma variável. Esta variável é um apontador para uma área partilhada de memória.

Este programa apenas realiza estas tarefas, de forma a minimizar o uso de CPU, e conseguir acompanhar o tráfego de redes de 100 Mbps (ou superiores) em hardware modesto.

- O programa de cliente sniffing, recolhe e trata o valor guardado nesta área partilhada. A parte central deste programa não é nada mais, nada menos que um servidor de TCP/IP que se encontra à escuta de pedidos numa porta TCP (por defeito, a 5000).

Neste programa é despoletado periodicamente um alarme UNIX. Este alarme é invocado de forma assíncrona. Esta rotina recolhe os dados na memória partilhada com o programa de sniffing, e realiza operações aritméticas para calcular a velocidade em Kbps correntes do segmento de colisão da LAN onde se encontra.  Recebendo um pedido de conexão na porta TCP, devolve o valor no formato "xxx.xx\n", em que o x representa um número de 0 a 9; e "\n" é o caracter ASCII 13: New Line  (não devolve no entanto as aspas).

- O programa plug-in para o MRTG, obtêm os dados tal como fornecido pelo servidor de sniffing, e transforma estes num formato aceitado pelo MRTG. Colocado de outra forma, encontramo-nos a simular o output de uma OID de um servidor SNMP apenas para efeitos de compatibilidade.

- O cliente (applet) JAVA, liga-se ao endereço e porta do servidor. Estes dados (porta TCP e IP) são passados como argumentos da tag <APPLET> no código HTML. Neste momento, é-lhe fornecido o valor momentâneo da ocupação da rede, e este realiza os cálculos de media e representam os valores num gráfico.

Os gráficos possuem variação de escala, de acordo com os valores fornecidos.

As vantagens destes cálculos residirem do lado das applets são as seguintes:

  1. Existe a possibilidade de correr múltiplas estancias dos mesmos gráficos; (i.e. varias pessoas a visualizar a ocupação do mesmo segmento de colisão, usando o mesmo servidor);
  2. Pode-se apresentar vários applets, apresentando os valores recebidos com escalas diferentes de tempo;
  3. Por último, simplifica o código da componente servidor, e da rotina assíncrona do componente assíncrono de controle de tráfego do servidor TCP.