(Linux) инструмент для контроля “качества” соединения TCP?

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

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

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

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

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

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

4
задан 18.02.2010, 23:52

6 ответов

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

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

обновление:

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

1
ответ дан 07.12.2019, 21:09

Кажется, что Вам нужен iperf.

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

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

1
ответ дан 07.12.2019, 21:09

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

0
ответ дан 07.12.2019, 21:09

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

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

0
ответ дан 07.12.2019, 21:09

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

0
ответ дан 07.12.2019, 21:09

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

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

1
ответ дан 07.12.2019, 21:09

Теги

Похожие вопросы