Easyelectronics.ru

Электроника для всех
Текущее время: 20 сен 2018, 12:16

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 08 янв 2018, 22:14 
Заглядывает иногда

Зарегистрирован: 15 ноя 2015, 12:11
Сообщения: 102
Добрый вечер!

Не сталкивался ли кто нибудь с нижеописанным эффектом?

Дано устройствo с FreeRTOS и lwIP стеком. Устанавливаем с ним коммуникацию из под windows 10. Протокол текстовый - посылаем "STATUS?\r" получаем "STATUS:1,2,3,4,5,6\r". Через ~30 секунд после установления ip соединения устройсто перестает отвечать на запросы "STATUS?\r" прилежно присылая при этом кроткий TCP ACK пакеты на каждый такой запрос. Закрыв ip соединение и открыв его вновь - получаем ещё 30 секунд коммуникации после чего проблема повторяется. Остальные сетевые функции - как-то ответы на UDP запросы или открытие параллельных ip соединений (тоже на 30 секунд жизни, впрочем) вполне работоспособны.

В wireshark логе заметили, что в момент возникновения проблемы поле win size в tcp header пакета посылаемого устройством увеличивается с пары килобайт до 65535. Трассировка на стороне устройства показывает, что отсылаемое в этом пакете (проверям по seqno) win size в порядке, тоже самое отмечает и второй wireshark, включённый в хаб между PC и отлаживаемым устройством. Т.е. железо на устройстве судя по всему вне подозрений. Но wireshark на Windows 10 видит win size уже 65535 со всеми вытекающими последствиями.

Проблема проявляется только на одном из доступных PC с Windows 10. На остальных 10-ках, как и на системах с windows 7, Win Server 2012 обнаружить её не удалось. В "больном" PC с Windows 10 - две сетевые карточки - эффект наблюдается на обеих. checksum offloading отключали - вылечить "битые" (согласно валидации в wireshark) чексуммы в tcp header windows пакетов не помогло. Что характерно - до "больного" пакета с win size 65535, все пакеты приходящие от устройства валидируют tcp header чексумму корректно - а начиная с "больного" пакета - все "чёрные".

Пробовали обновить lwIP с 1.4.х до 2.0.4 - симптомы идентичны. На данной платформе это уже третье устройство за два года - на экземплярах "второго" эффект обнаруживается лишь через пару часов, а у "первых" дождаться "экскоммуникации" пока не удалось. Устройства функционально разные - но МК и разводка LAN цепей сходная.

С благодарностью выслушаю ваши соображения по поводу проблемы.

Спасибо за внимание и всем хорошего вечера!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 09 янв 2018, 08:20 
Заглядывает иногда

Зарегистрирован: 19 дек 2017, 08:12
Сообщения: 135
Откуда: SPb
siarzhuk писал(а):
Трассировка на стороне устройства показывает, что отсылаемое в этом пакете (проверям по seqno) win size в порядке, тоже самое отмечает и второй wireshark, включённый в хаб между PC и отлаживаемым устройством. Т.е. железо на устройстве судя по всему вне подозрений. Но wireshark на Windows 10 видит win size уже 65535 со всеми вытекающими последствиями.


Пардон, правильно ли я понял, что пакет, который видит винда, отличается от того, который передавался по проводам ?
Если так - ну дык, хорошую вещь мастдаем не назовут :) Вам позарез надо этот баг поймать, или убедительное обоснование "виноват Гейц" будет достаточным ?

Из экспериментов, первое что приходит в голову - переставить винду :) Если это невозможно - попробуйте найти какай-нибудь live-cd, или просто временно воткнуть туда другой винт, на который накатить "чистую" 10-ку, и проверить - эффект пропадет или останется ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 09 янв 2018, 13:55 
Заглядывает иногда

Зарегистрирован: 15 ноя 2015, 12:11
Сообщения: 102
stanislav.l писал(а):
siarzhuk писал(а):
Но wireshark на Windows 10 видит win size уже 65535 со всеми вытекающими последствиями.

Пардон, правильно ли я понял, что пакет, который видит винда, отличается от того, который передавался по проводам ?

Да, можно и так сказать. Wireshark стоящий на винде, перехватывает пакеты с уже изменённым полем window size в tcp заголовке. А wireshark на проходящем свитче видит пакеты без этого изменения. Что даёт основания подозревать [в модификации пакетов] либо железо на конечном PC либо винду там-же. Железо - две карточки от разных производителей - эффект наблюдается на обеих. Скорее всего винда "оптимизирует".

stanislav.l писал(а):
попробуйте найти какай-нибудь live-cd, или просто временно воткнуть туда другой винт, на который накатить "чистую" 10-ку, и проверить - эффект пропадет или останется ?

Спасибо. Будем поискать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 09 янв 2018, 19:14 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2106
Откуда: Русь, Новороссийск
siarzhuk писал(а):
...checksum offloading отключали...
А чексуммы карточки считают аппаратно или софтово?
Мож просто драйвера кривые? Винда терпелива к косякам железа.

А временно сменить карточки на этой системе?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 09 янв 2018, 20:18 
Заглядывает иногда

