More content...
authorMichael Adam <obnox@samba.org>
Wed, 11 May 2016 00:40:45 +0000 (02:40 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 11 May 2016 00:42:04 +0000 (02:42 +0200)
Makefile
content.wiki
intro-history.wiki
multichannel.wiki

index 5e81f8e..97e922b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -67,8 +67,6 @@ IMAGES = $(DIAIMAGES_PNG)
 EXTRA_WIKI_FILES = \
                   intro-history.wiki \
                   multichannel.wiki \
-                  smb-direct.wiki \
-                  persistent.wiki \
                   next.wiki \
                   thanks.wiki
 
index d6be1f5..e0a49bc 100644 (file)
 
 >>>intro-history.wiki<<<
 
-%%% >>>smb3.wiki<<<
-
 >>>multichannel.wiki<<<
 
->>>smb-direct.wiki<<<
-
-%%% >>>witness.wiki<<<
-
->>>persistent.wiki<<<
-
 >>>next.wiki<<<
 
 >>>thanks.wiki<<<
index c1e40a4..19d0fc9 100644 (file)
@@ -145,26 +145,26 @@ So what's the big deal about SMB3?
 [block]>
 }
 
-==== SMB Features - in Samba ====
-
-* SMB 2.0:
-** durable file handles [4.0]
-* SMB 2.1:
-** multi-credit / large mtu [4.0]
-** dynamic reauthentication [4.0]
-** leasing [4.2]
-** resilient file handles [PoC]
-* SMB 3.0:
-** new crypto (sign/encrypt) [4.0]
-** secure negotiation [4.0]
-** durable file handles v2 [4.0]
-** _red_multi-channel_ [4.4 (experimental)]
-** persistent file handles [design/PoC]
-** SMB direct [design]
-** cluster features [design]
-*** witness [WIP+]
-* SMB 3.0.2: [4.3]
-* SMB 3.1.1:
-** negotiate contexts, preauth: [4.3]
+%%% ==== SMB Features - in Samba ====
+%%% 
+%%% * SMB 2.0:
+%%% ** durable file handles [4.0]
+%%% * SMB 2.1:
+%%% ** multi-credit / large mtu [4.0]
+%%% ** dynamic reauthentication [4.0]
+%%% ** leasing [4.2]
+%%% ** resilient file handles [PoC]
+%%% * SMB 3.0:
+%%% ** new crypto (sign/encrypt) [4.0]
+%%% ** secure negotiation [4.0]
+%%% ** durable file handles v2 [4.0]
+%%% ** _red_multi-channel_ [4.4 (experimental)]
+%%% ** persistent file handles [design/PoC]
+%%% ** SMB direct [design]
+%%% ** cluster features [design]
+%%% *** witness [WIP+]
+%%% * SMB 3.0.2: [4.3]
+%%% * SMB 3.1.1:
+%%% ** negotiate contexts, preauth: [4.3]
 
 [frame]>
index 93ab0b2..91bcfeb 100644 (file)
 +<2->{
 # messaging rewrite using unix dgm sockets with sendmsg [DONE,4.2]
 # add fd-passing to messaging [DONE,4.2]
-# preparations in internal structures [DONE,4.4]
+# preparations in internal structures [DONE,4.2--4.4]
 # prepare code to cope with multiple channels [DONE,4.4]
 # implement smbd message to pass a tcp socket [DONE,4.4]
 # transfer connection in Negotiate (by ClientGUID) [DONE,4.4]
 # implement session bind [DONE,4.4]
-# implement channel epoch numbers [DONE,4.4]
+# implement channel sequence numbers [DONE,4.4]
 # implement interface discovery [DONE(linux/conf),4.4]
 # implement test cases [WIP(isn't it always?... $\smiley$)]
 # implement fd-passing in socket-wrapper [WIP]
 # implement lease break replay [TODO]
 }
 
-==== Multi-Channel $\in$ Samba : Details from @smbXsrv.idl@ ====
-%%==== @MSG\_SMBXSRV\_CONNECTION\_PASS@ ====
+==== Multi-Channel $\in$ Samba : How we got there ====
 
-<[block]{for @MSG\_SMBXSRV\_CONNECTION\_PASS@}
-<[code]
-typedef struct {
-    NTTIME                 initial_connect_time;
-    GUID                   client_guid;
-    hyper                  seq_low;
-    DATA_BLOB              negotiate_request;
-} smbXsrv_connection_pass0;
-[code]>
-[block]>
+* Based on preparations in 4.2 and earlier (200+ patches)
+* Since Summer 2015:
+** Polishing of large parts of massively WIP branch
+** Added new code (create replay, interface detection)
+** Result merged in units. Overall some ~130 patches.
+** Patches by:
+*** Michael Adam
+*** Stefan Metzmacher
+*** G√ľnther Deschner
+*** Anoop C S
+*** Anubhav Rakshit
+* Just made it as experimental feature into Samba 4.4
 
-%%==== Internal Structures (@smbXsrv.idl@) ====
-==== Multi-Channel $\in$ Samba : Details from @smbXsrv.idl@ ====
 
+==== Multi-Channel $\in$ Samba : How to enable it ====
 
-<[block]{layering before}
+<[block]{smb.conf}
 <[code]
-smbXsrv_session
-  ->smbXsrv_connection
+\[global\]
+...
+server multi channel support = yes
+...
 [code]>
 [block]>
 
-<[block]{layering now}
-<[code]
-smbXsrv_session
-  ->smbXsrv_client
-    ->smbXsrv_connections
-[code]>
-[block]>
+%%==== Multi-Channel $\in$ Samba : Details from @smbXsrv.idl@ ====
+%%%%==== @MSG\_SMBXSRV\_CONNECTION\_PASS@ ====
+%%
+%%<[block]{for @MSG\_SMBXSRV\_CONNECTION\_PASS@}
+%%<[code]
+%%typedef struct {
+%%    NTTIME                 initial_connect_time;
+%%    GUID                   client_guid;
+%%    hyper                  seq_low;
+%%    DATA_BLOB              negotiate_request;
+%%} smbXsrv_connection_pass0;
+%%[code]>
+%%[block]>
+%%
+%%%%==== Internal Structures (@smbXsrv.idl@) ====
+%%==== Multi-Channel $\in$ Samba : Details from @smbXsrv.idl@ ====
+%%
+%%
+%%<[block]{layering before}
+%%<[code]
+%%smbXsrv_session
+%%  ->smbXsrv_connection
+%%[code]>
+%%[block]>
+%%
+%%<[block]{layering now}
+%%<[code]
+%%smbXsrv_session
+%%  ->smbXsrv_client
+%%    ->smbXsrv_connections
+%%[code]>
+%%[block]>
 
 
 %%% ==== Multi-Channel $\in$ Samba : Status ====
@@ -271,9 +298,11 @@ smbXsrv_session
 
 ==== Multi-Channel $\in$ Samba: TODOs ====
 
-* Replay lease breaks upon channel failure (server $\rightarrow$ client)
-* teach socket\_wrapper fd-passing ( ==> selftest...)
-* clustering integration (CTDB)
+*<2-> teach socket\_wrapper fd-passing ( ==> selftest...)
+*<3-> Replay lease breaks upon channel failure (server $\rightarrow$ client) \\ %
+_red_DANGER!_
+*<4-> clustering integration (CTDB) \\ %
+_red_DANGER!_
 
 ==== Multi-Channel $\in$ Samba : Clustering/CTDB ====
 
@@ -281,12 +310,24 @@ smbXsrv_session
 <[block]{Special considerations}
 * channels of one session only to one node !
 * do not bind connections to CTDB public IPs (can move)!
+* problem: CTDB clustering transparent to SMB clients...
 * ==> !add static IPs on public interfaces! \\ %
 use these for interface discovery
 [block]>
 }
 
+==== Multi-Channel $\in$ Samba : Clustering/CTDB ====
 
++<2->{
+<[block]{Plan for integration}
+* establish blacklist of addresses (e.g. CTDB public IPs)
+* optionally establish whitelist (interfaces ...)
+* ==> list of allowed addresses
+* only publish allowed addresses in interfaces info ioctl
+* only give more than one address in interface info when asked via an allowed address
+* deny session bind on non-allowed address
+[block]>
+}
 
 [frame]>