Отговори на тема  [ 74 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща
LWIP MQTT TCP flow control въпросче... 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: LWIP MQTT TCP flow control въпросче...
ToHu написа:
Без да вземам отношение към MQTT, но това което Никола пише за редът на пакетите е абсолютно така. И още нещо, голям пакет при кофти връзка може никога да не мине, ама никога, толкова никога че ако изключиш кабела ще имаш по-голям шанс.

И какво се очаква да се направи - може наистина кабела да се е прецакал, брокера какво да направи? Няма ли връзка - няма, така че трябва да се вземат активни мерки - при MQTT това се покрива от QoS нивата - като изтече таймаут на съобщение, което е декларирано като "да стигне поне веднъж" или "точно само веднъж" брокера си събира парцалите и работи - ако има други закачени на тоя топик го праща на следващия по редицата, ако няма го съхранява и чака докато някой се обади.
Тоя проблем (затлачен канал поради много грешки и ретрансмити) го има за всеки вид канал, или поне за такива базирани на TCP. Нека да не забравяме че хората са ги видели тия проблеми когато ние тук сме усвоявали копирането на apple 2 и са вързали има-няма милиарди устройства. Затова има таймаути, и Никола спомена за тези в брокера. Ако някой знае за друго решение, да казва.
Моментът с прекъсването на връзката е ясен и при MQTT нищо не е по-зле от другите (http/ftp/...) и подобни популярни - "не е по-зле" е слабо казано, има предвидени мерки за целта. Failover няма как да стане ако има само един изпълнител на тая работа и само един несигурен канал към него, така че и Оня отгоре да слезе не може да свърши работата - за да има failover се иска да има изпълнена концепция за целта. Съжалявам ако някой е помислим че хваля MQTT-то (то си е така) и го смятам за замяна на всичко. Има алтернативи - DDS например, всеки си решава кое му е по-удобно.


Пет Окт 27, 2017 12:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: LWIP MQTT TCP flow control въпросче...
gicho написа:
Според теб, LWIP-то "пикае" ли на тия споменатите принципи, или направо се*е?


Не намесвай lwip-то, то си е наред! Проблемът е в кода, който си постнал. Не му е мястото там и ако досега не си го разбрал не знам дали ще мога да ти помогна...

gicho написа:
Дай алтернатива - като код или като концепция, да видя дали ще мога да я смеля и как ще влезе в моя контекст?


Аз ти обясних, правиш си опашчица с това което ти дава калбака. Дали ще е обща или всеки клиент на стека ще има собствени - ти ще си решиш. Но принципно е добре да предвидиш и други (освен mqtt-то) да могат да ползват мрежата. В калбака получаваш един параметър (arg) - този аргумент ти го даваш като отваряш сокета, просто стека ти го връща. Смисълът му може да е всякакъв, но пак повтарям че калбакът е ЕДИН и се вика за всякакви комуникации. Демек ако си казал че това е клиент, то това е клиент на СОКЕТ, а не твърдо mqtt клиент.
Та получаваш аргумент/клиент и пакет. Пъхаш си ги в опашка (на клиента или глобална) и връщаш управлението на lwip, за да може то да продължи да си бачка докато клиентите на сокетите си обработват данните, пишат ги по карти или ги рисуват или правят там каквото правят.
След като от другата страна на опашката или опашките извадиш пакет и обработиш част или всички данни трябва да се извика tcp_received(), за да знае стека че може да плъзне джама...

Ся, проблемите с цитирания код/калбак са принципни. Демек това е код, писан от човек който изобщо не е наясно или е наясно ама не му дреме за останалите. Когато имаш принципен проблем, де-фаткто имаш много проблеми. Това с флоуконтрола е само един от възможните. С такъв код ще имаш и много други проблем. Затова ти казах, заеби го това и си потърси или друга имплементация наготово или седни си портни ти lwip и някакъв mqtt клиент. Но не се занимавай с принципно сбъркани неща.


Пет Окт 27, 2017 1:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: LWIP MQTT TCP flow control въпросче...
Пак се връщаме в началото - казах че тоя код има проблем и той е че не е развит да позволява фрагментирам трансфер към приложението (примерно файловата система). По-точно имплементация на фрагментиран трансфер има, но той не се съобразява с евентуалното (много вероятно) бавно източване на данните. И има нужда от едно допълнение - сигнал обратно който да го дава това и да води до викане на tcp_recved(). Що си мисля че говорим едно и също...
Този проблем е ясен, но моето мнение е че си има елементарно решение, за което говорих. С този пач ще се реши и този проблем. Сега, дали наличието на един недостатък/проблем/неимплементиран фичър е повод да кажа "не" на тоя код и да скоча на друг, или да го пренапиша? Ако пренаписвам ще направя същото като концепция което е направено там, защото го смятам за коректно, и ще трябва да добавя "фичъра". Т.е. за какво да пренаписвам останалото?
От клиентите, които гледах, смело твърдя че тоя е с най-малко "проблеми + липсващи фичъри" - щото идеален не съм видял, а много по-лоши бая видях. Да не говорим че повечето ембедед варианти изобщо не се и опитват да изкарват фрагментирано данните, а карат на принципа "1К макс, сори, не повече".


Пет Окт 27, 2017 1:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: LWIP MQTT TCP flow control въпросче...
gicho написа:
или да го пренапиша?


Определено има нужда...

gicho написа:
Ако пренаписвам ще направя същото като концепция което е направено там, защото го смятам за коректно


Мда... сложен казус!


Пет Окт 27, 2017 1:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: LWIP MQTT TCP flow control въпросче...
Както и да е, разбрах какво имам да правя и ще видя дали ще се получи - засега изглежда добре и остава да се изтества.


Пет Окт 27, 2017 2:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: LWIP MQTT TCP flow control въпросче...
Идеята на MQTT не е да прехвърля файлове...

_________________
main[-1u]={1};


Пет Окт 27, 2017 3:59 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: LWIP MQTT TCP flow control въпросче...
Идеята на MQTT е да не му пука/задължава/лимитира какво ще се прехвърля. Както казвам, "payload" до 256Мбайта. Дали му викаме файл, папка, документ, база, пакет, телеграма, писмо, заявка, контекст, евент, нотификация, емисия - въпрос на име. Ако някъде съм се изтървал да напиша че прехвърлям файл - сори, просто да го кажем че е голям пакет данни, дето между другото някъде, някога, някой може и във файл да го наврял за малко.
Същата логика може да е "идеята на файловете не е да има в тях web страници" и да махмем Save от броузърите...


Пет Окт 27, 2017 4:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 12:48 pm
Мнения: 4393
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: LWIP MQTT TCP flow control въпросче...
gicho написа:
Идеята на MQTT е да не му пука/задължава/лимитира какво ще се прехвърля. Както казвам, "payload" до 256Мбайта........

явно точно идеята не ти е ясна :!:

http://mqtt.org/
---
MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport.
---

lightweight + messaging как кореспондира с "payload" до 256Мбайта :?:
все едно вестоносците при Крал Артур да носят не по един свитък на краица Гуинивер ами няколкото тома на "война и мир"(средновековният му аналог) + евангилето на Тома с твърди корици. :!:

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пет Окт 27, 2017 4:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: LWIP MQTT TCP flow control въпросче...
погледни тва
http://www.rfwireless-world.com/images/ ... format.jpg
дали има място за флоу-контрол, дори и да го модифицираш - тряя да модифицираш и брокера
разгледай също и TTL на пакета - брокера щи се зарадва много за тайм-аутите на пакетчетата
и ако го пускаш в GPRS мрежа - забрави за огромни пакети
също съм търсил опции...(за криптиране на ниво апликация) ама дърво

_________________
main[-1u]={1};


Пет Окт 27, 2017 6:40 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: LWIP MQTT TCP flow control въпросче...
MYXATA написа:
явно точно идеята не ти е ясна :!:

Може би да, може би не - не че има какво да се отговори на подобно твърдение...

MYXATA написа:
http://mqtt.org/
---
MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport.
---

lightweight + messaging как кореспондира с "payload" до 256Мбайта :?:
все едно вестоносците при Крал Артур да носят не по един свитък на краица Гуинивер ами няколкото тома на "война и мир"(средновековният му аналог) + евангилето на Тома с твърди корици. :!:


Е, и? Какво твърдиш? Че mqtt не може 256Мбайта, или че "няма такова животно" дето да е леко, да влезе в uC и да може да прехвърли 256Мбайта? То и от Искъра по-дълбоко няма де...
Ще си позволя да те цитирам - не схващаш идеята на думите им - lightweight все още не е синоним на дървен, неспособен, нескопосан, неработещ, че даже и не е "ограничен", макар често да ползваме ограничението на ресурсите за да оправдаваме неспособността си. Представи си, хората успели в 2К флаш да вкарат протокол, дето може 256Мбайта да прехвърли!!! А, то не че нещо, ама отдолу имало stream протокол дето можел и 256терабайта да пропусне по тръбата, ама къде ти, Москва не вярва на сълзи...
То преди 20 години сигурно никой не е мислил че на микроконтролер (имам предвид нещо с вграден флаш и без дисково устройство) ще има мрежова букса, еле пък вграден 802.11n за 2 долара, но времето неумолимо си тече и хората не цъкат SMS-и.
Къде ти е проблема с messaging и 256Мбайта? Отказваш да четеш големи e-mail-а с прикачени файлове? Слагаш равенство между messaging и услугата SMS на нокия с фенерче?
Не мисля да задълбавам в смисъла на думичките, ако имаш интерес прочети значението им в контекста на enterprise integration patterns примерно и да спрем със средновековната лирика - аз поне си мисля че е постижимо към днешна дата някой, някъде, дори само в лабораторна среда, да прекара няколко стотин мегабайта през TCP... На теб оставям да го издириш тоя уникат - да те светна, виждал си го сутрин в огледалото.... :D Мен не ме брой, торенти отдавна не съм дърпал, днес докъм 1.5Мбайта прехвърлях за тестове, но ще взема да хвърля "опикания" :) клиент на "недъгавия" протокол и ще жулна нещо по-класичеко - примерно една емулацийка на сериен върху TCP, най-добре с AT команди :rolleyes: Или по-добре да искам да махнат етернета и да си сложа един RS232, то нали същото.

Хм, що ли ви се връзвам - Миро поне вкарва техническа нотка в дискусията (тенкс както викат). Като има нещо техническо давайте да го мислим, ако ще дискутираме височината на Витоша - моля, в друга тема.
Дали ще прехвърлят 200 байта или 200Мбайта е работа на други хора - от мен се иска да могат и 200, и 200000000. По-точно от мен и това не се иска, иска се да имам позиция ако ме попитат що точно моето не може 200М, след като по протокол го може.
А и да не е 200М, и 200К да са (да говорим с примери които явно изглеждат по-реални) пак проблема с флоу контрола (и решението) си важат - за справка първия ми пост и после дискусията с Миро.
Примерно нашите администратори спокойно ще ни турят въжетата ако поискаме FTP за смъкване на нещо през публична мрежа. Пък който иска да си тегли ъпдейтите така, свят широк.


Пет Окт 27, 2017 9:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: LWIP MQTT TCP flow control въпросче...
TheWizard написа:
погледни тва
http://www.rfwireless-world.com/images/ ... format.jpg
дали има място за флоу-контрол, дори и да го модифицираш - тряя да модифицираш и брокера
разгледай също и TTL на пакета - брокера щи се зарадва много за тайм-аутите на пакетчетата
и ако го пускаш в GPRS мрежа - забрави за огромни пакети
също съм търсил опции...(за криптиране на ниво апликация) ама дърво


