Знаю, что тема избитая, но поискав некоторое время назад, я так и не нашел готового решения.
Хотелось ping-сервер, который при посылке запроса на него начинает пинговать заданный узел (ipv4/ipv6) пакетами указанной длины и с заданнным интервалом ( > 1 секунды).
Обращаясь повторно к ping-серверу через некоторое время (минуты) мы должны получить статистику (передано/принято/ошибок пакетов мин/макс/среднее время отклика и число изменения состояний.
Состояние - это результат: успешно приняли ответ или нет. Число изменений состояния позволяет понять состояние канала (одиночные потери или длительная недоступность).
Мной был написан такой сервер (на C) и клиент (на C) для замены check_icmp от nagios. Протокол запросов текст/tcp, т.ч. при желании клиента можно изобразить даже на bash+netcat.
Из особенности реализации: сервер теоретически не требует suid-ности (используется сокет ICMP/ICMPV6), время возврата пакета измеряется при помощи SO_TIMESTAMPNS.
Если кого заинтересовало, то могу выложить исходники на гитхабе.
Сейчас оно запущено для мониторинга 70 хостов.