• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Проверка скорости передачи UDP

aazavid

New member
Я пока серьезно не погружался в общение ESP между собой, так как у меня умные измерительные приборы и они общаются с главным компом.
Но есть две идеи в плане создания внутренних сетей.
1) Реализация на ESP ethrnet обмена . т.е это то, что идет до UDP и TCP, так как на внутренних сетях eSP UDP и тем более TCP это излишество.
2) Использовать для создания внутренней сети NRF
Если кто-то это уже делал интересно было бы послушать о результатах.
Есть какие то сподвиги в этой теме? сейчас тоже очень интресен вопрос связи двух модулей между собой, без лишней обвязки. Хотелось бы добиться максимальной скорострельности при минимум помех
 

pvvx

Активный участник сообщества
Тест с помощью iperf.exe
Передача UDP на модуль (RTL00):
Снимок1121.gif
Передача TCP на модуль (RTL00):
Снимок1123.gif
Передача TCP c модуля (RTL00):
Снимок1124.gif

Далее UDP и наблюдаем кучу потерь... (при приеме на модуль не вписал показ потерь, по тому показывает потери только в сторону компа.)
Передача UDP c модуля (RTL00) на 10Mbits/s:
Снимок1125.gif
Передача UDP c модуля (RTL00) на 1Mbits/s:
Снимок1126.gif

Итого: нафиг сдалось это UDP на WiFi - толку от него никакого. Кучи потерь и скорость не выше. Jitter так-же одинаков -> WiFi.
 
Последнее редактирование:

nikolz

Well-known member
Тест с помощью iperf.exe
Передача UDP на модуль (RTL00):
Посмотреть вложение 2969
Передача TCP на модуль (RTL00):
Посмотреть вложение 2971
Передача TCP c модуля (RTL00):
Посмотреть вложение 2972

Далее UDP и наблюдаем кучу потерь... (при приеме на модуль не вписал показ потерь, по тому показывает потери только в сторону компа.)
Передача UDP c модуля (RTL00) на 10Mbits/s:
Посмотреть вложение 2973
Передача UDP c модуля (RTL00) на 1Mbits/s:
Посмотреть вложение 2974

Итого: нафиг сдалось это UDP на WiFi - толку от него никакого. Кучи потерь и скорость не выше. Jitter так-же одинаков -> WiFi.
Почему Вы не объясните читателям, что tCP не имеет никакого преимущества при отсутсвии множественного пути и коротких пакетах. Именно этот режим и используется в домашних сетях c датчиками.
Т е в сетях с датчиками нет никакой выгоды от tcp, кроме дополнительной задержки.
 

pvvx

Активный участник сообщества
Почему Вы не объясните читателям, что tCP не имеет никакого преимущества при отсутсвии множественного пути и коротких пакетах. Именно этот режим и используется в домашних сетях c датчиками.
Т е в сетях с датчиками нет никакой выгоды от tcp, кроме дополнительной задержки.
По тому, что использующим датчики нужны данные с них. Так вот всё просто.
 

nikolz

Well-known member
По тому, что использующим датчики нужны данные с них. Так вот всё просто.
И эти данные умещаются в несколько байт и тем более умещаются в один блок, что исключает достоинства tCP.
И это особенно важно при автономном питании.
 

pvvx

Активный участник сообщества
И эти данные умещаются в несколько байт и тем более умещаются в один блок, что исключает достоинства tCP.
И это особенно важно при автономном питании.
Безусловно. Для приема по UDP данных с датчиков необходимо описать свой протокол передачи с перезапросами и проверками. Это очень хорошо сажает батарейку, т.к. требует долгого сеанса активности - на передачу одного байта с датчика контроллеру необходимо обменяться не менее 3- мя пакетами по UDP, с ожиданиями их обработки и подтверждения приема на верхнем уровне принимающего оборудования, что дополнительно требует применение специальной скоростной системы реального времени на приемнике. Из имеющихся систем на сегодня и скоростей обработки на верхнем уровне системы, с ухищрениями по оптимизацией по скорости, а не размеру кода, получаем, что требования к системе приемника выражаются в использовании CPU на ГГц-ы и наличия нескольких Гегабайт памяти. Но при увеличении датчиков до дцати, и такая система не справляется в десятки ms... А итоге просыпающийся контролер вынужден ждать подтверждения передачи своего байта от датчика сотни ms, жрать батарейку и иметь громадную программу для обслуживания собственного выдуманного протокола передачи 1 байта по UDP с доставкой и кучу ресурсов для её поддержки.
В случае с TCP - имеющиеся реализации для обслуживания полного трафика WiFi умещаются в десятку килобайт и требуют производительности МСU с частотами на не более 20 Mhz. Пример - TCP/IP стек LwIP. Он уже отлажен за десятки лет, в отличии от вашего ещё не написанного протокола. И даже ваш протокол с UDP не обходится без него - кто будет обрабатывать уровень IP ?
Есть хороший пример - протокол RTP, базирующийся на UDP до сих пор не реализован на ESP8266. :)
 
Последнее редактирование:

nikolz

Well-known member
Безусловно. Для приема по UDP данных с датчиков необходимо описать свой протокол передачи с перезапросами и проверками. Это очень хорошо сажает батарейку, т.к. требует долгого сеанса активности - на передачу одного байта с датчика контроллеру необходимо обменяться не менее 3- мя пакетами по UDP, с ожиданиями их обработки и подтверждения приема на верхнем уровне принимающего оборудования, что дополнительно требует применение специальной скоростной системы реального времени на приемнике. Из имеющихся систем на сегодня и скоростей обработки на верхнем уровне системы, с ухищрениями по оптимизацией по скорости, а не размеру кода, получаем, что требования к системе приемника выражаются в использовании CPU на ГГц-ы и наличия нескольких Гегабайт памяти. Но при увеличении датчиков до дцати, и такая система не справляется в десятки ms... А итоге просыпающийся контролер вынужден ждать подтверждения передачи своего байта от датчика сотни ms, жрать батарейку и иметь громадную программу для обслуживания собственного выдуманного протокола передачи 1 байта по UDP с доставкой и кучу ресурсов для её поддержки.
В случае с TCP - имеющиеся реализации для обслуживания полного трафика WiFi умещаются в десятку килобайт и требуют производительности МСU с частотами на не более 20 Mhz. Пример - TCP/IP стек LwIP. Он уже отлажен за десятки лет, в отличии от вашего ещё не написанного протокола. И даже ваш протокол с UDP не обходится без него - кто будет обрабатывать уровень IP ?
Есть хороший пример - протокол RTP, базирующийся на UDP до сих пор не реализован на ESP8266. :)
Странная у вас логика.
Когда вам выгодно, Вы ESP считаете велосипедом, а когда не выгодно, начинаете рассуждать будто ESP - это главный компьютер атомной станции.
Вы уж определитесь как-то. Для каких задач ESP.
И надо ли городить огород по среди пляжа.
-----------------
Я делаю очень просто. Приняли UDP - отдали эхо.
Послали UDP - есть эхо -ушли спать, нет эхо , подождали заданный тайм не боле 100 мс и ушли спать или повторили (кому как нравится).
--------------------
что же касается TCP,то при единственном пакете, если Вы его не получите, то значить соединения нет и будете снова соединяться. Оно чем лучше?
------------------
Проверял на компе по tCP коротких пакетов теряется больше чем по UDP.
 

pvvx

Активный участник сообщества
Странная у вас логика.
Когда вам выгодно, Вы ESP считаете велосипедом, а когда не выгодно, начинаете рассуждать будто ESP - это главный компьютер атомной станции.
Вы уж определитесь как-то. Для каких задач ESP.
Определился и давно. Ни для каких на современном уровне. Есть более достойные замены.
Я делаю очень просто. Приняли UDP - отдали эхо.
Послали UDP - есть эхо -ушли спать, нет эхо , подождали заданный тайм не боле 100 мс и ушли спать или повторили (кому как нравится).
--------------------
что же касается TCP,то при единственном пакете, если Вы его не получите, то значить соединения нет и будете снова соединяться. Оно чем лучше?
------------------
Проверял на компе по tCP коротких пакетов теряется больше чем по UDP.
Что такое tCP?
То, что вы проверяли и приводили, не вписывается в стандарт WiFi. В "глушилку" вписывается.
При просыпании надо соединиться с AP, получить/подтвердить IP, передать ваш пакет UDP, дождаться отработки его приема на внешнем приемнике, принять подтверждение, послать сигнал разрыва связи к AP, уснуть опят на несколько минут.

В чем различия с TCP?
Оно заключается в том, что не надо ждать подтверждения от высокого уровня ПО на приемнике. Это отрабатывает оптимизированный низкоуровневый драйвер TCP стека в приемнике. Он в системе имеет более высокий приоритет и не стробируется системными тиками для прикладного ПО. Т.е. его реакция в сотни раз быстрее. Верхнему уровню не требуется обрабатывать прием в реальном времени. Пришедший байт находится в очереди приема и может быть считан верхним уровнем спустя годы. :)
Как итого - TCP в сотни раз быстрее обрабатывается в местной интрасети, чем сложные UDP протоколы, требующие скоростной реакции верхнего уровня ПО. :p
 

pvvx

Активный участник сообщества
Гуру Nicolz- Вопрос темы читали? :)
Куда вас всё тянет cидиотскими предложениями? :confused:
Сравнение, замеры и прочее по UDP предоставлено. Сделано стандартными методами, а не хулиганскими - по типу вашей "глушилки WiFi". :p
 

nikolz

Well-known member
Определился и давно. Ни для каких на современном уровне. Есть более достойные замены.
Что такое tCP?
То, что вы проверяли и приводили, не вписывается в стандарт WiFi. В "глушилку" вписывается.
При просыпании надо соединиться с AP, получить/подтвердить IP, передать ваш пакет UDP, дождаться отработки его приема на внешнем приемнике, принять подтверждение, послать сигнал разрыва связи к AP, уснуть опят на несколько минут.

