\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{ven. nov. 8 10:32:39 CET 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rfc4373},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Bulk Update/Replication Protocol},
CreationDate={D:20131108103239},
ModDate={D:20131108103239},
Keywords={LDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge rfc4373 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Bulk Update/Replication Protocol}
 
\vspace{10mm}
 
\hspace{1mm}  LBURP permet à un client LDAP d’effectuer des modifications/réplications auprès d’un serveur LDAP. LBURP définis un jeu opérations de modification dans une paire d’opérations étendue. Ces opérations contiennent chacune un numéro de séquence et une liste d’une ou plusieurs opérations de modification à effectuer.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Initialisation }
 
\
 
\hspace{1mm}  Le protocole est initié quand un fournisseur envoie \textbf{StartLBURPRequest} à un consommateur, qui notifie qu’un flux de \textbf{LBURPUpdateRequests} va suivre. Le fournisseur associe les sémantiques avec ce flux de requêtes en incluant l’OID du style de mise à jours/réplication dans le \textbf{StartLBURPRequest}. Le consommateur répond avec un message \textbf{StartLBURPResponse}
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge flux de mise à jours }
 
\
 
\hspace{1mm}  Après qu’un consommateur a répondu avec un \textbf{StartLBURPResponse}, le fournisseur envoie un flux de messages \textbf{LBURPUpdateRequest} au consommateur. Les messages dans ce flux peuvent être envoyés de manière asynchrone pour maximiser l’efficacité du transfert. Le consommateur répond à chaque \textbf{LBURPUpdateRequest} avec un message \textbf{LBURPUpdateResponse}.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge LBURPUpdateRequest }
 
\
 
\hspace{1mm}  Chaque \textbf{LBURPUpdateRequest} contient un numéro de séquence identifiant sa position relative dans le flux. et un \textbf{UpdateOperationList} contenant la liste ordonnée des opérations à appliquer au DIT.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge LBURPUpdateResponse }
 
\
 
\hspace{1mm}  Quand un consommateur a traité les opérations d’une \textbf{UpdateOperationList}, il envoie un \textbf{LBURPUpdateResponse} au fournisseur indiquant le succès ou l’échec des opérations.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Fin de mise à jours }
 
\
 
\hspace{1mm}  Une fois que le fournisseur a envoyé tous ses \textbf{LBURPUpdateRequest}, il envoie un message \textbf{EndLBURPRequest} au consommateur pour terminer le flux. Une fois reçu toutes les requêtes \textbf{LBURPOperation} et après avoir reçu le \textbf{EndLBURPRequest}, le consommateur répond avec un \textbf{EndLBURPResponse}.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Applicabilité du protocole }
 
\
 
\hspace{1mm}  LBURP est conçu pour faciliter les mise à jours en masse des serveurs LDAP. Il peut aussi être utilisé pour synchroniser les annuaires maître et esclave. Il n’est pas conçus dans l’optique de fournir des réplication multi-master.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Description du flux }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} F]{= Fournisseur}
\item[\hspace{1mm} C]{= Consommateur}
\item[\hspace{1mm} F -> C]{StartLBURPRequest. Contient l’OID pour le stype d’updte LBURP}
\item[\hspace{1mm} C -> F]{StartLBURPResponse. Contient une instruction optionnelle maxOperations}
\item[\hspace{1mm} F -> C]{Un flux de mises à jours consistant de 0 ou plusieurs LBURPUpdateRequest. Les requêtes peuvent être envoyés de manière asynchrone. Contient le numéro de séquence, et un updateOperationList d’opérations de mises à jours.}
\item[\hspace{1mm} C -> F]{LBURPUpdateResponse. Envoyé quand le consommateur à finit le traitement d’une updateOperationList}
\item[\hspace{1mm} F -> C]{EndLBURPRequest. Envoyé par le fournisseur quand il a envoyé tous ses LBURPUpdateRequest. Contient un numéro de séquence supérieur au dernier LBURPUpdateRequest envoyé.}
\item[\hspace{1mm} C -> F]{EndLBURPResponse. Envoyé par le consommateur une fois toutes les LBURPOperation terminées et après avoir reçu EndLBURPRequest.}
\end{description}
 
\vspace{1cm}{\huge Elements du protocole }
 
\
 