Зарегистрирован: 15 ноя 2015, 12:11
Сообщения: 102
VladyMile писал(а):
А чексуммы карточки считают аппаратно или софтово?

Изначально "offloading" был включен - локальный wireshark пакеты от этого хоста "черни́л", как я понимаю из-за некорректной чексуммы - т.е. подсчёт вёлся аппаратно. После отключения offloading (софтовый подсчёт?) - валидация всех пакетов в wireshark стала проходить корректно (ну пока не начинался дизастер с "окном 65535"). Но tcp соединение дохло в обеих случаях без каких-либо особенностей - хоть время как по ним засекай.

VladyMile писал(а):
А временно сменить карточки на этой системе?

Карточки и так разные - набортная Realtek и в слоте расширения гигабитный Intel. И без разницы через какую из них в сеть ходим - дохнет.

Впрочем свежеустановленнася десятка на том-же компьютере пока держит соединение стабильно - проблема не воспроизводится уже в течение часа. Вот насосётся система апдейтов - посмтрим.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 10 янв 2018, 09:23 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2106
Откуда: Русь, Новороссийск
checksum offloading - таки да, это "разгрузка центрального процессора от подсчёта контрольных сумм". Но есть нюансы.

Софтовая набортная Realtek просто не умеет/не имеет "аппаратной разгрузки", и этот чекбокс ничего реально не переключает.

Слотовый гигабитный Intel, скорей всего, имеет/умеет аппаратно считать чексуммы (но по уму это надо проверить в описании чипсета сетевухи на сайте Интела), значит, чекбокс переключает.

Это я чисто для понимания ситуации уточнил.

Если косяки в любом случае, то виновата или система (с обновлениями или без), или питание компа (оно всегда и во всём виновато), или сетевая инфраструктура (в первую очередь свич, ну, точнее, его поджаренный, но ещё живой порт порт; или питание свича), и "далее везде".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 10 янв 2018, 13:48 
Заглядывает иногда

Зарегистрирован: 15 ноя 2015, 12:11
Сообщения: 102
VladyMile писал(а):
Софтовая набортная Realtek просто не умеет/не имеет "аппаратной разгрузки", и этот чекбокс ничего реально не переключает.

Не берусь утверждать, но успешная валидация чексумм на исходящих пакетах, наблюдаемых локальном wireshark-ом вроде как зависела от настройки offloading на набортной карточке. Может уже и научилась.

VladyMile писал(а):
Если косяки в любом случае, то виновата или система (с обновлениями или без), или питание компа (оно всегда и во всём виновато), или сетевая инфраструктура (в первую очередь свич, ну, точнее, его поджаренный, но ещё живой порт порт; или питание свича), и "далее везде".

Как минимум три разных конфигурации сети и несколько разных хабов поучаствовало в тестах - эффект идентичен. Да и модификация конкретного поля отнюдь не рандомным значением - наводит на мысль о том, что вмешивается кто-то более интеллектуальный чем приподжаренный порт свитча. :-\


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 10 янв 2018, 15:25 
Старожил

Зарегистрирован: 22 июн 2010, 21:53
Сообщения: 978
Откуда: Brussels
Соберите дамп трафика за всё время - начиная с первого пакета, когда еще всё работает и до последнего, когда ломается - и выложите куда-нить. Хоть будет что посмотреть. Опять же в поддержку lwIP можно будет написать. Может это поведение tcp win scale option в win10 такое...

Опять же, нарисуйте полную схему сети на l2 и l3 уровнях - свичи, порты, windows firewall (еще какие-нить заморочки на портах типа 802.1q и 802.1х и т.п.). Если целевой win10 в виртуалке - настройки vSwitch и пр.

Будет что обсуждать хотя бы...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lwIP - tcp win size == 65535 у принятых в win 10 пакетов.
СообщениеДобавлено: 10 янв 2018, 21:37 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2106
Откуда: Русь, Новороссийск
siarzhuk писал(а):
VladyMile писал(а):
Софтовая набортная Realtek просто не умеет/не имеет "аппаратной разгрузки", и этот чекбокс ничего реально не переключает.
Не берусь утверждать, но успешная валидация чексумм на исходящих пакетах, наблюдаемых локальном wireshark-ом вроде как зависела от настройки offloading на набортной карточке. Может уже и научилась.
Вы меня заинтриговали, но беглый экскурс по нескольким случайно выбранным современным чипам на сайте Realtek дал однозначный ответ - у них нет аппаратного чексума, а чекбокс переключает софт между "валенки - галоши". Точнее, они "аппаратной разгрузкой" называют протокольную разгрузку, а не подсчёт контрольных сумм пакетов. А это, очевидно, несопоставимые задачи.

Мой чёс, конечно, совершенно не был сплошным, я мог и пропустить какого-то хэдлайнера, но, имхо, 8-е чувство мне подсказывает, что Realtek не идут (и никогда не шли) по пути аппаратного усложнения чипов.
Скорей наоборот - минимальная достаточность для необходимого функционала.
Производство по субмикронным технологиям - не их конёк. Не только в сетевухах, а вообще.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB