The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проект LibOS развивает вариант ядра Linux с сетевым стеком в форме библиотеки

24.03.2015 22:48

Для рассмотрения разработчиками ядра Linux представлен набор патчей с реализацией технологии LibOS для Linux. Суть LibOS сводится к возможности сборки сетевого стека ядра в форме внешней разделяемой библиотеки, выполняемой в пространстве пользователя и связываемой с пользовательскими приложениями. Важной особенностью, является то, что в библиотеку выносится штатный сетевой стек ядра, что позволяет использовать такие возможности, как TCP, UDP, SCTP, DCCP, Mobie IPv6, Multipath TCP и netlink.

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

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



  1. Главная ссылка к новости (https://lkml.org/lkml/2015/3/2...)
  2. OpenNews: Intel представил сокращённый вариант сетевого стека для Linux
  3. OpenNews: Интервью с Алексеем Кузнецовым, одним из создателей сетевого стека Linux
  4. OpenNews: Fastsocket - новая высокомасштабируемая реализация сетевой подсистемы ядра Linux
  5. OpenNews: Ядро операционной системы стало узким местом при выполнении операций в СУБД Redis
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41904-linux
Ключевые слова: linux, libos
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, asdfghjkl (?), 23:24, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Теперь сеть будет тормозить не меньше, чем графика, ура!
     
     
  • 2.5, ананим.orig (?), 23:54, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Графика давно уже не тормозит. Вон с той же макос процентов на 30%. Нехило так.
    Да, халтурные порты игр с вантуза конечно есть. И это надо отличать вообще-то.

    Кстати, чем сабж вам не микро-ядро?

    Зыж
    для тестов просто сказка.
    А для современных аппаратных гигабитов, когда на выходе всё-равно мега-биты, вообще красота.

     
     
  • 3.20, Аноним (-), 09:21, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Кстати, чем сабж вам не микро-ядро?

    Тем, что не микро. А вот за гибридное сойдёт.

     
     
  • 4.22, ананим.orig (?), 10:00, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Точно.
    Как и любое другое микро-ядро.
     
  • 3.34, Michael Shigorin (ok), 20:57, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А для современных аппаратных гигабитов, когда на выходе всё-равно мега-биты

    Есть довольно много карточек 10GE+ с разгружалками, где как раз пишут юзерспейсные драйверы ради того, чтоб не щёлкать контекстами, гоняя данные из софтов в ядро...

     
     
  • 4.39, Andrew Kolchoogin (ok), 12:35, 26/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > юзерспейсные драйверы

    Юзерспейсный сетевой код.

    После изобретения NETMAP странно утаскивать что-то аппаратно-зависимое в Userland, проще при старте приложения попросить NETMAP замапить сетевые буферы контроллера в память процесса, откуда и разгребать.

     
  • 3.44, AS (??), 20:10, 28/03/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не тормозит? У меня отрисовка в гноме например намного медленнее чем в винде, да и почти везде в Линуксе отрисовка как я понимаю....
     
  • 2.14, наноним (?), 05:33, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Графика в linux давно в ядре, подсистемы drm, ttm.
     

  • 1.2, Аноним (-), 23:38, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    О сколько нам открытий чудных
    Готовят просвещенья дух
    И опыт, сын ошибок трудных,
    И гений, парадоксов друг,
    И случай, бог изобретатель...
    (C) А. С. Пушкин
     
  • 1.3, Аноним (-), 23:43, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Да здравствует переключение контекста на обработку каждого транзитного пакета. Ура!

    Предлагаю DRM/KMS/GEM тоже реализовать в виде библиотеки. Всё ж, контекст не так часто переключаться будет, как от сетевого трафика.

     
     
  • 2.26, Аноним (-), 11:22, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    в нормальных сетевках - идет прямая запись в память приложения. им не надо делать переключения..
     
     
  • 3.40, Andrew Kolchoogin (ok), 12:37, 26/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > в нормальных сетевках - идет прямая запись в память приложения. им не
    > надо делать переключения..

    X8-O

    Это что-то новое... Для графики для таких "штук" придуман DRM (часть его -- Generic DMA Engine), а для сети что?

     
     
  • 4.41, Andrey Mitrofanov (?), 14:44, 26/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > X8-O
    > Это что-то новое...
    >, а для сети что?

    Сетевой ресурс LWN.net сообщает:

    ""Zero-copy networking will be in 2.4.4. This patch, by David Miller, Alexey Kuznetsov, and others, has been in development and testing for some time, and was incorporated into the "ac" kernel series back in 2.4.2ac4. In a way, it is a surprising change to see in a stable kernel series, since it makes fundamental changes deep in the networking code. From all reports, however, it is solid, and, in certain situations, it should produce significant performance benefits. -- http://lwn.net/2001/0419/kernel.php3

     
  • 3.46, Wulf (??), 12:33, 31/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > в нормальных сетевках - идет прямая запись в память приложения. им не надо делать переключения..

    "Нормальным сетевкам" без разницы куда записывать, т.к. они пишут в физическую память а не в виртуальную.
    А вот  для того чтобы память для буферов выделялась именно из приложения а не из ядра и нужен Subj, JunOS, NETMAP, DPDK, DNA и т.д.

     

  • 1.4, Аноним (4), 23:51, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +28 +/
    Сначала отколупают от ядра, а потом запхнут все это в сыстемдэ.
     
     
  • 2.29, Владими Владимирович (?), 14:23, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А потом прямо в проц!
     
     
  • 3.32, потеряшка (?), 17:28, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что мешает все драйвера запилить на скриптовых ЯП и подлючать через интерфейс в ядро?
     
     
  • 4.37, Аноним (-), 23:57, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А что мешает все драйвера запилить на скриптовых ЯП и подлючать через
    > интерфейс в ядро?

    Да в принципе можно конечно и бегать по потолку, надев ласты и противогаз. Но зачем?

     

  • 1.6, Аноним (-), 23:59, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нужно. Бывают ситуации, когда нужно собирать минималистичное ядро без поддержки сети. Этот проект поможет основному ядру не ломать такую возможность - а то отключить как бы и можно, но как бы и нет. Это как работать в KDE4 без мышки.
     
     
  • 2.13, tensor (?), 05:13, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В каком это таком эмбеде может понадобиться linux без сети? Разве что на пылесосе или кофемашине - но там это уже головные боли разработчиков, пусть курят LFS.
    Опять же, если ресурсов побольше, чем на быт. технике, то почему нельзя портировать фряшную VImage?
     

  • 1.7, cmp (ok), 00:11, 25/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Да жесть, то dbus в ядро чтобы задержки убрать , то сеть из ядра ради каких-то там каличей, порою смотришь как люди носят кепки - козырьком и вперед, и назад, и вбок, и думаешь, ладно хоть на машинах штатно задом не ездят, а теперь вот хз может и начнут.
     
     
  • 2.9, kuku (ok), 00:36, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Имеет место сказать, что предпринимаются глуповатые
    попытки что-нибудь привнести нового, граничащего
    с бесполезным.

    Хотя с другой стороны, если ядро главный модуль,
    то то, что неявляется по существу сервисом ядра,
    вынести в отдельный модуль...

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

    Как то так.

     
     
  • 3.10, cmp (ok), 02:11, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Нее, микроядер хватает, микроядра работают через шину, которая в линухе только только появилась, скорее квантовый компьютер появится в каждом доме, чем линух эволюционирует до микроядра.
     
  • 2.28, Аноним (-), 14:02, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Кепку носить козырьком назад вполне обоснованно - козырек сужает видимую область окружающего мира, а нужен только в солнечную погоду.
     
     
  • 3.42, Ytch (ok), 21:18, 26/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Кепку носить козырьком назад вполне обоснованно - козырек сужает видимую область окружающего мира, а нужен только в солнечную погоду.

    Ну по анекдоту же! козырек назад - чтоб дождевая вода за шиворот не текла. А козырьки по бокам - чтоб лапшу на уши не вешали!

     
  • 2.45, Аноним (-), 21:38, 30/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Смотри сюда. Если объяснять упрощенно, то

    DBus:
    Юзерспейс - приложение -> ядро (unix socket) -> dbus-daemon -> ядро (unix socket) -> приложение
    Кернелспейс - приложение -> ядро (dbus-daemon) -> приложение

    Очевидный профит

    Сетевой стек:
    Кернелспейс - сетевая карта -> ядро (сетевой стек) -> приложение (сетевой стек) -> ядро (сетевой стек) -> сетевая карта
    Юзерспейс - сетевая карта -> приложение (сетевой стек) -> сетевая карта

    Очевидный профит

     

  • 1.8, Аноним (-), 00:24, 25/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну если ещё сделают, что эта LibOS будет способна собираться для работы поверх маленьких RT-ядер для микроконтроллеров, типа этого http://chibios.org/, то - польза.
    А если запихнуть в неё ещё и netfilter и заставить работать поверх NT-шного ядра, то для офтопика появится полностью контролируемый пользователем гибкий файервол.
     
     
  • 2.12, Аноним (-), 02:38, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > для офтопика

    Миниатюра "амбарная дверь с пудовым замком в пустыне".

     
  • 2.16, Аноним (-), 06:18, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    wipfw
    LwIP
    ucLinux
     
     
  • 3.24, YetAnotherOnanym (ok), 10:47, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > wipfw

    пропускает. доказано.

     
  • 3.35, Андрей (??), 21:04, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    uIP (предшественник lwIP)
     

  • 1.11, Гост (?), 02:18, 25/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Больше троянов, хороших и нужных.
     
  • 1.15, Аноним (-), 06:14, 25/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    зачем клоунаду разводить не пролистав презентацию?

    Производительность у NUSE хуже (всегда будет хуже).
    Из плюсов - можно тестировать разные топологии, прогонять код под valgrind и gdb, проверять покрытие кода тестами. Например, сколько багов нашли и ещё находят в реализации SCTP ?

    Если брать mTCP (который уже давно не новый:
    так он решает свою задачу: предоставить высокую производительность  для одного приложения (например для lighttpd кроме которого на сервере ничего нет) для 10Gbit Ethernet и быстрее
    http://shader.kaist.edu/mtcp/
    http://www.ndsl.kaist.edu/~kyoungsoo/papers/mtcp.pdf

    Какие сейчас проблемы с текущим сетевым стеком можно посмотреть:
    https://lwn.net/Articles/629155/

     
  • 1.23, MPEG LA (ok), 10:40, 25/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >В текущем виде LibOS сосредоточен на сетевом стеке, но теоретически архитектура LibOS позволяет виртуализировать и другие подсистемы.

    это ж по-сути намек на микроядро (или гибрид). Не Танненбаума ли это казачки?

     
     
  • 2.27, ПолковникВасечкин (?), 11:37, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Да нее, это реализация вот этого https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D0%B7

    A long, long time ago...

     

  • 1.25, Аноним (-), 11:00, 25/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Даешь подключение сетевого стека по сети!
     
     
  • 2.36, Led (ok), 23:33, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Даешь подключение сетевого стека по сети!

    man pxe

    Но только после того, как выучишь уроки!

     

  • 1.43, Аноним (-), 08:06, 27/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вспомнили net-server BeOS ? ;-)))
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру