LINUX.ORG.RU

Предложены радикальные изменения в работу сети в Linux

 , ,


1

2

Olaf Kirch, участник коммьюнити SUSE, матерый Linux-хакер (с начала 1990х) и автор неоднократно переиздававшихся книг по настройке и администрированию сети в Linux, предложил сегодня на рассмотрение сообщества Fedora свою давно вынашиваемую идею — полностью переписать userspace стек управления сетью в Linux, учитывая накопленный за два десятка лет опыт. Новая архитектура сетевой подсистемы позволит, как считает Olaf, полностью отказаться как от неподдерживаемой мешанины bash-скриптов (давным-давно устаревших ifup/ifdown и прочего), так и от критикуемого за сложность и такую же неподдерживаемость NetworkManager. В предложенной им архитектуре сетевой стек четко разделяется на несколько слоев, сущности внутри которых конфигурируются с помощью XML.

Предложение уже получило как критические отзывы (от инженера Red Hat и текущего мэйнтейнера busybox, Denys Vlasenko), так и сдержанно заинтересованные ответы.

P.S. Olaf работает в Novell, и если вы нашли в его предложении архитектурные проблемы, или у вас есть идеи, как сделать лучше, то присылайте ему ваше резюме. Ваш шанс на трудоустройство, аналитики!

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Aceler (всего исправлений: 6)
Ответ на: комментарий от dexpl

На остальных форточках с IP стеком можно посмотреть и route, и arp, и netstat как минимум

route, arp и netstat есть и в Windows 2000.
Только по ключам они не совместимы как минимум
с одноименными из net-tools. Так о каких стандартах речь?

Об их наличии как минимум.

Не поверишь, но в AIX, Solaris они тоже есть, но абсолютно аналогично по ключам местами не соместимы с одноименными из net-tools. Опять же при прямых руках это не мешает писать скрипты, которые одинаково работают на всех упомянутых системах.

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

Опять же при прямых руках это не мешает писать скрипты, которые одинаково работают на всех упомянутых системах

Можно пример такого скрипта?

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

Мы вот сервера с >30 дней аптайма боимся ребутить, потому что кто-то мог быстро внести изменения в реалтайм конфигурацию а дописать/доотладить

И что, благородный дон считает, что сия вундервафля спасет от криворукого руления? :-)

Не изодрели еще микроскопа, который-бы не смогла сломать обезьяна.

Да, и мое высказывание было малость не о том. При скриптованном запуске сетевых служб по отдельности я и их глюки могу исправлять по отдельности, а не ребутом/рестартом всей сетевой подсистемы как это делается при централизованном управлении.

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

С ходу могу предложить например инсталятор от EMC Solution Enabler-7.4.0.6. Для всех *ix like систем это один и тут же скрипт:
--- cut ---
############################################
#Subroutine to set OS related variables.
############################################

Set_var () {

case $osName in
«AIX» )
....
;;
«CELERRAL» )
....
;;
«HP-UX» )
....
;;
«Linux» )
....
;;
«OSF1» )
....
;;
«SunOS» )
....
;;
* )
;;
esac
--- cut ---
И далее по тексту.
Целиком не привожу т.к. он слишком длинный.

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

Для всех *ix like

У меня создалось впечатление, что под всеми упомянутыми имелась в виду в т. ч. Windows. Плюс, в приведенном фрагменте не вызывается ничего из net-tools

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

У меня создалось впечатление, что под всеми упомянутыми имелась в виду в т. ч. Windows.

Я имел в виду и форточки. Когда у кого-то возникают проблемы с сетью я сейчас всегда могу, не отходя к десктопу соседа, по аналогии попросить этого кого-то запустить arp или route и услышать вполне интерпретируемые ответы.

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

У меня создалось впечатление, что под всеми упомянутыми имелась
в виду в т. ч. Windows.

С какой радости ? В ней штатно идут в компекте sh, csh, bash, ksh ?
Когда появится, тогда и будет её поддержка.
При желании можно переписать shell-скрипт, чтоб он работал на win, но при этом такому скрипту придётся с собой таскать какой-нибудь shell. Особые извращенцы могут переписать его как .bat или на powershell.

Плюс, в приведенном фрагменте не вызывается ничего из net-tools

Это был намёк на то, как такие скрипты пишут. Показать весь скрипт ? Говори куда его залить (он слишком большой, чтоб публиковать здесь). В упомянутых системах есть более сильные различия, чем ключи команд из net-tools, если что.

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

