CIFSD - CIFSD
tento článek příliš spoléhá na Reference na primární zdroje.Února 2017) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Původní autoři | Namjae Jeon |
---|---|
Vývojáři | Namjae Jeon, Sergey Senozhatsky, Hyunchul Lee |
Úložiště | github |
Napsáno | C |
Operační systém | Linux |
Typ | Síťový souborový systém |
Licence | GPLv2 |
CIFSD je open-source v jádře CIFS /SMB server vytvořený společností Namjae Jeon pro server Linuxové jádro. Zpočátku je cílem poskytnout vylepšený výkon I / O souborů, ale větším cílem je mít některé nové funkce, které se mnohem snáze vyvíjejí a udržují uvnitř jádra a plně vystavují vrstvy. Pokyny lze připsat úsekům, kde Samba se přesouvá k několika modulům uvnitř jádra, aby měl funkce jako Vzdálený přímý přístup do paměti (RDMA) pracovat se skutečným zvýšením výkonu.
Funkce
Realizováno
- Protokoly SMB1 (CIFS), SMB2 / 3 pro základní sdílení souborů
- Složené žádosti
- oplock / leasing
- Velká MTU (víceúvěrová)
- NTLM /NTLMv2
- Automatické vyjednávání
- HMAC-SHA256 Podepisování
- Bezpečné vyjednávání
- Podepisování aktualizace
- Integrita před autentizací (SMB 3.1.1, Windows 10)
- Šifrování SMB (CCM, GCM)
- SMB přímý (RDMA)
- WinACL (bezpečnostní deskriptor)
- Kerberos
Plánováno
- Vícekanálový
- Odolná rukojeť a v2
- Trvalé rukojeti
- Pronájem adresáře
- Podpora klastrů
- SCSI přes SMB3
Architektura
Podmnožina operací souvisejících s výkonem patří do prostoru jádra a druhá podmnožina, která patří k operacím, které ve skutečnosti nesouvisejí s výkonem v uživatelském prostoru. Tak, DCE / RPC správa, která historicky vyústila v řadu problémů s přetečením vyrovnávací paměti a nebezpečných bezpečnostních chyb a správa winreg a uživatelských účtů, jsou implementovány v uživatelském prostoru jako ksmbd.mountd. Operace se soubory, které souvisejí s výkonem (otevření / čtení / zápis / zavření atd.) V prostoru jádra (ksmbd). To také umožňuje snadnější integraci s rozhraním VFS pro všechny operace se soubory.
ksmbd (démon jádra)
Když je spuštěn démon serveru, spustí inicializační vlákno (ksmbd / 0) v době inicializace a otevře vyhrazený port 445 pro poslech požadavků SMB. Kdykoli požádají noví klienti, podproces forker přijme připojení klienta a rozdělí nový podproces pro vyhrazený komunikační kanál mezi klientem a serverem. Umožňuje paralelní zpracování požadavků (příkazů) SMB od klientů a také umožňuje novým klientům navázat nová připojení. Každá instance má název ksmbd / 1 ~ n k označení připojených klientů. V závislosti na typech požadavků SMB se každé nové vlákno může rozhodnout předat příkazy do uživatelského prostoru (ksmbd.mountd), aktuálně jsou identifikovány příkazy DCE / RPC, které mají být zpracovány prostřednictvím uživatelského prostoru.
Pro další využití linuxového jádra bylo vybráno zpracování příkazů jako výchozích pracovních položek a provádění v obslužných programech výchozích podprocesů kworker. Umožňuje multiplexování manipulátorů, protože jádro se postará o spuštění dalších pracovních vláken, pokud se zvýší zatížení, a naopak, pokud se zatížení sníží, zničí další pracovní vlákna. Po navázání spojení s klientem. Vyhrazený ksmbd / 1..n přebírá úplné vlastnictví příjmu / analýzy příkazů SMB. Každý přijatý příkaz je zpracován paralelně, tj. Může existovat více příkazů klientů, které jsou zpracovány paralelně. Po obdržení každého příkazu je pro každý příkaz připraven samostatný pracovní soubor jádra, který je dále zařazen do fronty, aby jej zpracoval výchozí kworker'threads uvnitř jádra. Každá pracovní položka SMB je tedy zařazena do fronty k pracovníkům. To umožňuje výhodně sdílet sdílení zátěže pomocí výchozího jádra a optimalizovat výkon klienta paralelním zpracováním klientských příkazů.
ksmbd.mountd (démon uživatelského prostoru)
ksmbd.mountd je proces uživatelského prostoru, k přenosu uživatelského účtu a hesla, které jsou registrovány pomocí ksmbd.adduser (součást nástrojů pro uživatelský prostor). Dále umožňuje sdílení informačních parametrů, které byly analyzovány z smb.conf do exportní vrstvy smb v jádře. Pro vykonávací část má démona, který je neustále spuštěný a připojený k rozhraní jádra pomocí soketu netlink, čeká na požadavky (dcerapc a winreg). Zpracovává volání RPC (minimálně několik desítek), která jsou nejdůležitější pro souborový server z NetShareEnum a NetServerGetInfo a různých volání souvisejících s DFS, která musí server implementovat. Kompletní odpověď DCE / RPC je připravena z uživatelského prostoru a předána do přidruženého vlákna jádra pro klienta.
Viz také
Reference
- https://github.com/cifsd-team/cifsd/blob/master/README.md
- Uživatelský manuál : https://github.com/namjaejeon/Documents/blob/master/CIFSD_User_Guide_v1.0.pdf