\hspace{1mm}  LBURP utilise 2 messages LDAP extendedRequest: \textbf{StartLBURPRequest} et \textbf{EndLBURPRequest} pour initier et terminer le protocole. Un troisième extendedRequest, \textbf{LBURPUpdateRequest} est utilisé pour envoyer les opérations au consommateur.
\vspace{5mm} \\
 
 
{\ttfamily
ExtendedRequest ::= \texttt{[}APPLICATION 23\texttt{]} SEQUENCE \{\\ \hspace{2mm}requestName \texttt{[}0\texttt{]} LDAPOID,\\ \hspace{2mm}requestValue \texttt{[}1\texttt{]} OCTET STRING OPTIONAL\\ \}\\ \hspace{2mm}\\ ExtendedResponse ::= \texttt{[}APPLICATION 24\texttt{]} SEQUENCE \{\\ COMPONENTS of LDAPResult,\\ responseName \texttt{[}10\texttt{]} LDAPOID OPTIONAL,\\ response \texttt{[}11\texttt{]} OCTET STRING OPTIONAL\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge StartLBURPRequest }
 
\
 
\hspace{1mm} requestName vaut \textbf{1.3.6.1.1.17.1} et requestValue contient la valeur suivante encodé BER:
 
{\ttfamily
StartLBURPRequestValue ::= SEQUENCE \{\\ \hspace{2mm}updateStyleOID LDAPOID\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge updateStyleOID }
 
\
 
\hspace{1mm}  Identifie de manière unique le style de mise à jours à utiliser. \textbf{LBUPR Incremental Update} vaut \textbf{1.3.6.1.1.17.7}
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge StartLBURPResponse }
 
\
 
\hspace{1mm} responseName vaut \textbf{1.3.6.1.1.17.2} et response contient la valeur suivante encodé BER:
 
{\ttfamily
StartLBURPResponseValue ::= maxOperations\\ maxOperations ::= INTEGER (0 .. maxInt)\\ maxInt INTEGER ::= 2147483647 — (2\textasciicircum \textasciicircum 31 - 1) —\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge maxOperations }
 
\
 
\hspace{1mm}  Instruit le fournisseur de ne pas envoyer plus d’opération que cette valeur par \textbf{updateOperationList}. Si le consommateur n’envoie pas cette valeur, il doit être préparé à accèpter toutes les opérations fournies.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge LBURPUpdateRequest }
 
\
 
\hspace{1mm} requestName vaut \textbf{1.3.6.1.1.17.5}, et requestValue contient la valeur suivante encodé BER:
 
{\ttfamily
LBURPUpdateRequestValue ::= SEQUENCE \{\\ \hspace{2mm}sequenceNumber INTEGER (1 .. maxInt),\\ \hspace{2mm}updateOperationList UpdateOperationList\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge sequenceNumber }
 
\
 
\hspace{1mm}  Permet au consommateur de traiter les requête \textbf{LBURPOperation} dans l’ordre spécifié par le fournisseur. La première valeur doit être 1 et incrémenté à chaque \textbf{LBURPUpdateRequest}.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge UpdateOperationList }
 
\
 
\hspace{1mm} Liste d’une ou plusieurs requête de mise à jours LDAP:
 
{\ttfamily
UpdateOperationList ::= SEQUENCE OF SEQUENCE\{\\ \hspace{2mm}updateOperation CHOICE \{\\ \hspace{2mm}addRequest AddRequest,\\ \hspace{2mm}modifyRequest ModifyRequest,\\ \hspace{2mm}delRequest DelRequest,\\ \hspace{2mm}modDNRequest ModifyDNRequest\\ \hspace{2mm}\},\\ \hspace{2mm}controls \texttt{[}0\texttt{]} Controls OPTIONAL\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge LBURPUpdateResponse }
 
\
 
\hspace{1mm}  Envoyé au fournisseur pour signaler que toutes les opérations d’un \textbf{UpdateOperationList} ont été complétés et pour donner le résultat des opérations. responseName contient \textbf{1.3.6.1.1.17.6}
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OperationResults }
 
\
 
\hspace{1mm} Quand un élément de réponse est inclus dans un message \textbf{LBURPUpdateResponse}, il contient la valeur suivante encodé BER:
 
{\ttfamily
OperationResults ::= SEQUENCE OF OperationResult\\ \hspace{2mm}\\ OperationResult ::= SEQUENCE \{\\ operationNumber INTEGER,\\ ldapResult LDAPResult\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge operationNumber }
 
\
 
\hspace{1mm}  Identifie l’opération de mise à jours LDAP dans une \textbf{UpdateOperationList} d’un \textbf{LBURPUpdateRequest} qui a échoué. Les opérations sont numérotées en commençant à 1.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge EndLBURPRequest }
 
\
 
\hspace{1mm} requestName vaut \textbf{1.3.6.1.1.17.3} et requestValue contient la valeur suivante encodé BER:
 
{\ttfamily
EndLBURPRequestValue ::= SEQUENCE \{\\ \hspace{2mm}sequenceNumber INTEGER (1 .. maxInt)\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge EndLBURPRequest.sequenceNumber }
 
\
 
\hspace{1mm}  Est supérieur au dernier \textbf{LBURPUpdateRequest.sequenceNumber} reçu
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge EndLBURPResponse }
 
\
 
\hspace{1mm}  responseName vaut \textbf{1.3.6.1.1.17.4} et ne possède pas de réponse
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