не надо пол системы пересобирать - это про винду. Почитайте про ndis модель драйверов

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

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

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

Я процентов на 90 уверен, что это проблема изначально неправильной архитектуры проекта.

а поддерживать другие дистры ресурсов нет и не предвидится.

Но если тут попадание в те 10, то почему бы и нет ? Если комплекс хороший и нужный, ради этого можно поставить конкретный дистрибутив. Вы же не плачитесь по поводу того, что комплекс, рассчитанный на Windows, не встаёт на FreeBSD.

AS ★★★★★
()

networkd?

networkd? Слава Поттеринга не даёт никому спать. Пытаются трогать очередную более-менее стабильную часть Linux. Сделают её 100%-бинарной с шифрацией 2048-килобитным ключом, чтобы шаловливые ручки администраторов больше ничего не трогали, а ели, что дают.

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

Кто меня просветит?

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

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

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

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

Бинарник можно отлаживать, скрипты — нет. Перед созданием бинарника он будет проверен на элементарные ошибки компилятором, шелл-скрипт может падать раз в сутки в силу «непреодолимого стечения обстоятельств».

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

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

Бинарник можно отлаживать, скрипты — нет.

Это еще с какого перепугу? Или «отлаживать = gdb(ddd)»?

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

А бинарник так не может, очевидно? ;-)

(Особенно написаный на колене пионером Петровым, который нештатными ситуациями/параметрами вообще не заморачивался когда писал).

Поправить бинарник куда проще, чем лезть в кривучий шелл.

Вот так-бы сразу и написал - «С шелл-скриптами у меня не сложилось в силу обстоятельств».

Зачем свое неумение так педалить-то?

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

Это еще с какого перепугу? Или «отлаживать = gdb(ddd)»?

Именно. «Отладка» скриптов заключается в тыканьи echo повсюду. Когда этого не хватает, случается полное уныние.

А бинарник так не может, очевидно? ;-)

Очевидно, что в бинарнике, как минимум не будет опечаток в именах переменных, которые так часто встречаются в скриптах.

(Особенно написаный на колене пионером Петровым, который нештатными ситуациями/параметрами вообще не заморачивался когда писал).

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

Вот так-бы сразу и написал - «С шелл-скриптами у меня не сложилось в силу обстоятельств».

Юноша, я на шелл-скриптах писал весьма нетривиальные вещи, наелся этого говна по самое небалуйся и изливаю свою объективную неприязнь к скриптокостылям, коими являются 99.9% скриптов инициализации.

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

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

Речь идет, очевидно, не про «портабельные скрипты», а про систему инициализации сети КОНКРЕТНОГО дистрибутива.

Юноша, я на шелл-скриптах писал весьма нетривиальные вещи, наелся этого говна по самое небалуйся и изливаю свою объективную неприязнь к скриптокостылям, коими являются 99.9% скриптов инициализации.

Ты мне льстишь :-).

P.S.: То, что писать портабельные скрипты - геморой еще тот, мне объяснять не надо. Даже скрипт установки пакета в RH-подобный дистр и DEB-подобный - уже проблема при нетривиальных зависимостях и учете возможного различия в ядрах.

P.P.S.: И вот будет очередной костыль, который сделает настройку сети в linux совершенно непохожей на другие UNIX-like OS. И что, как там будет с написанием портируемого Linux/FreeBSD кода? Проще, наверное? ;-)

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

И вот будет очередной костыль, который сделает настройку сети в linux совершенно непохожей на другие UNIX-like OS.

Во-первых, ifconfig/iproute никуда не денутся. Во-вторых, если в дистрибутивах выпилят всевозможные /etc/sysconfig/network, /etc/conf.d/net и прочее, заменив на одинаковый конфиг, уже будет намного лучше, чем сейчас.

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

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

Первое что приходит в голову - нужно уволить вашего начальника отдела/управления/... который не может контролировать состояние серверов за которые несет ответственность.

За внесение недокументированных изменений в конфигурацию производственных серверов нужно давать тумаков исполнителю и руководителю, если он такое допускает. За установку неотлаженных программ/скриптов - тоже.

Это в чистом виде работа администратора а не программиста. И никакой чудо-софт от подобного не спасет.

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

Очевидно, что в бинарнике, как минимум не будет опечаток в именах переменных, которые так часто встречаются в скриптах.

Для этого нужен не бинарник, а транслятор со строгой проверкой. В бинарных *.pyc опечатки в именах переменных вполне встречаются %)

