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

 
 
> Передача по 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
kolobok0
сообщение Jan 31 2014, 20:05
Сообщение #4


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

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



Цитата(b-volkov @ Jan 31 2014, 11:17) *
... она отсылает пакеты примерно раз в секунду...


Вы каким нить ваиришаком или изереалом смотрите на времена запроса-ответа. с лева второй столбец - так и называется Time sm.gif то что раз в секунду - это понятно...
Go to the top of the page
 
+Quote Post
b-volkov
сообщение Feb 2 2014, 14:03
Сообщение #5


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

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



Цитата(kolobok0 @ Feb 1 2014, 00:05) *
Вы каким нить ваиришаком или изереалом смотрите на времена запроса-ответа. с лева второй столбец - так и называется Time sm.gif то что раз в секунду - это понятно...

Возможно, я Вас не совсем понял, но меня не интересует время между запросом и ответом, я вообще пока не жду никакого ответа.
У меня беда в том, что КОМПЬЮТЕР МЕДЛЕННО отправляет UDP пакеты.


To All:

Так может мне все-таки кто-нибудь ответить, 700 мкс на передачу пакета функцией sendto()( при его, пакета, длительности порядка 15мкс) является нормальным временем?
Если это нормально и есть особенность Winsock, я пойду каким-то другим путем. Если такого быть не должно, то я начну разбираться с причинами.
Заранее спасибо.

Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:25
Рейтинг@Mail.ru


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