INTRODUCE IN-KERNEL SMB3 SERVER CALLED CIFSD Namjae Jeon Samsung - - PowerPoint PPT Presentation

introduce in kernel smb3 server called cifsd
SMART_READER_LITE
LIVE PREVIEW

INTRODUCE IN-KERNEL SMB3 SERVER CALLED CIFSD Namjae Jeon Samsung - - PowerPoint PPT Presentation

INTRODUCE IN-KERNEL SMB3 SERVER CALLED CIFSD Namjae Jeon Samsung Electronics June 5, 2019 About me Linux kernel contributor since 2011 Co-Creator of Samsung internal NTFS Filesystem Introduce collapse and insert range syscall


slide-1
SLIDE 1

INTRODUCE IN-KERNEL SMB3 SERVER CALLED CIFSD

Namjae Jeon Samsung Electronics June 5, 2019

slide-2
SLIDE 2

About me

  • Linux kernel contributor since 2011
  • Co-Creator of Samsung internal NTFS Filesystem
  • Introduce collapse and insert range syscall
  • Creator and maintainer of linux-cifsd project
slide-3
SLIDE 3

Topic

  • Introduction
  • Architecture
  • Components
  • Performance/Stability/Compatibility
  • Plan
  • Proposal
slide-4
SLIDE 4

What is cifsd ?

  • SMB Server for Linux kernel
  • Kernel and Userspace daemons
  • All SMB Ver. (SMB1 ~ SMB3.1.1)
  • Authentication
  • NTLM
  • NTLMv2
  • Performance feature
  • Oplock/lease
  • compound request
  • Copy offload
  • Security feature
  • Signing
  • encryption

NFS ganesha

NFS SAMBA

KERNEL USERSPACE

NFSD CIFS CIFSD?

slide-5
SLIDE 5

linux-cifsd project

  • Github Repo
  • https://github.com/cifsd-team/cifsd
  • https://github.com/cifsd-team/cifsd-tools
  • Mailing-list
  • linux-cifsd-devel@lists.sourceforge.net
  • 5 active developers
  • SMB2 notify(In progress, Yunjae Lim)
  • SMBDirect (In progress, Hyunchul Lee)
slide-6
SLIDE 6

Key Concepts

  • Can gain the performance in kernel ?
  • No system call (less TLB miss, less context switching)
  • Shorter path to use VFS and network functions in kernel
  • no duplicate memory allocation for inode and superblock
slide-7
SLIDE 7

Key Concepts

  • Optimized SMB over RDMA support
slide-8
SLIDE 8

Key Concepts

  • Simple/light file share for embedded device

Reported by Andy Walsh(OpenWRT) Binary Size Main Extra Total cifsd 128KB(cifsd kmod, tools) 61KB(crypto kmods) + 872KB(glib2) 1061KB samba4 6MB(samba libs, server package) 64KB(libtirpc, etc) 6064KB

slide-9
SLIDE 9

Key Concepts

Client 1 Client 2

Kernel Space SMB Server (CIFSD)

(Uniform Address Space)

kcifsd/1

Open “File” Open OK – Oplock granted Open “File” Oplock Break Request Oplock Break Response

kcifsd/2

Global data

Open OK – Oplock granted

Client 1 Client 2

User Space SMB Server (SAMBA)

smbd/1 smbd/2

Open “File” Open OK – Oplock granted Open “File”

IPC Message – Oplock Break Request IPC Message – Oplock Break Done

Open OK – Oplock granted Oplock Break Request Oplock Break Response

Different Address S pace

  • Oplock/lease better handling(page 20)
slide-10
SLIDE 10

Architecture

  • Separate kernel space and user space daemon
  • Works related to performance in kernel space
  • Works related to non-performance in user space
  • Co-work cifsd and kcifsd in each space
  • When cifsd is launched, kcifsd is activated
  • They exchange information necessary for each other

SMB Engine

SHARE MANAGEMENT

SERVER

VFS

ID/PW MANAGEMENT

KERNEL USER

DCERPC

slide-11
SLIDE 11

Architecture

  • How to communicate between kernel and userspace
  • Use Netlink interface
  • Specify a few commands

