NetMetric: medição ativa de redes IP
O sistema Netmetric teve origem em 2005, a partir de um convênio firmado entre a empresa Vivo e o Departamento de Engenharia Elétrica da UFRGS. No ano de 2007, o projeto foi transferido para o Departamento de Engenharia Elétrica da PUCRS, e em 2010 foi integrado ao PRAV-UFRGS (Projetos em Áudio e Vídeo - PRAV, www.inf.ufrgs.br/prav). O Netmetric é uma ferramenta de medição ativa de redes que tenta alinhar as vantagens do monitoramento ativo com um controle racional da intrusão de tráfego que o mesmo provoca.
É utilizado para monitoramento da rede fixa e também 3G/4G da Telefônica/Vivo. A Figura 1 fornece uma visão esquemática do sistema. O gerente é o servidor de medições e os agentes Windows, Android e Linux são os terminais que se localizam na rede em que se deseja efetuar uma medição.
O MoM (Manager of Managers) é o componente web do sistema, concentrando todos os resultados de medições, recebendo-os dos agentes, armazenando-os em banco de dados e os exibindo, principalmente sob a forma de gráficos. Nesta interface web, os testes podem ser detalhadamente configurados, tornando o sistema personalizável. O usuário seleciona quais testes deseja fazer, a qual intervalo, quais sites testar, etc. As configurações disponíveis dependem do agente utilizado, sendo exportadas em um arquivo de agenda em formato XML (eXtensible Markup Language), que é então enviado aos agentes. Na tela inicial, é possível ver o status atual de todas as sondas distribuídas no país. Os agentes, por sua vez, enviam ao MoM os seus resultados. É suportado nos navegadores Chrome, Internet Explorer e Mozilla Firefox.
O sistema possui quatro grandes grupos de métricas.
As chamadas métricas principais são de Throughput (HTTP, TCP e UDP), atraso (unidirecional e bidirecional), entre outras.
O grupo chamado de métricas do dispositivo corresponde a características que são extraídas por comandos implementados pelos fabricantes das interfaces utilizadas para o ingresso na rede (modems 3G). Neste grupo, temos: Cellid (identidade da antena da Vivo ao qual o terminal se conectou); LAC (Location area code, ou identificador de região geográfica); BER (bit error rate ou porcentagem de dados corrompidos); Marca e modelo do modem utilizado; Força do sinal (Intensidade do sinal recebido pela antena); etc. Algumas métricas de dispositivo também são extraídas a partir de comandos enviados ao sistema operacional, como ocorre com a obtenção do MTU (Unidade máxima de transmissão do link utilizado).
As chamadas métricas de serviço são extraídas a partir de requisições a servidores externos que tenham algum propósito específico, como provedores de conteúdo web, resolução de nomes ou servidores de transferência de arquivos, por exemplo. Adicionalmente, a análise do link em relação a estas entidades externas é enriquecida com informações de rota e latência.
As métricas de qualidade estão em desenvolvimento, e são de Monitoração de IPTV, Monitoração de VoIP, descoberta de QoE, entre outras.
Situação
Convergência – cada vez mais serviços de comunicação e informação são disponibilizados sobre redes IP;
QoS (Quality of Service) – as operadoras de serviços de comunicação devem garantir que seu produto atenda a determinadas expectativas do usuário;
IPPM (Internet Protocol Performance Metrics) – Grupo de métricas definidas por especialistas para caracterizar uma rede IP.
A ferramenta
O NetMetric objetiva a medição ativa (injeta tráfego adicional) de redes IP, nos perfis:
- Escalável: possui uma arquitetura que suporta adição de novos plugins de medição, podendo assim contemplar as métricas definidas pelo IPPM;
- Altamente configurável: disponibiliza uma interface web que permite que as medições sejam detalhadamente descritas;
- Generalista: permite que terminais de redes IP sobre qualquer meio físico e de qualquer topologia possam estabelecer medição entre si.
Mecanismos de medição
Na medição, estão envolvidas duas entidades – o gerente, que irá programar as medições, e o agente, que é o elemento de referência na medição.
O gerente dispara uma rajada de acordo com um perfil definido para a medição. O protocolo de transporte utilizado é o UDP.
O agente receberá as rajadas, e enviará outra semelhante ao gerente, com suas próprias marcações de tempo, permitindo assim a medição do link de upstream.
O gerente receberá a rajada do agente e montará uma tabela de marcações, que será repassado aos plugins para que computem as métricas, armazenando seus resultados.
Objetivos futuros da ferramenta
O desenvolvimento futuro do NetMetric está vinculado a 4 grandes objetivos:
- Ampliação da gama de métricas disponibilizadas, protocolos e plataformas suportadas;
- Fortalecimento dos mecanismos de controle de medição;
- Implementação de um mecanismo completo de medição passiva;
- Aumento das possibilidades de manipulação e visualização na interface.
Definição das métricas obtidas pelo agente NetMetric Windows
O agente NetMetric é capaz de medir três grandes grupos de métricas: as chamadas métricas principais, obtidas por técnicas de medição ativa de redes, as métricas do dispositivo, extraídas por comandos implementados pelos fabricantes das interfaces utilizadas para o ingresso na rede e, por fim, métricas auxiliares, as quais refletem condições inerentes a um terminal conectado à rede independente da existência de um servidor de referência.
Métricas Principais
As métricas principais do NetMetric são medidas através da técnica do trem de pacotes, como podemos ver na Figura A.1. O trem é enviado pelo gerente NetMetric em direção ao agente (blocos em verde) Windows e respondido simetricamente por este (blocos em vermelho).
Figura A.1: Método de extração das métricas principais do agente NetMetric Windows.
Cada pacote possui uma identificação sequencial de 1 a n, em ordem de envio, onde n é a quantidade total de pacotes em um trem, sendo ainda associado a quatro marcações temporais, correspondente aos tempos de partida e chegada aos dois terminais da medição (os tempos de T1 a T4, conforme a Figura A.1). O gerente NetMetric então monta uma tabela com estes dados e dela deriva todas as métricas, disponibilizando-as para a exibição no agente através do protocolo Simple Network Management Protocol (SNMP). Para o agente Windows, seis métricas são obtidas com este método, a saber:
- O round-trip time (RTT) é o tempo decorrido entre o envio de um pacote e o recebimento da sua resposta, do ponto de vista do gerente NetMetric. Contempla apenas os tempos de trânsito na rede, descontando os tempos de processamento nos softwares de medição. Sua função é análoga àquela da ferramenta ping, embora esta utilize o protocolo ICMP, de nível mais baixo em relação ao UDP utilizado pelo NetMetric.
- O jitter é uma métrica relacionada à estabilidade da rede. Cada pacote demanda um determinado tempo para chegar ao seu destino. Este intervalo caracteriza a chamada latência do link entre o ponto de origem e o de chegada. Em um trem com vários pacotes, cada qual tem sua própria latência. O jitter é a variação deste atraso, comparando os pacotes entre si.
- O throughput caracteriza a capacidade de transmissão de dados da rede, para um determinado intervalo. É extraído pela simples razão entre o volume de dados de um trem NetMetric e o tempo transcorrido entre as observações do primeiro e último pacotes de um trem. O NetMetric faz duas medições distintas utilizando a mesma técnica, cada qual correspondente a um protocolo de transporte (UDP e TCP).
- A perda é a quantidade de pacotes que, apesar de enviados, não foram observados corretamente no destino. O NetMetric utiliza números de sequência para identificar os pacotes, sendo possível assim a detecção de quais foram perdidos. É expressa por uma porcentagem em relação ao total de pacotes enviados em um trem.
- Por sua vez, os pacotes fora de ordem (POM) indicam a quantidade de pacotes que foram observados no destino em uma ordem distinta do envio. Como na perda, os números de sequência são utilizados para determinar quando um determinado pacote não corresponde ao esperado após a última recepção realizada. Também é expressa em termos de porcentagem em relação à quantidade total de pacotes.
A métrica de throughput HTTP difere das anteriores, pois não utiliza o gerente para envio de pacotes e medições de tempo, mas sim requests HTTP. Para o teste de download, o agente solicita um arquivo ao servidor especificado; para o teste de upload, o agente envia um arquivo, que é recebido por um script PHP alocado no servidor. Em ambos os testes, são medidos o número de bytes transferidos e o tempo decorrido.
Métricas do Dispositivo
Os dispositivos 3G homologados implementam em seus firmwares comandos normatizados pelo 3rd Generation Partnership Project (3GPP) para a obtenção de métricas relacionadas à identificação do dispositivo e das condições de conexão a que ele está sujeito. Tais comandos podem ser invocados a partir de um terminal ou ferramenta que acesse o dispositivo via comunicação serial. As implementações são de responsabilidade dos fabricantes, de tal maneira que à interface NetMetric só compete extraí-las, de acordo com a Figura A.2.
Figura A.2: Método de extração das métricas do dispositivo.
Esta extração se dá através de uma porta serial auxiliar fornecida pelo dispositivo ao sistema operacional (a porta principal é usada para a conexão Point-to-Point Protocol – PPP – com a Internet). Esta porta auxiliar normalmente é controlada pelos softwares discadores fornecidos pelos fabricantes. O NetMetric utiliza privilégios administrativos para deter este controle, acessar a respectiva porta e obter as seguintes métricas:
- O CellID diz respeito à antena da estação rádio-base que proverá, por radiofrequência, o acesso do dispositivo a Internet (Figura A.2). É um valor inteiro que representa a identificação desta antena, fornecendo assim um indicativo seguro da localização do dispositivo para o provedor de serviços.
- O LAC (Location Area Code) é um identificador de 16 bits que representa uma determinada zona dentro da área atendida por uma operadora de serviços para dispositivos móveis, podendo compreender uma ou várias células. Permite a localização mais precisa do local de execução do teste.
- A força do sinal indica a intensidade com que o dispositivo recebe o sinal fornecido pela antena da estação rádio-base, em dBM.
- A taxa de erros (Bit Error Rate - BER) indica a quantidade porcentual de dados corrompidos (por ruído, interferência, distorção ou erros de sincronização) recebidos pelo dispositivo, em relação ao volume total de informação a ele direcionada.
- O modo de conexão representa a instrução de como o dispositivo deve escolher a rede a se conectar, entre as várias que pode detectar (incluindo diferentes operadoras). Os principais modos são: manual, onde o usuário irá estabelecer (normalmente via discador) a qual rede irá se conectar, e automático, onde a escolha é feita por critérios alheios a configurações previamente especificadas.
- A tecnologia da conexão indica qual a tecnologia utilizada para a comunicação de dados entre antena e dispositivo. Os valores usuais são UMTS (tecnologia 3G) e EDGE (tecnologia 2G).
- A marca e o modelo do modem informam o fabricante do dispositivo, bem como o sua identificação comercial.
Métricas Auxiliares
O agente NetMetric Windows passa a incorporar a partir da versão 2.0 informações extraídas de maneira independente do trem de pacotes NetMetric, tornando possível a obtenção de MTU, atraso DNS e Rota, detalhados abaixo. Tais métricas estabelecem relações com outros servidores além do gerente NetMetric (como na métrica de atraso de DNS), e também permitem a detecção de configurações do link e da interface local de rede (respectivamente, rota e MTU) que possam estar impactando nos indicadores puros já extraídos pela ferramenta (throughput, perda, atraso, etc.). A interface NetMetric implementa estas funcionalidades diretamente a partir do seu código, acessando funções de acesso ao sistema operacional, conforme a Figura A.3.
Figura A.3: Método de obtenção das métricas auxiliares.
As três métricas obtidas por este método são:
- A MTU (Maximum Transmission Unit), ou Unidade Máxima de Transmissão, refere-se ao tamanho, em bytes, do maior datagrama que uma camada de um protocolo de comunicação pode transmitir. Esta métrica está relacionada à possibilidade de fragmentação de dados característica do protocolo IP, que permite que um volume arbitrário de dados seja segmentado em pacotes menores. A MTU é justamente o valor de referência para o tamanho destes pacotes. Datagramas de IP maiores que o valor do MTU são divididos e depois remontados quando chegam ao seu destino causando perda de velocidade. O valor do MTU será determinado pelo sistema operacional, em função das configurações do dispositivo de rede ou de valores explícitos (no caso do Windows, em sua ferramenta de edição de registros). O NetMetric utiliza uma chamada de sistema do Windows para a obtenção do MTU para a interface de rede ativa.
O atraso DNS (Domain Name Service) corresponde ao intervalo transcorrido entre uma requisição DNS – na qual se solicita a um servidor o endereço IP relacionado a um nome fornecido (como o endereço de uma página web) – e sua resposta. É medido calculando-se o tempo que uma chamada de sistema Windows demanda para resolver o endereço do site da Vivo (www.vivo.com.br). Nesta chamada, é utilizado o servidor DNS padrão da configuração de rede do usuário. Os valores refletem uma situação real de uso, podendo assim ser inferiores a 1 ms, uma vez que o sistema operacional utiliza uma cache local de nomes. Para limpar esta memória, o seguinte comando pode ser executado em uma janela de terminal do Windows:
ipconfig /flushdns
Sua execução, no entanto, fará que todas as novas solicitações de nomes, em qualquer aplicativo, sejam direcionadas novamente ao servidor DNS.
O Rastreio de Rota mostra o caminho dos dados pela rede, entre o computador da medição e o servidor de destino (a ferramenta utiliza o mesmo endereço configurado para o gerente NetMetric), na forma de IPs, como no exemplo abaixo:
Desconhecido -> 10.118.17.42 -> 200.220.224.194 -> 200.142.132.2 -> 200.142.132.1 -> 189.56.195.1 -> 187.100.10.189 -> 198.32.122.2 -> 200.143.252.66 -> 200.143.252.57 -> 200.132.0.16 -> 143.54.127.49 -> 143.54.0.138 -> 143.54.3.65 -> 143.54.85.33
Caso algum endereço não puder ser detectado, teremos um IP “Desconhecido” na lista. A técnica utilizada é a mesma da ferramenta tracert – envio de pacotes ICMP com tempo de vida limitado para que se obtenha como retorno a identificação da máquina onde se deu a expiração.