CIFSD - CIFSD

CIFSD
Asl muallif (lar)Namjae Jeon
Tuzuvchi (lar)Namjae Jeon, Sergey Senozhatskiy, Hyunchul Li
Omborgithub.com/ cifsd-team
YozilganC
Operatsion tizimLinux
TuriTarmoq fayllari tizimi
LitsenziyaGPLv2

CIFSD bu ochiq manbali yadro ichidagi CIFS /SMB uchun Namjae Jeon tomonidan yaratilgan server Linux yadrosi. Dastlab maqsad fayllarni kiritish-chiqarish ishini yaxshilashni ta'minlashdir, lekin eng katta maqsad - yadro ichida ishlab chiqish va saqlash va qatlamlarni to'liq ochib berish ancha oson bo'lgan yangi xususiyatlarga ega bo'lishdir. Yo'l-yo'riqlar qaerdagi bo'limlarga tegishli bo'lishi mumkin Samba kabi xususiyatlarga ega bo'lish uchun yadro ichidagi bir nechta modullarga o'tmoqda Masofadan xotiraga to'g'ridan-to'g'ri kirish (RDMA) haqiqiy ishlash darajasi bilan ishlash uchun.

Xususiyatlari

Amalga oshirildi

  • SMB1 (CIFS), asosiy fayl almashish uchun SMB2 / 3 protokollari
  • Murakkab so'rovlar
  • oplock / lizing
  • Katta MTU (ko'p kreditli)
  • NTLM /NTLMv2
  • Avtomatik muzokaralar
  • HMAC-SHA256 Imzo
  • Xavfsiz muzokaralar
  • Yangilanish imzosi
  • Autentifikatsiyadan oldingi yaxlitlik (SMB 3.1.1, Windows 10)
  • SMB shifrlash (CCM, GCM)
  • SMB to'g'ridan-to'g'ri (RDMA)
  • WinACL (xavfsizlik tavsifi)
  • Kerberos

Rejalashtirilgan

  • Ko'p kanalli
  • Bardoshli tutqich va v2
  • Doimiy tutqichlar
  • Katalog ijarasi
  • Klasterni qo'llab-quvvatlash
  • SMB3 orqali SCSI

Arxitektura

Ishlash bilan bog'liq operatsiyalarning quyi qismi kernelspace-ga tegishli bo'lib, boshqa foydalanuvchilar to'plamidagi ishlash bilan bog'liq bo'lmagan operatsiyalarga tegishli. Shunday qilib, DCE / RPC Tarixiy ravishda buferning haddan tashqari ko'payishi va xavfsizlikning xavfli xatolari, winreg va foydalanuvchi hisobini boshqarish bilan bog'liq bo'lgan boshqaruv foydalanuvchi maydonida ksmbd.mountd sifatida amalga oshiriladi. Yadro maydonidagi (ksmbd) ishlash bilan bog'liq bo'lgan fayllarni operatsiyalari (ochish / o'qish / yozish / yopish va hk). Bu, shuningdek, barcha fayl operatsiyalari uchun VFS interfeysi bilan osonroq integratsiyalashishga imkon beradi.

Cifsd architecture.png

ksmbd (yadro xizmati)

Server demoni ishga tushirilganda, u ishga tushirish vaqtida forker ipini (ksmbd / 0) ishga tushiradi va SMB so'rovlarini tinglash uchun maxsus 445 portni ochadi. Har doim yangi mijozlar murojaat qilganda, forker tarmog'i mijozning ulanishini qabul qiladi va mijoz va server o'rtasidagi maxsus aloqa kanali uchun yangi mavzuni uzatadi. Bu mijozlardan SMB so'rovlarini (buyruqlarini) parallel ravishda qayta ishlashga imkon beradi, shuningdek yangi mijozlarga yangi ulanishlarni amalga oshirishga imkon beradi. Bog'langan mijozlarni ko'rsatish uchun har bir nusxa ksmbd / 1 ~ n deb nomlanadi. SMB so'rov turlariga qarab, har bir yangi mavzu foydalanuvchi maydoniga (ksmbd.mountd) buyruqlar orqali o'tishga qaror qilishi mumkin, hozirda DCE / RPC buyruqlari foydalanuvchi maydoni orqali ishlov berish uchun aniqlangan.

Linux yadrosidan yanada ko'proq foydalanish uchun buyruqlarni sukut bo'yicha ishchi elementlar sifatida qayta ishlash va standart kworker ish zarrachalari ishlovchilarida bajarish uchun tanlangan. Bu ishlov beruvchilarni ko'paytirishga imkon beradi, chunki yadro qo'shimcha ishchi iplarni boshlashga g'amxo'rlik qiladi, agar yuk ko'tarilsa va aksincha, agar yuk kamaytirilsa, u qo'shimcha ishchi iplarini yo'q qiladi. Shunday qilib, mijoz bilan aloqa o'rnatilgandan so'ng. Ajratilgan ksmbd / 1..n SMB buyruqlarini qabul qilish / tahlil qilish uchun to'liq egalik qiladi. Qabul qilingan har bir buyruq parallel ravishda ishlaydi, ya'ni parallel ravishda ishlaydigan bir nechta mijoz buyruqlari bo'lishi mumkin. Har bir buyruqni olgandan so'ng, yadro ichidagi standart kworker'threads bilan ishlov berish uchun navbatga qo'yilgan har bir buyruq uchun alohida yadro ishchi elementi tayyorlanadi. Shunday qilib, har bir kichik va o'rta biznes sub'ekti ishchilar uchun navbatga qo'yiladi. Bu yukni taqsimlash foydasini sukut bo'yicha yadro tomonidan optimal ravishda boshqarish va mijoz buyruqlarini parallel ravishda boshqarish orqali mijozning ish faoliyatini optimallashtirishga imkon beradi.

ksmbd.mountd (foydalanuvchi maydoni demoni)

ksmbd.mountd ksmbd.adduser (foydalanuvchi maydoni uchun utilitlarning bir qismi) yordamida ro'yxatdan o'tgan foydalanuvchi hisob qaydnomasi va parolni uzatish, uzatish jarayoni. Bundan tashqari, bu yadroda smb.conf dan smb eksport qatlamiga ajraladigan ma'lumot parametrlarini almashish imkonini beradi. Ijro etish qismida u doimiy ravishda ishlaydigan va netlink soketidan foydalanib yadro interfeysiga ulangan demonga ega, u so'rovlarni kutadi (dcerpc va winreg). U NetShareEnum va NetServerGetInfo fayl serverlari uchun eng muhim bo'lgan RPC qo'ng'iroqlarini (kamida o'nlab) va server amalga oshirishi kerak bo'lgan turli xil DFS qo'ng'iroqlarini boshqaradi. To'liq DCE / RPC javobi foydalanuvchi maydonidan tayyorlanadi va mijoz uchun tegishli yadro ipiga uzatiladi.

Shuningdek qarang

Adabiyotlar

Tashqi havolalar