Как измерить пропускную способность сети во время выполнения - PullRequest
1 голос
/ 22 октября 2011

Мне интересно, как наилучшим образом измерить пропускную способность сети во время выполнения.Я пишу клиент / серверное приложение (оба в Java).Сервер регулярно отправляет сообщения (сжатых данных мультимедиа) через сокет клиенту.Я хотел бы настроить уровень сжатия, используемый сервером, чтобы он соответствовал качеству сети.

Поэтому я хотел бы измерить время, которое требуется большой порции данных (скажем, 500 КБ), чтобы полностью добраться до клиента, включая все задержки.между.Такие инструменты, как Iperf, похоже, не подходят, потому что они проводят измерения, создавая собственный трафик.

Лучшая идея, которую я могу придумать: как-то определить разницу в тактах клиента и сервера, включаясервер отправляет временную метку с каждым сообщением, а затем отправляет клиенту отчет на сервер о разнице между этой временной меткой и временем, когда клиент получил сообщение.Затем сервер может определить, сколько времени понадобилось сообщению, чтобы добраться до клиента.

Есть ли более простой способ сделать это?Есть ли библиотеки для этого?

1 Ответ

1 голос
/ 24 октября 2011

Простое решение:

Сохраните метку времени на сервере перед отправкой определенного количества пакетов.

Затем отправьте пакеты клиенту и дайте клиенту отчитаться на сервере.когда он получил последний пакет.

Сохраните новую метку времени на сервере, когда клиент ответил.

Все, что вам нужно сейчас, это определить RTT и вычесть RTT / 2 изразница между двумя временными метками.

Это должно дать вам довольно точное измерение.

...