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
12 de dezembro de 1997 | volume 1, número 7

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Uma Saraivada de Pings

Danton Nunes <>

Rede Nacional de Ensino e Pesquisa (RNP)

Introdução
Viabilidade 1 – Ou como evitar coelhos
Viabilidade 2 – Ou pingin' in the rain
Experimentos
(In)Conclusões
Agradecimentos

O presente artigo apresenta uma discussão acerca da viabilidade de se descobrir o número de máquinas conectadas à Internet (pergunta feita com freqüência por jornalistas e leigos) através do comando ping.

^

Introdução

Uma pergunta muito difícil de responder, mas que os leigos insistem em perguntar, é qual é o tamanho da Internet, quantas máquinas estão ligadas no mundo, ou, mais complicado ainda, quantos usuários a Rede tem.

Ainda hoje, se faz recenseamento da Rede através do DNS, na esperança de que o número de nomes registrados seja proporcional ao número de máquinas numa razão aproximadamente constante. Esse método está dando sinais de cansaço porque, ultimamente, tem sido prática comum bloquear o protocolo de transferência de tabelas de nomes (named-xfer) nos roteadores. Os paranóicos administradores de redes vêem, e não sem razão, a transferência de tabelas de nomes como algo que pode (e por vezes é) explorado por candidatos a invasores. Com isso, a contagem de máquinas através do DNS vem registrando uma redução das dimensões da Rede, por contar como zero as zonas que não são copiadas.

É clara, pois, a necessidade de novos métodos de recenseamento da Internet. Considerando que ICMP normalmente não é tão bloqueado quanto o named-xfer, uma possibilidade interessante consiste em disparar uma saraivada de pings em partes escolhidas da Rede, e contar o número de ecos retornados.

Este trabalho relata alguns experimentos realizados no Núcleo de Apoio de São Paulo (NA-SP) a respeito da contagem de máquinas por meio de pings sistemáticos e discute algumas idéias que poderão levar a um experimento em escala nacional.

Um monte de perguntas vêm à mente: É viável disparar uma saraivada de pings destinados a cada máguina possível num grande segmento da Internet? Quanto tempo leva? O tráfego gerado vai causar algum impacto? Os dados podem ser obtidos com alguma confiança pingando por amostragem?

Para responder a algumas dessas questões o autor deste artigo, com a colaboração de Paulino Ng, Coordenador do NA-SP, elaborou um programa que coleta as respostas de pings de segmentos designados da Rede. O programa é um tanto ingênuo, um script em Cshell que varre seqüencialmente os segmentos dados pelos argumentos. Os endereços das máquinas que responderam com sucesso são registrados num arquivo.

^

Viabilidade 1 – Ou como evitar coelhos

O comando ping, comum nos sistemas UNIX, utiliza o serviço de eco do ICMP. O programa desiste de esperar um eco que leve mais de dez segundos para retornar, declarando a máquina alvo, nesse caso, inalcançável. Em caso de sucesso a resposta demora dificilmente mais do que um segundo. Nas considerações que seguem, vamos admitir que uma resposta bem sucedida leve um segundo enquanto uma mal sucedida tome 10 segundos.

Para varrer um espaço de 256 endereços teríamos alguma coisa entre 256 segundos e 2.560 segundos, ou seja entre 4 e 43 minutos. O limite superior é bem mais provável, porque é mais fácil encontrar um espaço de endereços vazio do que completamente cheio. Assim, tomando o valor pessimista, podemos admitir que varrer um espaço de 256 endereços toma 43 minutos, ou três quartos de hora, para arredondar. Por dia, o programa seria capaz de percorrer 32 espaços de 256 endereços.

Uma rede de classe B tomaria cerca de oito dias! Isso significa que, se quisermos varrer a Internet inteira, poderíamos levar uma era geológica e, quando chegássemos ao fim, teríamos que começar a contar novamente, porque a rede já teria mudado.

Fica claro que uma abordagem puramente seqüencial é inadequada. É mais razoável disparar uma força tarefa de pings, a partir de diversos pontos da rede, cada processo responsável por um segmento da rede. Considerando que a Internet brasileira tem um grande espaço de 32.768 redes de classe-C (o bloco 200.128/9), mais uma dúzia, se tanto, de classes-B, mais as classe-C históricas, podemos estimar em qualquer coisa em torno de 38 mil o estoque de espaços de 256 endereços IP no Brasil. Uma força tarefa que varresse a Internet brasileira nos dois dias de um final de semana teria que ter aproximadamente seiscentos processos pingando em paralelo. Rodando vinte instâncias por máquina, seria necessário alocar apenas trinta máquinas para fazer o recenseamento completo. Para uma organização como a RNP isso não é de forma alguma inviável.

^

Viabilidade 2 – Ou pingin' in the rain

Nas condições do parágrafo anterior, o número total de pings em dois dias chegaria perto de dez milhões (9.728.000 mais precisamente), o que dá cerca de 56,3 pings por segundo. Com pacotes de 64 octetos, a produção líquida será de cerca de 28,8 mil bits por segundo, o que, de modo algum, impacta uma rede cujo backbone funciona a dois megabits por segundo.

- PINGANDO POR AMOSTRAGEM

Uma variante do projeto discutido até aqui seria a de se fazer uma amostragem estatística, pingando não a totalidade de endereços possíveis, mas apenas uma fração deles distribuída aleatoriamente.

O problema aí é que, para se inferir o número total de máquinas que responderiam ao ping, é necessário se conhecer um modelo de distribuição dos endereços dentro de cada espaço. Longe de ser uniforme, essa distribuição é afetada por uma série de fatores, tais como: as políticas de divisão em sub-redes, a tendência de se ocupar os espaços seqüencialmente, o uso de certos endereços notáveis (existe uma instituição onde os enderecos com o último octeto igual a 100 são reservados para roteadores), e outras idiossincrasias. Além disso, o padrão de ocupação de um classe-B de uma universidade deve ser bem diferente das classes-C de um provedor comercial de acesso discado.

Fica, então, a pergunta: é possível desenvolver um modelo da distribuição do último octeto, que seja suficientemente confiável para estabelecer intervalos de confiança para o recenseamento por amostragem? Bem, esta é uma pergunta que este trabalho não responde.

Uma simulação de uma "pingagem" por amostragem foi feita com uma das redes que serviram de cobaia nos testes relatados a seguir. No teste, 4.953 máquinas de uma rede de classe-B responderam a pings. Na simulação, a rede foi percorrida aleatoriamente, com uma amostra para cada trinta e dois endereços reais, variando a semente do gerador de números aleatórios. Em quatro corridas, as estimativas foram: 8.448, 8.608, 7.520 e 7.872 (média de 8.112), todas bem acima do número correto, que é de 4.953.

É evidente que, aumentando o número de amostras, a estimativa deve se aproximar do valor correto, mas tudo leva a crer que esse estimador é muito viesado e a convergência é lenta. Naturalmente, se conhecêssemos, de antemão, a distribuição de endereços IP dentro de cada espaço pesquisado poderíamos obter estimativas melhores do que essa.

Considerando que, muito provavelmente, um modelo feito com dados de uma rede acadêmica de classe-B dificilmente serviria para um provedor de acesso discado, tudo leva a crer que o recenseamento por amostragem não tem muito futuro, a menos que a taxa de amostragem seja grande (um em cada 32, como acabamos de ver, não funciona).

^

Experimentos

Até agora, enviamos saraivadas de pings para duas redes de classe B, ambas de caráter acadêmico ou de pesquisa. As cobaias foram as redes do INPE, pela qual o autor nutre certa afeição, e a da USP, por abrigar um grande número de máquinas. A saraivada de pings foi disparada por dezesseis processos rodando simultaneamente em uma mesma máquina. Cada processo se encarregou de vasculhar 1/16 da rede, ou seja, dezesseis espaços de endereços correspondentes a uma rede de classe-C. Cada resposta recebida era armazenada em um arquivo para contagem e outras estatísticas posteriores. As duas operações levaram aproximadamente doze horas, o que concorda com o que foi calculado acima.

A saraivada de pings foi ingênua no sentido de que não se levou em conta qualquer conhecimento a priori da divisão em sub-redes das redes alvo, de modo que endereços inválidos e de broadcast foram pingados junto com endereços lícitos. Isso significa que roteadores devem ter fornecido mais de uma resposta. Portanto, o número de respostas não é igual ao número real de máquinas capazes de responder a ping.

