LINUX.ORG.RU

Во FreeBSD реализована поддержка протокола Netlink

 ,


0

2

1 октября 2022 года Александр Черников отправил в FreeBSD патч, реализовывающий поддержку протокола Netlink.

Netlink — это протокол связи, который в настоящее время используется в ядре Linux для изменения, чтения и подписки практически на все сетевые состояния. Интерфейсы, адреса, маршруты, брандмауэр, виртуальные сети и т.д. управляются через netlink. Это асинхронный протокол на основе TLV, обеспечивающий связь one-to-one и one-to-many.

На текущий момент реализация ограничивается семейством операций NETLINK_ROUTE для управления состоянием сетевой подсистемы в ядре и позволяет управлять сетевыми интерфейсами, IP-адресами, маршрутизацией и объектами nexthop, хранящими данные о состоянии передаваемого пакета.

Netlink реализован через загружаемый модуль ядра, при этом не затрагивающий многие его части. Каждый сокет netlink использует выделенную очередь задач для поддержки асинхронных операций, которые могут находиться в режиме ожидания, таких как, например, создание интерфейса. Вся обработка сообщений выполняется в этих очередях задач.

Большинство моделей данных Netlink прекрасно соответствуют концепциям FreeBSD. Неизмененный двоичный файл ip корректно работает с интерфейсами, адресами и маршрутами.

Для компиляции и работы с FreeBSD netlink некоторым программным обеспечением, таким как net/bird, требуются модификации только для заголовка.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 3)

Ответ на: комментарий от slovazap

Мне по этой теме сложно что-то сказать, я последний раз на FBSD 4 с ней возился и было это под сраку лет назад, когда еще 5 не вышла…
А может на Слаке, примерно в те же годы.

BydymTydym
()
Ответ на: комментарий от Pinux001

Ну, хорошо - дозволяю воспользоваться подходящим дистрибутивом (а это почти любой) с systemd и присоединиться в этих страданиях к нам ))

BydymTydym
()
Ответ на: комментарий от BydymTydym

Думаю, что сообщество BSD-систем в итоге сделает свой аналог на схожих идеях, но со своей кодовой базой и лицензией.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Уверен что они выберут худший, из возможных, вариант. Впрочем, zfs им ума хватило взять, может и SMF возьмут. Вот тогда я соберу манатки и перееду на фряху, а пока буду смотреть на их страдания.

BydymTydym
()
Ответ на: комментарий от hobbit

Какой нафиг аналог этого бреда? Там нормальные люди сидят.

firkax ★★★★★
()
Ответ на: комментарий от BydymTydym

Ага щасссс.Один хрен там что-то поменяют. Даже супервайзинг для большинства разработчиков не является достаточно весомым аргументом, к сожалению.

Clockwork ★★★★★
()
Ответ на: комментарий от hobbit

Думаю, что сообщество BSD-систем в итоге сделает свой аналог на схожих идеях, но со своей кодовой базой и лицензией.

Очень сомневаюсь. Емнип, уже были попытки перейти на OpenRC и даже насильно впихнуть systemd и ничего хорошего из этого не вышло. Да и коммиты завернули большинством.

Проблема в том что не только придётся переписать 170 инит-скриптов базовой системы, но и все инит-скрипты в примерно 474 портах (пакетах). А значит заставить толпу людей в мыле осваивать что-то новое, переосмысливать многое и пахать, как перепуганая лошадь, причём бесплатно! Плюс ко всему основные разработчики FreeBSD — не особо сторонники супервайзинга, как я понимаю со слов оратора на оффициальном форуме.

В любом случае постепенно заменить инит не получится: два инита никто поддерживать тоже не станет, и резко сменить тоже нельзя, потому что обновление сломает фряху для очень многих, и хер бы с ним если это будет домашний комп.

Даже если кто-то сможет переписать BSD/RC так, чтобы оно использовало daemon(8) во все поля и будет абсолютно уверен что его старания при этом примут в апстрим – их конечно же не примут, потому что о совместимости с FreeBSD 4 можно сразу забыть.

Clockwork ★★★★★
()
Последнее исправление: Clockwork (всего исправлений: 1)
Ответ на: комментарий от Clockwork

Проблема в том что

systemd - ненужная блоатварь.

не только придётся переписать 170 инит-скриптов базовой системы, но и все инит-скрипты в примерно 474 портах (пакетах).

Это тут ни при чём. А портов намного больше чем 474.

Даже если кто-то сможет переписать BSD/RC так, чтобы оно использовало daemon(8)

Там нечего переписывать, всё и так хорошо. А про daemon(8) я например даже не знал. Это всего лишь обёртка чтобы демонизировать консольные foreground-проги, а не штатный способ делать демонов.

firkax ★★★★★
()
Ответ на: комментарий от sparkie

Да вспомнил я один сервачок. Но вроде бы был он в 2002 где-то инсталлирован, а последний раз я его в 06 чтоли видел и трогать там что-то на предмет обновления систему уже очень стремно было. За столько лет там всё какими-то скриптами, обвязками, костылями и подпорками было подперто, чтобы вся конторская сеть не развалилась и вообще по феншую (издали) выглядела ))))

