4

Я ищу инструмент для контроля качества TCP-соединения. Я пытаюсь описать, что я имею в виду:

Это должен быть инструмент с клиентской и серверной частью. Клиент отправляет, скажем, 1 КБ данных в секунду на сервер, и сервер следит за скоростью доставки пакетов.

Или, поставьте иначе: я ищу что-то похожее на команду "ping", за исключением того, что я могу тестировать TCP-соединение и с довольно высокой пропускной способностью (то есть большим количеством пакетов), например, 1 КБ / с.

Меня интересует не максимальная пропускная способность, а постоянная быстрая доставка. Как, скажем, я бы транслировал MP3-файл со скоростью 128 кбит / с по соединению с максимальной пропускной способностью также 128 кбит / с, но с низкой задержкой. И я хотел бы воспроизвести этот файл мгновенно (или, скажем, с 1-секундным буфером).

Цель состоит в том, чтобы отслеживать реальную жизнеспособность сетевого (интернет) соединения. (И нет, я не заинтересован в том, чтобы что-то сложное было настроить и использовать как нагиос.)

Большое спасибо!

6 ответов6

1

Как вы определяете, "как быстро доставляются пакеты"? Если вы хотите знать, сколько времени требуется пакету для достижения точки B из точки A, то я думаю, что это невозможно сделать без точной синхронизации часов, равной менее миллисекунды.

Я бы попытался захватить некоторый реальный трафик (т.е. фактически используя ваше приложение) и проанализировать его с помощью WireShark, чтобы найти задержку между некоторыми отправленными данными и соответствующим пакетом ACK. Это дает вам время прохождения в оба конца (RTT) для вашего трафика.

обновление:

Стек TCP должен отслеживать RTT для каждого соединения. (он используется для оптимизации передачи пакетов и управления размером окна). Если вы используете Linux, и это ваше собственное приложение, вы можете использовать getsockopt(fd,.. ,TCP_INFO,...) возвращаемые данные включают все эти внутренние параметры. Вы можете заглядывать в эти данные каждую секунду и переходить к отображению приложения.

1

Похоже, вам нужен Iperf.

Тем не менее, вы уверены, что видите не функциональную ссылку, а не TCP-сбои в ваших пользовательских подключениях? Большинство TCP остановятся, если увидят три последовательных потери пакетов.

Используете ли вы лучший TCP контроль перегрузки вашей системы? В Windows вы должны включить Compound TCP, если можете, в Linux вы, вероятно, должны использовать Westwood для этого приложения.

1

Просто к вашему сведению .. Linux ping имеет эту опцию:

размер пакета
Определяет количество байтов данных для отправки. По умолчанию используется значение 56, которое преобразуется в 64 байта данных ICMP в сочетании с 8 байтами данных заголовка ICMP.

0

Я не уверен, что вы ищете долго работающий монитор или приложение типа ping для одноразового теста. Если вы хотите профилировать производительность TCP ссылки, классическим инструментом является NetPIPE. NetPIPE может сказать вам пропускную способность и задержку двусторонней связи.

0

Для наименьшей задержки, но с меньшим исправлением ошибок, UDP является лучшим вариантом, чем TCP (например, в Linux звуковой сервер jackd имеет серверную часть, которая может передавать аудио по UDP по этой самой причине - jackd больше ориентирован на идеальное качество звука / профессиональный звук производство хотя).

Проверьте icecast для UDP потоковой передачи mp3.

0

Теоретически возможно сделать "пассивный" монитор. Это приложение мониторинга данных TCP и ACK. и означает статус канала как Ok, когда большинство данных имеет соответствующий ACK. И только когда данные редки, используйте активный тест (пинг ICMP, пинг TCP). Но я не знаю такого программного обеспечения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .