C.2 Concepts fondamentaux de SLP

Le protocole SLP spécifie trois composants :

  • L’agent Utilisateur (UA)

  • L’agent de service (SA)

  • L’agent Annuaire (DA)

La fonction de l’agent Utilisateur est de fournir une interface par programmation aux clients pour leurs requêtes de services, et aux services pour leur permettre de publier leurs annonces. Un agent Utilisateur contacte un agent Annuaire pour interroger des services enregistrés d’une classe de service et d’une étendue spécifiées.

La fonction de l’agent Service consiste à fournir des points de stockage et de maintenance persistants pour des services locaux s’étant enregistrés auprès de SLP. L’agent de service a pour tâche principale de gérer une base de données en mémoire des services locaux enregistrés. En fait, un service ne peut pas s’enregistrer auprès de SLP tant qu’un agent de service local n’est pas présent. Les clients peuvent identifier les services au moyen d’une seule bibliothèque d’agent Utilisateur, mais l’enregistrement nécessite obligatoirement un agent de service (SA), principalement parce que cet agent doit régulièrement vérifier l’existence de services enregistrés pour maintenir l’enregistrement des agents Annuaire à l’écoute.

Le fonction de l’agent Annuaire consiste à fournir un cache persistant à long terme pour les services annoncés, ainsi qu’un point d’accès permettant aux agents Utilisateur de rechercher des services. En tant que cache, l’agent Annuaire reste à l’écoute de l’annonce de nouveaux services par les agents de service et met en cache ces notifications. À court terme, le cache d’un agent Annuaire se complète. Les agents Annuaire utilisent un algorithme d’expiration pour faire expirer les entrées de cache. Lorsqu’un agent Annuaire s’active, il lit le cache du stockage persistant (en général un disque dur), puis commence à faire expirer les entrées selon l’algorithme. Lorsqu’un nouvel agent Annuaire arrive ou lorsqu’un cache a été supprimé, l’agent Annuaire détecte cette condition et envoie une notification spéciale à tous les agents Service à l’écoute pour qu’ils vident leurs bases de données locales, de manière à ce que l’agent Annuaire puisse rapidement créer son cache.

En l’absence d’agents Annuaire, l’agent Utilisateur effectue une requête de multidiffusion générale à laquelle les agents de service peuvent répondre listant ainsi les services demandés de la même manière que les agents Annuaire créent leur cache. La liste des services renvoyée par une telle requête est incomplète et bien plus localisée que celle fournie par un agent Annuaire, notamment en présence d’un filtrage multidiffusion mis en œuvre par un grand nombre d’administrateurs réseaux, lesquels limitent les diffusions et les multidiffusions au sous-réseau local seulement.

En bref, tout s’articule autour de l’agent Annuaire trouvé par un agent Utilisateur dans une étendue donnée.

C.2.1 Protocole SLP NetIQ

La version NetIQ de SLP prend certaines libertés vis-à-vis de la norme SLP afin de fournir un environnement d’annonce de service renforcé, mais au prix d’une certaine évolutivité.

Par exemple, pour améliorer l'évolutivité d'une structure d'annonce de service, nous cherchons à limiter le nombre de paquets diffusés ou multidiffusés sur un sous-réseau. La norme SLP gère ce facteur en imposant des limitations aux agents de service et Utilisateur concernant les requêtes à l’agent Annuaire. Le premier agent Annuaire identifié qui dessert l’étendue souhaitée est celui qu’un agent de service (et par conséquent des agents Utilisateur locaux) utilisera pour toutes les requêtes futures sur cette étendue.

La mise en œuvre de NetIQ SLP permet d’analyser tous les agents Annuaire connus, à la recherche des informations de la requête. Un acheminement AR de 300 millisecondes étant considéré comme trop long, 10 serveurs peuvent être analysés en 3 à 5 secondes. Il n’est pas nécessaire d’effectuer cette opération si SLP est configuré correctement sur le réseau et que OpenSLP considère le réseau comme configuré correctement pour le trafic SLP. Les valeurs de timeout de réponse de OpenSLP sont supérieures à celles du fournisseur de services SLP de NetIQ et cela limite le nombre d’agents Annuaire au premier qui répond, que les informations de celui-ci soient ou non précises et complètes.

