Jump to content

КСМБД

КСМБД (ранее ЦИФСР)
Оригинальный автор(ы) Намджэ Чон
Разработчик(и) Намджэ Чон, Сергей Сеножацкий, Хён Чоль Ли
Репозиторий github /cifsd-команда
Написано в С
Операционная система Линукс
Тип Сетевая файловая система
Лицензия лицензия GPLv2

KSMBD — это встроенный сервер с открытым исходным кодом в ядро ​​CIFS / SMB- , созданный Намджэ Чоном для ядра Linux . Первоначально цель состоит в том, чтобы обеспечить улучшенную производительность файлового ввода-вывода, но более крупная цель состоит в том, чтобы иметь некоторые новые функции, которые гораздо проще разрабатывать и поддерживать внутри ядра и полностью раскрывать уровни. Направления можно отнести к разделам, в которых Samba перемещается на несколько модулей внутри ядра, чтобы иметь такие функции, как удаленный прямой доступ к памяти (RDMA), для работы с реальным приростом производительности.

Реализовано

[ редактировать ]
  • Протоколы SMB1(CIFS), SMB2/3 для базового обмена файлами
  • Сложные запросы
  • оплок/аренда
  • Большой MTU (Мультикредитный)
  • НТЛМ / НТЛМв2
  • Автосогласование
  • HMAC-SHA256 Подписание
  • Безопасные переговоры
  • Обновление подписи
  • Целостность предварительной аутентификации (SMB 3.1.1, Windows 10)
  • Шифрование SMB (CCM, GCM)
  • Прямой SMB (RDMA)
  • WinACL (дескриптор безопасности)
  • Керберос
  • Аренда каталога
  • Многоканальный
  • Прочная ручка и v2.

Планируется

[ редактировать ]
  • Стойкие ручки
  • Поддержка кластеров
  • SCSI через SMB3

Архитектура

[ редактировать ]

Подмножество операций, связанных с производительностью, принадлежит пространству ядра, а другое подмножество принадлежит операциям, которые на самом деле не связаны с производительностью в пространстве пользователя. Таким образом, управление DCE/RPC , которое исторически приводило к множеству проблем с переполнением буфера и опасным ошибкам безопасности, а также управление Winreg и учетными записями пользователей, реализовано в пользовательском пространстве как ksmbd.mountd. Файловые операции, связанные с производительностью (открытие/чтение/запись/закрытие и т. д.), выполняются в пространстве ядра (ksmbd). Это также позволяет упростить интеграцию с интерфейсом VFS для всех файловых операций.

ksmbd (демон ядра)

[ редактировать ]

Когда демон сервера запускается, он запускает поток форкера (ksmbd/0) во время инициализации и открывает выделенный порт 445 для прослушивания запросов SMB. Всякий раз, когда новые клиенты отправляют запросы, поток-форкер принимает клиентское соединение и создает новый поток для выделенного канала связи между клиентом и сервером. Он позволяет параллельно обрабатывать запросы (команды) SMB от клиентов, а также позволяет новым клиентам устанавливать новые соединения. Каждый экземпляр имеет имя ksmbd/1~n, обозначающее подключенных клиентов. В зависимости от типов запросов SMB каждый новый поток может решить передать команды в пространство пользователя (ksmbd.mountd). В настоящее время команды DCE/RPC предназначены для обработки через пространство пользователя.

Для дальнейшего использования ядра Linux было выбрано обрабатывать команды как рабочие элементы по умолчанию, которые будут выполняться в обработчиках потоков kworker по умолчанию. Это позволяет мультиплексировать обработчики, поскольку ядро ​​заботится об инициировании дополнительных рабочих потоков, если нагрузка увеличивается, и наоборот, если нагрузка уменьшается, оно уничтожает дополнительные рабочие потоки. Таким образом, после установления соединения с клиентом выделенная задача ksmbd полностью берет на себя ответственность за получение и анализ команд SMB. Каждая из полученных команд от нескольких клиентов обрабатывается параллельно. После получения каждой команды для каждой команды подготавливается отдельный рабочий элемент ядра, который далее ставится в очередь для обработки потоками kworker по умолчанию внутри ядра. Таким образом, каждый рабочий элемент SMB ставится в очередь у kworkers. Это позволяет оптимально управлять преимуществами распределения нагрузки с помощью ядра по умолчанию и оптимизирует производительность клиента за счет параллельной обработки клиентских команд.

ksmbd.mountd (демон пользовательского пространства)

[ редактировать ]

ksmbd.mountd — это процесс пользовательского пространства, который передает учетную запись пользователя и пароль, зарегистрированные с помощью ksmbd.adduser (часть утилит для пользовательского пространства). Кроме того, это позволяет передавать параметры информации, проанализированные из smb.conf, на уровень экспорта smb в ядре. Что касается исполнительной части, у него есть демон, который постоянно работает и подключается к интерфейсу ядра через сокет netlink и ожидает запросов (dcerpc и winreg). Он обрабатывает вызовы RPC (минимум несколько десятков), которые наиболее важны для файлового сервера, из NetShareEnum и NetServerGetInfo, а также различные вызовы, связанные с DFS, которые должен реализовать сервер. Полный ответ DCE/RPC готовится из пользовательского пространства и передается в соответствующий поток ядра для клиента.

См. также

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 40d987c2be0d4806fb1ca6da71aa0885__1718743500
URL1:https://arc.ask3.ru/arc/aa/40/85/40d987c2be0d4806fb1ca6da71aa0885.html
Заголовок, (Title) документа по адресу, URL1:
KSMBD - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)