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 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:
- 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);
- Pode-se apresentar vários applets,
apresentando os valores recebidos com escalas diferentes de tempo;
- 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.