C.2.2 Agents Utilisateur

Un agent utilisateur prend la forme physique d’une bibliothèque statique ou dynamique liée à une application. Il permet à l’application d’émettre des requêtes de services SLP.

Les agents Utilisateur suivent un algorithme pour obtenir l’adresse d’un agent Annuaire auquel les requêtes seront envoyées. Une fois qu’ils ont obtenu une adresse d’agent Annuaire sur une étendue spécifiée, ils continuent à utiliser cette adresse pour cette étendue jusqu’à ce qu’elle ne réponde plus. Là, ils se procurent une autre adresse pour l’étendue. Les agents Utilisateur localisent l’adresse d’un agent Annuaire sur une étendue spécifiée en :

  1. vérifiant si l’identificateur de socket de la requête en cours est connecté à un agent Annuaire pour l’étendue indiquée ; S’il se trouve que la requête fait partie d’une requête en plusieurs parties, elle peut déjà contenir une connexion en cache.

  2. recherchant dans le cache de l’agent Annuaire connu un agent Annuaire correspondant à l’étendue indiquée ;

  3. recherchant auprès de l'agent de service local un agent Annuaire de l'étendue spécifiée et en ajoutant de nouvelles adresses au cache ;

  4. interrogeant DHCP pour obtenir des adresses d'agents Annuaire configurées pour le réseau et correspondant à l'étendue indiquée, et en ajoutant de nouvelles adresses au cache ;

  5. envoyant une requête de découverte d'agent Annuaire par multidiffusion sur un port connu et en ajoutant de nouvelles adresses au cache.

Sauf spécification contraire, l’étendue indiquée est celle « par défaut ». Cela signifie que si aucune étendue n’est définie de façon statique dans le fichier de configuration SLP et qu’aucune étendue n’est indiquée dans la requête, l’étendue utilisée est le mot « default ». Notez également que eDirectory n’indique jamais d’étendue dans ses enregistrements. Cela ne signifie pas pour autant que l’étendue utilisée avec eDirectory soit toujours « default ». En fait, s’il existe une étendue configurée statiquement, celle-ci devient l’étendue par défaut pour les requêtes à l’agent Utilisateur local et les enregistrements de l’agent Service en l’absence d’une étendue spécifiée.

C.2.3 Agents Service

Les agents de service prennent la forme physique d’un processus distinct exécuté sur l’ordinateur hôte. Dans le cas de Windows, slpd.exe s’exécute en tant que service sur l’ordinateur local. Des agents utilisateur interrogent l’agent de service local en envoyant des messages à l’adresse de bouclage sur un port connu.

Un agent de service localise et met en cache les agents Annuaire et la liste de l’étendue qu’ils prennent en charge en envoyant directement une requête d’identification d’agent Annuaire à des adresses d’agent Annuaire potentielles en :

  1. vérifiant toutes les adresses d’agent Annuaire configurées statiquement (et en ajoutant de nouvelles au cache d’agent Annuaire connu de l’agent de service) ;

  2. demandant la liste des agents Annuaire et des étendues à DHCP (et en en ajoutant de nouveaux au cache d’agent Annuaire connu de l’agent de service) ;

  3. envoyant une requête d’identification d’agent Annuaire par multidiffusion sur un port connu (et en en ajoutant de nouvelles au cache d’agent Annuaire connu de l’agent de service) ;

  4. recevant les paquets d’annonce régulièrement diffusés par les agents Annuaire (et en ajoutant les nouveaux au cache d’agent Annuaire connu de l’agent de service).

Puisqu’un agent utilisateur interroge toujours l’agent de service local en premier, cela est important, car la réponse de l’agent de service local détermine si l’agent utilisateur passe ou non à l’étape suivante de la découverte (dans ce cas, DHCP-- voir étapes 3 et 4 de la section Agents Utilisateur).