grau 0 14 июля, 2021 Опубликовано 14 июля, 2021 · Жалоба Приветствую! Есть плата nucleo-f767zi. Очень хочется сделать из нее удаленный датчик для IoT. Для начала генерируем проект из Cube для этой железки и включаем LwIP и FreeRTOS. Встроенный MQTT клиент прекрасно взаимодействет с локальным Mosquito. А теперь еще хочется передать данные по защищенному соединению. В том же Cube жмакается галочка MbedTLS и... ничего: нагенеренный проект даже не собирается, инициализация LwIP тоже изчезла из кода. Собственно дальше начинается изучение влияния всех имеющихся дефайнов и зависимостей, чтоб хоть как-то запуститься. Пока так понимаю, что надо заставить работать функцию altcp_tls_create_config_client_2wayauth, но что-то дальше все виснет где-то в потрохах либы. Может подскажет кто, как правильно надо перенастроить проект, чтоб секьюрность заработала? Или может встречалась готовая инструкция? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grau 0 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба Ладно, сам спросил - сам ответил Сто кило для стека надо было выдать, и еще 80к на буфера сетевые - и все запустилось из коробки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 26.07.2021 в 12:55, grau сказал: Сто кило для стека надо было выдать, и еще 80к на буфера сетевые Офигеть! Когда-то, чтобы передать на сервак кучу данных требовался только простой стек и кило 10 ОЗУ на все про все... А в МК-то есть столько оперативы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба Это новая кубо-реальность. Вангую скоро уже будет требоваться не менее 1 МБ. 3 часа назад, mantech сказал: Когда-то, чтобы передать на сервак кучу данных Пока что ещё не только "когда-то": у меня в текущем проекте мой стек работает на <10кБ ОЗУ для сетевых буферов (одновременно: 2 открытых TCP-сокета + 1 UDP). И это работает на стеке <900 байт - стек для всех сетевых задач (включая HTTP). 3 часа назад, mantech сказал: А в МК-то есть столько оперативы? Раз скомпилилось, значит есть. Только видимо она вся целиком на это дело и ушла. И на прикладные задачи остались крохи. Так и получается, что для опроса простого удалённого датчика, по нонешним временам, нужен как минимум - конский Cortex-M7 с максимумом ОЗУ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба On 7/26/2021 at 5:55 PM, grau said: Сто кило для стека надо было выдать, и еще 80к на буфера сетевые - и все запустилось из коробки. По своему опыту скажу, что 100 кБайт хоть и достаточно для работы стека TCP/IP, но всё же лучше позаботиться о развитии на будущее и выделить хотя бы 256, а ещё лучше 1024 кБайт. Тогда можно спокойно и дальше развивать проект, не опасаясь, что в один прекрасный день он откажется работать адекватно. Если столько памяти в МК нет, то рекомендую относительно дешёвые микросхмы SDRAM. Например, одна такая микросхема в 28-ногом корпусе даст Вам сразу 32 МБайт память. Это уже серьёзно для работы. Попробуйте, и останетесь довольны! Если проект для себя, то такие микросхемы можно наковырять из старых модулей памяти для ПК или видеокарт, а уж этого хватает в ремонтных мастерсхик по ПК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 14 minutes ago, jcxz said: мой стек работает на <10кБ ОЗУ Остается добавить TLS и еще раз подсчитать занимаемую память. 20 minutes ago, jcxz said: Вангую скоро уже будет требоваться не менее 1 МБ. Так и есть. А кто не использует защищенные соединения, тех вообще в сеть пускать перестанут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 16 минут назад, aaarrr сказал: Остается добавить TLS и еще раз подсчитать занимаемую память. И что именно в TLS требует 180 кБ? Причём: 26.07.2021 в 12:55, grau сказал: 80к на буфера сетевые это видимо буфера под Ethernet-фреймы? И какое отношение имеет наличие TLS к их объёму? Неужто для TLS реально нужно иметь буфера для 80*1024/1450 = ~56 Ethernet-кадров??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 2 hours ago, jcxz said: И что именно в TLS требует 180 кБ? Десятки кБ в любом случае нужны. Достаточно погуглить что-нибудь на тему "mbedTLS memory requirements". А проблемы embedded писателей стандартов мало волнуют. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grau 0 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба 14 hours ago, jcxz said: И что именно в TLS требует 180 кБ? И какое отношение имеет наличие TLS к их объёму? Неужто для TLS реально нужно иметь буфера для 80*1024/1450 = ~56 Ethernet-кадров??? Стек - там просто математика крутится Под сеть - там есть функция, которая говорит сколько было реально использовано и дефайны, которые предупреждают, что в определенных ситуациях может не хватить а вообще говоря, сам конечно подивился таким запросам - ведь это простейший случай, с самоподписанным сертификатом и два байта переслать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба 14 часов назад, aaarrr сказал: Остается добавить TLS Нескромный вопрос, зачем везде пихать его? Вы постоянно при опросе датчиков или подобного передаете секретную информацию, паспортные или банковские данные, пароли пин коды и пр?? 14 часов назад, aaarrr сказал: А кто не использует защищенные соединения, тех вообще в сеть пускать перестанут. С какого перепугу-то вдруг? Не будут пускать на всякие AWS-ы? Да и хрен с ними, те, кто в теме уже давно поняли, что нужны свои серваки для стабильной работы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба 11 часов назад, aaarrr сказал: Десятки кБ в любом случае нужны. Достаточно погуглить что-нибудь на тему "mbedTLS memory requirements". Ок, как утверждается здесь: https://tls.mbed.org/discussions/crypto-and-ssl/memory-consumption-32-kb-memory-buffer нужно 32кБ. Ещё куда ни шло. Но всё-таки это не 180кБ. А как бы в ~5 раз меньше. Разница есть и существенная, не находите? Но так и не ответили на вопрос: "Зачем нужно ~56 сетевых буферов"??? Для какой такой надобности? Я понимаю когда нужно передавать через TCP-сокет кадры прикладного протокола на большой скорости (без ожидания ACK-ов). Тогда да - нужно хранить длинную историю. Но в задаче ТС-а большая скорость совсем не требуется. Или если имеем сервер со множеством параллельных активных соединений. Чего вроде тоже как у ТС-а не наблюдается. Или "буфера сетевые" используются функциями TLS (шифрование? подпись? ...), а не только TCP/ETHERNET-стеком? 18 минут назад, grau сказал: Стек - там просто математика крутится Для "просто математики" 100кБ - как то жирновато. Слишком. Подозреваю, что стек у вас используется в качестве памяти для функций шифрования. Но тоже имхо - как-то слишком жирно. Вы лучше объясните - зачем: 26.07.2021 в 12:55, grau сказал: 80к на буфера сетевые И что такое "буфера сетевые"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба 3 минуты назад, jcxz сказал: Я понимаю когда нужно передавать через TCP-сокет кадры прикладного протокола на большой скорости (без ожидания ACK-ов). Тогда да - нужно хранить длинную историю. Да даже и так, ну 4 или 8 кадров, на прием и столько же на передачу, хотя прием-то тут зачем такой большой, раз задача передавать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба 12 минут назад, mantech сказал: Да даже и так, ну 4 или 8 кадров, на прием и столько же на передачу, хотя прием-то тут зачем такой большой, раз задача передавать... Если предположить, что у ТС-а через TCP-сокет идёт поток данных со скоростью 1МБ/с и возможны задержки ACK-ов до <0.05c (без торможения потока), то на передачу нужно помнить = 1000000*.05 = 50кБ (в памяти TCP-сокета). А желательно и несколько больше (на случай редких ретрансмиссий). Но у ТС-а не 1МБ/с в реальном времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба 1 hour ago, mantech said: Нескромный вопрос, зачем везде пихать его? Вы постоянно при опросе датчиков или подобного передаете секретную информацию, паспортные или банковские данные, пароли пин коды и пр?? Так становится принято в индустрии, что ж поделать? Вопрос к законодателям мод. 1 hour ago, mantech said: С какого перепугу-то вдруг? Не будут пускать на всякие AWS-ы? Да и хрен с ними, те, кто в теме уже давно поняли, что нужны свои серваки для стабильной работы... В браузер пускать перестанут, https only. "Свои серваки" никто не ограничит до тех пор, пока на них не передается чувствительная информация (показания приборов учета, например). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grau 0 28 июля, 2021 Опубликовано 28 июля, 2021 (изменено) · Жалоба 2 hours ago, jcxz said: И что такое "буфера сетевые"? MEM_SIZE увеличивал, пока не перестали сообщения об ошибках аллокации сыпаться MEM HEAP avail: 80000 used: 66676 max: 76128 err: 0 так понимаю, что куча общая, а дальше из нее все откушивают 2 hours ago, mantech said: Да даже и так, ну 4 или 8 кадров, на прием и столько же на передачу, хотя прием-то тут зачем такой большой, раз задача передавать... потому что получил в лог altcp_tls: TCP_WND is smaller than the RX decryption buffer, connection RX might stall! и оно в само деле подвисало, пока размеры всех массивов и число буферов не поднял. В конкретных значениях пока не уверен - просто увеличивал всех сразу по два раза, пока не запустилось Изменено 28 июля, 2021 пользователем grau Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться