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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Надежность потока TCP и USB bulk, Возможна ли потеря данных?
Avensis
сообщение Aug 13 2012, 09:40
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-12
Пользователь №: 73 107



Всем добрый день.

Заранее прошу прощения за возможный оффтоп, но я не нашел более подходящей ветки. Перенесите плз, если не прав.

Теперь к вопросу. Планируется выпуск устройства на базе ARM, которое будет получать инструкции от ПК. Должно поддерживать несколько интерфейсов, в т.ч. Ethernet и USB. Поток до 1 МБит/с. Данные представляют собой управляющие команды (как следствие, планируется пакетная передача) и терять их никак нельзя.
Возникает главный вопрос: возможна ли теоретически потеря или порча данных в потоке TCP или USB? Вроде бы такого быть не должно, однако даже поиск по этой конференции показывает, что крайне редко в том же ТСР встречаются пакеты с битой КС на уровне приложения.
Если допустить что раз в год и палка стреляет, то возможна такая ситуация, что будет испорчен заголовок команды. Тогда пакет будет принят некорректно, но самое страшное, что будет потеряно ожидаемое начало следующего пакета и т.п. Короче, возможен рассинхрон.
Во избежание, придется любо городить некие таймауты для восстановления синхронизации, что не очень хорошо скажется на скорости работы, либо делать стаффинг, но мне не очень нравится реализовывать логику по сути канального уровня поверх транспортного. Либо делать еще что-то, чего мне в голову пока не пришло.
Гуру, подскажите, как все таки правильно сделать надежный пакетный обмен?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 13 2012, 10:09
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
однако даже поиск по этой конференции показывает, что крайне редко в том же ТСР встречаются пакеты с битой КС на уровне приложения.


Если TCP/IP через Ethernet, то вероятность такой ситуации крайне мала - все таки две контрольных суммы (Ethernet и собственно TCP (хотя как раз у TCP слабенький контроль)).

Так что можете забить.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Avensis
сообщение Aug 13 2012, 10:46
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-12
Пользователь №: 73 107



Цитата(Rst7 @ Aug 13 2012, 14:09) *
Если TCP/IP через Ethernet

Да, планируется использовать Ethernet.

Цитата(Rst7 @ Aug 13 2012, 14:09) *
Так что можете забить.


Вот тут говорят, что такое все же бывает. 1 раз в 25Мбайт в моем случае это раз в 3-4 минуты, что совершенно неприемлемо. Неприемлемо даже получать одну ошибку в несколько часов и если такая возможность существует, значит на уровне приложения необходимо принять меры для контроля и исправления ошибок.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 13 2012, 10:54
Сообщение #4


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Вот тут говорят, что такое все же бывает. 1 раз в 25Мбайт в моем случае это раз в 3-4 минуты, что совершенно неприемлемо.


Разве там разговор за Ethernet? wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Avensis
сообщение Aug 13 2012, 10:59
Сообщение #5





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-12
Пользователь №: 73 107



Цитата(Rst7 @ Aug 13 2012, 14:54) *
Разве там разговор за Ethernet? wink.gif

Был не прав, признаю. sm.gif
Однако как расценить Вашу реплику:
Цитата(Rst7)
вероятность такой ситуации крайне мала

Вероятность таки существует? Вообще, интересует как это делают серьезные ребята в промышленных протоколах? К сожалению в голову не идет ни один, который можно было бы посмотреть не утонув в нем на несколько дней . Там делают проверку данных на уровне приложения или нет?
И как быть с USB? Там в Bulk передачах насколько я знаю тоже обещают гарантированную доставку как и в TCP/IP. Этому транспорту тоже можно верить?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 13 2012, 11:39
Сообщение #6


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Вероятность таки существует?


Согласно квантовой теории существует ненулевая вероятность того, что правильный (с точки зрения CRC) пакет сам по себе в канале связи возникнет - флуктуации, все дела wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
KRS
сообщение Aug 13 2012, 11:46
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Rst7 @ Aug 13 2012, 15:39) *
Согласно квантовой теории существует ненулевая вероятность того, что правильный (с точки зрения CRC) пакет сам по себе в канале связи возникнет - флуктуации, все дела wink.gif

Если посадить за печатную машинку миллион обезьян-по теории вероятности, должен появиться еще один том "Войны и мир".... Однако, с развитием Интернета, стало понятно,что это не так!

Автору - если у вас соединение с ПК в одном сегменте (т.е. без маршрутизаторов и т.п.) можно вообще обойтись без TCP и использовать UDP, а там если боитесь использовать еще и хеш и т.п. и конечно подтверждать прием команд.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 13 2012, 11:58
Сообщение #8


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Автору - если у вас соединение с ПК в одном сегменте (т.е. без маршрутизаторов и т.п.) можно вообще обойтись без TCP и использовать UDP, а там если боитесь использовать еще и хеш и т.п. и конечно подтверждать прием команд.


Да излишне это все. TCP через Ethernet (особенно в одном сегменте) можно считать абсолютно надежным. Ну, если конечно, топикстартера не интересуют временные интервалы порядка возраста Вселенной wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Avensis
сообщение Aug 13 2012, 13:55
Сообщение #9





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-12
Пользователь №: 73 107



Цитата(KRS @ Aug 13 2012, 15:46) *
Автору - если у вас соединение с ПК в одном сегменте (т.е. без маршрутизаторов и т.п.) можно вообще обойтись без TCP и использовать UDP

Не, UDP точно не пойдет. Предполагается работа в одном сегменте сети, но в условиях довольно серьезных помех и практика показала, что UDP очень даже ненадежен, если не прикрутить поверх него свою "гарантию" доставки.
Цитата(Rst7 @ Aug 13 2012, 15:58) *
Да излишне это все. TCP через Ethernet (особенно в одном сегменте) можно считать абсолютно надежным. Ну, если конечно, топикстартера не интересуют временные интервалы порядка возраста Вселенной wink.gif

Нет, космические временные интервалы меня не интересуют. Достаточно нескольких суток стабильной работы.
Теперь про TCP/IP примерно понятно, спасибо!
А про USB никто ничего не подскажет?

Сообщение отредактировал Avensis - Aug 13 2012, 13:56
Go to the top of the page
 
+Quote Post
gerber
сообщение Aug 14 2012, 07:09
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(Avensis @ Aug 13 2012, 17:55) *
А про USB никто ничего не подскажет?

USB - в условиях сильных ЭМ помех крайне ненадёжен в плане передачи данных. Лично видел, как отваливалась USB клавиатура от компьютера при включении рядом мощной нагрузки.
Могу порекомендовать посмотреть в сторону CAN - там на физическом уровне гарантируется доставка посылки с правильным CRC (передатчик передаёт до тех пор, пока приёмник не подтвердит аппаратно получение посылки).


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 14 2012, 07:38
Сообщение #11


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(gerber @ Aug 14 2012, 10:09) *
USB - в условиях сильных ЭМ помех крайне ненадёжен в плане передачи данных. Лично видел, как отваливалась USB клавиатура от компьютера при включении рядом мощной нагрузки.
Могу порекомендовать посмотреть в сторону CAN - там на физическом уровне гарантируется доставка посылки с правильным CRC (передатчик передаёт до тех пор, пока приёмник не подтвердит аппаратно получение посылки).


Ненадежен не USB, а потребительская техника.
Работая с силовой электроникой постоянно наблюдаю как отваливается не только USB клавиатура, но USB COM порты, USB накопители, USB осциллографы.
Монитор отваливается, который по VGA присоединен.
Отваливается Ethenet свитч возле компа. Виснет Ethernet роутер.
Бессмысленно говорить о надежности интерфейсов если они подключены к бытовому компу через дешевые свитчеры или хабы, без специальной инфраструктуры защит и заземлений.
Там элементарно сетевой интерфейс может начать шалить, искажать пакеты, а потом добавлять к ним правильную CRC.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 14 2012, 07:49
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AlexandrY @ Aug 14 2012, 11:38) *
Работая с силовой электроникой постоянно наблюдаю как отваливается не только USB клавиатура, но USB COM порты, USB накопители, USB осциллографы.

Ну, клавиатура - это все же особый случай. Развесистая такая антенна, если в дешевом исполнении. Особо продвинутые экземпляры виснут от срабатывания на небольшом отдалении зажигалки с пьезоэлементом.
Go to the top of the page
 
+Quote Post
dinam
сообщение Aug 14 2012, 07:56
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Насчет надежности USB. Подключал своё устройство 5м кабелем напрямую PC. Щёлкали статикой по USB разъёмам и кабелю. Добились нормальной работы без глухих зависаний, ну т.е. когда спасает только отсоединение устройства.
В течение рабочего дня просто гнали поток данных порядка 35-40 Мбайт/сек данных с проверкой на PC. Ни одного неправильного принятого байта.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Aug 14 2012, 08:14
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(Avensis @ Aug 13 2012, 12:40) *
...Планируется выпуск устройства на базе ARM, которое будет получать инструкции от ПК. Должно поддерживать несколько интерфейсов, в т.ч. Ethernet и USB. Поток до 1 МБит/с. Данные представляют собой управляющие команды...
...возможна ли теоретически потеря или порча данных в потоке TCP или USB?...
... подскажите, как все таки правильно сделать надежный пакетный обмен?

У нас был следующий случай при выдаче команд от ПК модулю через USB. На ПК был установлен неверный драйвер для chipset-а материнской платы. В результате в модуль поступали совершенно произвольные данные. Модуль не подвисал только потому, что все команды были завернуты в пакеты (на уровне приложения) со следующей структурой: Тип пакета, Длина пакета, Команда и параметры, Контрольная сумма. То есть, не совпадала контрольная сумма и модуль отбрасывал все пакеты.

Предположим, что Ваш модуль - это универсальный управляемый источник питания, формирующий на выходе питающие напряжения от 1.8 В до 48 В... crying.gif
Go to the top of the page
 
+Quote Post
Avensis
сообщение Aug 14 2012, 09:58
Сообщение #15





Группа: Новичок
Сообщений: 5
Регистрация: 13-08-12
Пользователь №: 73 107



Цитата(Konst_777 @ Aug 14 2012, 12:14) *
Тип пакета, Длина пакета, Команда и параметры, Контрольная сумма. То есть, не совпадала контрольная сумма и модуль отбрасывал все пакеты.


Это все понятно, только Ваш случай (по крайней мере, как он здесь описан) не дает желаемой защиты. Предположим, что у Вас в результате ошибки приема исказились первые 2 слова пакета. Безусловно, контрольная сумма не совпала, только вот незадача: Вы больше не знаете сколько еще нужно выгрести мусора из потокового канала, чтобы попасть на границу следующего пакета.
Именно о подобных ньюансах восстановления синхронизации я и спрашиваю в данной ветке.
Go to the top of the page
 
+Quote Post

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

 


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


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