Если ты думаешь, что портабельные шелл-скрипты пишутся легко

Речь была не о портабельности.

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

По слухам - Гайка :). Перепил и развитие BeOS, в своё время была вполне себе удобная штука.

dv76 ★★★★
()

Будем надеяться, что чуваки все таки перепишут текущую мешанину конфигов и скриптов. Если не в xml то просто некоторое более менее единообразное хранилище. Понадобилось тут на компе несколько vpn держать жене и себе, да с авторизацией через етокен, и чтоб это всё нормально поднималось и опускалось при выходе в слип. И не умирало при вытаскивании етокена. Не осилил я. Винда теперь.

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

Вот так-бы сразу и написал - «С шелл-скриптами у меня не сложилось в силу обстоятельств».

Зачем свое неумение так педалить-то?

Вот так бы сразу и написал - «С шелл-скриптами у меня знакомство только по книжкам, сам не писал, зато знаю как критиковать».

Можешь привести примеры shellов, которые хотя-бы способны проверить скрипт хотя бы на наличие примитивных синтаксических ошибок до начала выполнения?

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

Можешь привести примеры shellов, которые хотя-бы способны проверить скрипт хотя бы на наличие примитивных синтаксических ошибок до начала выполнения?

sh -n /path/to/scriptfile

Про это спрашивал? ;-)

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

Да, ты-ж примеры спрашивал!

bash, tcsh, sh, csh - специально маны посмотрел. У всех есть (сам пишу на sh, без башизмов).

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

Если бы хотя бы была валидация всего по xml схеме, и проверка соответствия реалтайм конфигурации сохраненной, я был бы счастлив, потому что сейчас перед каждым ребутом приходится руками проверять их соответствие.

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

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

s/лучше/не как у всех/

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

Если бы хотя бы была валидация всего по xml схеме, и проверка соответствия реалтайм конфигурации сохраненной, я был бы счастлив, потому что сейчас перед каждым ребутом приходится руками проверять их соответствие.

Сочувствую, что. «У семи нянек - дитя без глаза».

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

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

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

Хочешь сказать никогда не ловил косяков? Система-то еще и обновляется. Пришлют макаки-мейнтейнеры кривой пакет, и разбирайся почему ничего не запускается.

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

Хочешь сказать никогда не ловил косяков? Система-то еще и обновляется. Пришлют макаки-мейнтейнеры кривой пакет, и разбирайся почему ничего не запускается.

Почти никогда. Ключевое тут, конечно, «почти». :)

С пакетами такого быть не должно - на продакшене роллинг-дистрибутивы это зло. Если поставил - тут уж сам себе Буратино. А на дистрибутивах с плановыми релизами все равно сначала приходится проверять на тестовом стенде. Хоть и тут грабли бывают - вон недавно оттестировал на компе с броадкомовской картой, а оно потом на интеле не пошло :-(. Но тут XML верификация сети все равно не поможет.

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

bash, tcsh, sh, csh - специально маны посмотрел. У всех есть (сам пишу на sh, без башизмов).

Здорово.

Вот тебе простой пример.

test.sh:

#!/bin/bash
source test2.sh
echo $ABC

test2.sh

#!/bin/bash
ABC=«tralala

Если запустить test.sh то он вылетит с ошибкой. А если его проверить при помощи „bash -n“ то типа проблемы нет.

Почему? Ой беда, он не проверят вызываемые скрипты. Ну да, если про всех них помнить, то можно их всех вручную проверять. Воистину прекрасно.

Еще не стоит забывать о том, что если переменная не определена, то скрипт как правило всё равно будет как-то выполняться. Надо очень аккуратно всё проверять, т.к. одной корректности синтаксиса мало.

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

И т.д.

В общем, хорошего мало. Впрочем, лучших альтернатив пока не обнаружил. Может кто подскажет?

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

Тут важна дистросовместимость, общая неупроротость (админы локалхоста атакуют). Много тупой школоты. Кроме того 1% дает о себе знать.

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

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

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

В общем, хорошего мало. Впрочем, лучших альтернатив пока не обнаружил. Может кто подскажет?

Тут или языками с явным определением переменных и валидацией синтаксиса перед выполнением пользоваться, или наскоро написанные залипухи. С залипухами проще. Пока они некий предел сложности не превысили.

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

Хотя, если туда тянуть что-то из того, что vasily_pupkin описал о работе своего ноута в разных местах (где-то в начале треда было), то тогда уже пора. Но тут опять палка о двух концах - оно будет хорошо для десктопа или планшета, но криво и неудобно для эмбедеда или терминатора VPN/PPP...

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

дебиан - отличный роллинг дистрибутив, да :) Пару раз ловил косяки с ядром и автосборщиком модулей, как там его.