Name Purpose CIFSD_EVENT_HEARTBEAT_REQUEST Monitor cifsd is alive CIFSD_EVENT_STARTING_UP CIFSD_EVENT_SHUTTING_DOWN Transfer the initial information necessary for the start and shutdown CIFSD_EVENT_LOGIN_REQUEST CIFSD_EVENT_LOGIN_RESPONSE Transfer the user account / password information necessary for login CIFSD_EVENT_SHARE_CONFIG_REQUEST CIFSD_EVENT_SHARE_CONFIG_RESPONSE Transfer the share configuration CIFSD_EVENT_TREE_CONNECT_RESPONSE CIFSD_EVENT_TREE_DISCONNECT_REQUEST Transfer the tree connect info CIFSD_EVENT_RPC_REQUEST CIFSD_EVENT_RPC_RESPONSE Transfer DCERPC requests

slide-12
SLIDE 12

Architecture

NETLINK/SYSFS Interface

SOCKET (445)

kcifsd/0 (forker thread)

kcifsd/2 kcifsd/1 kcifsd/N

NTLM NTLMv2 Kerberous Authentication SMB1 SMB2 SMB2.1 SMB3.1.1 SMB3 Dialects

V F S

Local Filesystem

C L I E N T cifsd

DCE/RPC Share configuration

ID/PW configuration

smb.conf (config file) cifspwd.db (ID/PW file)

cifsadmin

slide-13
SLIDE 13

Architecture

NETLINK INTERFACE SOCKET Virtual Filesystem EXT4 XFS NTFS TRANSPORT TCP TRANSPORT IPC Oplock/lease AUTH

VFS ABSTRACTION

SMB Engine

VFS CACHE(File, INODE)

KERNEL KCIFSD

  • KCIFSD Components

SERVER

slide-14
SLIDE 14

Architecture

  • Minimum DCERPC implementation
  • The parameter format of smb.conf
  • compatible with samba’s one
  • Minimum implementation
  • List up of supported parameters in smb.conf.example
  • SMB1 is disable at default
  • Smart phone apps(ES File Explorer) support only SMB1
  • Can easily remove it when merging into mainline
slide-15
SLIDE 15

Performance comparison

  • Tool : Iozone, fileop, bench-oplock(smbtorture)
  • Mount share tmpfs
  • Direct connection on two PC
  • Oplock / lease is disable
  • SMB client is a kernel cifs
slide-16
SLIDE 16

Performance comparison

Record length (KB)

Single Writer Iozone Throught

20000 40000 60000 80000 100000 4 8 16 32 64 128 samba write cifsd write Kilobyte /second

slide-17
SLIDE 17

Performance comparison

10000 20000 30000 40000 50000 60000 70000 80000 90000 4 8 16 32 64 128 samba read cifsd read Record length (KB)

Single Reader Iozone Throught

Kilobyte/second

slide-18
SLIDE 18

Fileops Result

500 1000 1500 2000 2500 3000 3500 4000 4500 samba cifsd Ops/second

slide-19
SLIDE 19

File lookup Performance(ls –l)

200 400 600 800 1000 1200 1400 1000 5000 10000 50000 samba cifsd Number of files Time (millisecond)

slide-20
SLIDE 20

Bench oplock

200 400 600 800 1000 1200 1400 1600 1800 bench-oplock samba cifsd Ops/s /second

slide-21
SLIDE 21

Compatibility

SMB CLIENT VERSIONS CIFSD SUPPORTED Windows XP (SMB 1.0)

Windows Vista (SMB 2 .0)

Windows 7 (SMB 2.1)

Windows 8 (SMB 3.0)

Windows 10 (SMB 3.1.1)

MacOS(~ High Sierra)

Ubuntu File Explorer

Linux CIFS Client(linux 4.16)

slide-22
SLIDE 22

Stability

95%

5%

SMB TORTURE(SMB2/3)

PASS FAIL 97% 3

XFSTESTS(SMB2/3)

PASS FAIL

slide-23
SLIDE 23

Plan

  • SMB Direct Support (~ Sep)
  • Writing by Hyunchul Lee(LGE)
  • Share the status at SDC 2019
  • Oplock/Lease is enable at default
  • Send the patch-set to LKML(~ Sep)
slide-24
SLIDE 24

Proposal

  • How about make kcifsd & samba running together ?
slide-25
SLIDE 25

Proposal

  • Define new parameter in smb.conf
  • Kcifsd can be a kernel helper of samba
  • Use SMBDirect in kcifsd through ioctl or netlink
slide-26
SLIDE 26

Thank you!