|
Склеиваются UDP пакеты |
|
|
|
Nov 21 2016, 04:42
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 3-09-04
Из: Russia, Novosibirsk
Пользователь №: 590

|
Всем добрый день. Имеется SIM800C, который раз в 5сек отсылает UDP пакет на сервер, на что сервер ему немедленно отвечает. Большую часть времени работает стабильно, но иногда наблюдается такая картина: -> модем отправил пакет <- пришел ответ -> модем отправил пакет <- пришел ответ -> модем отправил пакет -> модем отправил пакет -> модем отправил пакет <- пришло сразу 3 пакета в одном Сервер при этом пишет, что честно отправил ответ немедленно. По потреблению модема видно, что все эти 15сек. данные действительно не приходят. Такие дикие задержки на сети оператора? Или что-то еще? Ладно бы задержки, но как разделять эти пакеты? Модем не дает никакой информации о том, где один пакет закончился и начался другой, выдает данные одним потоком. Может есть способ от модема добиться больше информации? При этом непонятно - то ли пакеты склеились на стороне оператора (чего быть не должно), то ли пришли с таким коротким интервалом, что модем их выдал одним пакетом.
|
|
|
|
|
 |
Ответов
(60 - 74)
|
Dec 1 2016, 15:55
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 22-07-09
Пользователь №: 51 470

|
Цитата(smalcom @ Dec 1 2016, 04:21)  спец И это говорит человек который в этом топике не выдал ни одной фразы по теме. И даже не пытался понять в чем проблема. Лучше уж помолчите и не уводите ТС в ненужную ему сторону
|
|
|
|
|
Dec 2 2016, 18:57
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 22-07-09
Пользователь №: 51 470

|
Цитата(smalcom @ Dec 1 2016, 19:52)  у меня есть доказательства того поведения модема, что я озвучил - диаграммы обмена с модемом. А у вас кроме балабольства что-то есть? Фейспалм  Даже стало интересно, какие же это у вас доказательства которые уличают во вранье документацию на модем и соответственно меня тоже. Ах да, меня еще и в попутно в балабольстве. С вопросом по сокетам уже слились, так не откажите в удовольствии посмотреть хоть эти доказательства пс. Или хотя бы доказательства склеивания пакетов. Не пользовательских данных на выходе а именно пакетов
Сообщение отредактировал butthead2 - Dec 2 2016, 19:09
|
|
|
|
|
Dec 3 2016, 06:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(CADiLO @ Dec 3 2016, 00:29)  СТЕК ЛИЦЕНЗИОННЫЙ !!! и Симком там менять ничего не может - как МТК написало, так и работает. Вот это новость!  Мое мировоззрение опять меняется... Правда, непонятно, причем здесь МТК? А как же SIM300-SIM900? Там тоже Медиатек подсобил? Я так понимаю, стек у Симкома лицензионный и одинаков для всех их модулей. Не будут же они несколько лицензий покупать... Так что вопрос все-таки к Симкому. В названии команды IPHEAD слово "пакет" присутствует. Опять таки, AT+CIPSRIP Show Remote IP Address and Port When Received Data , что, для всех входящих пакетов, даже с разных адресов:портов одна очередь пользовательских данных? Что-то тут недоговорено....
|
|
|
|
|
Dec 3 2016, 08:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(smalcom @ Dec 3 2016, 12:28)  что до того уровня где я бы слился вам ещё столько учиться, что врядли столько проживёте. smalcom, все уже давно поняли, что Вы самый знающий. Только умный не станет так засорять тему. Остыньте. Кстати, CADiLO, я правиьно понял, что если UDP пакеты от оператора пришли в нарушенном порядке, то так они кучей данных в этом нарушенном порядке и вывалятся?
|
|
|
|
|
Dec 3 2016, 12:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Не буду спорить, что не знаю всех подробностей. Вот только по поим представлениям, АТ интерфейс - это пользовательская надстройка над ОС, на которой работает чипсет модуля. И встроенный в модуль PPP/TCP/IP/FTP/HTTP - тоже пользовательская надстройка. Пусть лицензированная. Так причем здесь Медиатек с его ОС? Он писал AT интерфейс? В т.ч. и чисто Симкомовские команды?
Конечный вопрос стоит так: отличается ли внешнее поведение по работе с данными, пересылаемыми посредством встроенного TCPIP стека модулей SIM300-SIM900-SIM800 в части их разбиения-объединения?
Так как у нас транспорт поверх UDP писан из расчета, что передача будет идти пакетами. Если 2 раза вызвал +CIPSEND, значит и придет 2 пакета, пускай в другом порядке, но 2. И в обратку, если сервер послал 2 пакета, у меня возникнет 2 раза +IPD URC. C SIM300-SIM900 все отлажено. Подвохи от 800-й серии постоянно жду....
|
|
|
|
|
Dec 3 2016, 17:51
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(Alechek @ Dec 3 2016, 08:26)  В названии команды IPHEAD слово "пакет" присутствует. Опять таки, AT+CIPSRIP Show Remote IP Address and Port When Received Data , что, для всех входящих пакетов, даже с разных адресов:портов одна очередь пользовательских данных? Что-то тут недоговорено.... Естественно, для каждого соединения свой приемный буфер. Но: UART -то один, поэтому если вы не удосужились применить ни одну из команд AT+CIPHEAD=1 AT+CIPSRIP=1 то, при наличии нескольких соединений и автоматической выдаче данных в порт, пришедшие с разных соединений данные будут вываливаться поочередно в этот порт, и у вас не будет возможности их различить. А если заголовки включены, то каждая порция данных из отдельного соединения будет иметь свой заголовок включая длину данных. Вообще, хоть документация не сильно подробная, но она все же есть, и в ней достаточно информации. Посмотрите например: SIM800 Series_TCPIP_Application Note Цитата(Alechek @ Dec 3 2016, 10:21)  я правиьно понял, что если UDP пакеты от оператора пришли в нарушенном порядке, то так они кучей данных в этом нарушенном порядке и вывалятся? Сомневаюсь, что стек модема будет заниматься перекладыванием входных пакетов по их порядковым номерам... Цитата(Alechek @ Dec 3 2016, 14:27)  И в обратку, если сервер послал 2 пакета, у меня возникнет 2 раза +IPD URC. А вот на это точно не нужно рассчитывать. Тем более, что вопрос топикстартера как раз и описывал ситуацию, когда +IPD URC одно на несколько пришедших почти одновременно пакетов.
|
|
|
|
|
Dec 3 2016, 19:50
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(Baser @ Dec 3 2016, 22:51)  А вот на это точно не нужно рассчитывать. Тем более, что вопрос топикстартера как раз и описывал ситуацию, когда +IPD URC одно на несколько пришедших почти одновременно пакетов. Во-первых, все расчитывалось во времена SIM300. Там работало. Во вторых, пока что все вилами на воде. И китайцы могли не так понять Эдуарда, и он их... Так как после его ответа все равно остались вопросы. Цитата(Baser @ Dec 3 2016, 22:51)  Естественно, для каждого соединения свой приемный буфер. Ага, щаз. Расширенный UDP режим, +CIPUDPMODE=1. Какое соединение? К нам летят пакеты с разных адрсов. Сколько буферов?
|
|
|
|
|
Dec 4 2016, 06:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(Baser @ Dec 4 2016, 03:39)  Для TCP вроде все однозначно, а для режима расширенного UDP непонятно для чего дополнительно есть мультиконект на 5 соединений. Но это, как я понимаю, к изначальному вопросу ТС отношение не имеет, это уже новая постановка вопроса  Имеет. То, что его пакеты собирал в данные модуль - с этим определились. Осталось выяснить, можно ли с этого избежать. Расширенный UDP - это как слушающий UDP сервер.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|