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

 
 
 
Reply to this topicStart new topic
> Медленно передаются пакеы по Ethernet
ruslannd
сообщение Oct 30 2009, 23:42
Сообщение #1


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

Группа: Участник
Сообщений: 106
Регистрация: 4-04-06
Пользователь №: 15 783



Использую библиотеку TCP/IP библиотеку от Keil. Есть следующая проблема:
Мое устройство на LPC2388 является сервером. Комп - клиент. Соединено все через Ethernet.
Есть проблема: от клиента пакеты могу принимать десятками за секунду. А от меня могу передать не более 3-4.
Затык происходит при ожидании, когда функция tcp_check_send кейловской библиотеки разрешит передать следующий пакет.
От длины пакета ничего не зависит. С чем это может быть связано?

Сообщение отредактировал ruslannd - Oct 30 2009, 23:45
Go to the top of the page
 
+Quote Post
ruslannd
сообщение Oct 31 2009, 13:51
Сообщение #2


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

Группа: Участник
Сообщений: 106
Регистрация: 4-04-06
Пользователь №: 15 783



Посмотрел монитором Ehternet'a.

Получилось что клиент (комп) отсылает пакет подтверждения (ACK) через 0,2 секунды. Я так понимаю, что это связано с флагами Ethernet пакета. Вот только какими? Или я что-то путаю?
Go to the top of the page
 
+Quote Post
:-)
сообщение Oct 31 2009, 18:16
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006



Я не профессионал в этой области. но раз других комментариев нет, выскажусь. На сколько я понимаю, смотреть надо в сторону 'delayed ack'. Основной смысл такой:

Винда, посылает подстверждение получения пакета либо по истечении 200 мс, либо если сразу же после первого пакета был отправлен второй пакет без получения подтверждения доставки первого пакета (т.е. отправляется один ack на два пакета). Т.е. чтобы не загружать сеть мелкими пакетами винда посылает подтверждение на каждый второй принятый пакет. Видимо, применяемы вами, tcp/ip стек не поддерживает 'delayed ack'.

ЗЫ Кажется, на форуме уже поднимались подобные вопросы.
Go to the top of the page
 
+Quote Post
ruslannd
сообщение Oct 31 2009, 20:23
Сообщение #4


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

Группа: Участник
Сообщений: 106
Регистрация: 4-04-06
Пользователь №: 15 783



Я на форуме порылся, про delayed ack нашел, но применительно к кейловской реализации ничего не обнаружил. В настройках TCP ничего нет.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 31 2009, 21:00
Сообщение #5


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(ruslannd @ Oct 31 2009, 15:51) *
Получилось что клиент (комп) отсылает пакет подтверждения (ACK) через 0,2 секунды. Я так понимаю, что это связано с флагами Ethernet пакета.

Нет, это с флагами Ethernеt не связано. Это связано с особенностями протокола TCP, которые называются delayed ACK и Nagle Algorithm, причем эти особенности в Вашем случае "срабатывают" на стороне PC. Если у Вас клиент - самописная программа, то подавить эти "TCP features" для конкретного сокета можно при помощи функции setsockopt(TCP_NODELAY) или глобально (для всей системы): http://msdn.microsoft.com/en-us/library/aa505957.aspx
Go to the top of the page
 
+Quote Post
ruslannd
сообщение Oct 31 2009, 21:24
Сообщение #6


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

Группа: Участник
Сообщений: 106
Регистрация: 4-04-06
Пользователь №: 15 783



Цитата(VslavX @ Nov 1 2009, 00:00) *
Нет, это с флагами Ethernеt не связано. Это связано с особенностями протокола TCP, которые называются delayed ACK и Nagle Algorithm, причем эти особенности в Вашем случае "срабатывают" на стороне PC. Если у Вас клиент - самописная программа, то подавить эти "TCP features" для конкретного сокета можно при помощи функции setsockopt(TCP_NODELAY) или глобально (для всей системы): http://msdn.microsoft.com/en-us/library/aa505957.aspx


Спасибо. Проблема решена.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 14:15
Рейтинг@Mail.ru


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