реклама на сайте
подробности

 
 
> Передача по UDP., Почему так медленно?
b-volkov
сообщение Jan 26 2014, 08:51
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Сразу оговариваюсь: только начинаю разбираться с IP, и посему извиняюсь за возможные некорректные формулировки и вопросы.
Изначально стоит задача обмена по UDP между железкой и PC но для "отработки технологии" я попробовал организовать связь между двумя РС. Программировал в Builder XE5 (если это играет какую-то роль) + Winsock. Схема максимально примитивная: на сервере зациклен receivefrom() а клиент выполнят 10 раз подряд sendto() пакета размером 1400 байт.

Прикрепленное изображение


На картинке снифера видно, что на все это уходит целых 7мс, т.е. получаем всего 2 мегабайта/с sad.gif. Не маловато для сети 100 Мбит? Предположил, что лишнее время уходит на вызов sendto() и какие-то действия внутри нее и решил передавать данные более крупными кусками - не вышло, передается только один пакет максимального размера. Все-таки UDP должен уметь нарезать передаваемые данные на несколько ethernet-пакетов или за этим только к TCP?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kolobok0
сообщение Jan 26 2014, 20:27
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(b-volkov @ Jan 26 2014, 12:51) *
...Все-таки UDP должен уметь нарезать передаваемые данные на несколько ethernet-пакетов или за этим только к TCP?


UDP распологается над IP. IP может имееть фрагментацию. на приёмной стороне стэк должен уметь так называемо ре-ассемблировать = собирать
по идентификатору IP пакета полный пакет. По приходу конца - проверять наличие собранных кусков и отдавать уровню выше. Либо хранить
некоторое время, перед тем как выкинуть. IP пакеты могут приходить в произвольном порядке.

По умолчанию размер пакета 1500 + изернет фрэйм + CRC его. IP пакет может нести необязательные поля после своего хедера в первом фрагменте.
Для ускорения передачи, можно подкорректировать временные задержки. я сейчас на вскидку не помню названия, но на уровне сокетов есть такие
настройки.

попробуйте сравнить скорость со стандартным пингом. пошлите те-же 14000 раз 100 и посмотрите картину по скорости. у меня с ноута задержки
при стандартном пинге составляют порядка <=10 мкс между уходами пакетов.
АРМ на порядок где то побольше = около 120 мкс. по памяти: всего пинг 7770 писюк-арм около <=2мс в среднем.

Go to the top of the page
 
+Quote Post
b-volkov
сообщение Jan 31 2014, 07:17
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



С фрагментацией разобрался,пакет передавался полностью, просто у меня фильтр снифера был настроен так, что не показывал остальные фрагменты.

Цитата(kolobok0 @ Jan 27 2014, 00:27) *
Для ускорения передачи, можно подкорректировать временные задержки. я сейчас на вскидку не помню названия, но на уровне сокетов есть такие
настройки.

Увы, ничего похожего в сокете не нашел sad.gif

Цитата(kolobok0 @ Jan 27 2014, 00:27) *
попробуйте сравнить скорость со стандартным пингом. пошлите те-же 14000 раз 100 и посмотрите картину по скорости. у меня с ноута задержки
при стандартном пинге составляют порядка <=10 мкс между уходами пакетов.
АРМ на порядок где то побольше = около 120 мкс. по памяти: всего пинг 7770 писюк-арм около <=2мс в среднем.

Под "стандартным пингом" подразумевается команда "ping" командной строки? Так она отсылает пакеты примерно раз в секунду. Или имелось ввиду, что пинг реализовывать в своей пррограмме?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016