BydymTydym
()
Ответ на: комментарий от firkax

systemd - ненужная блоатварь.

У systemd своих блевотных грехов полно, это да. Тем не менее с правильной настройкой оно может грузиться до десктопа 2 секунды, а фряшная система инициализации ОЧЕНЬ долго грузится. Да и вообще, как тебе живётся с отсутствием супервайзинга?

А портов намного больше чем 474.

Так я говорю и не про все порты..

Clockwork ★★★★★
()
Ответ на: комментарий от Clockwork

Тем не менее с правильной настройкой оно может грузиться до десктопа 2 секунды, а фряшная система инициализации ОЧЕНЬ долго грузится

Ну тут главное что фря грузится быстрее чем серверный биос инициализирует серверную материнку. Да и вообще это случается где-то раз в несколько месяцев, а то и лет. Но вообще да, конечно можно было б и побыстрее сделать для тех кто десктоп и часто ребутается (если что я и десктопы не выключаю).

Да и вообще, как тебе живётся с отсутствием супервайзинга?

Везде где он нужен - он есть в составе демона. Т.е. запускается рутовый супервизор и нерутовые воркеры. При этом такой супервайзинг кастомизирован под конкретную задачу и работает лучше, чем какой-то общего назначения в ините. Ну, для тех у кого его нет но хотелось бы - есть daemon(8) про который ты писал, или скрипт вида while true; do /path/to/daemon 1>> 2>&1 ; echo `date` "crashed" ; sleep 5; done. Впрочем, наобум перезапускать демона, который на неожиданные вылеты не рассчитан - не очень хорошая идея, а то мало ли почему он вылетел, может ему и не следует сейчас работать а нужен ручной разбор аварии.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

быстрее чем серверный биос инициализирует серверную материнку

Вот интересно, как производители серверов такого эффекта добились? У меня есть одно подозрение… Как-то давно разбирал доставшийся по наследству скрипт для раскатывания образа системы из архива (flar). И работало это всё чинно и солидно, особенно пост-фаза с кастомизацией новой системы. А потом я полез за каким-то чертом в этот скрипт - поправить-добавить и нашел причину чинности и солидности. После каждого сообщения о том что что-то там будет делаться с файлами, стоял простой как рельса sleep 5

Вот так и с серверами, поди…

BydymTydym
()
Ответ на: комментарий от firkax

При этом такой супервайзинг кастомизирован под конкретную задачу

Вот тут непонятно. А чем там можно кастомизировать-то? Всё же предельно однообразно и задачи сводятся тупо к «поднять и не давать упасть» и мелкие несущественные детали.

BydymTydym
()
Ответ на: комментарий от slovazap

Бздуны мечтают о systemd, если что.

Нет.

Угрёбищная rc достала уже всех.

Да.

Но есть варианты:

  • OpenRC: быстрее(, выше, сильнее) за счёт параллелизации (отключена по умолчанию);
  • runit: ещё быстрее, но тупой (упорно перезапускает упавшие сервисы), зато супервайзинг.

Последний во FreeBSD не очень (очень не очень!), а первый я раскатывать-тестировать поленился.

Но не так всё просто: rc-скриптов в базе больше сотни, чуть меньше 500 пакетов имеют свои rc-скрипты, некоторые не по одному; это всё нужно не только переписать, но и протестировать. И это ещё не всё: у админов свои rc-скрипты наверняка имеются, и им не только нужно время на переписывание и тестирование, но сделать переход плавным, что технически невозможно.

mord0d ★★★★★
()
Ответ на: комментарий от firkax

Всё-таки прикольно, как одно и то же слово «демонизировать» имеет совершенно разный смысл для юниксоидов и остальных людей.

hobbit ★★★★★
()
Ответ на: комментарий от Meyer

Нет.

«In 2005, R. Tyler Croy ported launchd to FreeBSD as part of Google Summer of Code Project. It could not be run as PID 1 (only a session init), and it was not commonly used on that platform.»

Minona ★★☆
()
Ответ на: комментарий от BydymTydym

Детали - существенные. Тяга всё обобщать, выкидывая эти самые детали из общей реализации, а затем либо вообще забивая на них, либо прикостыливая по месту использования - приводит к помойке. Супервайзинг это весьма тривиальная задача, в самом простом случае (который ты описал) сводится к циклу wait-fork на 5 строчек, и создавать для неё отдельный функционал где-то ещё явно избыточно. А всё, что сложнее - как раз и есть те детали, которые нужны кастомные.

firkax ★★★★★
()
Ответ на: комментарий от BydymTydym

был он в 2002 где-то инсталлирован

В те времена операционки менялисьь не так часто, поэтому живые 4.2 вполне можно было увидеть в 2002 и даже позднее.

sparkie ★★★★★
()
Ответ на: комментарий от slovazap

Бздуны мечтают о systemd, если что. Угрёбищная rc достала уже всех.

Не говорите за всех. Все с rc хорошо и абсолютно UNIX-way.

GFORGX ★★★
()
Ответ на: комментарий от Clockwork

