smb in a chewable size - snia...smb in a chewable size defining a low level api christopher r....
TRANSCRIPT
![Page 1: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/1.jpg)
SMB in a Chewable Size Defining a Low Level API
Christopher R. HertelWekaIO & Samba TeamSeptember 2018SNIA SDC
For your consideration...
![Page 2: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/2.jpg)
QuickIntroductions
1Copyright © 2018 by Christopher R. Hertel
![Page 3: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/3.jpg)
Introductorationaryesquenessesism
Me:
● Samba Team Elder
● SMB Wizard with...
The i n p e s e m n no c ar t e of m ye , m ol u s, m po , m pi f i r,
t e I t t Vo , or m te t lo .
2Copyright © 2018 by Christopher R. Hertel
![Page 4: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/4.jpg)
SMB Background
![Page 5: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/5.jpg)
Three general categories for network data storage.
● Obviously ${userPref} is the best● Two predominant Network File Protocols:
○ NFS (Network File System)
○ SMB (Server Message Block)
Taxonomy
4
BlockFileObject
Copyright © 2018 by Christopher R. Hertel
![Page 6: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/6.jpg)
SMB presents:● Shares
○ Directories■ Files
A network extension for DOS, OS/2,and Windows File Systems for over 3 decades.
➔ Also carries system calls,➔ Named Pipe Operations (IPC), and➔ Remote Procedure Calls (RPC).
SMB is a File Protocol
5Copyright © 2018 by Christopher R. Hertel
![Page 7: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/7.jpg)
SMB is a Network Transport
SMB is Infrastructure
➢ A Reliable, Scalable, Authenticated, Signed, Sealed, Network Connection○ We've already mentioned RPC○ There's also RSVD○ Block I/O for Storage Spaces Direct
Think of SMB as a Transport.
6Copyright © 2018 by Christopher R. Hertel
![Page 8: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/8.jpg)
SMB History
What are SMB1, SMB2, and SMB3?
SMB1: The Original
❖ Created in the early 1980's by IBM
❖ Further development by 3Com, IBM, Intel, and Microsoft
➢ For PC-DOS, MS-DOS, and OS/2
➢ Dialect updates released withOperating System Updates
❖ Ported to Windows NT
➢ Final Dialect! "NT LM 0.12"
7Copyright © 2018 by Christopher R. Hertel
![Page 9: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/9.jpg)
What are SMB1, SMB2, and SMB3?
SMB2: Introduced with Vista!
❖ An Entirely New Protocol
➢ 1/4th as many message types
➢ No DOS or OS/2 Baggage
❖ Similar Design
➢ Familiar to SMB1 Developers
❖ Silently Negotiated
➢ Users neither knew nor cared
SMB History
8Copyright © 2018 by Christopher R. Hertel
![Page 10: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/10.jpg)
SMB History
What are SMB1, SMB2, and SMB3?
SMB3: Marketing Upgrade!
❖ An SMB2 Dialect; not a new Protocol
➢ Originally planned as 2.2
➢ Message structures are the same
❖ Adds Speed, Scalability, Reliability
➢ RDMA
➢ Multichannel
➢ Persistent Handles
9Copyright © 2018 by Christopher R. Hertel
![Page 11: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/11.jpg)
SMB History
What are SMB1, SMB2, and SMB3?
SMB1 is dead.
Copyright © 2018 by Christopher R. Hertel 10
![Page 12: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/12.jpg)
SMB History
What are SMB1, SMB2, and SMB3?
CIFS is deader.
Copyright © 2018 by Christopher R. Hertel eleven
![Page 13: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/13.jpg)
SMB Stability
How standard is SMB?- It's Not!- SMB1 was Undocumented for
Years.
However...- Backward Compatibility is a
Business Requirement- It's Now Documented- It's Entwined with the
Infrastructure
12Copyright © 2018 by Christopher R. Hertel
![Page 14: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/14.jpg)
Start Paying Attention Now
13Copyright © 2018 by Christopher R. Hertel
![Page 15: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/15.jpg)
An SMB2/3 Protocol Engine
❏ SMB2/3 message handling can be broken down into layers
❏ Layers can be interconnected by Programming Interfaces
❏ You know, like the OSI stack14Copyright © 2018 by Christopher R. Hertel
Consider the SMB "Protocol Stack"More Customized
More Generic
Semantics
Syntax
![Page 16: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/16.jpg)
An SMB2/3 Protocol Engine
By leveraging the SMB2/3 message handling hierarchy, we can…
○ Isolate message parsing/packing○ Handle message syntax errors○ Identify and manage
base-level state
15Copyright © 2018 by Christopher R. Hertel
![Page 17: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/17.jpg)
An SMB2/3 Protocol Engine
What I am proposing here is a:
❏ Standard,❏ Low level,❏ SMB2/3 Messaging API
Copyright © 2018 by Christopher R. Hertel 0x10
![Page 18: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/18.jpg)
An SMB2/3 Protocol Engine
Why?★ Implement it as a library★ ...or perhaps as a device★ ...or both★ Implement it in offload cards:
○ Handle the Underlying Transport (TCP, RDMA)
○ Multichannel○ Signing and Sealing
Copyright © 2018 by Christopher R. Hertel 17
![Page 19: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/19.jpg)
An SMB2/3 Protocol Engine
If done right...☉ Separates the Semantic from the
Syntactic layers
☉ Mix and matchstack components
☉ Gain performance byupgrading the lower level withno change to the higher level code
Copyright © 2018 by Christopher R. Hertel 18
![Page 20: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/20.jpg)
SMB2 Message Handling Hierarchy
2. Syntax (section 2)Packet Parsing and Packing
3. Semantics (section 3)What does it all mean?
3. State (section 3)Maintain and Transitionper Input
19Copyright © 2018 by Christopher R. Hertel
An SMB2/3 Protocol Engine
![Page 21: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/21.jpg)
An SMB2/3 Protocol Engine
Nothing is carved in stone
...but here's what I have in mind.
Copyright © 2018 by Christopher R. Hertel 20
![Page 22: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/22.jpg)
An SMB2/3 Protocol EngineSMBopen()
○ Open a handle to an SMB2/3 message "device".
SMBcreate()○ Create a handle by binding a socket to
an SMB2/3 message library.○ Allow stacking, to support new
dialects.
SMBclose()○ Close an smb2/3 message handle,
freeing resources.
21Copyright © 2018 by Christopher R. Hertel
![Page 23: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/23.jpg)
An SMB2/3 Protocol Engine
The design can be informedby the socket model.
We'll need equivalents toconnect(2) and accept(2),etc.
22Copyright © 2018 by Christopher R. Hertel
![Page 24: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/24.jpg)
An SMB2/3 Protocol EngineSMBsend()
○ Given a data structure, compose and send a correct SMB2/3 message.
○ Validate the message before sending.
SMBrecv()○ Upon receiving a message, parse it.○ Handle obvious protocol errors.○ Provide the parsed message to the
caller.
We may also need select(2)/poll(2) equivalents to know when messages are ready.
23Copyright © 2018 by Christopher R. Hertel
![Page 25: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/25.jpg)
An SMB2/3 Protocol EngineSMBsetopt()
○ Set engine-internal parameters■ ...such as which dialects we support■ ...or which capability bits■ ...or enable/disable crypto options
SMBgetopt()○ Retrieve engine-internal parameters
■ Ask which dialects the engine supports
■ Retrieve engine statistics
Obviously parallel to get/setsockopt(2).
24Copyright © 2018 by Christopher R. Hertel
![Page 26: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/26.jpg)
The Plan
This should be a win for:
● SMB Implementers○ Open Source and Commercial
● Hardware Vendors○ Cards○ Platforms
● Device Driver Developers
25Copyright © 2018 by Christopher R. Hertel
![Page 27: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/27.jpg)
The Plan
To Create a Standard, we need:
● A rough-draft spec from which to start
● A Committee● A reference implementation● An organization to provide
structure and support
26Copyright © 2018 by Christopher R. Hertel
![Page 28: SMB in a Chewable Size - SNIA...SMB in a Chewable Size Defining a Low Level API Christopher R. Hertel WekaIO & Samba Team September 2018 SNIA SDC For your consideration](https://reader031.vdocument.in/reader031/viewer/2022011912/5f9d1479ee02927387215aa9/html5/thumbnails/28.jpg)
The End
The EndCopyright © 2018 by Christopher R. Hertel