В чем различия с TCP?
Оно заключается в том, что не надо ждать подтверждения от высокого уровня ПО на приемнике. Это отрабатывает оптимизированный низкоуровневый драйвер TCP стека в приемнике. Он в системе имеет более высокий приоритет и не стробируется системными тиками для прикладного ПО. Т.е. его реакция в сотни раз быстрее. Верхнему уровню не требуется обрабатывать прием в реальном времени. Пришедший байт находится в очереди приема и может быть считан верхним уровнем спустя годы. :)
Как итого - TCP в сотни раз быстрее обрабатывается в местной интрасети, чем сложные UDP протоколы, требующие скоростной реакции верхнего уровня ПО. :p
Все, что вы написали может быть или не быть. В литературе написано иное. В своих устройствах (называйте их как хотите, можете даже горшками) я наблюдаю иное. При этом устройство просыпается отсылает uDP принимает эхо и засыпает. И все это за 370 мс и не мешает другим устройствам.
Допускаю, что у Вас все сложнее и круче, но меня устраивает то, что работает без проблем и работает в соответствии с документацией.
-------------------
Можете доказать что ТСР в 100 раз быстрее UDP на ESP? Нет
Ну хотя бы на 1 процент быстрее ? Можете доказать?
 

pvvx

Активный участник сообщества
Зачем пользователю писать в “собственной прошивке” какие-то нагромождения?
Чтобы достоверно передать 1 байт пользователю надо вписать: открыть socket c атрибутом TCP, передать байт в socket, закрыть socket.
Т.е. 3 строчки кода и по желанию обработку ошибок открытия со стандартными сообщениями и известной реакцией.
Для UDP требуется написать целый драйвер протокола с теми-же функциями, но другим атрибутом открытия socket. :)
А итог уже описан:
Для TCP: полная совместимость со всеми, время исполнения меньше, ошибок ноль.
Для UDP: никакой совместимости, неизвестное время исполнения, толпа возможных ошибок.
 

pvvx

Активный участник сообщества
Можете доказать что ТСР в 100 раз быстрее UDP на ESP? Нет
Уже доказано. Годы назад. :p Пару сообщений ранее даны ещё результаты. Глазки разуйте. :)
Данных от вас нет - сравнивать не с чем :)
 

nikolz

Well-known member
Зачем пользователю писать в “собственной прошивке” какие-то нагромождения?
Чтобы достоверно передать 1 байт пользователю надо вписать: открыть socket c атрибутом TCP, передать байт в socket, закрыть socket.
Т.е. 3 строчки кода и по желанию обработку ошибок открытия со стандартными сообщениями и известной реакцией.
Для UDP требуется написать целый драйвер протокола с теми-же функциями, но другим атрибутом открытия socket. :)
А итог уже описан:
Для TCP: полная совместимость со всеми, время исполнения меньше, ошибок ноль.
Для UDP: никакой совместимости, неизвестное время исполнения, толпа возможных ошибок.
Я Выше привел код колбека отправки.
В нем две строки.В колбеке прием четыре.
Поэтому не надо ля-ля.
TCP сделали для передачи по сетям с альтернативными путями и как следствие асинхронности доставки пакетов либо большое число пакетов и плохая сеть.
Иэ этого и надо исходить.
Если этого нет, то TCP избыточно.
Вот и вся логика выбора. Но у вас полагаю все гораздо сложнее.
 

pvvx

Активный участник сообщества
Я Выше привел код колбека отправки.
В нем две строки.В колбеке прием четыре.
Поэтому не надо ля-ля.
TCP сделали для передачи по сетям с альтернативными путями и как следствие асинхронности доставки пакетов либо большое число пакетов и плохая сеть.
Иэ этого и надо исходить.
Если этого нет, то TCP избыточно.
Вот и вся логика выбора. Но у вас полагаю все гораздо сложнее.
Даже TI (С3200) вам привело графики для специального режима IoT, который мы не очень-то может использовать в ESP. Вы даже его сами копипастили на форум :) Этот режим работы без разрыва связи с AP, в котором устройство отключается на один период или пару периодов beacon (DTIM= N). Но ESP с SDK от Espressif не успевает перезагружаться за стандарт периода beacon– от 60 ms и попадать точно в окно приема beaconдля возможности считывания арбитража WiFi от AP для передачи своего пакета и анализа готовых данных для приема у AP.

Он так-же не годится при большом кол-ве устройств. Только дорогостоящие AP могут держать множество клиентов.

И в таком режиме потребление ESP больше, чем в WiFisleep = LIGHT. :) :) :p

По этому не "ля-ля", а "тру-ля-ля" - в который раз вам это напоминать ? :):):)

PS: Фричество и синдром не восприятия чужого опыта вас доведет до нервных срывов, что уже и наблюдаем. :)
Информацию вы уже не можете воспринимать. Для осознания полной картины работы устройств с WiFi вам очень далеко. От этого каждое ваше предложение неверно. А если индивидуум всегда ошибается, то это - печалька :) и грозит дурными последствиями для него :)
Так што садитесь “на попу” и изучайте стандарты WiFi, делайте эксперименты и сравнения на разных устройствах. Потом, возможно найдете какие решения, подходящие для представленного на рынке оборудования и сможете сравнить их качество…
 
Последнее редактирование:
Сверху Снизу