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

 
 
 
Reply to this topicStart new topic
> приходят укороченные IP пакеты, а иногда и не полные, кто виноват?
zuy
сообщение Dec 7 2009, 14:16
Сообщение #1


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Имеется девайс с USB хостом, который через USB EDGE модем выходит в интернет и принимает данные.
Софт организован на связке FreeRTOS + LwIP.

Для упрощения отладки весь пакет софта, кроме драйвера USB хоста и модема был портирован на PC.
На PC софт работает, с модемом общается через COM порт и все ОК.
В реальном девайсе наблюдается следующая картина:
1. Если на PC пакеты шли в основном полной длины около 1062 байт, то на девайсе эти же пакеты принимаются с длиной 511 байт.
причем изменение длины стоит в самом загоровке IP внутри пакета. Т.е. я от сервера уже получаю более мелкие пакеты.
2. Некоторые пакеты приходят не завершенными. Я не вижу в конце пакета завершающего 0x7E. при этом следующая порция данных из модема присылает новый пакет.
т.е. не похоже, что я его не до конца вычитал.

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

Что может заставить сервер присылать укороченные пакеты?
Как это происходит?

И еще вопрос. А что происходит при аппаратном управлении потоком если провайдер передает данные, но клиент модема не может принять и сбрасывает CTS ?
модем и провайдер сами договорятся, что надо подождать?
Go to the top of the page
 
+Quote Post
Master of Nature
сообщение Dec 7 2009, 22:30
Сообщение #2


Мыслящий
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 20-07-07
Из: Самара
Пользователь №: 29 270



Цитата(zuy @ Dec 7 2009, 18:16) *
Имеется девайс с USB хостом, который через USB EDGE модем выходит в интернет и принимает данные.
Софт организован на связке FreeRTOS + LwIP.

Для упрощения отладки весь пакет софта, кроме драйвера USB хоста и модема был портирован на PC.
На PC софт работает, с модемом общается через COM порт и все ОК.
В реальном девайсе наблюдается следующая картина:
1. Если на PC пакеты шли в основном полной длины около 1062 байт, то на девайсе эти же пакеты принимаются с длиной 511 байт.
причем изменение длины стоит в самом загоровке IP внутри пакета. Т.е. я от сервера уже получаю более мелкие пакеты.
2. Некоторые пакеты приходят не завершенными. Я не вижу в конце пакета завершающего 0x7E. при этом следующая порция данных из модема присылает новый пакет.
т.е. не похоже, что я его не до конца вычитал.

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

Что может заставить сервер присылать укороченные пакеты?
Как это происходит?

Возможно проблема в том, что девайс с хостом просто не успевает справляться с потоком принимаемых данных и происходит переполнение входного буфера. Но т.к. данный считаются принятыми с точки зрения протокола, то высылается следующий пакет.
Уменьшение размеров пакетов, видимо, связано с той же причиной. Серверу сообщается, что вы не можете обработать пакеты длиной больше 511 байт.


--------------------
FAQ по AD
Форум по AD
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью.
...стоит запомнить ...вернее задуматься.
Go to the top of the page
 
+Quote Post
Aner
сообщение Dec 7 2009, 23:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Уменьшить длину пакета можете?
Go to the top of the page
 
+Quote Post
zuy
сообщение Dec 8 2009, 07:43
Сообщение #4


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(Master of Nature @ Dec 8 2009, 01:30) *
Возможно проблема в том, что девайс с хостом просто не успевает справляться с потоком принимаемых данных и происходит переполнение входного буфера. Но т.к. данный считаются принятыми с точки зрения протокола, то высылается следующий пакет.
Уменьшение размеров пакетов, видимо, связано с той же причиной. Серверу сообщается, что вы не можете обработать пакеты длиной больше 511 байт.


Вот тут и вопрос, каким образом серверу сообщается, что надо пакеты по короче слать?
Возможно ли, что сам модем с провайдером об этом договорились и провайдер фрагментирует пакеты?

Я не пользуюсь никакими встроеными стеками TCP/IP в модеме, все реализуется програмно от PPP до сокетов.
MTU в настройках 1500. Пробовал уменьшать размер MTU до 500, но стало только хуже. На длинных пакетах приходят только их хвосты по примерно 60 байт.

Сейчас мне главное понять, из-за чего это происходит и в каком месте капать.
Больше всего подозрений на драйвер виртуального COM порта для USB модема в девайсе. Сам модем хоть из него наружу выведен УСБ, внутри это модем с UART интерфейсом + переходник UART->USB (CP2104). Rx FIFO у этого переходника 576 байт. Очень похоже, что где-то там косяк кроется.
Go to the top of the page
 
+Quote Post

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

 


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


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