Отговори на тема  [ 53 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща
Вмъкване на паралелен TCP/IP интерфейс/стек в линукс 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Аабе тея сервизи като са ваши що не са на линукса

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


Пон Сеп 23, 2019 6:09 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Ползват се от наши инструменти - ftp се ползва за конфигуриране, фирмуер ъпдейт, бекъп, restore, ssh се ползва за по-екзотични неща и пускане на специфични скриптове, основно за сервиз. В разни PC инструменти има графични редактори за конфигуриране, които в края качват примерно xml файл през ftp на устройството. За ъпдейт на фирмуера се ползва пак фтп - в наш pc софтуер има пак gui, в което клиента си избира фирмуера и стартира качването - това става пак по ftp, т.е. в pc инструмента има ftp client, а в устройството върви стандартен proftpd (чийто порт 21 трябва да "еспортирам" през uC порт).


Пон Сеп 23, 2019 7:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
А няма ли да е по лесно да го махнеш този микроконтролер от картинката и да си наконфигурираш всичко като хората на линукс?

_________________
Мразя да мразя ...


Пон Сеп 23, 2019 7:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Няма как, конкретният клиент (голямо и известно име, дето ежедневно го гледаме по пътищата) иска достъп точно през тази дупка. Самият uC прави индустриален filedbus, различен в зависимост от клиента, но в случая е профинет. По тези кабели хората очакват да правят и сервизен достъп - ъпдейт, конфигуриране и т.н.
Досега в такива ситуации при другите ни клиенти за сервизните достъпи се е ползвал някой от другите, "нормални" етернет интерфейси на линукса. Но хората са си прави че няма да разкарват допълнителен кабел до всяко устройство из поточните линии и ние изпълняваме.


Вто Сеп 24, 2019 7:09 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Еми, значи все пак накрая всичко опира до математика :)
Кое ще излезе по на сметка:
  • да опънат по още един кабел
  • да сменят тези микроконтролери с по нова версия която позволява евтино донапасване
  • да платят на някой една торба пари да им направи нов протокол на ниво 5 от който цялата планета да облажи (ГПЛ)
Като им покажеш цифрите за всеки един вариант много бързо ще решат, че то още по един кабел не е чак пък такава драма ;)

_________________
Мразя да мразя ...


Вто Сеп 24, 2019 9:17 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Не точно, клиента не го интересува колко струва - той е платил за тази екстра според нашите оферти и си го иска, т.е. вариант да пуснат кабел няма да мине. Затова сигурно ще е другата опция, дето я няма в листа - правим/доизкусуряваме текущото или ново хак решение колкото да мине нещо.


Вто Сеп 24, 2019 9:41 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
А вариант да ъпдейтнеш само фирмуера на този микроконтролер? Заключен ли е? Предполагам, че прави и други неща освен този тцп/ип стек в него ... ама все пак?

_________________
Мразя да мразя ...


Вто Сеп 24, 2019 9:51 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Не става и това. Фирмуерът вътре идва готов от производителя и е сертифициран за съответния бъс (профинет). Самата фирма разрешава и дава дори сорсовете (имаме ги купени) за всичкото, което тича вътре, за да може човек да си стъкми нещо подобно, но с негови си модификации и подобрения. С едничкото изключение че tcp/ip стека им не се предлага като сорс и не може да се модифицира. Но пак модифицирането значи загуба на сертификацията и много пари и време.
Има си причина да е направено така - профинет функциите минават през tcp/ip стека, в смисъл че голяма част от сървисите са си стандартни tcp или udp. Например повечето асинхронни услуги (четене или запис на конфигурационни параметри примерно) се правят през DCE/RPC. По тази причина етернет драйвера има е екслузивно зает от техния tcp/ip стек. В определени (по-нови) процесори имат експортиран директен достъп до етернет драйвера, но за да го постигнат им се налага да правят горница неща - заключвания, буфериране, синхронизация тъй като профинет задачите искат real time достъп и не търпят някой да праща в неподходящ момент. Всичките тези допълнения не искат да портират за стария с идеята че горницата действия няма да им позволи да постигнат пърформанса на версиите преди директния достъп, т.е. ще го влошат - което явно не им се иска да се случва. Познавайки как работят съм сигурен че даже са ги портирали но са видели недостатъците и не искат да го разпространяват. Реално интерфейса към нови и стари процесори е сменен и изглежда като да има отделния канал за директен достъп, но на старите процесори отказва (рънтайм) с грешка че това няма да мине.
Дразнещото е че изискването от страна на клиента не е изисквало задължително да има достъп по този начин - хората са казали че искат сервизните операции да се правят през дупката за профинет. Понеже не се навиха да го направим както се прави по профинет - т.е. изкарвайки нашите конфигурационни параметри като стандартни профинет параметри (достъпни през споменатото dce/rpc). Мислеха че с бърз хак ще успеят да прекарат тцп-то оттам и да запазят нашите инструменти (на PC) непроменени. А понеже са наши беше елементарно да ги адаптираме за работа през друг транспорт (dce/rpc) вместо през ftp примерно, като на всичко отгоре щяхме да си отворим възможност да се ползват и от други клиенти - други приложения, директно от профинет мастърите и т.н.
При нас често се случва това - някой вижда бърз хак или workaround, нагоре много харесват колко лесно звучи, прави се колкото за проба, то мине някак си и после се борим десетки години с наследеното бреме. Такъв подход много го мразя и сега имам възможност да сменя такива простотии - затова се боря.


Вто Сеп 24, 2019 10:34 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
gicho написа:
изкарвайки нашите конфигурационни параметри като стандартни профинет параметри (достъпни през споменатото dce/rpc). Мислеха че с бърз хак ще успеят да прекарат тцп-то оттам и да запазят нашите инструменти (на PC) непроменени. А понеже са наши беше елементарно да ги адаптираме за работа през друг транспорт (dce/rpc) вместо през ftp примерно, като на всичко отгоре щяхме да си отворим възможност да се ползват и от други клиенти - други приложения, директно от профинет мастърите и т.н.


Това изглежда като най-смислената посока в която да се бориш, да върви всичко по Профинет-а, но борбата с мениджмънта може да е по-трудна от техническата :).


Вто Сеп 24, 2019 10:55 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
За момента ще фиксвам старото, няма време за сериозни промени.
Но се замислих друго - ако приемем че правилната точка за закачане е на ниво proto, т.е. сокети, и си спомним че начина да се вкара нов тип сокет е чрез нов proto, се замислих следното.
Като са правили други типове сокети, например CAN, са дефинирани нов тип протокол. И тук идва въпросът за няколко стинки - е ли възможно да се организира някакъв вид рутиране, бриджване или не знам правилния термин между различни видове протоколи?
За пример - е ли възможно да укажа че сокет от тип CAN (SocketCAN) да се върже със сокет AF_INET, SOCK_STREAM? Това на ниво линукс мрежов стек? Can сокетите се отварят с family=PF_CAN и type=SOCK_RAW. Тук с кан-а може би е различно - той е друго family даже, та примерът може да е подвеждащ. В смисъл може отговорът да е различен ако говорим за протоколи от една и съща фамилия?
Има предвид дали ако имплементирам нов протокол или цяла фамилия с един протокол, или просто подменя някой съществуващ който не се ползва (за проба), ще има начин да го накарам да ги свърже? Все пак като интерфейс са все онази proto структура, и са все сокети. Вярно, може би ще е като да пъхам телефонна букса в мрежова розетка или направо в 380V, но при съвместимост "отдолу" лесно става с адаптери от типа:
Изображение

Edit: зачетох се пак за proto структурите, и по-точно proto_ops:
https://elixir.bootlin.com/linux/v4.4/ident/proto_ops
Направи ми впечатление че такава се имплементира на много места в кода, вкл. и в tun интерфейса:
https://elixir.bootlin.com/linux/v4.4/source/drivers/net/tun.c#L1548
Гледам че там са дефинирали само sendmsg и recvmsg.
На друго място са дефинирали всичките:
https://elixir.bootlin.com/linux/v4.4/source/drivers/isdn/mISDN/socket.c#L583

Да кажем че гледам tun и знаем че можем да направим паралелен device от тип TUN. И това някак се зацепва в рутирането на линукса и може да минават връзки през него.
Сега търся как /dev/net/tun работи и какво прави когато се закача и му се даде IP адрес. За проба може да разширя структурата на tun, но си мисля че никой няма да ги достъпи другите функции - изглежда че някой някъде прави сокет от тип RAW на TUN и така работи.
Ще поровя и в резултатите от bootlin търсенето за proto_ops - може да изскочи някой да се борил с подобни проблеми.


Сря Сеп 25, 2019 7:16 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Разбира се, че може да дефинираш какъвто и да е нов протокол. Проблемът идва, че PF_INET е хардкоднат във всички програми които работят го ползват и това, че има нов протокол няма да го отразят по никакъв начин.

http://man7.org/linux/man-pages/man2/socket.2.html

Следващият проблем е, че освен PF_INET имаш и AF_INET т.е. address family които си кореспондират едно друго но са две различни неща т.е. ако вкараш нов протокол, ще трябва да му правиш и нова схема за адресация. Т.е. става дебела работата ... затова решението с подмяна на вграденият в линукс със твой си който решава коя имплементация да извика ми се струва като че ли най удачно. Ако въобще е възможно де, защото може да се окаже, че има някой препъни камък и там.

_________________
Мразя да мразя ...


Сря Сеп 25, 2019 9:46 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Още не съм се отказал съвсем. Попаднах на нещо непознато досега - netlink:
https://linux.die.net/man/7/netlink
Заинтригува ме един тип сокет - NETLINK_USERSOCK:
https://elixir.bootlin.com/linux/v4.4/ident/NETLINK_USERSOCK
Има и библиотека: http://www.infradead.org/~tgr/libnl/
Странно имената съвпадат с "бленувания" feature в nuttx дето гледах преди.

На пръв поглед нищо не ми е ясно, ама ще чета.


Edit: туй май съвсем не е за моите нужди, явно съвпадението на имената е случайно.


Сря Сеп 25, 2019 8:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
теоретически (мързи ме да мисля в момента) тея сокети би трябва да се моунтнат и като FS
все пак се връща file descriptor, който някъде из node се обработва към кой драйвер да се обърне
а там socket() read() write() ... etc се обслужват първо от самия драйвер който ги препраща към мрежовия интерфейс

пример от ESP VFS
https://github.com/espressif/esp-idf/tr ... fs-drivers

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


Сря Сеп 25, 2019 9:02 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Нетлинк го ползвам за нотификации за разни интересни събития - кога се закача/откача мрежов кабел, кога като конфигурирам някой мрежов адаптер да е с даден адрес, адреса е вече конфигуриран и може безопасно да се правят заявки в това адресно пространство - иначе гърмят с разни грешки, че няма роут то хоста и т.н.

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

Не съм го задълбавал какво още може, но мнооого ме съмнява да ти свърши работа - просто е проектиран за други неща и да опрости АПИ-то на ядрото когато на човек не му трябва пълната функционалност (да кажем 90% от случаите).

_________________
Мразя да мразя ...


Сря Сеп 25, 2019 9:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4671
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
погледни: fs/ncpfs

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


Сря Сеп 25, 2019 9:19 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 53 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща

Кой е на линия

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


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

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