O recenseamento ainda tem como fontes de incerteza as máquinas que não respondem a ping. Não é o objetivo deste experimento, porém, ter uma contagem altamente precisa do número de máquinas, mas sim ter um indicador desse número que seja proporcional ao número de máquinas.

A contagem de respostas resultou em 4.953 para a rede da USP e 862 para a rede do INPE, números que se aproximam do tamanho que o autor imaginava para as duas redes.

A Tabela, a seguir, compara esses resultados com duas medidas baseadas em pesquisa no sistema de nomes (DNS), uma pelos domínios usp.br e inpe.br, contando os registros da classe A e outra pelos domínios 107.143.in-addr.arpa e 163.150.in-addr.arpa, contando os registros da classe PTR. Cabe aqui uma observação: o autor não ignora que não existe relação a priori entre os domínios e as redes, por exemplo, várias máquinas do domínio iai.int são da rede do INPE, mas, nestes casos particulares, existe uma correlação muito forte entre domínios direto e reverso.


Método INPE USP
Saraivada de pings 862 4.953
DNS direto (A) 1.711 7.242
DNS reverso (PTR) 1.710 4.926

Tabela 1. Resultados de Medições das Redes do INPE e da USP

Duas coincidências saltam à vista: o quase empate entre registros da classe A de inpe.br e registros PTR de 163.150.in-addr.arpa, e entre o resultado obtido pelos pings e a inspeção de 107.143.in-addr.arpa no caso da rede da USP.

A primeira deve ser coincidência porque os domínios inpe.br e 163.150.in-addr.arpa, apesar da grande intersecção, possuem também trechos disjuntos, isto é, existem máquinas cujos nomes terminam em inpe.br mas não fazem parte da rede 150.163/16, e máquinas na rede 150.163/16 que não pertencem ao domínio em questào. São minoria, mas existem. Quanto à segunda coincidência, não se tem qualquer elemento para comentá-la.

^

(In)Conclusões

É claro que vasculhar somente duas redes, por importantes e representativas que sejam, não é suficiente para avaliar a técnica proposta como método sistemático de recenseamento da Rede.

Por outro lado, os valores alcançados mostram o quanto são díspares os resultados de três técnicas que deveriam, em tese, dar resultados muito próximos, especialmente nas redes acadêmicas. Mas, afinal, o que mesmo é que estamos procurando? De fato, o que se deseja de uma ferramenta de recenseamento é obter índices que representem, de alguma forma, o tamanho da Rede e de seus problemas, não a contagem exata de cabeças (ou orelhas?), isto é, um número tal que a necessidade de certos recursos (banda passante, número de pontos de presença ou de integração, capilaridade desses pontos, só para mencionar alguns) seja sua função crescente.

Uma nova campanha de pings poderia revelar mais pontos fortes e fracos do método proposto, especialmente se forem pingadas redes de natureza diversa da acadêmica, tais como provedores de acesso por linha discada e redes corporativas comerciais. É possível que, com o efeito dos grandes números, as discrepâncias e concordâncias surpreendentes se transformem numa regularidade estatística mais tratável. É muito importante que essa campanha seja repetida em instantes diferentes do tempo para verificar se as tendências por ela revelada coincidem, ou não, com outros métodos. Há muito ping pela frente.

No fim, seja qual for o resultado, este método somente trará mais uma métrica para ajudar a se ter uma idéia do tamanho do problema que é a Internet. Se, por um lado indicadores como o proposto são importantes, por outro, como bem disse Alexandre Grojsgold, o "tamanho" da Internet é uma variável multi dimensional, que não se resume facilmente a indicadores lineares (número de hosts, tráfego, número de domínios) que possam ser plotados num gráfico temporal para acompanhamento de evolução.

Assim, se alguém perguntar qual é o tamanho da Internet, conte a longa história de como é difícil avaliar isso. Se insistir - e se for um jornalista recém-saído do curso de comunicações com a cabeça cheia de estereótipos e vazia de compreensão, vai insistir - diga que são exatamente 25.438.927 máquinas com um total de 127.218.653 usuários. Quer conferir?

^

Agradecimentos

O autor agradece especialmente a Michele Mara de Araújo Espíndula Lima, do NC-RJ da RNP por fornecer os resultados com base em inspeção do DNS e a Paulino Ng, pela discussão da técnica e dos resultados.

^

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