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

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

Upstreaming multipath TCP

Цитат:
MPTCP, described by RFC 6824, is built around one fundamental idea: allowing a single network connection to exchange data over multiple physical paths. One obvious use case is a phone handset, which has both WiFi and broadband interfaces. Being able to use both at the same time would give the device greater bandwidth, but also greater redundancy — a connection could continue uninterrupted despite changes to individual paths.

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


Пет Сеп 27, 2019 11:42 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4717
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
разгледай https://github.com/jserv/nstack

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


Чет Окт 03, 2019 5:55 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Погледнах тези user space стекове - от nstack има референции към level-ip, което бях гледал преди време. Сега се зачетох пак (за level-ip) за да видя дали не са измислили някаква хитрина за да се закачат към линукса. Доколкото виждам подменят функциите на libc чрез тяхна библиотека за да ги прихванат. Правят го чрез wrapper скрипт който пускат за всяко бинари, на което искат да се намесят (прихванат):
https://github.com/saminiir/level-ip/blob/master/Documentation/getting-started.md
Тук е сорса на wrapper-а им:
https://github.com/saminiir/level-ip/blob/master/tools/liblevelip.c
Като цяло е използваем подход, макар и не съвсем изчистен и за пред хора (клиенти), но все пак е решение. Всъщност има и друго улеснение - мога да разчитам на това че ще има само един работещ стек, по-точно адаптер. В смисъл че ако устройството ще е закачено или през нормалния си адаптер, или през микроконтролерския (но е и през двата едновременно). Така че ако няма линк на нормалния етернет мога да закачам всичко да тича през микроконтролерския. Това ще ми улесни задачата че няма да има нужда да поддържам потока и към нормалния стек - ако е активен uC порта спират другите дупки.


Чет Окт 03, 2019 7:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

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

Та, замислих се за следното - посоката с TUN интерфейса я бях отписал понеже е на друго ниво - линукса ще ми дава и искат IP пакети, т.е. като иска да праща през моя интерфейс ще ми изсипва един хедър горница (ip хедъра), а наобратно ще иска да му измисля тоя хедър и да го добавя.
Посоката с махането е по-лесната, та за начало обмислям посоката приемане:
- някой отвън праща tcp или udp на микроконтролера
- tcp/ip стека в микроконтролера си свършва работата и ми праща пакет по неговото си api за приети udp или tcp данни; в тоя пакет са самите данни и малко метаданни да си позная по кой сокет е това (хендъл от отварянето/конект или подобно)
- в моя код трябва на база получения пакет и таблица на връзките/сокетите да свърша моята работа и да изфабрикувам IP пакет, който да навра в на TUN-а дупката
- оттам насетне кърнела/стека трябва да го заведат до приложението на тоя порт примерно

Като начало мисля само за TCP, и само за връзки инициирани отвън (от pc в мрежата на микроконтролера), като сървърите са процеси в линукса (proftpd, sshd, и подобни).

Чудя се:
- на това ниво (IP - TUN) май няма причина да ме известяват че е отворен нов listening socket по моя интерфейс, така че няма да получа информация че портове 21 и 22 са отворени и чакат конекции? Това ми трябва за да конфигурирам микроконтролера също да чака, но ако го няма на tun ниво ще ползвам някой от заобиколните начини
- трябва отнякъде да получа/взема достатъчно информация за да добавят коректен IP хедър на получените пакети - единия източник е самата нотификация от микроконтролера, но там пише портовете и адресите; дали ще ми трябва и още нещо?

Като гледам ip хедър структурата не виждам нещо, което да не мога да извадя или измисля (като TTL-а). Фрагментацията интересно дали ще ми е нужна?


Нед Дек 01, 2019 11:48 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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

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


Нед Дек 01, 2019 12:33 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

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


Нед Дек 01, 2019 6:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4717
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
с TAP-SLIP си играх ( щото Windows не подържа TUN ) и иска "рутиране"
https://github.com/Wiz-IO/azure-sphere- ... st.py#L313

ама ти си усложняваш живота
до колкото те разбрах: имаш една "черна кутия" в която има TCP/IP стек и сервизи(сървъри) за външна връзка, вързана на SPI, с user-api достъп
демек имаш два процеса:
1. някой "отвън" прави конекция и ти мятка съобщения
2. някой отвътре(Linux) прави сокет към "кутията"
и тези два процеса искаш да минат като интерфейс на линукса

ако съм разбрал правилно
ти трябва процес/драйвер дето ще мандахерца SPI и ще разпределя посока master/slave
master: Linux ще прави сокети към контролера (директно, TUN, TAP, SLIP, PPP, някакси)
slave: ще доставя някакси/някъде "events" какво се случва(тук май няма мрежа или зависи как ще се реагира на event)

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


Нед Дек 01, 2019 6:39 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Вмъкване на паралелен TCP/IP интерфейс/стек в линукс
Май ни с тун, ни с тап е работа - и в двата случая ще получавам целия трафик - примерно за TCP ще са всички пакети по отваряне (SYN, SYN-ACK, ACK), затваряне и по самия трансфер. Няма как да им отговарям подобаващо, освен да имам цял tcp/ip стек насреща. В старото решение е така - закача се локален клиент към ftp сървъра примерно и по неговия сокет се получават чистите TCP или UDP данни, които да се препращат към стека в микроконтролера. Установяването на връзката, ретрансмити и потвърждения се случват между два сокета на линукския TCP/IP стек - единия е слушащия е FTP сървър демона, другия е този клиентския в специфичния прокси софтуер.


Пон Дек 02, 2019 8:22 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 53 мнения ]  Отиди на страница Предишна  1, 2, 3, 4

Кой е на линия

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


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

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