From: Michael Adam Date: Mon, 9 May 2016 13:09:29 +0000 (+0200) Subject: Inject slides from vault X-Git-Url: http://git.samba.org/samba.git/?p=obnox%2Fslides%2F2016-05-sambaxp.git;a=commitdiff_plain;h=e63f513263189c787577420597b42fe386598c83 Inject slides from vault --- e63f513263189c787577420597b42fe386598c83 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d38c149 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +*~ diff --git a/BASENAME b/BASENAME new file mode 100644 index 0000000..50cc2fb --- /dev/null +++ b/BASENAME @@ -0,0 +1 @@ +smb3-multi-channel-in-samba diff --git a/Logo_RH_RGB_Default.png b/Logo_RH_RGB_Default.png new file mode 100755 index 0000000..a0d8296 Binary files /dev/null and b/Logo_RH_RGB_Default.png differ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c777c72 --- /dev/null +++ b/Makefile @@ -0,0 +1,212 @@ +TARGET_BASE_NAME := $(shell cat BASENAME) + +TARGET_PR = $(TARGET_BASE_NAME).pr +TARGET_HO = $(TARGET_BASE_NAME).ho +TARGET_HO2 = $(TARGET_BASE_NAME).ho2 + +TARGET = $(TARGET_BASE_NAME) + +IMAGE_MC_V1 = smb3-mc-samba +IMAGE_MC_V2 = smb3-mc-samba-v2 +IMAGE_MC_DAEMONS_N1 = smb3-mc-daemons-n1 +IMAGE_MC_DAEMONS_N1A = smb3-mc-daemons-n1a +IMAGE_MC_DAEMONS_N2 = smb3-mc-daemons-n2 +IMAGE_MC_DAEMONS_N3 = smb3-mc-daemons-n3 +IMAGE_RDMA_V2 = smb3-rdma-samba-v2 +# IMAGE_CTDB_3N = design-ctdb-three-nodes +IMAGE_CTDB_3N_WITNESS_STEP0 = design-ctdb-three-nodes-with-witness-step0 +IMAGE_CTDB_3N_WITNESS_STEP1 = design-ctdb-three-nodes-with-witness-step1 +IMAGE_CTDB_3N_WITNESS_STEP2A = design-ctdb-three-nodes-with-witness-step2a +IMAGE_CTDB_3N_WITNESS_STEP2B = design-ctdb-three-nodes-with-witness-step2b +IMAGE_CTDB_3N_WITNESS_STEP3A = design-ctdb-three-nodes-with-witness-step3a +IMAGE_CTDB_3N_WITNESS_STEP3B = design-ctdb-three-nodes-with-witness-step3b +IMAGE_CTDB_3N_WITNESS_STEP4 = design-ctdb-three-nodes-with-witness-step4 +IMAGE_CTDB_3N_WITNESS_STEP5 = design-ctdb-three-nodes-with-witness-step5 +# IMAGE_CTDB_DAEMONS = ctdb-design-daemons +# IMAGE_SAMBA_LAYERS = samba-layers +# IMAGE_SAMBA_RELEASES = samba-release-stream +# +DIAIMAGES_BASE := $(IMAGE_MC_V1) \ + $(IMAGE_MC_V2) \ + $(IMAGE_MC_DAEMONS_N1) \ + $(IMAGE_MC_DAEMONS_N1A) \ + $(IMAGE_MC_DAEMONS_N2) \ + $(IMAGE_MC_DAEMONS_N3)\ + $(IMAGE_RDMA_V2) \ + $(IMAGE_CTDB_3N_WITNESS_STEP0) \ + $(IMAGE_CTDB_3N_WITNESS_STEP1) \ + $(IMAGE_CTDB_3N_WITNESS_STEP2A) \ + $(IMAGE_CTDB_3N_WITNESS_STEP2B) \ + $(IMAGE_CTDB_3N_WITNESS_STEP3A) \ + $(IMAGE_CTDB_3N_WITNESS_STEP3B) \ + $(IMAGE_CTDB_3N_WITNESS_STEP4) \ + $(IMAGE_CTDB_3N_WITNESS_STEP5) +# $(IMAGE_CTDB_3N) \ +# $(IMAGE_CTDB_DAEMONS) \ +# $(IMAGE_SAMBA_LAYERS) \ +# $(IMAGE_SAMBA_RELEASES) + +#DIAIMAGES_BASE := + +DIAIMAGES := $(foreach image, $(DIAIMAGES_BASE), $(image).dia) +DIAIMAGES_PNG := $(foreach image, $(DIAIMAGES_BASE), $(image).png) +DIAIMAGES_SVG := $(foreach image, $(DIAIMAGES_BASE), $(image).svg) +DIAIMAGES_FIG := $(foreach image, $(DIAIMAGES_BASE), $(image).fig) + +#IMAGES = $(DIAIMAGES_PNG) \ +# regedit.png \ +# ctdb-status.png \ +# ctdb-status-1.png \ +# ctdb-ip.png \ +# ctdb-ip-1.png \ +# smbstatus.png + +IMAGES = $(DIAIMAGES_PNG) + + +EXTRA_WIKI_FILES = \ + intro-history.wiki \ + smb3.wiki \ + multichannel.wiki \ + smb-direct.wiki \ + witness.wiki \ + persistent.wiki \ + next.wiki \ + thanks.wiki + + +CMN_DEPS = Makefile $(IMAGES) + +CMN_DEPS_WIKI = $(CMN_DEPS) document.part1.wiki document.part2.wiki document.part3.wiki content.wiki info.wiki + +CMN_DEPS_TEX = $(CMN_DEPS) beamercolorthemeobnoxsamba.sty beamerouterthemeobnoxinfolines.sty beamerthemeObnoxSamba.sty + +CONTENT_DEPS_WIKI = $(CMN_DEPS) content.wiki $(EXTRA_WIKI_FILES) + +COMMON_DEPS = $(CMN_DEPS) + +VIEWER = evince +SHOW = yes + +.SUFFIXES: .tex .pdf .dia .png .fig .svg .wiki + +.PHONY: all + +all: pr + + +.PHONY: pr $(TARGET_PR) + +pr: $(TARGET_PR) + +$(TARGET_PR): $(TARGET_PR).pdf + if [ "$(SHOW)" = "yes" ]; then $(VIEWER) $@.pdf ; fi & + +$(TARGET_PR).pdf: $(CMN_DEPS) pr.pdf + cp pr.pdf $@ + +pr.pdf: $(CMN_DEPS_TEX) pr.tex + +pr.tex: pr.wiki $(CONTENT_DEPS_WIKI) + +pr.wiki: $(CMN_DEPS_WIKI) pr.class.wiki + cat document.part1.wiki pr.class.wiki document.part2.wiki info.wiki document.part3.wiki > $@ + + +.PHONY: ho $(TARGET_HO) + +ho: $(TARGET_HO) + +$(TARGET_HO): $(TARGET_HO).pdf + if [ "$(SHOW)" = "yes" ]; then $(VIEWER) $@.pdf ; fi & + +$(TARGET_HO).pdf: $(CMN_DEPS) ho.pdf + cp ho.pdf $@ + +ho.pdf: $(CMN_DEPS_TEX) ho.tex + +ho.tex: ho.wiki $(CONTENT_DEPS_WIKI) + +ho.wiki: $(CMN_DEPS_WIKI) ho.class.wiki + cat document.part1.wiki ho.class.wiki document.part2.wiki info.wiki document.part3.wiki > $@ + + +.PHONY: ho2 $(TARGET_HO2) + +ho2: $(TARGET_HO2) + +$(TARGET_HO2): $(TARGET_HO2).pdf + if [ "$(SHOW)" = "yes" ]; then $(VIEWER) $@.pdf ; fi & + +$(TARGET_HO2).pdf: $(CMN_DEPS) ho2.pdf + cp ho2.pdf $@ + +ho2.pdf: $(CMN_DEPS_TEX) ho2.tex + +ho2.tex: ho2.wiki $(CONTENT_DEPS_WIKI) + +ho2.wiki: $(CMN_DEPS_WIKI) ho2.class.wiki + cat document.part1.wiki ho2.class.wiki document.part2.wiki info.wiki document.part3.wiki > $@ + + + +.wiki.tex: + wiki2beamer $< > $@ + +.tex.pdf: + pdflatex $< + pdflatex $< + #if [ "$(SHOW)" = "yes" ]; then $(VIEWER) $@ ; fi & + +.dia.png: + @dia -e $@ -s x1280 $< + +.dia.fig: + @dia -e $@ $< + +.dia.svg: + @dia -e $@ $< + + +.PHONY: png fig svg images + +png: $(DIAIMAGES_PNG) + +fig: $(DIAIMAGES_FIG) + +svg: $(DIAIMAGES_SVG) + +images: $(IMAGES) + + +.PHONY: archive + +archive: $(TARGET).tar.gz + +$(TARGET).tar.gz: $(TARGET).tar + @echo "Creating $@" + @rm -f $(TARGET).tar.gz + @gzip $(TARGET).tar + + +# make $(TARGET).tar phony - it vanishes by gzipping... +.PHONY: $(TARGET).tar + +$(TARGET).tar: pr ho ho2 + @echo "Creating $@" + @git archive --prefix=$(TARGET)/ HEAD > $@ + @rm -rf $(TARGET) + @mkdir $(TARGET) + @cp $(TARGET_PR).pdf $(TARGET) + @cp $(TARGET_HO).pdf $(TARGET) + @cp $(TARGET_HO2).pdf $(TARGET) + @tar rf $@ $(TARGET)/$(TARGET_PR).pdf + @tar rf $@ $(TARGET)/$(TARGET_HO).pdf + @tar rf $@ $(TARGET)/$(TARGET_HO2).pdf + + + +.PHONY: clean + +clean: + @git clean -f diff --git a/Samba_Logo_4c-grey-bbbbbb-256.png b/Samba_Logo_4c-grey-bbbbbb-256.png new file mode 100644 index 0000000..69e0591 Binary files /dev/null and b/Samba_Logo_4c-grey-bbbbbb-256.png differ diff --git a/abstract.txt b/abstract.txt new file mode 100644 index 0000000..e7ced26 --- /dev/null +++ b/abstract.txt @@ -0,0 +1,29 @@ +SMB3 Multi-Channel in Samba ... Now Really! + +Event: sambaXP 2016 + +Submission Type: Presentation + +Category: Developer + +Abstract: + +Multi-Channel is arguably the most universally useful feature of SMB3 +that can be enabled as a capability: It applies to both clustered and +non-clustered servers and is the prerequisite for supporting RDMA +transport with SMB Direct. + +I have presented about SMB3 Multi-Channel in Samba a couple of times +by now, have presented on ideas, designs and even demoed early +prototypes. Now the impending version 4.4 of Samba wil finally bring +Multi-Channel to the filed! (Small print: The majorty of the code +has been merged upstream, and we are currently working hard to +complete the missing pieces for Samba 4.4.0.) + +After recapping teh basics of Multi-Channel, the talk will explain +Samba's implementation, addressing challenges and how they have been +solved. It then details on the recent developments in the area. +Also, the challenges of integrating Multi-Channel with Samba's +CTDB clustering are discussed. The presentation will contain a demo +of the latest code. + diff --git a/beamercolorthemeobnoxsamba.sty b/beamercolorthemeobnoxsamba.sty new file mode 100644 index 0000000..5e1e18e --- /dev/null +++ b/beamercolorthemeobnoxsamba.sty @@ -0,0 +1,62 @@ +% Copyright 2004 by Madhusudan Singh +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + + +\mode + +% color definitions + +\definecolor{darkred}{rgb}{0.8,0,0} + +\definecolor{rhgrey}{RGB}{204,204,204} +\definecolor{rhgrey1}{RGB}{190,190,190} +\definecolor{rhgrey2}{RGB}{224,224,224} +\definecolor{rhred}{RGB}{204,0,0} +\definecolor{rhred2}{RGB}{173,35,57} +\definecolor{rhred3}{RGB}{151,37,55} +\definecolor{rhred4}{RGB}{138,10,7} + + +%\setbeamercolor{section in toc}{fg=black,bg=white} +\setbeamercolor{section in toc}{fg=black} +\setbeamercolor{alerted text}{fg=darkred!80!gray} +%\setbeamercolor*{palette primary}{fg=darkred!60!black,bg=gray!30!white} +\setbeamercolor*{palette primary}{fg=darkred!60!black} +%\setbeamercolor*{palette secondary}{fg=darkred!70!black,bg=gray!15!white} +\setbeamercolor*{palette secondary}{fg=darkred!70!black} +%\setbeamercolor*{palette tertiary}{bg=darkred!80!black,fg=gray!10!white} +\setbeamercolor*{palette tertiary}{bg=darkred!80!black,fg=gray!10!white} +%\setbeamercolor*{palette quaternary}{fg=darkred,bg=gray!5!white} +\setbeamercolor*{palette quaternary}{fg=darkred} + +\setbeamercolor*{sidebar}{fg=darkred,bg=gray!15!white} + +\setbeamercolor*{palette sidebar primary}{fg=darkred!10!black} +\setbeamercolor*{palette sidebar secondary}{fg=white} +\setbeamercolor*{palette sidebar tertiary}{fg=darkred!50!black} +\setbeamercolor*{palette sidebar quaternary}{fg=gray!10!white} + +%\setbeamercolor*{titlelike}{parent=palette primary} +\setbeamercolor{titlelike}{parent=palette primary,fg=darkred} +%\setbeamercolor{frametitle}{bg=gray!10!white} +%\setbeamercolor{frametitle right}{bg=gray!60!white} +%%\setbeamercolor{frametitle}{bg=white} +%%\setbeamercolor{frametitle right}{bg=white} + + +\setbeamercolor{structure}{fg=rhred4} +\setbeamercolor{local structure}{fg=rhgrey1} +\setbeamercolor{alerted text}{fg=rhred} + +\setbeamercolor*{separation line}{} +\setbeamercolor*{fine separation line}{} + +\setbeamercolor{title}{bg=} +\mode + diff --git a/beamerouterthemeobnoxinfolines.sty b/beamerouterthemeobnoxinfolines.sty new file mode 100644 index 0000000..de41bcb --- /dev/null +++ b/beamerouterthemeobnoxinfolines.sty @@ -0,0 +1,107 @@ +% Copyright 2011 by Michael Adam +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +\mode + +%\setbeamercolor*{author in head/foot}{parent=palette tertiary} +%\setbeamercolor*{author in head/foot}{parent=palette primary,bg=white} +\setbeamercolor*{author in head/foot}{parent=palette primary} +\setbeamercolor*{title in head/foot}{parent=palette secondary} +\setbeamercolor*{date in head/foot}{parent=palette primary} + +\setbeamercolor*{logo in head/foot}{parent=palette tertiary} +\setbeamercolor*{logo in head/foot}{parent=palette primary} + +\pgfdeclareimage[width=16mm]{Samba-Logo}{Samba_Logo_4c-grey-bbbbbb-256} +\pgfdeclareimage[width=16mm]{RedHat-Logo}{Logo_RH_RGB_Default} +\pgfdeclareimage[width=\paperwidth,height=\paperheight]{Samba-BG}{samba_bg} + +%%%%\defbeamertemplate*{footline}{obnoxinfolines theme} +%%\defbeamertemplate*{headline}{obnoxinfolines theme} +%%{ +%% \leavevmode% +%% \hbox{% +%% \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}% +%% \usebeamerfont{author in head/foot}\insertshortauthor~~(\insertshortinstitute) +%% \end{beamercolorbox}% +%% \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}% +%% \usebeamerfont{title in head/foot}\insertshorttitle +%% \end{beamercolorbox}% +%% \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}% +%% \usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em} +%% \insertframenumber{} / \inserttotalframenumber\hspace*{2ex} +%% \end{beamercolorbox}}% +%% \vskip0pt% +%%} + +%% %%\defbeamertemplate*{headline}{obnoxinfolines theme} +%% \defbeamertemplate*{footline}{obnoxinfolines theme} +%% { +%% \leavevmode% +%% \hbox{% +%% \begin{beamercolorbox}[wd=.5\paperwidth,ht=5ex,dp=1ex,left]{xy}% +%% \hspace*{2ex} \hbox{\pgfuseimage{Samba-Logo}} +%% \end{beamercolorbox}% +%% \begin{beamercolorbox}[wd=.5\paperwidth,ht=5ex,dp=1ex,right]{xy}% +%% \hbox{\pgfuseimage{sernet}} +%% \hspace*{2ex}\end{beamercolorbox}}% +%% \vskip0pt% +%% } + +%%\defbeamertemplate*{headline}{obnoxinfolines theme} +\defbeamertemplate*{footline}{obnoxinfolines theme} +{ + \leavevmode% + \hbox{% + \begin{beamercolorbox}[wd=.2\paperwidth,ht=5ex,dp=1ex,left]{xy}% + \hspace*{2ex} \hbox{\pgfuseimage{Samba-Logo}} + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.3\paperwidth,ht=5ex,dp=1ex,center]{author in head/foot}% + \usebeamerfont{author in head/foot}\scriptsize\insertshortauthor{}\hspace*{2ex} + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.3\paperwidth,ht=5ex,dp=1ex,center]{author in head/foot}% + \usebeamerfont{author in head/foot}\scriptsize% + \insertshorttitle{} (\insertframenumber{}/\inserttotalframenumber)\hspace*{2ex} + \end{beamercolorbox}% + \begin{beamercolorbox}[wd=.2\paperwidth,ht=5ex,dp=1ex,right]{xy}% + \hbox{\pgfuseimage{RedHat-Logo}} + \hspace*{2ex}\end{beamercolorbox}}% + \vskip0pt% +} + + +%%\addtobeamertemplate{frametitle}{ +%% \begin{textblock*}{\paperwidth}(-4mm,0pt) +%% \includegraphics[width=\paperwidth,height=1cm]{samba_bg_cut} +%% \end{textblock*} +%%} +%% +%%\addtobeamertemplate{footline}{ +%% \begin{textblock*}{\paperwidth}(0pt,0pt) +%% \includegraphics[width=\paperwidth,height=0.5cm]{samba_bg_cut} +%% \end{textblock*} +%%} + + +%%\setbeamersize{text margin left=1em,text margin right=1em} + +\usepackage{textpos} + +\addtobeamertemplate{title page} +{ + \begin{textblock*}{\paperwidth}(-3em,0pt) + \pgfuseimage{Samba-BG} + %\includegraphics[width=\paperwidth,height=\paperheight]{samba_bg.png} + \end{textblock*} +} + +%\setbeamertemplate{background canvas}{\pgfuseimage{Samba-BG}} + +\mode + diff --git a/beamerthemeObnoxSamba.sty b/beamerthemeObnoxSamba.sty new file mode 100644 index 0000000..49a1418 --- /dev/null +++ b/beamerthemeObnoxSamba.sty @@ -0,0 +1,81 @@ +% Copyright 2011 by Michael Adam +% Copyright 2004 by Madhusudan Singh +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + + +\mode + +\useoutertheme{obnoxinfolines} +\usecolortheme{obnoxsamba} + +\setbeamertemplate{navigation symbols}{} + +%%\useinnertheme[shadow=true]{rounded} +\useinnertheme{rectangles} +% centered squares: +%\setbeamertemplate{itemize item}{\rule[0.7ex]{0.7ex}{0.7ex}} +\setbeamertemplate{itemize item}{\rule[0.5ex]{0.5ex}{0.5ex}} +%\setbeamertemplate{itemize subitem}{\small\rule[0.6ex]{0.6ex}{0.6ex}} +\setbeamertemplate{itemize subitem}{\small\rule[0.5ex]{0.5ex}{0.5ex}} +\setbeamertemplate{itemize subsubitem}{\small\rule[0.5ex]{0.5ex}{0.5ex}} + + +\setbeamerfont{block title}{size={}} +%\setbeamercolor{titlelike}{parent=structure,bg=white} +\setbeamercolor{titlelike}{parent=structure} + + + +% blocks +\setbeamercolor{block title}{fg=white,bg=rhred4!90} +\setbeamercolor{block title alerted}{use=alerted text,use=block title,fg=alerted text.fg!30!block title.fg,bg=block title.bg} +\setbeamercolor{block title example}{use=example text,use=block title,fg=example text.fg!30!block title.fg,bg=block title.bg} + +\setbeamercolor{block body}{parent=normal text,bg=rhgrey2!50} +\setbeamercolor{block body alerted}{parent=normal text,use=block title alerted,use=block body,fg=alerted text.fg!50!fg,bg=block body.bg} +\setbeamercolor{block body example}{parent=normal text,use=block title example,use=block body,fg=example text.fg!40!fg,bg=block body.bg} + +\setbeamertemplate{blocks}[rounded] +% blocks + +\newenvironment{sambabg}{ + \setbeamertemplate{background canvas}% + {\includegraphics[width=\paperwidth,height=\paperheight]{samba_bg.png}} +} +{ +} + +\newcommand{\Sambabg}[1]{ + \begin{sambabg}% + #1% + \end{sambabg}% +} + +\renewcommand{\sectionpage}{\usebeamertemplate*{section page}} + +\newcommand{\fancySectionOpens}{ +\AtBeginSection[]% +{ + \Sambabg{\frame{\sectionpage}} +} +} + +%\fancySectionOpens + + +%\newcommand{\fancyPartOpens}{ +%\AtBeginPart% +%{ +% \Sambabg{\frame{\partpage}} +%} +%} + +%\fancyPartOpens + +\mode diff --git a/content.wiki b/content.wiki new file mode 100644 index 0000000..f58c1b7 --- /dev/null +++ b/content.wiki @@ -0,0 +1,34 @@ +% +% colors: +% _blue_text text_ +% _red_text text_ +% + +==== agenda ==== + +* History of SMB +* History of Samba +* SMB 2+ +* SMB 2+ in Samba +* SMB3 Multi-Channel +* Outlook: SMB3 over RDMA +* Outlook: SMB3 Clustering/Witness +* Outlook: SMB3 Persistent Handles + +[frame]> + +>>>intro-history.wiki<<< + +>>>smb3.wiki<<< + +>>>multichannel.wiki<<< + +>>>smb-direct.wiki<<< + +>>>witness.wiki<<< + +>>>persistent.wiki<<< + +>>>next.wiki<<< + +>>>thanks.wiki<<< diff --git a/design-ctdb-three-nodes-with-witness-step0.dia b/design-ctdb-three-nodes-with-witness-step0.dia new file mode 100644 index 0000000..ab98e2b Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step0.dia differ diff --git a/design-ctdb-three-nodes-with-witness-step1.dia b/design-ctdb-three-nodes-with-witness-step1.dia new file mode 100644 index 0000000..e3a1ed3 Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step1.dia differ diff --git a/design-ctdb-three-nodes-with-witness-step2a.dia b/design-ctdb-three-nodes-with-witness-step2a.dia new file mode 100644 index 0000000..2a1f4a8 Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step2a.dia differ diff --git a/design-ctdb-three-nodes-with-witness-step2b.dia b/design-ctdb-three-nodes-with-witness-step2b.dia new file mode 100644 index 0000000..fdb33a4 Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step2b.dia differ diff --git a/design-ctdb-three-nodes-with-witness-step3a.dia b/design-ctdb-three-nodes-with-witness-step3a.dia new file mode 100644 index 0000000..d3683b0 Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step3a.dia differ diff --git a/design-ctdb-three-nodes-with-witness-step3b.dia b/design-ctdb-three-nodes-with-witness-step3b.dia new file mode 100644 index 0000000..12475c6 Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step3b.dia differ diff --git a/design-ctdb-three-nodes-with-witness-step4.dia b/design-ctdb-three-nodes-with-witness-step4.dia new file mode 100644 index 0000000..6ba4363 Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step4.dia differ diff --git a/design-ctdb-three-nodes-with-witness-step5.dia b/design-ctdb-three-nodes-with-witness-step5.dia new file mode 100644 index 0000000..fda2dc9 Binary files /dev/null and b/design-ctdb-three-nodes-with-witness-step5.dia differ diff --git a/document.part1.wiki b/document.part1.wiki new file mode 100644 index 0000000..a2d1454 --- /dev/null +++ b/document.part1.wiki @@ -0,0 +1 @@ +<[autotemplate] diff --git a/document.part2.wiki b/document.part2.wiki new file mode 100644 index 0000000..837bdf4 --- /dev/null +++ b/document.part2.wiki @@ -0,0 +1,20 @@ +%documentclass={beamer} +usepackage=[utf8]{inputenc} +%usepackage={listings} +%usepackage={wasysym} +usetheme={ObnoxSamba} +usepackage={pgf} +usepackage={multimedia} +%%%\usepackage{verbatim} +setbeamercovered={dynamic} +%setbeamercovered={transparent} +titleframe=True +% note: currently a custom mod to wiki2beamer +titleframeopts=[plain] +% default info: +title=[shrt ttl]{Long Title \\ \ } +subtitle={Event} +date={custom date} +author={The Author} +institute={Affiliation} +% custom info can follow here: diff --git a/document.part3.wiki b/document.part3.wiki new file mode 100644 index 0000000..9cabda5 --- /dev/null +++ b/document.part3.wiki @@ -0,0 +1,3 @@ +[autotemplate]> + +>>>content.wiki<<< diff --git a/feet-sand-1280.png b/feet-sand-1280.png new file mode 100644 index 0000000..ebd2a53 Binary files /dev/null and b/feet-sand-1280.png differ diff --git a/ho.class.wiki b/ho.class.wiki new file mode 100644 index 0000000..b714b7d --- /dev/null +++ b/ho.class.wiki @@ -0,0 +1,2 @@ +documentclass=[handout]{beamer} +usepackage={pgfpages} diff --git a/ho2.class.wiki b/ho2.class.wiki new file mode 100644 index 0000000..44dc094 --- /dev/null +++ b/ho2.class.wiki @@ -0,0 +1,3 @@ +documentclass=[handout]{beamer} +usepackage={pgfpages} +pgfpagesuselayout={2 on 1} diff --git a/info.wiki b/info.wiki new file mode 100644 index 0000000..3f69fee --- /dev/null +++ b/info.wiki @@ -0,0 +1,5 @@ +title=[SMB3 MC in Samba]{SMB3 Multi-Channel in Samba\\ \ } +subtitle={... Now Really!} +date={2016-05-11} +author={Michael Adam} +institute={Red Hat / samba.org} diff --git a/intro-history.wiki b/intro-history.wiki new file mode 100644 index 0000000..f9a5e07 --- /dev/null +++ b/intro-history.wiki @@ -0,0 +1,93 @@ +<[sambabg] + +==== ====[plain] + +<[center] +\Large +'''Intro / History''' +[center]> + +[frame]> +[sambabg]> + +==== SMB - the alien protocol ==== + +* SMB - Server Message Block +* 1983: created by Barry Feigenbaum, IBM \\ % +Turn DOS INT 21h local file access into network +* Microsoft: +** Lan Manager (from 1990) +** Windows for Workgroups (from 1992) +* On top of NetBIOS, TCP port 139 +* from Windows 2000: directly on TCP port 445 + +==== SMB versions $>$ 1 ==== + +* SMB 2.0: 2006 - Windows Vista +* SMB 2.1: 2009 - Windows 7/Server 2008R2 +* SMB 3.0: 2012 - Windows 8/Server 2012 +* SMB 3.0.2: 2014 - Windows 8.1/Server 2012R2 +* SMB 3.1.1: 2015 - Windows 10/Server 2016 + +==== Enter Samba ... ==== + +* ... implements SMB ... +* ... ''old'' Open Source project ... +* ... opens windows to a wider world ... \smiley +* ... + +==== Samba... ==== + +<[center] +<<>> +[center]> + + +==== Samba... ==== + +<[block] +{According to openhub.net, Samba} +"...has had 101,614 commits made by 363 contributors +representing 1,637,229 lines of code" +[block]> +* present on millions of NAS devices and routers +* one of the oldest OSS projects (24 years) +* large codebase and small but very active development team + +==== Samba - History ==== + +* 1992/01: start of the project +* 1.5: 1993/12: (nbserver) +* 1.9.16: 1996/05: CVS, Samba Team +* 2.0: 1999/01: domain-member, +SWAT +* 2.2: 2001/04: NT4-DC +* 3.0: 2003/09: AD-member, Samba4 project started +* 3.2: 2008/07: GPLv3, experimental clustering +* 3.3: 2009/01: clustering [with CTDB] +* 3.4: 2009/07: merged S3+S4 code +* 3.5: 2010/03: experimental SMB 2.0 +* 3.6: 2011/09: SMB 2.0 +* 4.0: 2012/12: AD/DC, SMB 2.0 durable handles, 2.1, 3.0 +* 4.1: 2013/10: stability +* 4.2: 2015/03: AD trusts, SMB2.1 leases, perf, include CTDB +* 4.3: 2015/09: spotlight, new FileChangeNotify, SMB 3.1.1 +* 4.4: 2016/03: Multi-Channel core, ... + +==== Samba - Today ==== + +* Performant, scalable SMB file server \\ % + ==> Ongoing SMB3 implementation +* Active Directory domain member with @winbindd@ \\ % + ==> flexible, performant, clusterable +* Full Active Directory Domain Controller \\ % + (Kerberos KDC, LDAP, DNS, Trusted Domains, etc) \\ % + "AWS Directory Service" is powered by Samba AD +* Established SMB clients for Linux: \\ % + cifs.ko, libsmbclient (nautilus, dolphin, konqueror) +* Comprehensive testsuite \\ % + ==> wrappers now published outside of Samba: cwrap.org +* IDL compiler, autogenerated DCE/RPC code \\ % + ==> another 1,141,095 lines of code % wc -l bin/default/{source3,source4,""}/librpc/gen_ndr/{*.c,*.h} +* Powerful python(3) bindings, partly autogenerated + +[frame]> diff --git a/multichannel.wiki b/multichannel.wiki new file mode 100644 index 0000000..93ab0b2 --- /dev/null +++ b/multichannel.wiki @@ -0,0 +1,304 @@ +<[sambabg] + +==== ====[plain] + +<[center] +\Large +'''Multi-Channel''' +[center]> + +[frame]> +[sambabg]> + + +==== Multi-Channel - General ==== + +<[block]{multiple transport connections in one SMB(3) session} +* '''channel''': transport connection bound to a session +* client decides which connections to bind and to use +* session is valid as long as at least one channel is intact +[block]> + +<[block]{two purposes} +# increase throughput: +#* use multiple connections of same type +# improve fault tolerance: +#* channel failure: replay/retry detection +%%#* session is valid as long as one channel is still intact +[block]> + +==== Multi-Channel - General ==== + +<[block]{use case: channels of different type/quality} +* use only the channels of best quality +* fall back to inferior channels if superior ones fail +* e.g.: laptop switching between WiFi and LAN (?) +[block]> + +==== Multi-Channel - Windows/Protocol ==== + +# establish initial session on TCP connection +# find interfaces with interface discovery: \\ % +@FSCTL\_QUERY\_NETWORK\_INTERFACE\_INFO@ +# bind additional TCP (or later RDMA) connection (channel) to established SMB3 session (''session bind'') +# Windows: uses connections of same (and best) quality +# Windows: binds only to a single node +# replay / retry mechanisms, epoch numbers + +==== Multi-Channel $\in$ Samba ==== + +<[block]{samba/smbd: multi-process} +* '''Originally:''' process $\Leftrightarrow$ TCP connection +*<0> '''Idea:''' transfer new TCP connection to existing smbd +*<0> '''How?''' ==> use fd-passing (sendmsg/recvmsg) +*<0> '''When?''' +** ''Natural choice'': at SessionSetup (Bind) +** !Idea!: as early as possible, based on ClientGUID \\ % +==> per ClientGUID single process model +%%*<0> !But!: This may not work! \frownie +[block]> + +==== Multi-Channel $\in$ Samba ==== + +<[center] +<<>> +[center]> + +==== Multi-Channel $\in$ Samba ==== + +<[block]{samba/smbd: multi-process} +* '''Originally:''' process $\Leftrightarrow$ TCP connection +* '''Idea:''' transfer new TCP connection to existing smbd +*<0> '''How?''' ==> use fd-passing (sendmsg/recvmsg) +*<0> '''When?''' +** ''Natural choice'': at SessionSetup (Bind) +** !Idea!: as early as possible, based on ClientGUID \\ % +==> per ClientGUID single process model +%%*<0> !But!: There may be problems! ... \frownie +[block]> + + +==== Multi-Channel $\in$ Samba ==== + +-<1>{ +<[center] +<<>> +[center]> +} + +-<2>{ +<[center] +<<>> +[center]> +} + +-<3>{ +<[center] +<<>> +[center]> +} + + +==== Multi-Channel $\in$ Samba ==== + +<[block]{samba/smbd: multi-process} +* '''Originally:''' process $\Leftrightarrow$ TCP connection +* '''Idea:''' transfer new TCP connection to existing smbd +* '''How?''' ==> use fd-passing (sendmsg/recvmsg) +*<2-> '''When?''' +** ''Natural choice'': at SessionSetup (Bind) +** !Idea!: as early as possible, based on ClientGUID \\ % +==> per ClientGUID single process model +%%*<0> !But!: There may be problems! ... \frownie +[block]> + + +==== Multi-Channel $\in$ Samba : pass by ClientGUID ==== + +<[center] +%%<<>> +<<>> +[center]> + + +==== Multi-Channel $\in$ Samba : pass by ClientGUID ==== + +<[block]{Wait a minute - what about performance?} +* Single process... +* But we use short-lived worker-pthreads for I/O ops! +* Benchmarks and tunings still to be done. +[block]> + +%%%% ==== Multi-Channel $\in$ Samba ==== +%%%% +%%%% <[block]{samba/smbd: multi-process} +%%%% * '''Orignally:''' process $\Leftrightarrow$ TCP connection +%%%% * '''Idea:''' transfer new TCP connection to existing smbd +%%%% * '''How?''' ==> use fd-passing (sendmsg/recvmsg) +%%%% * '''When?''' +%%%% ** ''Natural choice'': at SessionSetup (Bind) +%%%% ** ''Idea'': as early as possible, based on ClientGUID \\ % +%%%% ==> per ClientGUID single process model +%%%% * !But!: There may be problems! ... \frownie +%%%% [block]> +%%%% +%%%% +%%%% ==== The Relevance of the ClientGUID ==== +%%%% +%%%% +<1->{ +%%%% <[block]{Assumption was:} +%%%% * All channels in a session have the same ClientGUID +%%%% * The server enforces this +%%%% [block]> +%%%% } +%%%% +%%%% +<2->{ +%%%% <[block]{Evidence from [MS-SMB2]:} +%%%% * 3.3.5.9 Receiving an SMB2 CREATE Request: +%%%% ** sets Open.ClientGuid to Connection.ClientGuid +%%%% ** replay detection checks \\ % +%%%% Open.ClientGuid == Connection.ClientGuid +%%%% * 3.3.5.9.7/12 Durable (v2) Reconnect Create Context: +%%%% ** check Open.ClientGuid == Connection.ClientGuid +%%%% [block]> +%%%% } +%%%% +%%%% +<3->{ +%%%% <[block]{The truth is...} +%%%% The Windows server does not enforce it! +%%%% [block]> +%%%% } +%%%% +%%%% +%%%% ==== The Relevance of the ClientGUID ==== +%%%% +%%%% <[block]{Windows behaviour according to MS} +%%%% * The server does NOT enforce same ClientGUID in a session. +%%%% * But clients can be expected to do it. +%%%% * But it is not explicitly documented like this. +%%%% [block]> +%%%% +%%%% +<2->{ +%%%% <[block]{The good news:} +%%%% There will be documentation notes: +%%%% * Things will not work as expected when clients behave differently. +%%%% * It is OK for a server to enforce equality of ClientGUID within session. +%%%% [block]> +%%%% } +%%%% +%%%% ==== More digression on ClientGUID : Leases ==== +%%%% +%%%% <[block]{According to [MS-SMB2]} +%%%% * Server Global data Structures: +%%%% ** GlobalLeaseTableList indexed by ClientGuid (3.3.1.5) +%%%% *** LeaseTable indexed by LeaseKey (3.3.1.11) +%%%% * Requesting a lease (3.3.1.4): +%%%% ** Object store takes an abstract ClientLeaseId +%%%% *** Win7: combination of ClientGuid and LeaseKey +%%%% *** Win8+: LeaseKey +%%%% * Object store indicates a lease break (3.3.4.7): +%%%% ** smb server uses ClientGuid and LeaseKey given by ObjectStore +%%%% +%%%% ==> !Inconsistent\! -- What to do?! +%%%% [block]> +%%%% +%%%% +%%%% ==== Multi-Channel $\in$ Samba : pass by SessionID (plan B) ==== +%%%% +%%%% <[center] +%%%% <<>> +%%%% [center]> + + +==== Multi-Channel $\in$ Samba : Status ==== + ++<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] +# 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 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@ ==== + +<[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 ==== +%%% +%%% <[block]{WIP code} +%%% * @git://git.samba.org/obnox/samba/samba-obnox.git@ +%%% * branch: @master-multi-channel-obnox@ +%%% [block]> + + +==== Multi-Channel $\in$ Samba: TODOs ==== + +* Replay lease breaks upon channel failure (server $\rightarrow$ client) +* teach socket\_wrapper fd-passing ( ==> selftest...) +* clustering integration (CTDB) + +==== Multi-Channel $\in$ Samba : Clustering/CTDB ==== + ++<2->{ +<[block]{Special considerations} +* channels of one session only to one node ! +* do not bind connections to CTDB public IPs (can move)! +* ==> !add static IPs on public interfaces! \\ % +use these for interface discovery +[block]> +} + + + +[frame]> + +<[sambabg] + + +==== ====[plain] + +<[center] +\Large +Multi-Channel Demo +[center]> + +[frame]> +[sambabg]> diff --git a/next.wiki b/next.wiki new file mode 100644 index 0000000..23ef8ff --- /dev/null +++ b/next.wiki @@ -0,0 +1,22 @@ +<[sambabg] + +==== ====[plain] + +<[center] +\Large +'''Wrapping up...''' +[center]> + +[frame]> +[sambabg]> + +==== What's next ? ==== + +* SMB3 Multi-Channel: finishing moves +* SMB3 Witness service: async RPC +* SMB3 Persistent Handles / CA +* SMB3 over RDMA (SMB direct) +* Multi-Protocol access (NFS, SMB...) +* SMB2+ Unix Extensions ==> _red_See Jeremy's Talk!_ + +[frame]> diff --git a/persistent.wiki b/persistent.wiki new file mode 100644 index 0000000..41a35a6 --- /dev/null +++ b/persistent.wiki @@ -0,0 +1,30 @@ +<[sambabg] + +==== ====[plain] + +<[center] +\Large +'''Outlook: persistent handles''' +[center]> + +[frame]> +[sambabg]> + +==== Persistent File Handles ==== + +* available on 'Continuously Available' SMB3 shares +* allows disconnected clients to reconnect +* like durable handles, but with strong guarantees! + +==== Persistent Handles : Challenges ==== + +* protocol is easy +* persistence/guarantees are hard +* strategies: +** filesystem spcific +** generic, with tdb extensions + + + +[frame]> + diff --git a/pr.class.wiki b/pr.class.wiki new file mode 100644 index 0000000..305180b --- /dev/null +++ b/pr.class.wiki @@ -0,0 +1 @@ +documentclass={beamer} diff --git a/redhat-logo.png b/redhat-logo.png new file mode 100644 index 0000000..3ee786b Binary files /dev/null and b/redhat-logo.png differ diff --git a/samba-kisses-better-selection.jpg b/samba-kisses-better-selection.jpg new file mode 100644 index 0000000..dc60f9b Binary files /dev/null and b/samba-kisses-better-selection.jpg differ diff --git a/samba-layers-exp.jpg b/samba-layers-exp.jpg new file mode 100644 index 0000000..c103aeb Binary files /dev/null and b/samba-layers-exp.jpg differ diff --git a/samba.png b/samba.png new file mode 100644 index 0000000..fdc9c84 Binary files /dev/null and b/samba.png differ diff --git a/samba_bg.png b/samba_bg.png new file mode 100644 index 0000000..51a96b5 Binary files /dev/null and b/samba_bg.png differ diff --git a/samba_bg_cut.png b/samba_bg_cut.png new file mode 100644 index 0000000..b14b7ec Binary files /dev/null and b/samba_bg_cut.png differ diff --git a/samba_bg_cut.xcf b/samba_bg_cut.xcf new file mode 100644 index 0000000..32bf764 Binary files /dev/null and b/samba_bg_cut.xcf differ diff --git a/smb-direct.wiki b/smb-direct.wiki new file mode 100644 index 0000000..0087872 --- /dev/null +++ b/smb-direct.wiki @@ -0,0 +1,47 @@ +<[sambabg] + +==== ====[plain] + +<[center] +\Large +'''Outlook: SMB Direct''' +[center]> + +[frame]> +[sambabg]> + + +==== SMB Direct : SMB3 over RDMA ==== + +<[block]{Windows/Protocol} +* requires multi-channel +* start with TCP, bind an RDMA channel +* SMB Direct: small wrapper protocol to put SMB into RDMA +* reads and writes use RDMA write/read +* protocol/metadata via send/receive +[block]> + +==== SMB Direct $\in$ Samba ==== + +* wireshark dissector: [DONE] + +* Samba: +** prereq: multi-channel [ess.DONE] +** buffer / transport abstractions [WIP] + +* _red_problem_ with RDMA libraries: +** not fork safe +** no fd-passing + +* ==> central RDMA proxy +** PoC/dev: user space daemon +** production: kernel module + + +==== SMB Direct $\in$ Samba ==== + +<[center] +<<>> +[center]> + +[frame]> diff --git a/smb3-mc-daemons-n1.dia b/smb3-mc-daemons-n1.dia new file mode 100644 index 0000000..0b014e8 Binary files /dev/null and b/smb3-mc-daemons-n1.dia differ diff --git a/smb3-mc-daemons-n1a.dia b/smb3-mc-daemons-n1a.dia new file mode 100644 index 0000000..727214d Binary files /dev/null and b/smb3-mc-daemons-n1a.dia differ diff --git a/smb3-mc-daemons-n2.dia b/smb3-mc-daemons-n2.dia new file mode 100644 index 0000000..445f9f0 Binary files /dev/null and b/smb3-mc-daemons-n2.dia differ diff --git a/smb3-mc-daemons-n3.dia b/smb3-mc-daemons-n3.dia new file mode 100644 index 0000000..9b27f28 Binary files /dev/null and b/smb3-mc-daemons-n3.dia differ diff --git a/smb3-mc-samba-v2.dia b/smb3-mc-samba-v2.dia new file mode 100644 index 0000000..d9d0af0 Binary files /dev/null and b/smb3-mc-samba-v2.dia differ diff --git a/smb3-mc-samba-v2.old.dia b/smb3-mc-samba-v2.old.dia new file mode 100644 index 0000000..d77e334 Binary files /dev/null and b/smb3-mc-samba-v2.old.dia differ diff --git a/smb3-mc-samba.dia b/smb3-mc-samba.dia new file mode 100644 index 0000000..b5c23db Binary files /dev/null and b/smb3-mc-samba.dia differ diff --git a/smb3-mc-samba.old.dia b/smb3-mc-samba.old.dia new file mode 100644 index 0000000..08877a0 Binary files /dev/null and b/smb3-mc-samba.old.dia differ diff --git a/smb3-rdma-samba-v2.dia b/smb3-rdma-samba-v2.dia new file mode 100644 index 0000000..88f905f Binary files /dev/null and b/smb3-rdma-samba-v2.dia differ diff --git a/smb3-rdma-samba-v2.old.dia b/smb3-rdma-samba-v2.old.dia new file mode 100644 index 0000000..a5cc6b5 Binary files /dev/null and b/smb3-rdma-samba-v2.old.dia differ diff --git a/smb3-rdma-samba.dia b/smb3-rdma-samba.dia new file mode 100644 index 0000000..413197b Binary files /dev/null and b/smb3-rdma-samba.dia differ diff --git a/smb3.wiki b/smb3.wiki new file mode 100644 index 0000000..ce1e0f4 --- /dev/null +++ b/smb3.wiki @@ -0,0 +1,50 @@ +<[sambabg] + +==== ====[plain] + +<[center] +\Large +'''SMB3''' +[center]> + +[frame]> +[sambabg]> + +==== SMB3 ==== + +<[block]{SMB3 (2012) introduced SMB clustering:} +* Clustering - Witness +* Continuous Availability - Persistent Handles +* Scale Out +[block]> + +<[block]{Additionally:} +* Transport encryption +* Multi-Channel +* RDMA transport (SMB Direct) +[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] +** persistent file handles [design/PoC] +** multi-channel [4.4 (experimental)] +** SMB direct [design] +** cluster features [design] +*** witness [WIP+] +* SMB 3.0.2: [4.3] +* SMB 3.1.1: +** negotiate contexts, preauth: [4.3] + +[frame]> diff --git a/thanks.wiki b/thanks.wiki new file mode 100644 index 0000000..cb381ae --- /dev/null +++ b/thanks.wiki @@ -0,0 +1,37 @@ +<[sambabg] +==== Thanks for your attention! ====[plain] + +%\transdissolve + +<[center] +<[columns] +[[[.6\textwidth]]] + +{\Large + +Questions? + +--*3em-- + +@obnox\@samba.org@ + +%--*.5em-- +% +%@madam\@redhat.com@ + +--*.5em-- + +@obnox\@redhat.com@ + +} +[[[.3\textwidth]]] +<<>> + +[columns]> +[center]> + +\footnotesize +@https://git.samba.org/?p=obnox/slides/2016-04-vault.git@ + +[frame]> +[sambabg]> diff --git a/witness.wiki b/witness.wiki new file mode 100644 index 0000000..7f2fd3a --- /dev/null +++ b/witness.wiki @@ -0,0 +1,89 @@ +<[sambabg] + +==== ====[plain] + +<[center] +\Large +'''Outlook: clustering / witness''' +[center]> + +[frame]> +[sambabg]> + +==== Witness - General ==== + +* New DCE/RPC Service to “witness” availability of IPs, shares, ... +* ==> Faster fail-over of clients in the cluster +* Prompt, explicit, and controlled notifications about failures \ % + (CTDB tickle-ACKs are implicit) +* Available since SMB3 (Windows 8 / Windows Server 2012) + +==== Witness - Failover with SMB3 in a Samba/CTDB cluster ==== + +-<1>{ +<[center] +<<>> +[center]> +} + +-<2>{ +<[center] +<<>> +[center]> +} + +-<3>{ +<[center] +<<>> +[center]> +} + +-<4>{ +<[center] +<<>> +[center]> +} + +-<5>{ +<[center] +<<>> +[center]> +} + +-<6>{ +<[center] +<<>> +[center]> +} + +-<7>{ +<[center] +<<>> +[center]> +} + +-<8>{ +<[center] +<<>> +[center]> +} + +==== Witness - Samba ==== + +<[block]{Currently under development in Samba} +* PoC implementation available +* TODO(wip): new _red_async_ DCE/RPC infrastructure +* {\footnotesize @https://wiki.samba.org/index.php/Samba3/ \\ % + SMB2\#Witness\_Notification\_Protocol@} +* WIP branch: \\ % + {\footnotesize @https://git.samba.org/?p=gd/samba/.git;a=shortlog; \\ % + h=refs/heads/master-witness@} +[block]> + +<[block]{Samba Witness service will cause Windows clients to reconnect...} +* when client admin tool is used +* when CTDB (or any other cluster resource control manager) moves resources or IP addresses +[block]> + +[frame]> +