Картинката ми е достатъчно позната, макар да не "съм наясно с идеята". Какво те притеснява тук? Защо търсиш място за flow control в mqtt пакета?
Миро спомена слоевете на OSI модела - транспорта е отделно, сесиите също. Приложенията (разните mqtt клиенти и брокери) получават услугите по reliable transfer наготово от долните слоеве - в случая TCP. Ако смяташ че има нужда от дублиране си е твоя работа и никой няма да те спре - при мен няма да мине номера понеже другата страна (клиенти на брокера на разни платформи - облак, телефони, компютри) няма да ползват нито LWIP с MQTT закачено по RAW API-то му - т.е. ще си ползват техни, СТАНДАРТНИ, клиенти. Добавката "разделяйте на най-много 4К, чакайте обратно в друг топик, ...." е алгоритъм на протокол който трябва да реализират в техните приложения. Съответно, като "по-наясно с материята" от мен, може да попитат за чий Х.. го правя това след като TCP има фичъри A,B,C,... за всички тия глупости, с които се оправдавам за да защитя протокола отгоре, с който ги товаря.
И ако тук можем да си накривим капите и да си теглим по една, в бизнеса е малко по-друго - няма да ме псуват, само ще ми кажат "чао, не си наясно с идеята" - и не Мухата, ами те ще са прави, а аз ще съм го доказал с действия. Сещам се че в някой ОС-ове TCP/IP стека работи като драйвер (kernel mode) и съответно неговите ack, retransmit и т.н. ще са има-няма един порядък по-бързи от тези на "приложното" ниво, в поредния "убиец-протокол".