У systemd своих блевотных грехов полно, это да. Тем не менее с правильной настройкой оно может грузиться до десктопа 2 секунды, а фряшная система инициализации ОЧЕНЬ долго грузится. Да и вообще, как тебе живётся с отсутствием супервайзинга?

А зачем нужно грузить за 2 секунды? Та же Slackware с sysvinit грузится с runlevel 4/gdm, допустим, секунд 10-20. Это проблема? Для десктопа?

В FreeBSD есть проблемы, но для меня это скорее проблемы с драйверами, но никак не /sbin/init.

GFORGX ★★★
()
Последнее исправление: GFORGX (всего исправлений: 2)

launchd, кстати, хотя во фряху и не попал, куда лучше systemd: он компактный и простой.

На макоси с ним приятно было весьма, в других средах не щупал.

GFORGX ★★★
()
Ответ на: комментарий от GFORGX

А зачем нужно грузить за 2 секунды?

Затем, что никто не запрещает это делать.

Та же Slackware с sysvinit грузится, допустим, секунд 10-20.

Ну дык 2 секунды – это намного быстрее, чем 20 секунд.

Это проблема?

Это предмет для раздражения в случаях, когда пытаешься приступить к работе как можно быстрее, но не более того.

Для десктопа?

Для любого устройства, которое придётся перезагружать или включать/выключать (может быть даже несколько раз).

Clockwork ★★★★★
()
Ответ на: комментарий от Clockwork

Это предмет для раздражения в случаях, когда пытаешься приступить к работе как можно быстрее, но не более того.

Как ни странно, но тут я могу согласиться. Пару раз бывало, что надо было срочно врубить ноут и что-то сделать/распечатать, а он грузился оооочень долго (на самом деле нет, это так кажется). Но с приходом SSD эта проблема изжила себя ИМХО.

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от Clockwork

Это предмет для раздражения в случаях, когда пытаешься приступить к работе как можно быстрее, но не более того.

Ты серьезно? 18 секунд разницы мешают твоей работе? Если так, то это твоя проблема, серьезно. Эти 18 секунд я бы потратил на кофе.

GFORGX ★★★
()
Ответ на: комментарий от GFORGX

18 секунд разницы мешают твоей работе?

Нет. Я не сказал, что мне это мешает, но всё же..

Если так, то это твоя проблема, серьезно.

Скажи это себе, когда от включения компа будет зависеть твоя зарплата или отношения с важным человеком.

Эти 18 секунд я бы потратил на кофе.

Так любой нормальный человек делает, чтобы не тратить время впустую. Но он осознаёт, что ему ничего больше не остаётся, кроме как ожидать. Тогда получается, что прослойкой между стулом и монитором командует его компьютер, а не наоборот.(%

Clockwork ★★★★★
()
Последнее исправление: Clockwork (всего исправлений: 2)
Ответ на: комментарий от Clockwork

Скажи это себе, когда от включения компа будет зависеть твоя зарплата или отношения с важным человеком.

Такие штуки давно на более высоком уровне решаются: high availability, кластеры и так далее. А простой init, если вы хотите UNIX - идеально. Если UNIX не нужно - нет вопросов, просто тогда GNU is not UNIX нужно воспринимать буквально.

GFORGX ★★★
()
Последнее исправление: GFORGX (всего исправлений: 2)
Ответ на: комментарий от Clockwork

То есть ты даже десктоп будешь в кластере держать что-ль? :D

Вопрос в том, зачем на десктопе бороться за секунды.

GFORGX ★★★
()
Ответ на: комментарий от Meyer

ЕМНИП в 2012 новость была о успешном портировании.

Относительно успешном (и мне хотелось бы увидеть развитпе проекта, но сам пока честно говоря не готов заняться - тупо времени нет).

Пока что оно из-за линуксизмов не может быть PID 1.

GFORGX ★★★
()
Последнее исправление: GFORGX (всего исправлений: 1)
Ответ на: комментарий от Meyer

Возможно, но как я понял, это работа энтузиастов, а чувакам из core team или кто там у них главный, этот лаунчд навиг не нужен.

Minona ★★☆
()
Ответ на: комментарий от GFORGX

Эх…А я надеялся, ты скажешь, что нет смысла платить за новомодный бренд, когда можно объеденить кучу старого оборудования в одно целое, при этом получить точно такую же гору производительности. Ничего ты не понимаешь. :)

Вопрос в том, зачем на десктопе бороться за секунды.

Я уже дал ответ на этот вопрос: бороться за секунды можно как минимум ради того, чтобы управлять своим десктопом, а не позволять десктопу управлять тобой.

Если не нужны тебе секунды, если для тебя это не достаточно весомый аргумент – не борись, но для меня это лишним не будет.

Clockwork ★★★★★
()
Ответ на: комментарий от Zhbert

Ну представление о деймоне восходит к древнегреческой мифологии, где тот трактуются скорее как помощник. А демоны — по большей части, порождение христианской мифологии, где всё, что не от Бога есть абсолютное зло.

KOHb-TPOJIJIbJIEP
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.