Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
08 novembre 2013

LDAP Lightweight Directory Access Protocol           Standards LDAP


rfc4373

rfc4373

Bulk Update/Replication Protocol

   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.

Initialisation

   Le protocole est initié quand un fournisseur envoie StartLBURPRequest à un consommateur, qui notifie qu’un flux de 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 StartLBURPRequest. Le consommateur répond avec un message StartLBURPResponse

flux de mise à jours

   Après qu’un consommateur a répondu avec un StartLBURPResponse, le fournisseur envoie un flux de messages 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 LBURPUpdateRequest avec un message LBURPUpdateResponse.

LBURPUpdateRequest

   Chaque LBURPUpdateRequest contient un numéro de séquence identifiant sa position relative dans le flux. et un UpdateOperationList contenant la liste ordonnée des opérations à appliquer au DIT.

LBURPUpdateResponse

   Quand un consommateur a traité les opérations d’une UpdateOperationList, il envoie un LBURPUpdateResponse au fournisseur indiquant le succès ou l’échec des opérations.

Fin de mise à jours

   Une fois que le fournisseur a envoyé tous ses LBURPUpdateRequest, il envoie un message EndLBURPRequest au consommateur pour terminer le flux. Une fois reçu toutes les requêtes LBURPOperation et après avoir reçu le EndLBURPRequest, le consommateur répond avec un EndLBURPResponse.

Applicabilité du protocole

   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.

Description du flux

F = Fournisseur
C = Consommateur
F -› C StartLBURPRequest. Contient l’OID pour le stype d’updte LBURP
C -› F StartLBURPResponse. Contient une instruction optionnelle maxOperations
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.
C -› F LBURPUpdateResponse. Envoyé quand le consommateur à finit le traitement d’une updateOperationList
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é.
C -› F EndLBURPResponse. Envoyé par le consommateur une fois toutes les LBURPOperation terminées et après avoir reçu EndLBURPRequest.

Elements du protocole

   LBURP utilise 2 messages LDAP extendedRequest: StartLBURPRequest et EndLBURPRequest pour initier et terminer le protocole. Un troisième extendedRequest, LBURPUpdateRequest est utilisé pour envoyer les opérations au consommateur.


ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
    requestName [0] LDAPOID,
    requestValue [1] OCTET STRING OPTIONAL
}
    
ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
COMPONENTS of LDAPResult,
responseName [10] LDAPOID OPTIONAL,
response [11] OCTET STRING OPTIONAL
}

StartLBURPRequest

requestName vaut 1.3.6.1.1.17.1 et requestValue contient la valeur suivante encodé BER:
StartLBURPRequestValue ::= SEQUENCE {
    updateStyleOID LDAPOID
}

updateStyleOID

   Identifie de manière unique le style de mise à jours à utiliser. LBUPR Incremental Update vaut 1.3.6.1.1.17.7

StartLBURPResponse

responseName vaut 1.3.6.1.1.17.2 et response contient la valeur suivante encodé BER:
StartLBURPResponseValue ::= maxOperations
maxOperations ::= INTEGER (0 .. maxInt)
maxInt INTEGER ::= 2147483647 — (2^^31 - 1) —

maxOperations

   Instruit le fournisseur de ne pas envoyer plus d’opération que cette valeur par updateOperationList. Si le consommateur n’envoie pas cette valeur, il doit être préparé à accèpter toutes les opérations fournies.

LBURPUpdateRequest

requestName vaut 1.3.6.1.1.17.5, et requestValue contient la valeur suivante encodé BER:
LBURPUpdateRequestValue ::= SEQUENCE {
    sequenceNumber INTEGER (1 .. maxInt),
    updateOperationList UpdateOperationList
}

sequenceNumber

   Permet au consommateur de traiter les requête LBURPOperation dans l’ordre spécifié par le fournisseur. La première valeur doit être 1 et incrémenté à chaque LBURPUpdateRequest.

UpdateOperationList

Liste d’une ou plusieurs requête de mise à jours LDAP:
UpdateOperationList ::= SEQUENCE OF SEQUENCE{
    updateOperation CHOICE {
    addRequest AddRequest,
    modifyRequest ModifyRequest,
    delRequest DelRequest,
    modDNRequest ModifyDNRequest
    },
    controls [0] Controls OPTIONAL
}

LBURPUpdateResponse

   Envoyé au fournisseur pour signaler que toutes les opérations d’un UpdateOperationList ont été complétés et pour donner le résultat des opérations. responseName contient 1.3.6.1.1.17.6

OperationResults

Quand un élément de réponse est inclus dans un message LBURPUpdateResponse, il contient la valeur suivante encodé BER:
OperationResults ::= SEQUENCE OF OperationResult
    
OperationResult ::= SEQUENCE {
operationNumber INTEGER,
ldapResult LDAPResult
}

operationNumber

   Identifie l’opération de mise à jours LDAP dans une UpdateOperationList d’un LBURPUpdateRequest qui a échoué. Les opérations sont numérotées en commençant à 1.

EndLBURPRequest

requestName vaut 1.3.6.1.1.17.3 et requestValue contient la valeur suivante encodé BER:
EndLBURPRequestValue ::= SEQUENCE {
    sequenceNumber INTEGER (1 .. maxInt)
}

EndLBURPRequest.sequenceNumber

   Est supérieur au dernier LBURPUpdateRequest.sequenceNumber reçu

EndLBURPResponse

   responseName vaut 1.3.6.1.1.17.4 et ne possède pas de réponse