буфер — определение максимальной пропускной способности моей сети с использованием переполнения стека

Мое приложение предназначено для определения пропускной способности сети. Несмотря на код C ++, я ищу надежную теорию регулирования моей сети, которая возвращает точный значение максимально допустимой скорости передачи. Действительно, я мог бы написать код позже.

После проверки нескольких идей из интернета я не нашел подходящего для моего случая.

Я пытался посылать как можно больше данных, используя TCP / IP, а затем проверять скорость передачи данных при каждой отправке 10 МБ. Пожалуйста, найдите здесь псевдокод для моего алгоритма:

while (send(...)){
if (tempSendBytes > 10Mb)
if (baudrate > predefinedThreshold)
usleep(calculateNeededTime());
tempSendBytes += sentBytes;
}

Но, когда предопределенный порог достигнут, буферы заполнены, и моя программа застревает, не возвращая никакой ошибки. На самом деле, проверка скорости передачи каждого отправленного сообщения уменьшит мою пропускную способность до минимума. Итак, я предпочел проверять каждые 10 МБ.

PS: В моем коде нет никаких других технических проблем, ни утечки памяти. Кроме того, моя программа работает нормально (отправка и получение данных на 100%), если я уменьшу предопределенный порог.

Мой вопрос:
Есть ли способ определить максимальную полосу пропускания (как в петлевой, так и в реальной сети) без переполнения буферов и застроек?

1

Решение

Да, вы можете определить максимальную пропускную способность как по шлейфу, так и по реальному интерфейсу. Для реального интерфейса может потребоваться удаленно работающий сервер TCP с достаточной пропускной способностью для точной оценки максимальной пропускной способности.

Если вы строго ищете теоретический, вы можете запустить тест на реальном интерфейсе так же, как вы выполняете его на локальном хосте, когда сервер привязан к IP-адресу реального интерфейса, а клиент работает на том же компьютере. Хотя я не уверен, что сетевой стек вашей ОС будет делать с этим трафиком, но он должен относиться к нему так, как если бы он выходил из коробки.

Множество факторов способствуют максимальной теоретической пропускной способности для TCP. TCP MTU, буфер отправки ОС, буфер приема ОС и т. Д. Википедия имеет хороший обзор высокого уровня, но, похоже, вы уже прочитали его. http://en.wikipedia.org/wiki/Measuring_network_throughput Вы также можете найти этот обзор настройки TCP полезным, http://en.wikipedia.org/wiki/TCP_tuning

IPerf обычно используется для точного измерения пропускной способности, а методы, которые он использует, довольно обширны. Он написан на C ++, и его кодовая база может быть хорошей отправной точкой для вас. https://github.com/esnet/iperf

Я знаю, что ничего из этого не дает точного обсуждения теории, но, надеюсь, поможет прояснить некоторые вещи.

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector