[freebsd] netgraph

Nick Kostirya nikolay.kostirya at i11.co
Mon Apr 5 06:31:23 EEST 2021


On Mon, 5 Apr 2021 00:04:50 +0700
Eugene Grosbein <eugen at grosbein.net> wrote:

> 02.04.2021 14:43, Nick Kostirya via freebsd пишет:
> > Привет. 
> > 
> > У меня наивный вопрос про netgraph.
> > 
> > Я правильно понял, что при помощи ng_socket можно соединить два компьютера в одну сеть через, например, UART проводами или при помощи радио?
> > Для этого лишь достаточно написать демона, который будет просто перекладывать байты из socket в UART сразу или передавать радиочипу?  
> 
> Не этой нодой.
> 
> ng_socket это "переходник" между BSD-сокетами стека TCP/IP и внутренностями NETGRAPH и не более того.
> То есть, если у нас есть некая абстрактная нода или сеть нод внутри NETGRAPH и их надо кормить
> данными, приходящими из TCP/IP (или в обратную сторону, или в обе), для этого можно использовать ng_socket.

А в случае UART можно использовать ng_tty(4)?
Общение с железкой осуществляется через gpio и uart. Сначала она настраивается через uart, потом при помощи gpio переключается в режим, когда через uart (/dev/cuaU* или /dev/ttyU*) идут только данные, которые прямо без обработки можно заворачивать в TCP/IP.
Получится, после настрой железки, при помощи ng_tty создать netgraph ноду и ее при помощи ng_ksocket соединить ее к стеку TCP/IP?

> 
> Для передачи данных (соединения в сеть) через UART штатный драйвер uart(4) уже создаёт файлы устройств
> в /dev, плюс драйвер этот реализует абстракцию termios(4) line discipline и уже написаны демоны,
> которые перекладывают байты в девайс и обратно: ppp, mpd5 и раньше ещё был slattach, но протокол SLIP
> для работы поверх UART выпилили давно из FreeBSD (во время FreeBSD 4 он ещё работал).
> 
> Если вам интересно использование именно NETGRAPH через некое железо, то плясать надо от драйвера
> этого железа, в какой форме драйвер принимает данные для отправки или выдаёт принятые от железа данные?

Драйверов пока нет. Другие железки работают через spi протокол. Но что-то они не хочет дружить с микрокомпьютером под управление FreeBSD, так что скорее всего сделаю через промежуточный микропроцессор, который spi будет преобразовывать в uart. Тем более, что упомянутая выше так сама делает.

> 
> Если вы сами пишете такой драйвер - вполне возможно реализовать новую ноду NETGRAPH,
> которая с одной стороны будет частью драйвера, общающейся с железом "напрямую",
> а с другой стороны посредством нетграфовых хуков может быть соединена с ng_iface или ng_eiface
> или ng_device.




More information about the freebsd mailing list