Хм, интересная проблема. Я надеюсь, что вы любите читать ...: -)
Мне было бы интересно узнать, как будет использоваться инструмент мониторинга. В
работа, у сисадминов просто пара больших экранов в комнате,
показывает веб-страницу, содержащую множество сетевых статистических данных, с этим постоянно
обновление.
В остальной части моего описания предполагается, что инструмент мониторинга сети будет
используется, как описано выше. Если вы просто хотите быть в состоянии сделать специальную
проверить между двумя случайными хостами в вашей сети, я бы просто использовал rsync для
передать достаточно большой файл (около 1 - 2 МБ). Я уверен, что есть
другие инструменты передачи файлов, которые также рассчитывают скорость передачи.
При реализации этого (особенно в большой сети) вы должны
минимизировать риск того, что тест затопит сеть, мешая людям
(или программы) на самом деле с его помощью. Вы не хотите быть обвиненным в
значительное замедление (или, что еще хуже, простои) только потому, что вы проводили
тест. Ваши сисадмины не будут вам благодарны ...
Я бы разработал инструмент следующим образом:
Боб - это сервер, который участвует в индивидуальном «тесте», выполняя
следующее:
- Боб получает запрос от клиента. В запросе указывается, сколько данных собирается отправить клиент.
- Если объем данных, предлагаемых для отправки, не слишком велик, дождитесь данных. В противном случае Боб немедленно отклоняет запрос и завершает общение.
- Как только необходимое количество байтов будет получено, ответьте с количеством времени, которое потребовалось, чтобы получить все это. Боб прекращает общение.
Алиса - это компонент, который отображает результат измерений
принято (через веб-страницу или иным способом). Алиса - долгоживущий процесс
(возможно, веб-сервер), настроенный на периодическое подключение к списку
Боб серверы. Для каждого настроенного Боба:
- Отправьте Бобу запрос с объемом данных, которые Алиса собирается
Отправить.
- Отправьте Бобу указанное количество данных как можно быстрее.
- Ждите ответа от Боба и вычислите скорость сети.
- «Показать» результат для этого экземпляра Боба. Вы можете выбрать
для отображения совокупного результата. Например, средний результат для
каждый из последних 20 тестов, чтобы сгладить любые аномалии ...
При проведении данного теста Алиса должна сообщать о любых сбоях. Например.
«Не удалось установить TCP-соединение с Бобом» или «Боб
преждевременно прервал передачу 'или что-то еще ...
Разбрасывать серверы Боба по стратегическим местам в вашем (возможно, большом)
сети, и настройте Алису, чтобы пойти им. Для каждого экземпляра Боба вы
следует настроить
- Интервал времени между тестами.
- «Движение» (я объясню это чуть-чуть).
- Количество данных, отправляемых Бобу для каждого теста.
- Адрес Боба (дух).
Вы хотите «пошатнуть» тесты, которые будет выполнять данная Алиса. Вы
не хотим, чтобы Алиса запускала тест сразу на всех серверах Боба, тем самым
наводнение вашей сети, возможно, дает искаженные результаты и так далее.
Разрешить проведение теста в рандомизированном времени в будущем. За
Например, если интервал проверки составляет каждые 10 минут, настройте «запас»
1 минуты, что означает, что следующий тест может произойти где-то между 9 и 11
минутное время
Если одновременно должно быть запущено более одной Алисы, общее
количество экземпляров должно быть небольшим. Чем больше у вас Алисы, тем больше
Вы мешаете работе сети. Опять же, вы не хотите быть ответственным
для отключения.
Количество данных, которые Алиса должна отправить в индивидуальном тесте, должно быть
маленький. 500KB? Вы, вероятно, хотите, чтобы данный тест выполнялся не более
10 секунд. Возможно, попросите Боба прекратить тайм-аут, если тест займет слишком много времени.
Я намеренно пропустил используемый транспорт (TCP, UDP и т. Д.)потому что вы будете получать проблемы в зависимости от транспорта, и я не знаю, как вы хотите решить эти проблемы.Например, вам нужно подумать, как обрабатывать удаленные дейтаграммы с помощью UDP.Какой результат вы бы вычислили?Вы не получаете эту проблему с TCP, потому что он автоматически повторно передает отброшенные пакеты.С TCP ваша пропускная способность будет искусственно низкой, если две конечные точки находятся далеко друг от друга.Вот кое-что о info .
Если у вас хватило терпения прочитать это, надеюсь, это помогло!