Предположим, у меня есть локальная сеть с 20 подключенными устройствами (например, коммутаторы, маршрутизатор, точки доступа, XBOX, DirecTV, IP-камеры и т.д.). Я хочу периодически пинговать каждое устройство, чтобы увидеть, все ли устройства живы. Мой процесс проверки связи использует несколько рабочих потоков (скажем, 8 потоков) для отправки 8 запросов одновременно, пока все 20 устройств не будут проверены. Я знаю, что могу отправлять их раз в минуту, не вызывая проблем с загрузкой сети. Но мне интересно, как быстро я могу отправить пинги, прежде чем я начну видеть проблемы с загрузкой сети. Например, предположим, что я хотел посылать пинги один раз каждые 10 секунд или один раз каждые 5 секунд. Есть ли у кого-нибудь практические правила, чтобы определить, как часто я могу пинговать типичную локальную сеть из 20 устройств, прежде чем начать вызывать проблемы с загрузкой сети?
2 ответа
По умолчанию Windows ping.exe
отправляет 32 байта данных за один «пинг». Это очень небольшое число, которое может обрабатывать любая сеть или устройство. Вы должны будете отправить огромное количество одновременных пингов, чтобы даже быть заметным.
Я думаю, что вопрос сводится к числу пакетов в секунду, которые вы можете отправить через свою сеть. Вообще эта цифра была бы довольно высокой.
Типичный пинг-пакет составляет около 64 байтов, так что довольно маленький. Если все устройства находятся на одной и той же сети, у вас должна быть возможность подключаться к нескольким пингам в секунду без каких-либо проблем - даже большинство маршрутизаторов должны справиться с этим (но именно на маршрутизаторах возникают узкие места, поскольку необходимо проверять пакеты, и это требует ЦПУ).
Возможно, вы захотите получить версию MTR и узнать количество пингов, которые она отправляет в пункт назначения, чтобы увидеть, какую производительность вы получаете и с чего начинаете терять пакеты. (В Linux существует значение --interval, которое может быть задано в долях секунды для отправки нескольких пакетов в секунду - если вы являетесь пользователем root). Ради интереса я решил отправлять 1000 пакетов в секунду и получил 0% потери пакетов и без заметного скачка в задержке между гигабитными устройствами, подключенными напрямую. MTR не будет идти достаточно быстро.
Если бы вы посылали эхо-запросы по вашей локальной сети на все устройства один раз в секунду, то нагрузка составляла бы около 64 * 20 = 640 байт в секунду = 5120 бит в секунду (приблизительно), что почти соответствует пределу погрешности для даже 10-мегабитный коммутатор - так что практически, если вы действительно не продвигаете вещи действительно сильно, вы не можете вызвать проблемы с сетью на вашей локальной сети, используя PING с пакетами обычного размера.