DKMS? Странно, ни разу не ловил граблей с ним, кроме кривого VirtualBox. Но к серверу это каким боком может дело иметь?

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

Ты еще Juniper не видел ;-). Там мало того, что конфигурации можно править хоть всю, хоть кусками пока commit не сделал, дык еще есть «commit check» и «rollback [0-9]*»... И даже " show configuration | compare rollback [0-9]*"...

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

s/лучше/не как у всех/

Если как у всех - это хорошо, можно и как у всех.

Просто найти нормальных эникеев под линукс нельзя.

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

Линукс-фанаты любят только свой дистрибутив, а поддерживать другой они не хотят.

Почему фанаты ? Каждый может что-то хотеть, что-то нет, а пример с разными ОС я приводил уже.

Так, всё же, в чём проблема сделать механизм плагинов для управления сетью и дать возможность использовать ваш продукт тем, кто не хочет ставить Debian ? Эдакий API наоборот ? Кстати, а что это за приложение ? Сайт есть с описанием ?

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

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

Это решение уже не для универсальной системы. Обкорнай Linux до IOS - будет так. Можно, вон, RouterOS от MikroTik взять - тот же Linux, но всё из такой вот консольки. Кстати, есть xorp. Кажется, там есть возможность интерфейсы настраивать, а не только маршрутизацию.

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

И даже " show configuration | compare rollback [0-9]*"...

Чёрт, и правда, работает. :-) Что только на LOR не узнаешь случайно...
мне commit confirmed ещё нравится. Весьма полезно...

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

Видео посмотри вечерком.

Где-то у них было типа «JunOS как второй язык».

Мне первый раздел про коммиты/роллбэки/приватные конфиги и проч. просто неимоверно вставил ;-).

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

на сервере dahdi, а там свои кривомодули.

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

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

Мы говорим не про универсальную систему, а про сетевую подсистему.

Мы говорим про сетевую подсистему в универсальной системе. Прочувствуйте разницу. Или Вы хотите, чтобы оно всё было одинаково вообще везде ? И в Linux-ах, и в BSD, и в Windows ? И бинарники везде одинаковые ? А что уж там, одна Windows навсегда, так ?

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

Да я этого говна с сетью и скриптами навидался, спасибо :)

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

Походу твоя собственная нечистоплотность это твой самый сильный довод

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

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

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

argin ★★★★★
()

Идея хорошая. Вот только не будет ли переход на XML шоком для матерых линук-хакеров? Ведь они очень консервативны, вот как на великолепный systemd наезжают. Им просто лень переучиваться. И ещё одно замечание, если редактировать конфиги будет человек, не удобней ли будет писать их на YAML? А если в основном конфиги будут собираться другими программами, тогда другое дело. Тогда XML имеет смысл. Но в таком случае лучше сделать бинарные конфиги, в виде сериализованных объектов. И при помощи специальных тулз компилить эти конфиги из XML, YAML и т.п. И обратоно в данные форматы выгружать когда нужно. Так можно ускорить работу сетевого стека, а также отвязать его от одного конкретного формата(XML, который не всем нравится).

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

Думаю, в правилах XML описать работу данного скрипта не сложно. Работая с конфигами libvirt и apache ant я быстро понял, что при помощи XML можно описать то же, что и на баше. Но данные конфиги получаются более многословными.

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

персистентности конфигурации -проверки конфигурации без перезагрузки -поддержку устройств и протоколов, появившихся после ifconfig/ip (wlan, l2tp, 3g,4g,bluetooth etc). Про текущее состояние дел думаю вам рассказывать не надо.

епааа. Чем там 3г от 4г так сильно отличается? И вообще. Что это нам лечит чудик в любимой системе которого дисков как морж поссал: и c может быть и c, d, и c, z. А сидюки только недавно могли прыгать после перезагрузки на хер пойми какую цифру. И уже приведи пример повторяемого велосипеда под винду, аналогичный своему первому скрипту.

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

Под винду я успешно использую диалеры, имеющие подобную функциональность. Кроме того, по моим ощущениям ppp в винде работает стабильнее.

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

А еще можно добавить поддержку мониторинга соединений разными способами, и не придется по крону ее дергать.

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