Относно брокерите и таймаути на бавни/латентни мрежи - не съм навлизал надълбоко, но то латентности и таймаути се настройват според очакваната система и среда. Ако брокера ти гърми с таймаути значи има нужда да му се променят - то затова не са хард-коднати в сорса, а се конфигурират. Ако стойностите по подразбиране са ОК за локална мрежа, то няма да работят добре в интернет. Като са добре за интернет няма да работят с dial-up примерно и т.н.
А ако се прецени че има нужда от UDP - има mqtt-sn за тия места. Няма как, като имаш технически ограничения трябва да вземеш мерки. Там ползват DTLS ако не бъркам като алтернатива на TLS/SSL.
Относно криптирането - какво пречи данните да са криптирани, казваш че е за ниво приложение? Какво отношение има бавния канал и прекъсвания към това дали payload-а е криптиран или не?

Последна забележка - хубаво би било всички, за разлика от мен, да схванат идеята, че mqtt е станал масов само и единствено заради техническите си качества. И едно от нещата които са позволили това да се случи е това че са успели много прецизно да открият границите на това кое да включат в протокола и кое да оставят за другите нива - избрали са да се осланят на транспорта отдолу за осигуряване на надежден транспорт, и са оставили приложенията отгоре с пълната свобода да дефинират нещата в техния домейн - организация на топици и съдържание на payload. Ако бяха опитали да правят "убиец на TCP" или "заместител на всички приложения" нямаше да сме ги чували, както би се случило с евентуалния ми мъртвороден протокол за парчетосване на големите трансфери за да си улесня работата (прехвърляйки я като товар на някой друг).


Пет Окт 27, 2017 9:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: LWIP MQTT TCP flow control въпросче...
моя съвет е да го разцъкаш на ниско ниво за да разберш какво говоря, а да не си губиш времето с вятърни мелници
а отколкото до масовост - просто няма друг подходящ за малки устройства...
IBM изровиха прашните папки от онуй време и ето на - дерзайте...

_________________
main[-1u]={1};


Пет Окт 27, 2017 9:44 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: LWIP MQTT TCP flow control въпросче...
Няма лошо в прашните папки - старо, ама златно. Просто няма много алтернативи.
На ниско ниво го гледам, даже "под полата" му гледам последните дни - т.е. в TCP пакетите по жицата, тоя flow control, канал със загуба на пакети и т.н..
То интересното е че за отрицателно време стигнах до момента да оптимизирам и да търся къде са му лимитите - просто всичко си му е измислено и не изисква заобикалки за да се свърши работата. И все чувам "не пускай големи неща и си пий ракията", но няма да стане така - ще прекарам тестово 256Мбайта и ще им сметна хеш от двете страни, за да го докажа за себе си. Пък който иска да го ползва до 1К не ми пречи.


Пет Окт 27, 2017 10:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9635
Мнение Re: LWIP MQTT TCP flow control въпросче...
ако си достатъчно силен и упорит, ще вкараш квадратен чеп в кръгла дупка.


Пет Окт 27, 2017 10:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 8:19 pm
Мнения: 4410
Местоположение: Stara Zagora
Мнение Re: LWIP MQTT TCP flow control въпросче...
Е не е като да не сме пробвали да обясним :) Винаги има някой който иска да върви срещу очевадните неща :) Дерзай. В някои частни случаи ще работи и по твоя начин :)


Съб Окт 28, 2017 8:47 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 74 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


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

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни