amarao_san

Category:

network pet project

Рисовать графики — это интересно, но очень однобоко. Я задумался, что хочу потрогать Rust с точки зрения сети (благо, что работу сети я понимаю куда лучше, чем происходящее между redraw event и трансформацией текстуры).

И вот какая у меня идея для pet project получилась:downtimer.

Это программа, которая с субмилисекундной точностью (ну или насколько сеть позволяет) позволяет оценить даунтаймы сети, причём делает это как в foreground, так и в background-режиме.

Примерно так:

downtimer -H host [-I iface] [-r rate] [-b /run/socket] [-t duration] [-w pkt_timeout]

Если socket не указан, то работает в foreground-режиме — до нажатия Ctrl-C или duration. Если socket указан, уходит в бэкграунд с задачей и позволяет получить ответ (и завершить процесс) как downtimer -g /run/socket. Сокет создаётся в процессе, само собой.

Ключевые киллер-фичи:

* При прерывании правильно учитывает in-flight пакеты. Если таймаут для отосланного пакета не истёк, то такой пакет не считается потерянным. fping и все остальные пинги по Ctrl-C любят показать 99% или что-то подобное (10001 send 10000 received).

* Выводит в json без постороннего шума на stdout.

* Считает не только число потерянных пакетов, но и даунтайм (суммарный), число даунтаймов (мне прямо сейчас нужна такая штука — сколько раз был даун), и разбивку по каждому даунтайму (можно посмотреть какой длительности был даунтайм №9). Даунтайм определяется как длительность между 

* Поддерживает опции для сброса статистики (в background-режиме), остановки и продолжения/начала, плюс возможность смотреть статистику в процессе (как накопленную, так и за заданное окно).

Я понимаю, что пингаляторов человечество написало много. Но конкретно с числом посчётом числа даунтаймов на милисекундной (или суб-милисекундной) точности — я таких не знаю.

И это звучит как интересный проект на Rust.

Error

default userpic

Your IP address will be recorded 

When you submit the form an invisible reCAPTCHA check will be performed.
You must follow the Privacy Policy and Google Terms of use.