Recentemente me pediram para fazer alguma análise de um arquivo de rastreamento, que tinha apenas 161 segundos de duração e continha um pouco mais de 2,6 milhões de quadros. Fiquei surpreso ao descobrir que aproximadamente 75% daqueles quadros onde o ping solicita ou o ping responde. Se eu não tivesse reconhecido o endereço IP de origem, teria chegado à conclusão de que o alvo estava sob um ataque de negação de serviço. Em vez disso, aprendi que eles estavam usando o argumento "run_forever" no comando ping do STCP para monitorar a capacidade de alcance do alvo.
Ao contrário do comando ping na maioria dos sistemas UNIX ou Linux, o comando ping da STCP não faz uma pausa entre receber uma resposta ping e o próximo pedido ping. Como o número padrão de pings é apenas 4, esta não é uma questão significativa. Mas quando o número de solicitações é aumentado usando o argumento de contagem ou o argumento run_forever é usado, isto pode criar uma carga significativa no sistema, no adaptador Ethernet e na rede. Isto torna o comportamento padrão do comando ping do STCP totalmente inadequado para o monitoramento a longo prazo de um host alvo.
Mas, só porque o comportamento padrão é inadequado, não significa que você não possa usar o comando ping para monitoramento a longo prazo. O truque é executar repetidamente o comando enviando um pedido de ping de cada vez em vez de executar o comando uma vez e enviar um fluxo contínuo de pedidos de ping. A macro a seguir fará isso.
& ping_forever begins here |
Como você pode ver, os dois primeiros argumentos são passados diretamente para o comando ping e correspondem aos argumentos de host e timeout do ping. O timeout padrão de Ping é de 15 segundos, mas eu acho que é muito longo e na macro mudei isso para 1 segundo. É claro que você pode ajustá-lo ou na macro ou fornecendo um valor como argumento. O terceiro argumento é o número de segundos para pausar entre os pings, o tempo padrão é 1 segundo. Como leva tempo para executar a macro e carregar e executar o comando ping, o tempo real entre os pings é um pouco mais longo. O Packet_monitor mostrou os tempos entre 1,05 e 1,1 segundos. O argumento final é algo que o UNIX ou Linux ping não lhe dará - um timestamp para cada ping para que você possa saber quando o alvo pára de responder e quando ele começou novamente. Se você não quiser os carimbos de data e hora, você pode desligá-los com o argumento -no_timestamp.
ping_forever 164.152.77.6 *** 09-08-30.11:45:38 *** Pinging host 164.152.77.6 : 164.152.77.6 ICMP Echo Reply:TTL 60 time = 2 ms Host 164.152.77.6 replied to the ping *** 09-08-30.11:45:40 *** Pinging host 164.152.77.6 : 164.152.77.6 ICMP Echo Reply:TTL 60 time = 2 ms Host 164.152.77.6 replied to the ping *** 09-08-30.11:45:41 *** Pinging host 164.152.77.6 : 164.152.77.6 ping: No reply. Time Out !! Host 164.152.77.6 didn't reply to the ping *** 09-08-30.11:45:44 *** Pinging host 164.152.77.6 : 164.152.77.6 ping: No reply. Time Out !! Host 164.152.77.6 didn't reply to the ping *** 09-08-30.11:45:47 *** Pinging host 164.152.77.6 : 164.152.77.6 ICMP Echo Reply:TTL 60 time = 4 ms Host 164.152.77.6 replied to the ping *** 09-08-30.11:45:48 *** Pinging host 164.152.77.6 : 164.152.77.6 ICMP Echo Reply:TTL 60 time = 3 ms Host 164.152.77.6 replied to the ping |