memoire magister informatique

Transcription

memoire magister informatique
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
République Algérienne Démocratique et Populaire
Ministère de l’Enseignement Supérieur
Et de la Recherche Scientifique
Université de Constantine
Faculté des Sciences de l’Ingénieur
Département Informatique
N° d’ordre :
Série :
Thèse
Présenté Par
ZEMMOUCHI Fares Mounir
Pour l’Obtention du Diplôme de
Magister en Informatique
Conception d’un serveur de politiques (QoS) via
le système MAUDE
Devant le jury composé de :
M. CHAOUI Allaoua
M. ZAROUR Nacereddine
M. CHIKHI Salim
Mme BELALA Faiza
Maître de Conférence
Maître de Conférence
Maître de Conférence
Maître de Conférence
Président
Examinateur
Examinateur
Rapporteur
Laboratoire: LIRE, Université de Constantine.
Équipe: Génie Logiciel et Systèmes Distribués
1/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Remerciements
Je tiens à remercier toutes les personnes qui ont permis que cette année se passe de la meilleure
façon qui soit. Plus précisément tous mes remerciements à Faiza BELALA responsable du bon
déroulement de mon magister
pour son encadrement efficace, ses idées inépuisables, sa
disponibilité…. Et la patience dont elle a du faire preuve.
Je remercie aussi toutes les personnes qui de près ou de loin m'ont suivi pendant mon travail,
notamment toute l'équipe LIRE, dans laquelle l'ambiance a toujours été au beau fixe, à ma famille.
2/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
TABLE DES MATIERES
1. INTRODUCTION GENERALE.........................................................................................5
1.1. Introduction......................................................................................................................................................... 6
1.2. Contexte de travail .............................................................................................................................................. 6
1.3. Problématique et objectifs................................................................................................................................... 7
1.4. Plan...................................................................................................................................................................... 9
2. LA QUALITE DE SERVICE DANS L’INTERNET ..........................................................11
2.1. Introduction....................................................................................................................................................... 12
2.2. Gestion des flux ................................................................................................................................................. 13
2.2.1. Intégration de service ................................................................................................................................... 13
2.2.2. Différenciation de services ........................................................................................................................... 15
2.2.3. Intégration IntServ / DiffServ ....................................................................................................................... 17
2.2.4. Ingénierie de trafic ....................................................................................................................................... 17
2.3. Conclusion ......................................................................................................................................................... 19
3. LES SERVEURS DE POLITIQUES ...............................................................................20
3.1. Introduction....................................................................................................................................................... 21
3.2. Définition d’une politique de QoS..................................................................................................................... 21
3.3. Structure et architecture d’une politique de QoS ............................................................................................. 22
3.3.1. Le PDP (policy décision point)..................................................................................................................... 23
3.3.2. Les PEP (Policy Enforcement Point) ............................................................................................................ 23
3.4. Les langages de politique (Policy Language)..................................................................................................... 24
3.4.1. Langage PFDL (Policy Framework Definition Language)............................................................................. 25
3.4.2. Langage ProNet ........................................................................................................................................... 26
3.4.3. Langage Ponder .......................................................................................................................................... 26
3.5. Conclusion ......................................................................................................................................................... 32
4. LES ANNUAIRES LDAP ...............................................................................................33
4.1. Introduction....................................................................................................................................................... 34
4.2. Les concepts de LDAP....................................................................................................................................... 35
4.2.1. Le protocole LDAP..................................................................................................................................... 35
4.2.2. Modèles de données LDAP .......................................................................................................................... 36
4.2.3. LDIF ........................................................................................................................................................... 42
4.2.4. Le modèle fonctionnel.................................................................................................................................. 44
4.2.5. Les URLs LDAP.......................................................................................................................................... 47
4.3. Exemples d'application de LDAP...................................................................................................................... 47
4.4. Déployer un service d’annuaire LDAP ............................................................................................................. 48
4.4.1. Déterminer les besoins en service d'annuaire et ses applications.................................................................... 48
3/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4.4.2. Déterminer quelles données sont nécessaires ................................................................................................ 48
4.4.3. Choisir son schéma ...................................................................................................................................... 49
4.4.4. Concevoir son espace (modèle) de nommage................................................................................................ 50
4.4.5. Le Directory Tree......................................................................................................................................... 50
4.4.6. Nommage des entrées .................................................................................................................................. 51
4.4.7. Choix du suffixe .......................................................................................................................................... 51
4.4.8. Définir la topologie de son service................................................................................................................ 52
4.4.9. Le partitionnement ....................................................................................................................................... 52
4.5. Conclusion ......................................................................................................................................................... 52
5. LA LOGIQUE DE REECRITURE & MAUDE .................................................................53
5.1. Introduction....................................................................................................................................................... 54
5.2. Eléments de base................................................................................................................................................ 54
5.3. Théorie de réécriture......................................................................................................................................... 56
5.4. Applications de la logique de réécriture............................................................................................................ 58
5.5. Maude : un Langage à base de Logique de Réécriture..................................................................................... 60
5.6. Le Système Maude............................................................................................................................................. 60
5.6.1. Core Maude ................................................................................................................................................. 62
5.6.2. Full MAUDE ............................................................................................................................................... 62
5.7. Les modules Maude........................................................................................................................................... 63
5.7.1. Modules Fonctionnels .................................................................................................................................. 63
5.7.2. Modules Systèmes ....................................................................................................................................... 65
5.7.3. Les Modules Orientés-objets en Maude ........................................................................................................ 66
5.7.4. Exemple récapitulatif .................................................................................................................................. 69
5.8. Conclusion ......................................................................................................................................................... 73
6. CONCEPTION D'UN SERVEUR DE POLITIQUES.......................................................74
6.1. Introduction....................................................................................................................................................... 75
6.2. Le modèle d’information pour les politiques de QoS........................................................................................ 75
6.3. Le schéma fonctionnel du serveur de politiques de QoS................................................................................... 78
6.4. Conclusion ......................................................................................................................................................... 81
7. CONCLUSION ET PERSPECTIVES .............................................................................82
8. BIBLIOGRAPHIE...........................................................................................................86
4/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 1
1. INTRODUCTION GENERALE
5/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
1.1. Introduction
Pendant longtemps, les réseaux de communication étaient spécifiques à un seul type
d’information et un seul type de service : les réseaux à commutation de circuit pour la téléphonie,
les réseaux hertziens pour la télévision, les réseaux IP pour les données... Ces différents types de
réseaux ont aujourd’hui tendance à converger, chaque opérateur voulant offrir de multiples services
à ses clients : accès à Internet, téléphonie, télévision interactive, vidéo à la demande,
visioconférence, télémédecine... Nous observons aussi l’émergence de nouvelles applications
complètement distribuées permettant d’utiliser des ressources réparties sur un réseau ou sur internet
: la téléphonie peer-to-peer (P2P) [Yu, 2003], le calcul distribué (grid computing, P2P computing),
ou même la diffusion peer-to-peer de flux vidéo continus (voir par exemple [Cui et al., 2004]).
1.2. Contexte de travail
Les réseaux actuels sont désormais multiservices et hétérogènes. Outre cette multiplication
des services dans les réseaux, ceux-ci sont de plus en plus exigeants quant à la qualité des
transmissions. La notion de qualité de service permet de formaliser ces exigences en terme de
critères de performance : bande passante, délai de transmission de bout en bout, taux de perte des
paquets, gigue... et chaque service peut avoir des exigences différentes en terme de qualité de
service. L’architecture best-effort établi par les réseaux IP dans les années 70 ne permet pas de
garantir une quelconque qualité de service et il a été nécessaire de définir de nouvelles architectures
de réseaux pour répondre à ces nouveaux besoins. De cette nécessité sont nées les architectures à
intégration de service (réseaux ATM, modèle IntServ pour les réseaux IP) qui s’appuient sur une
réservation préalable des ressources et un multiplexage statistique des trafics, et plus récemment les
architectures à différentiation de services (modèle DiffServ, réseaux MPLS) qui effectuent un
traitement différencié des trafics, regroupés en quelques classes de services, pour garantir la qualité
de service. Toutefois ces architectures ne permettent pas de résoudre tous les problèmes et la
maîtrise de la qualité de service reste aujourd’hui un défi majeur pour la recherche sur les réseaux
multiservices.
L’introduction de mécanismes «intelligents» dans les réseaux multiservices permet de surmonter la
difficulté de mettre en place des méthodes plus traditionnelles pour prendre en compte toute la
complexité générée par la multiplication des services. Cela permet aussi de répondre à un autre
besoin de plus en plus pressant : les réseaux doivent être de plus en plus autonomes et doivent
s’adapter automatiquement aux conditions de trafic, à l’ajout de nouveaux services, aux
congestions, aux pannes, etc. Ils doivent devenir «intelligents» (smart networks) ou «conscients
d’eux-mêmes» « self-aware networks » . [Gelenbe et Núñez, 2003]). Les méthodes d’apprentissage
6/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
notamment permettent de répondre en partie à ces nouveaux besoins et la littérature scientifique en
proposent de nombreuses applications.
C’est dans ce contexte général que se situent ces travaux de thèse. Nous nous intéressons au
problème de l’évaluation de performance dans les réseaux, et plus spécifiquement l’évaluation des
critères de qualité de service. Il s’agit d’un problème transversal aux différents mécanismes de
gestion d’un réseau : pour être capable de garantir la qualité de service de chaque client, il faut en
effet être capable d’en évaluer les différents critères. Traditionnellement, ce problème est résolu de
deux manières : soit de façon analytique à l’aide de la théorie des files d’attente, soit de façon
expérimentale par simulation (simulation par événements discrets ou simulation fluide). Ces deux
approches sont complémentaires : la théorie des files d’attente permet d’obtenir des expressions
analytiques (parfois exactes) de critères de performances sous des hypothèses relativement fortes et
pour certains systèmes d’attente, tandis que la simulation a un pouvoir d’expression beaucoup plus
important (a priori sans limite) mais se heurte à des temps de calcul prohibitifs.
Dans un travail antérieur [ZEMMOUCHI, 2003], nous avons abordé la QoS (qualité de service) par
un chemin algorithmique pour établir de manière ad-hoc un lien entre les politiques de qualité de
service et les annuaires LDAP comme structure de stockage des règles..
Nous proposons dans cette thèse un chemin formel qui conduit à préciser la nature contractuelle de
la QoS dans les serveurs de politique.
1.3. Problématique et objectifs
La qualité de service au sein d’un réseau IP revient à regrouper les paquets d’un flux
d’applications dans une certaine classe de trafic. Cette classification a pour objet d’accorder à ces
paquets un traitement plus ou moins prioritaire par rapport à d’autres paquets. Ainsi, certains
utilisateurs recevront un meilleur service que d’autres. Il est alors inévitable que des utilisateurs
rechercheront à obtenir le meilleur service sans en payer le prix ou sans y être autorisé. On conçoit
qu’il est nécessaire de disposer de certains mécanismes sur le réseau, afin de mettre en œuvre des
règles de gestion de trafic, faisant appel à une architecture, à un certain nombre de protocoles et à
des modèles de représentation des données sous forme d’objet. La complexité croissante d'un tel
problème et le manque de la science proportionnée et technologie pour soutenir le développement
robuste mène typiquement à des solutions qui sont fragiles, incertaines, et extrêmement difficiles
d’évoluer. Tout ça impose la recherche des méthodes de spécification et vérification puissantes.
Dans ce contexte, l’introduction d’un cadre formel pour développer un serveur de politiques est
d’un grand intérêt, il permet d’avoir une expression claire des propriétés du système à modéliser,
ainsi qu’une vision cohérente et transparente de ce que le système fait et ne fait pas. Cette
7/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
formalisation est ensuite utilisée, pour donner une sémantique formelle à ce type de système en
termes de logique de réécriture [Mes, 2002], un formalisme rigoureux de spécification, de
prototypage et de vérification des systèmes.
L’objectif principal de ce travail est d’attribuer une sémantique formelle et opérationnelle, basée
logique de réécriture, à un serveur de politiques gérant les qualités de service, permettant ainsi une
compréhension approfondie du serveur par la mise en évidence des ambiguïtés laissées dans l'ombre
par les spécifications informelles, ainsi que l'utilisation d'outils de preuve et d'évaluation
symbolique existants autour de cette logique.
La logique en général est une méthode de raisonnement correct pour quelques classes de systèmes.
Pour la logique équationnelle, les modèles des systèmes sont les ensembles, les fonctions entre ces
ensembles et la relation d’identité entre les éléments. Pour la logique de réécriture, les entités sont
les systèmes concurrents ayant des états, et qui évoluent à travers des transitions. Elle est considérée
également comme une logique de changement concurrent qui traite l'état et les calculs concurrents.
Une politique de QoS est un ensemble de règles associées à certains services. Les règles
définissent les critères à satisfaire pour obtenir ces services. Elles sont définies en fonction de
conditions et d’actions, les actions découlant du respect des conditions. Dans la pratique, une règle
pourra elle-même contenir d’autres règles. Ce principe de hiérarchie de règle permet de construire
des politiques complexes à partir de règles simples. Le mode de définition de ces conditions et de
ces actions doit être établi d’une façon globale, de sorte à maintenir une cohérence entre les
différents domaines de gestion de politiques de QoS. En d’autres termes, un flux défini comme
prioritaire dans un domaine de gestion (le réseau interne de l’entreprise) doit rester prioritaire s’il
traverse un réseau d’opérateurs qui correspond à un autre domaine de gestion. Pour assurer cette
portabilité des règles, il est nécessaire que la définition de celle-ci soit réalisée dans un langage de
description de haut niveau, indépendant des équipements. Dans ce cas, nous exprimons alors ces
règles (politiques) dans la logique de réécriture qui représente un cadre sémantique unificateur de
plusieurs modèles de spécification.
Une politique peut se définir à différents niveaux. Le niveau le plus haut correspond à celui de
l’utilisateur. La détermination d’une politique s’effectue par un dialogue entre l’utilisateur et
l’opérateur. Ils utilisent pour cette négociation soit le langage naturel soit des règles déjà préparées
par l’opérateur du réseau. Dans ce dernier cas, l’utilisateur ne peut sélectionner que des règles
proposées par le réseau. Dans les deux cas, cette politique doit être traduite dans un langage de
niveau réseau permettant de déterminer le protocole réseau de gestion de la qualité de service et son
paramétrage. Ensuite, il faut traduire ce
langage de niveau réseau en langage de bas niveau
8/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
correspondant à la programmation des nœuds du réseau, ce que l’on peut appeler la configuration du
nœud.
Nous enrichissons, à travers l’approche proposée, le langage de niveau réseau par quelques
structures basées logique de réécriture afin de décrire de façon non ambiguë les modèles de
représentation des données considérés (sous forme d’objet) et les protocoles qui y sont autour.
1.4. Plan
Ce document est organisé en cinq chapitres. Le premier chapitre, porte sur les concepts clés de la
qualité de service en général et celle qui se rapporte au réseau IP en particulier. Un intérêt particulier
est donné à la présentation des modèles IntServ et DiffServ et leurs limites.
Dans le deuxième chapitre, des notions précises et claires concernant les politiques de services et les
serveurs qui les gèrent sont données. On commence par donner la structure et l’architecture
générique d’une politique de service, ensuite nous présentant un aperçu général sur les langages de
spécification de politiques (ponder en particulier) et leurs intérêts en pratique. Enfin, on montre la
solution souvent préconisée dans la spécification et la gestion des politiques de service et qui se base
sur l’annuaire LDAP.
Le troisième chapitre détaille les concepts clés de LDAP : protocole, modèle de données, modèle
fonctionnel et comment déployer un service d’annuaire LDAP, après avoir motivé convenablement
cette approche dans la gestion des politiques de QoS.
Le quatrième chapitre est consacré à la présentation du formalisme logique de réécriture ainsi que la
syntaxe du langage Maude basé sur cette logique. Un intérêt particulier est donné à la déclaration
des modules orientés objets en Maude qui seront utilisés dans cette modélisation.
Dans le dernier chapitre, un nouveau support à base de logique de réécriture est proposé pour
concevoir un serveur de politique QoS. L’approche de conception est inspirée de celle basé LDAP.
Dans la première étape, un modèle d’information pour les politiques de QoS de type QPIM est
défini en utilisant principalement les modèles orienté objet de Maude. Dans une deuxième étape,
nous proposant un schéma fonctionnel formel d’un serveur de gestion de politiques de QoS en
exploitant les caractéristiques syntaxiques et sémantique de Maude.
9/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Une conséquence théorique importante se découle de cette étude concernant :
•
Le prototypage et éventuellement la vérification de certaines propriétés dans Maude.
•
La formulation correcte des métas politiques.
•
La structuration des politiques de QoS selon leur sémantique et régler ainsi le problème
de conflit sémantique qui peut se poser dans certaine situations.
Le manuscrit se termine par une conclusion générale permettant de situer la présente contribution
par rapport aux travaux réalisés dans le même contexte et d’évoquer les différentes continuations
jugées possible pour ce travail.
10/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 2
2. LA QUALITE DE SERVICE DANS L’INTERNET
11/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
2.1. Introduction
La "qualité de service" est une notion relativement controversée, même si les polémiques se
sont calmées au cours de ces dernières années. Ce chapitre décrit les approches et les axes discutés
pour introduire de nouveaux types de données comme les flux multimédia, la téléphonie, les
simulations distribuées.
L'Internet a été conçu comme un réseau d'interconnexion entre des universités et des instituts de
recherche aux Etats Unis. Le protocole IP "Internet Protocol" a permis un développement très
rapide du réseau grâce à sa flexibilité et sa nature ouverte. IP s'est également imposé comme
technologie réseau dans la plupart des réseaux privés. Pourtant, les paradigmes qui ont fait le succès
de l'Internet imposent de fortes limitations aujourd'hui. Quand le protocole IP a été conçu,
l'architecture réseau comptait peu de terminaux connectés, et les applications usuelles étaient telnet,
l'email et le FTP. Avec la naissance du Web, l'âge de l'Internet commercial fut inauguré, donnant
naissance à de nouveaux types d'utilisateurs, toujours plus avides de services et donc de bande
passante. La consommation des utilisateurs a donc évolué aussi rapidement que l'Internet,
l'augmentation des débits étant très vite rattrapée par une consommation accrue de nouvelles
applications. L'apparition d'ordinateurs personnels plus puissants à des prix plus abordables a
conduit à un formidable essor des développements d'applicatifs. Le paradigme "IP over everything"
des premières années (focalisation sur le transport) a donc changé pour un paradigme de "everything
over IP" d'aujourd'hui (focalisation sur les services au dessus d'IP). L'Internet est présent presque
partout, générant des économies d'échelle et favorisant le développement d'un grand nombre
d'applications, ainsi que l'adaptation des applications existantes sur IP. Toutes les applications
imaginables, de la navigation sur le Web à la diffusion vidéo ou la téléphonie seront transportées par
le même réseau.
L'apparition d'un tel réseau multiservice permettra de sur croie une utilisation optimale des
ressources avec des coûts d'opération très réduits. Pour atteindre cet objectif, il s'avère néanmoins
nécessaire de pouvoir différentier les applications entre elles de façon à leur offrir un traitement
spécifique, conforme à leurs besoins et contraintes (de temps réel par exemple). Sous sa forme
originelle, le protocole IP traite tous les éléments transportés de façon égale. La conséquence est
qu'à certains moments, des applications n'auront pas les ressources minimales dont elles ont besoin,
en revanche d'autres applications disposeront de ressources qu'elles n'utiliseront pas pleinement. Il
est important de mentionner que les flux téléphonies requièrent de petites quantités de bande
passante, mais nécessitent des délais de transport faibles et déterministes. De tels flux ne pourront
donc pas être efficacement transportés dans un réseau IP sans mécanismes de QoS (Quality of
Service) supplémentaires.
12/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
2.2. Gestion des flux
2.2.1. Intégration de service
Les travaux sur l'intégration de service dans l'Internet ont été pris en compte par trois
groupes de travail :
• le groupe de travail RSVP "ReSerVation Protocol" [RFC 2205] porte mal son nom, car il a
défini un protocole conçu pour transporter des messages de caractérisation (appelé aussi
signalisation) de flux, il n'effectue aucune réservation ;
• le groupe IntServ "Integrated Services" définit les services qui peuvent être offerts. Cela
passe par la description des caractéristiques des flux de données et les paramètres à indiquer lors
d'une demande de réservation. Ces caractéristiques sont prévues pour être transportées dans les
données des paquets RSVP ;
• le groupe de travail issll "Integrated Services over a Specific Link Layer" définit les
méthodes pour traduire les caractéristiques de flux spécifiés par l'IntServ vers un niveau 2
particulier
Quand une source produit un flux de données, elle peut également émettre des messages de
signalisation RSVP, décrivant les caractéristiques de celui-ci. Cette signalisation ayant la même
destination que le flux (il peut aussi s'agir d'une adresse de multicast), traversera les mêmes routeurs
intermédiaires qui y ajouteront leurs caractéristiques, principalement leur temps de traversée.
Les flux restent traités par les routeurs en"Best-Effort".Le destinataire recevant les messages
de signalisation, en plus des données du flux, peut décider d'améliorer la qualité de celui-ci en
envoyant un message de réservation vers la source pour demander aux routeurs d'améliorer le
traitement du flux. Mais le routage dans l'Internet n'est pas symétrique, il faut donc que les routeurs
se souviennent pour chaque flux quel était le précédent routeur. Un contexte doit être établi dans
chaque routeur pour chaque flux signalé par la source. A la réception d'un message de réservation,
un contrôle d'admission est fait par le routeur pour déterminer si l'ajout d'un nouveau flux ne
perturbera pas ceux pour qui une réservation a déjà été faite.
Le groupe de travail IntServ a actuellement défini deux types de services lors de la réservation :
• Le service garanti [RFC 2212] est basé sur les résultats du "Network Calculus" [Le
Boudec, 1997] qui permet de trouver une borne maximale pour le temps de transmission d'un paquet
et la taille maximale des mémoires tampons nécessaires dans les équipements pour éviter les pertes
de paquets. Le destinataire en fixant le débit minimal que doit offrir le réseau à ce flux influe sur le
13/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
temps maximal de transmission des paquets. Ainsi, pour réduire les temps de traversée, il est
possible de réserver à un débit nettement supérieur à celui de la source.
• Le service contrôlé [RFC 2211] a une définition volontairement relativement vague : un
service contrôlé offre un service proche de l'Internet peu chargé. Ce type de service a un intérêt si
l'on considère que des outils de téléconférence comme "vat" pour la vidéo ou "vic" pour l'audio
offrent une bonne qualité quand le réseau est peu utilisé, mais la qualité se dégrade très vite si le
réseau est saturé.
Depuis que les travaux ont été finalisés, l'impact de ce protocole a surtout été politique. Il a conduit
à prendre en compte le protocole IP dans ces travaux, en particulier ceux concernant la téléphonie
sur l'Internet et à recommander son utilisation dans la norme H.323. Par contre aucune réalisation à
grande échelle n'a été faite de ce protocole. Ceci pour plusieurs raisons :
• Le protocole ne résiste pas au facteur d'échelle, il faut mettre un état par flux signalé dans
chaque routeur. Ceci n'est pas réalisable dans un réseau d'opérateur ou sur une liaison
transatlantique.
Des propositions pour agréger les différentes réservations au sein d'un réseau d'opérateur ont été
faites, mais elle implique qu'il faille aussi "désagréger" dans le réseau [Baker,Davie, 2000]. La
vision qu'a un routeur est limitée au prochain saut, c'est-à-dire l'information contenue dans la table
de routage. Ce n'est pas parce que plusieurs flux ont le même prochain routeur qu'il vont avoir le
même routeur de sortie du réseau de l'opérateur. Par conséquent quelque part dans le réseau, ces
flux seront séparés, mais l'agrégation de la signalisation aura fait perdre leurs caractéristiques
individuelles.
• Les bornes offertes par la classe de service garanti sont trop pessimistes, ce qui limite le nombre de
flux pouvant obtenir une réservation.
• Il n'existe pas de modèle économique et technique pour facturer les ressources réservées dans le
réseau et les utilisateurs doivent être capable de comprendre la relation entre le coût et la qualité des
réservations.
Il s'en suit que si la réservation de ressource est utilisée dans l'Internet, elle le sera uniquement au
niveau d'un système autonome et pas de bout-en-bout. Les problèmes de facturation sont
grandement simplifiés. Puisqu'il sera possible d'agréger des flux ayant un même routeur de sortie
chez un opérateur, de limiter le nombre de flux à signaler (donc de réduire le nombre de contextes
dans les routeurs) et d'offrir une plus grande pérennité au flux. Dans les sites terminaux, l'usage de
la réservation est plus contestable car il est beaucoup plus facile d'augmenter la capacité du réseau
pour se trouver dans une situation de "gaspillage" de bande passante ou d'introduire des priorités sur
les flux que d'administrer un réseau mettant en œuvre de la réservation de ressources. Les seuls cas
14/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
où cette augmentation de capacité est difficilement réalisable sont les réseaux sans fils et les réseaux
Intranet utilisant des liens longues distances.
2.2.2. Différenciation de services
La différenciation de services [RFC 2475] consiste dans une situation de congestion à reporter les
pertes de paquets sur certaines classes de trafic, pour en protéger d'autres. Elle n'offre donc aucune
garantie sur les flux, car il n'existe à aucun moment un contrôle d'admission dynamique permettant
d'éviter une congestion. Le contrôle d'admission est fait a priori par la définition d'un contrat pour
chaque classe de trafic et par le dimensionnement des ressources pour pouvoir garantir ce contrat.
La différenciation de service présente les avantages suivants :
• La signalisation est faite dans chaque paquet (IPv4 ou IPv6) en attribuant une signification
différente aux bits du champ type de service [RFC 2474]. Il n'est plus besoin de garder dans le
routeur un contexte liant le flux de signalisation au flux de données. Cela permet aussi une
agrégation naturelle des flux, ainsi pour un opérateur, les paquets qu'il reçoit marqués pour une
certaine classe peuvent appartenir à plusieurs sources.
• La complexité du traitement est concentrée dans les routeurs aux frontières du réseau. Ils
effectuent les opérations " complexes " de contrôle de la validité du contrat pour les différentes
classes de trafic. Dans le cœur du réseau, le traitement est plus simple, ce qui autorise un relayage
rapide des paquets.
• La tarification du service est plus simple, il suffit, comme avec "Frame Relay", de définir les
¨Paramètres de contrôle de classes de services. Les travaux sur l'architecture à différenciation de
services ont surtout porté sur la définition d'une architecture la plus générale possible, permettant
aux opérateurs de développer facilement des classes de services adaptées aux besoins de leurs
clients. Néanmoins, deux classes de services sont en cours de définition :
• La classe "Expedited Forwarding" [RFC 2598] offre un service de liaison virtuelle à travers le
réseau d'un opérateur. Le contrat porte sur un débit constant. Les paquets excédentaires sont lissés
ou rejeté à l’entrée pour toujours rester conforme au contrat. L'opérateur s'engage à traiter ce trafic
prioritairement. Van Jacobson propose d'utiliser une priorité stricte pour traiter ces flux. Pour qu'un
tel service soit performant, il faut qu'il ne représente qu'une faible partie du trafic total pour
qu'aucun paquet marqué EF ne soit rejeté dans le cœur du réseau. Le service pouvant être
l'interconnexion de sites via un service de réseaux privés virtuels mis en place par un opérateur.
• Les classes "Assured Fowarding" [RFC 2597] définissent 3 priorités (notées par une couleur vert,
orange, rouge) définissant l’ordre de rejet dans un routeur en cas de congestions. Les paquets rouges
ont une probabilité de rejet plus important que les paquets oranges. La couleur dépend de la
15/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
conformité de la source avec son contrat. Le marqueur actuellement préconisé pour déterminer la
couleur du paquet est basé sur "tokens buckets" [RFC 2698]: si le trafic est conforme aux deux, les
paquets sont marqué en vert, s'il n'est conforme qu'à un des "tokens buckets", les paquets seront
marqués en orange et s'il n'est conforme à aucun des "tokens buckets" il est marqué en rouge. Dans
le cœur du réseau, les mécanismes de rejet sont basés sur RIO [Clark, Fang, 1998], une extension à
plusieurs priorités de RED. Chaque couleur dispose d'un seuil et d'une probabilité de rejet
différente. Quatre classes AF (notées AF1, AF2, AF3 et AF4) sont disponibles. Toujours pour être
le plus général possible, l'IETF ne définit pas de priorité parmi ces classes. On peut donc imaginer
attribuer les classes en fonction par exemple d'un ratio temps de traversée des paquets taux de perte
qui pourrait être utilisé pour différencier, par exemple, les services multimédias interactifs, de
streaming ainsi que les données. Une autre solution pourrait être d'affecter une classe pour le trafic
UDP et une autre pour le trafic TCP ce qui permet de ne pas détruire l'équité entre les flux TCP.
Contrairement aux travaux du groupe IntServ qui partaient de la base théorique du "Network
Calculus", ceux du groupe DiffServ, sont surtout basés sur une approche d'ingénierie portant sur la
définition de l'architecture et sur la gestion de l'octet DS, mais les travaux effectués sur les classes
de service d'ATM devraient pouvoir être repris et facilement applicables dans le contexte Internet. Il
faut pouvoir arriver à déterminer les paramètres de configuration des équipements.
Les classes de service DiffServ ont été présentées dans l'optique d'un opérateur unique. Or le trafic
peut traverser plusieurs systèmes autonomes. Il faut donc un critère de comparaison entre les classes
de services. L'exemple le plus marquant est le concept de "Bandwidth Broker", vaguement introduit
par Van Jacobson pour la classe de service EF. Le "Bandwidth Broker" a pour fonction de négocier
les paramètres de la classe EF avec les autres systèmes autonomes. La difficulté réside, comme pour
l'agrégation des flux de réservation dans IntServ, en la prise en compte des routes prises par ceux-ci
lors des négociations. Or l'exemple pris par Van Jacobson ne prend en compte qu'une succession
linéaire de domaine. Une des possibilités pour intégrer la route prise par les paquets serait de
travailler dans les bases de données d'état des liens du protocole de routage interne (OSPF, IS-IS)
qui contiennent une vision beaucoup plus précise (quoique toujours incomplète) de l'état du réseau.
Enfin, une méthode importante aussi bien dans la phase de validation des services que dans celle
d'exploitation, sera l'utilisation de critères objectifs pour caractériser les performances des classes de
services. Le groupe de travail IPPM"IP Performance Measurement" [RFC 2330] de l'IETF a défini
un certain nombre de critères pour mesurer en particulier le temps d'aller simple d'un paquet dans le
réseau. Pour augmenter la précision des mesures, des horloges synchronisées avec les systèmes GPS
permettent une synchronisation précise de tous les sites. Quand le service de différenciation sera mis
en place les clients pourront aussi se servir de ces mécanismes pour valider le réseau de leur
opérateur.
16/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
2.2.3. Intégration IntServ / DiffServ
L'intégration de ces deux mécanismes est à l'étude. Plusieurs propositions ont été soumises. La
première solution consiste à ne mettre l'intégration de service que dans les sites terminaux. Le cœur
du réseau ne traite pas les messages de signalisation, mais les transmet comme des paquets normaux
qui sont à nouveau interprétés dans le site destinataire. Un contrôle d'admission en bordure du
réseau DiffServ permet de déterminer si le flux peut entrer dans la classe de service.
L'autre possibilité consiste à considérer le réseau DiffServ avec la classe EF comme un élément de
réseau [Zhang, Yavatkar, 2000] et le caractériser pour permettre de construire un service garanti.
2.2.4. Ingénierie de trafic
L'ingénierie de trafic peut être un autre moyen d'augmenter la qualité du service, en dimensionnant
plus finement les ressources dans le réseau de l'opérateur. Elle peut être liée au routage par qualité
de service ou à l'utilisation de la différenciation de services, par exemple pour protéger certains flux
d'un trop grand nombre de pertes. Il s’agit alors d’adapter le comportement du réseau à chaque
classe de service en modifiant le routage et/ou le traitement dans les équipements intermédiaires.
L’adaptation du routage à chaque qualité de service peut se faire de différentes manières, la plus
évidente étant sans doute d’établir dans tous les routeurs du réseau une table de routage différente
pour chaque qualité de service. Bien qu’OSPF en prévoyait la possibilité, cette solution n’a pas été
employée parce qu’elle est coûteuse en mémoire et ne permet pas aux opérateurs de maîtriser les
routes prises par les paquets. En effet, celles-ci sont construites automatiquement par le protocole de
routage qui se base sur une métrique associée à chaque lien. Si la manipulation des métriques
permet de favoriser ou de défavoriser tel lien et donc d’influencer le chemin parcouru par les
paquets, elle reste d’une utilisation complexe. Les opérateurs préfèrent la possibilité d’établir des
chemins protégés (fixés à l’avance) dans le réseau et d’utiliser un chemin donné pour un trafic
donné. Ce trafic peut correspondre au trafic d’un client ou d’un réseau privé virtuel (VPN : Virtual
Private Network) particulier, ou appartenir à une classe de service donnée.
Il est possible d’utiliser de tels tunnels avec des technologies orientées circuits comme ATM ou
Frame Relay, celles-ci permettant aussi d’attribuer des ressources réservées aux chemins (circuits).
Malheureusement, non seulement l’administration de ces réseaux est complexe et peu automatisée,
17/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
mais l’utilisation d’un cœur de réseau ATM ou "Frame Relay"directement au-dessous d’IP suppose
un maillage logique (à base de circuits) complet des routeurs de bordure pour chaque qualité de
service. Chaque routeur d’entrée choisit en fonction du paquet et de la qualité de service qui lui est
associée le circuit conduisant au routeur de sortie avec la qualité de traitement correspondante.
Aujourd’hui MPLS "Multi Protocol Label Switching" [Callon, Swallow, 1999] permet de simplifier
l’administration d’un tel coeur de réseau en ajoutant de nouvelles fonctionnalités particulièrement
intéressantes pour la gestion de la qualité de service. Dans le même esprit que l’architecture
DiffServ, MPLS permet de réduire le coût des traitements associés au relayage des paquets en les
reportant à la périphérie du réseau et en en réduisant la fréquence. Il apporte aussi un mécanisme de
routage hiérarchique efficace, c’est-à-dire des tunnels permettant de gérer les réseaux privés virtuels
(VPN).
Le principe de MPLS est d’attribuer un label (une étiquette) à chaque paquet lorsqu’il entre dans le
réseau. Ce label est attribué en fonction de la classe de relayage (FEC : Forwarding Equivalent
Classe) à laquelle appartient le paquet. La définition de ces classes dépend de l’opérateur du réseau,
généralement une classe correspond à une entrée de la table de routage ou à un routeur de sortie du
réseau, mais elle peut aussi prendre en compte la classe de service DiffServ. Le routeur décide de la
FEC à laquelle appartient un paquet en fonction des informations contenues dans son en-tête
(adresse destination, classe de service DiffServ, appartenance à un VPN, ...) et éventuellement de la
connaissance qu’il a de la topologie du réseau. Une fois à l’intérieur du réseau les paquets ne sont
plus traités qu’en fonction du label qui leur a été associé et l’en-tête IP n’est plus consulté. Ce label
décide donc dans chaque routeur : du prochain routeur, du comportement DiffServ et de l’utilisation
éventuelle des ressources réservées.
18/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
2.3. Conclusion
On peut dire que ni IntServ ni DiffServ ne sont des modèles parfaits répondant à toutes les
exigences d'une bonne qualité de service. En effet, IntServ est très performant et bien adapté aux
réseaux de petite envergure, alors que DiffServ s'adapte mieux à des réseaux de grande échelle.
Cependant, la mise en œuvre de l’ensemble des mécanismes décris est une tache très lourde, il est
difficile de configurer manuellement l’ensemble des équipements réseau pour deux raisons
essentielles :
• l’abondance des informations de QoS,
• la nature dynamique des configurations de QoS.
L'IETF a ouvert plusieurs directions pour l'amélioration de la qualité de service. Aucune de ces
techniques n'est universelle, mais on assiste en ce moment à une convergence et une interaction
entre ces différentes technologies. Elles donnent aux opérateurs des outils permettant une meilleure
gestion des flux. Les techniques de réservation de ressources impliquent une certaine stabilité et une
pérennité. Elles ne peuvent être déployées que dans le cœur du réseau.
Nous aborderons dans le chapitre suivant une approche de gestion du réseau pour l’amélioration de
la qualité de service en utilisent la notion de politique. Cette approche devient une solution idéal
pour les réseaux de grandes dimensions.
19/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 3
3. Les serveurs de politiques
20/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
3.1. Introduction
La qualité de service au sein d’un réseau IP revient à regrouper les paquets d’un flux d’applications
dans une certaine classe de trafic. Cette classification a pour objet d’accorder à ces paquets un
traitement plus ou moins prioritaire par rapport à d’autres paquets. Ainsi, certains utilisateurs
recevront un meilleur service que d’autres. Il est alors inévitable que des utilisateurs rechercheront à
obtenir le meilleur service sans en payer le prix ou sans y être autorisé. On conçoit qu’il est
nécessaire de disposer de certains mécanismes sur le réseau, afin de mettre en œuvre des règles de
gestion de trafic, faisant appel à une architecture, à un certain nombre de protocoles et à des
modèles de représentation des données sous forme d’objet. Pour cela l’architecture de serveur de
politique et la notion de politique deviens une approche innovatrice.
3.2. Définition d’une politique de QoS
Une politique de QoS est un ensemble de règles associées à certains services. Les règles définissent
les critères à satisfaire pour obtenir ces services. Elles sont définies en fonction de conditions et
d’actions, les actions découlant du respect des conditions. Dans la pratique, une règle pourra ellemême contenir d’autres règles. Ce principe de hiérarchie de règle permet de construire des
politiques complexes à partir de règles simples. Le mode de définition de ces conditions et de ces
actions doit être établi d’une façon globale, de sorte à maintenir une cohérence entre les différents
domaines de gestion de politiques de QoS. En d’autres termes, un flux défini comme prioritaire dans
un domaine de gestion (le réseau interne de l’entreprise) doit rester prioritaire s’il traverse un réseau
d’opérateurs qui correspond à un autre domaine de gestion. Pour assurer cette portabilité des règles,
il est nécessaire que la définition de celle-ci soit réalisée dans un langage de description de haut
niveau, indépendant des équipements [Mélin 2001].
Une politique peut se définir à différents niveaux. Le niveau le plus haut correspond à celui de
l’utilisateur. La détermination d’une politique s’effectue par un dialogue entre l’utilisateur et
l’opérateur. Ils utilisent pour cette négociation soit le langage naturel soit des règles déjà préparées
par l’opérateur du réseau. Dans ce dernier cas, l’utilisateur ne peut sélectionner que des règles
proposées par le réseau. Dans les deux cas, cette politique doit être traduite dans un langage de
niveau réseau permettant de déterminer le protocole réseau de gestion de la qualité de service et son
paramétrage. Ensuite, il faut traduire ce
langage de niveau réseau en langage de bas niveau
correspondant à la programmation des nœuds du réseau, ce que l’on peut appeler la configuration du
nœud [RFC 2753].
21/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
3.3. Structure et architecture d’une politique de QoS
Une architecture générique a été définie par l'IETF qui permet la mise en œuvre d’un contrôle
d’admission des requêtes d’allocation de ressources fondé sur la mise en œuvre de politique (policybased admission control). Le contrôle ou la gestion par politique implique plusieurs composants :
les nœuds du réseau prennent le nom de PEP (Policy Enforcement Point). Les politiques y sont
appliquées pour gérer le flux des utilisateurs. Le PDP (Policy Decision Point) est l’élément qui
prend les décisions et choisit les politiques à appliquer aux PEP. Le système comporte également
une console utilisateur qui regroupe des outils de gestion des politiques. Elle permet notamment de
stocker, de mémoriser les politiques dans une base de données nommée Policy Repository, qui
entrepose les règles de politique que le PDP pourra rechercher pour les appliquer aux nœuds du
réseau [RFC 2753]. La figure 1 présente l'architecture proposée par l'IETF pour la prise en charge
des politiques de QoS.
Policy management
Tool
PDP
PEP
Policy
Repository
LDAP
PEP
PEP
Figure 1 : Architecture générique
22/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
3.3.1. Le PDP (policy décision point)
Le PDP est défini comme une entité logique prenant des décisions politiques pour lui-même ou pour
d’autres éléments du réseau qui demandent ses décisions. Le PDP ou serveur de politique, est donc
le point central qui doit décider des politiques à appliquer dans le réseau. Le PDP est en quelque
sorte un organe de décision qui recherche les informations dont il a besoin dans de nombreux
serveurs qui communiquent directement avec lui de façon à prendre une décision. Ces serveurs
peuvent être locaux ce qui est le cas le plus général, mais ils peuvent être distants.
Le principal serveur est le policy repository dans lequel le PDP vient rechercher les règles de
politique, cette mémoire communique avec le PDP par le protocole LDAP (Lightweight Directory
Access Protocol) ce qui explique son nom de serveur LDAP.
Il peut exister des serveurs complémentaire comme la PIB (Policy Information Base) qui garde en
mémoire les modèles informationnelles qui peuvent être utilisés pour représenter une politique sous
une syntaxe particulière. Le rôle du PDP consiste à identifier les règles de politiques qui sont
applicable aux différents PEP et à déterminer les règles à appliquer stratégiquement à ces PEP.
Le PDP doit également se préoccuper de la traduction des règles de politique dans des formats
compréhensibles des nœuds comme le format PIB. De plus il doit pouvoir communiquer avec
d’autres serveurs internes pour ses décisions. Enfin, le PDP assure la distribution des configurations.
En résumé, le PDP décide des règles à appliquer et envoie les ordres de configuration aux nœuds du
réseau [RFC 2753].
3.3.2. Les PEP (Policy Enforcement Point)
Les PEP sont des entités logiques qui appliquent les décisions en terme de politique prises par le
PDP dont elles dépendent. Les PEP sont généralement les nœuds du réseau, qui peuvent être de
différents types (routeurs, commutateurs, etc.). Un PEP peut également être un firewall ou un
équipement intermédiaire entre le client et le réseau. Un PEP doit être facilement accessible par
PDP de sorte qu’il soit possible de le configurer sans problème [RFC 2753].
Il faut noter que la séparation du PEP, du PDP et de l’annuaire (policy repository) est logique et ne
correspond pas forcément à une mise en œuvre physique. Ainsi, il est parfois possible que
l’ensemble des composants soient situés sur un seul nœud du réseau. Dans d’autre cas, les nœuds du
réseau peuvent comprendre un PEP et un PDP local, devant être complété par un PDP global. Dans
ce cas, le PDP associé au PEP sera appelé LPDP (local policy décision point) et permettra
d’appliquer une politique locale à l’équipement. Cependant, l’architecture prévoit, pour éviter des
trous de sécurité, que LPDP se réfère à un PDP pour la décision finale quant à la politique à
appliquer. L’architecture précise également qu’il est possible d’en avoir plusieurs (PDP/base de
23/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
données des politiques associées) pour fiabiliser la gestion du réseau et introduire un niveau de
redondance. Ce nombre doit être limité afin de simplifier l’administration [Mélin 2001].
On considère que les trois fonctions suivantes doivent être associées à une politique :
• La fonction de décision : cette fonction réalisée par le PDP suppose la recherche d’une
politique, son interprétation, la détection de conflits entre politiques, la réception de la
description des interfaces des équipements, la réception des requêtes de PEP, la détermination
de la politique à appliquer.
• La fonction d’application (enforcement) : cette fonction implique un PEP agissant selon les
décisions du PDP, en fonction des politiques à appliquer et des conditions du réseau.
• La fonction de mesure (metering) : cette fonction permet de vérifier la mise en place de la
politique et son respect.
Outre les composants décrits ci-dessus, cette architecture recourt à deux protocoles majeurs :
• COPS (Common Open Policy Service) : c’est le protocole sécurisé permettant les échanges
entre les PEP et les PDP [RFC 2748].
• LDAP (Lightweight Directory Access Protocol) : c’est le protocole utilisé pour accéder à la
base de données des règles [RFC 2251].
3.4. Les langages de politique (Policy Language)
La politique est quelque chose qui contrôle l'information, c'est-à-dire le trafic des utilisateurs. Mais
pourquoi faut-il le contrôler ? Parce qu'il existe de contraintes à imposer dans le réseau, telles que :
• l'intégration des différents médias
• les ressources qui ne sont pas infinies
• les applications ont des besoins divers (délai, bande passante, sécurité, etc.)
Les politiques réseau ont pour but de gérer les éléments du réseau pour satisfaire les différentes
contraintes de l'utilisateur. Différentes vues abstraites de la politique réseau ont été définis. Au
niveau le plus haut (niveau réseau), se trouvent les SLA (Service Level Agreement) qui correspond à
un contrat entre l'utilisateur et le fournisseur réseau. Un SLA contient une partie technique liée aux
paramètres réseau appelée SLS (Service Level Specification) et SLO (Service Level Objectives) qui
présente les objectifs qui se fixe l'opérateur. [RFC 3198].
24/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Dans le niveau suivant (niveau routeur), se trouvent les règles de politiques. La gestion par
politiques va automatiser la configuration du réseau. Différents types de politiques existent :
• de configuration,
• d'installation,
• de contrôle d'erreurs et événements, de sécurité.
Dans l’approche de gestion de la QoS à base de politique, la qualité de service est négociée sous
forme de SLA. La gestion des ces SLA et de la QoS représente une nouvelle question qui doit être
abordée. Il faut regarder la façon dont les SLA sont décrits ainsi que la gestion et la présentation des
paramètres de QoS. Plus spécifiquement, des langages de politique de gestion de service ont été
définis dans lesquels un administrateur peut publier et commander les ressources fondamentales du
réseau. L'architecture proposée soutient également la conception d’applications de gestion à base de
politique à l'aide d’un langage d'interprétation de politique, d'une interface graphique, et d'un dépôt
de politique.
La vérification et la validation des politiques ont suscité beaucoup d’intérêt dans la communauté de
l’informatique. Cette problématique à motivé le développement d’une panoplie de langages, nous
passeront en revue les langage de politique qui existe et nous mettront l’accent sur un en particulier
qui et le langage de spécification de politique Ponder.
.
3.4.1. Langage PFDL (Policy Framework Definition Language)
Le PFDL est un langage de l'outil de l'administrateur de réseau pour exprimer divers genres de
politiques de réseau. Ceci peut inclure des politiques de sécurité, politiques de qualité de service, ce
langage est issu du modèle PCIM. PFDL voit une politique comme ensemble de règles pour un
domaine donné. Alternativement, une règle définit un ordre des actions qui peuvent être déclenchées
en raison de quelques conditions. Des conditions sont faites d'un type et d'une valeur. Leur
exécution peut être séquentielle, conditionnelle, aléatoire (mode de défaut) ou basée sur des résultats
des règles semblables [Strassner 1998].
25/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
3.4.2. Langage ProNet
C’est un langage qui à une syntaxe simple et qui a été adopté afin de représenter des politiques et
des règles. Il est basé sur deux concepts principaux, à savoir, les politiques et les événements. Un
programme écrit dans ProNet se compose d'un ensemble constructions d'où chacune de ces derniers
représente une définition, un instanciation, une liste et/ou un déplacement d'une politique ou d'un
événement, ou une invocation de service [Fidalgo 2002].
3.4.3. Langage Ponder
Ponder [Damianou, Dulay, 2000] [Damianou, 2002] est un langage de spécification de politiques de
contrôle d'accès pour les systèmes distribués. Ce langage se base sur les notions suivantes
- Le Sujet (Subject) fait référence aux utilisateurs, programmes ou toute autre entité qui peut
accéder à une ressource ou un service.
- La Cible (Target) fait référence aux ressources et aux services partagés dans un réseaux de
communication ou dans un système. Les cibles sont accessibles par les sujets selon les politiques de
Ponder.
- Les sujets et les cibles sont regroupés en Domaines (Domains).
Le langage Ponder considère plusieurs types de politiques de contrôle d'accès. Nous allons
introduire ces types dans les paragraphes qui suivent.
Politiques d'autorisation
Les politiques d'autorisation définissent l'ensemble des actions permises et défendues pour un
ensemble de sujets et sur un ensemble de cibles. Elles peuvent également être validées par un
ensemble de contraintes. Ces contraintes vont être présentées dans la sous-section suivante.
26/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Politiques de filtrage de l'information
Les politiques de filtrage servent à sélectionner l'information accessible aux sujets.
Ces politiques sont associées aux actions dans les politiques d'autorisations. Comme exemple, nous
pouvons considérer la politique d'autorisation suivante :
Une politique de filtrage de l'information est associée à la politique d'autorisation nommée
VideoConference. Cette politique autorise aux membres des groupes /Agroup et /Bgroup d'initialiser
une vidéoconférence avec les membres du groupe USAgroup excepté ceux de NYgroup.
L'initialisation d'une vidéoconférence prend comme paramètres la bande passante (BW) et la
priorité (Priority). Une politique de filtrage est associée à cette action, elle limite la bande passante à
2MB/s et établit sa priorité à 3.
Politiques de délégation
Les politiques de délégation autorisent un ensemble d'utilisateurs à transférer les autorisations
d'accès, en entier ou en partie, qu'ils possèdent à un autre ensemble d'utilisateurs. Un sujet peut donc
déléguer à un autre utilisateur les droits qu'il possède.
Dans cet exemple le groupe Agroup délègue à Cgroup la politique d'autorisation VideoConference.
La politique de délégation est appelée DelegVC.
27/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Politique de retenue
Les politiques de retenue (Restrain Policies) sont des politiques qui empêchent un groupe de sujets
d'exécuter un ensemble d'actions sur un ensemble de cibles. Les politiques de retenue sont similaires
aux politiques d'autorisation négatives, mais ces dernières sont gérées par les cibles alors que les
politiques de retenues sont gérées par les sujets.
Politiques d'obligation
Les politiques d'obligation spécifient les actions à entreprendre à la suite d'un événement.
La politique de l'exemple ci dessus est déclenchée à la suite de trois échecs d'authentification
successifs par les sujets du domaine /NRegion /SecAdmin accédant au domaine /NRegion/users. La
politique désactive le sujet et écrit son identificateur dans le journal.
a) Composition des politiques
Le langage Ponder offre la possibilité de structurer les politiques de contrôle d'accès
en des groupes de politiques. Un groupe peut contenir des politiques ou des sous-groupes.
Le regroupement des politiques peut avoir deux objectifs :
- structurer et organiser les politiques pour faciliter l'accès et la réutilisation et là on parle de
groupe (group)
- structurer les politiques selon leur sémantique et les associer à un domaine de sujets et là on
parle de rôle
28/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
b) Contraintes dans Ponder
Les contraintes des politiques de contrôle d'accès servent à spécifier les conditions de validité et
d'applicabilité des politiques. Dans Ponder, il y a deux types de contraintes les contraintes relatives à
une seule politique et les contraintes relatives à un groupe de politiques : métapolitiques.
Contraintes relatives à une seule politique
Les contraintes relatives à une seule politique sont spécifiées au niveau des politiques d'autorisation
avec des prédicats. Ces contraintes peuvent être basées sur :
- les sujets et les cibles
- les paramètres des actions et des événements
- le temps (date et heure)
L'exemple ci-dessus montre la même politique d'autorisation de la sous-section précédente mais qui
possède une contrainte sur le temps. Ainsi, cette politique n'est appliquée qu'entre 16h00 et 18h00.
Métapolitiques
Les métapolitiques ont pour objectif de définir des contraintes sur un ensemble de politiques. Une
méta-politique utilise un sous-ensemble de OCL (Object Constraint Language [Group, O.M,
2003]). Une contrainte est exprimée avec des d'expressions OCL qui peuvent déclencher l'exécution
d'actions.
Conflits dans Ponder
Dans la mesure ou plusieurs politiques peuvent s'appliquer à un contexte particulier, des conflits
c)
peuvent exister entre elles. Dans Ponder deux types de conflits peuvent être détectés et analysés
[Lupu et Sloman, 1997] [Lupu et Sloman, 1999] : les conflits de modalité et les conflits
sémantiques.
29/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Conflits de modalité.
Si des politiques positives et négatives s'appliquent pour les mêmes sujets, cibles et actions, alors il
y aura un conflit de modalité. Ce type de conflits survient lorsque les domaines des politiques
chevauchent (domaines des sujets, cibles et actions).
Pour résoudre ce genre de conflits, des règles de priorité et de préséance peuvent être établies afin
d'aboutir à une seule décision. Comme relations de préséance nous pouvons citer :
Les politiques négatives ont toujours la priorité
Des priorités explicites sont assignées aux politiques
Considérer les politiques les plus spécifiques
Ce genre de conflits est détecté par l'outil Ponder Toolkit .
Conflits sémantiques
Les conflits sémantiques sont des situations non conformes aux spécifications d'un système. Ces
conflits sont spécifiques aux applications et aux contextes associés. Ces conflits dépendent des
facteurs externes tels que la disponibilité des ressources ou bien des politiques externes telles que
les politiques globales dans une entreprise. Nous pouvons citer les exemples suivants :
- Séparation des taches : une même personne ne peut pas autoriser et initier le même
paiement.
- Conflits des ressources : une ressource n'est disponible qu'en quantité limitée.
- Un administrateur a toujours la priorité d'accès.
Ces situations peuvent générer des conflits sémantiques. En effet, les conflits sémantiques sont le
résultat de la contradiction entre les politiques et les propriétés du système. Pour traiter ce genre de
conflits les métapolitiques sont utilisées pour caractériser ce genre de situation (OCL) et effectuer
les actions nécessaires.
d) Outils pour la détection de conflits
Ponder Toolkit est une suite d'outils [Damianou, 2002] permettant de gérer et d'analyser les
politiques de contrôle d'accès dans un environnement distribué. Cette suite intègre un outil d'analyse
des conflits de modalité (Conflict Analyzer ). Cet outil est implémenté en Java et détecte le
chevauchement des domaines et les présente sous un format graphique.
30/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La figure ci-dessous montre le résultat obtenu pour la détection de conflits de modalité pour six
politiques d'autorisations, trois politiques positives (les clés) et trois politiques négatives (les clés
barrées). La relation de chevauchement est représentée par un arc orienté de la politique la plus
spécifique vers la politique la plus générale. Nous pouvons bien remarquer que les politiques
positives chevauchent avec les politiques négatives, ce qui peut etre une source de conflit. Par
exemple
la
politique
positive
Org1_authorisation1
annule
la
politique
négative
Org3_authorisation2 car leurs domaines chevauchent.
La figure ci-dessus montre un exemple de conflit. Les sujets des domaines O2_m1 et O2_m2
peuvent effectuer les opérations retract(), delete() et disable() sur les cibles du domaine
SharedPolicies puisque la politiques Org2_authorisation1 l'autorise. Mais, les politiques
Org1_authorisation2 et Org3_authorisation2 ne l'autorisent pas. L'outil permet également de
transformer les politiques et les métapolitiques en des prédicats en Prolog afin de détecter les
conflits sémantiques.
Les travaux réalisés sur Ponder restent spécifiques à ce langage. La vérification et l'analyse se font
avec deux techniques différentes pour les conflits de modalité et les conflits sémantiques. Ces deux
types de conflits sont étroitement liés mais il n'y a pas un seul outil qui les traite. De plus, malgré
que les métapolitiques représentent une technique efficace pour traiter les conflits, il existe encore
un risque que les métapolitiques soient elles mêmes incohérentes
31/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
3.5. Conclusion
.
Dans ce chapitre, nous avons proposé une approche de gestion autonome, basée sur des politiques ,
adaptée aux réseaux IP multimédia pour le support de la QoS de bout en bout. Cette approche
permet d'automatiser la gestion des ressources à l'intérieur de chaque équipement afin de satisfaire
les objectifs de l'administrateur.
Afin de réaliser cette proposition, nous allons étudier la manière dans le politiques sont stoker, pour
cela l’annuaire LDAP reste la solution préconisée, le chapitre suivant présente en détail les
principaux concepts des annuaire LDAP
32/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 4
4. LES ANNUAIRES LDAP
33/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4.1. Introduction
Un annuaire est un recueil de données dont le but est de pouvoir retrouver facilement des ressources
(généralement des personnes, des ressources informatiques ou des organisations) à l'aide d'un
nombre limité de critères. Les annuaires électroniques sont un type de base de données spécialisée
permettant de stocker des informations de manière hiérarchique et offrant des mécanismes simples
pour rechercher l'information, la trier, l'organiser selon un ou plusieurs critères. L'utilisation
d'annuaire ne se limite pas à la recherche de personnes ou de ressources. En effet, un annuaire peut
servir à :
• constituer un carnet d'adresse,
• authentifier des utilisateurs grâce à des mots de passe,
• définir les droits sur des utilisateurs de l’annuaire,
• recenser des informations sur un parc matériel (ordinateurs, serveurs, leurs adresses IP,
etc.),
• décrire les applications disponibles et gérer leurs droits.
Etant donné le grand nombre d'enregistrements que peut comporter un annuaire, plusieurs milliers
voire un million pour les mises en œuvre les plus importantes, il n'est parfois pas concevable de
créer un annuaire centralisé contenant les informations de toutes ces entrées. C'est la raison pour
laquelle les serveurs d'annuaires doivent être capables de communiquer entres eux afin de partager
l'information. C’est la grande force et l’avantage du protocole LDAP. Pour des grandes entreprises,
un annuaire doit pouvoir être interrogé sur les adresses de personnes de différentes filiales localisées
dans des régions géographiquement éloignées. Les serveurs d'annuaires possèdent la faculté de se
répliquer, c'est-à-dire d'offrir des fonctions permettant d'importer et d'exporter des enregistrements
(on dit généralement synchroniser) avec d'autres annuaires. On parle ainsi de réplication ou bien de
synchronisation. La synchronisation est peut être assurée de deux manières différentes :
• Grâce à des mécanismes de synchronisation intégrés par les produits du marché dans le
système d’administration de l’annuaire
• Grâce à des outils appelés méta-annuaire (on parle aussi parfois de proxy LDAP). On
distingue habituellement deux types de méta-annuaire. Les méta-annuaires avec
réplication créant une base de donnée issue de l'agrégation des données provenant des
différents annuaires et les méta-annuaires virtuels créant des références centrales vers les
données contenues dans les différents annuaires, mais ne dupliquant pas l'information.
34/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4.2. Les concepts de LDAP
Dans le cadre de l'utilisation en mode client-serveur de la couche applications du modèle OSI, la
fonctionnalité des annuaires (administration, authentification et contrôle de d'accès) a été élaborée à
l'origine pour traiter la gestion des adresses électroniques. A partir de ces concepts, il a été reconnu
qu'il y avait une utilisation possible avec plusieurs autres applications. Par conséquent, elle a été
définie comme une norme ou un module distinct dans la recommandation X.500 de l'UIT-T
[X.500]. Bien que la couverture ait été complète, les personnes chargées de la mise en œuvre à cette
période, l'ont critiquée comme étant trop complexe et, par conséquent, trop difficile à mettre en
œuvre.
Pour aborder ce problème du service annuaire DAP qui était trop complexe à mettre en œuvre,
l'université du Michigan a élaboré une version plus simple du DAP basée sur TCP/IP en vue d'une
utilisation sur Internet. Le LDAP offre de nombreuses fonctionnalités du DAP d'origine et on peut
l'utiliser pour interroger des données d'annuaires exclusifs aussi bien que d'un service ouvert X.500.
Au fur et à mesure des années, la plupart des fournisseurs importants de logiciels de courrier
électronique et de services d'annuaires se sont montrés intéressés par le LDAP, celui-ci est
maintenant le véritable protocole d'annuaire utilisé pour Internet.
4.2.1. Le protocole LDAP
Bien que le LDAP ait commencé comme un simple composant de l'annuaire X.500, il évolue en un
service d'annuaire complet. En se servant des services de noms d'Internet, les réalisateurs
construisent des couches de sécurité et ajoutent des capacités qui existent dans les composants de
l'annuaire X.500, autres que le DAP. Par exemple, le contrôle de sécurité, duplication des données
entre des sites multiples et utilisation de caractères plus complexes que le simple ASCII.
Les principaux éléments du protocole LDAP sont :
• un protocole permettant d'accéder à l'information contenue dans l'annuaire et définit
comment s'établit la communication client-serveur,
• un modèle de données qui définit le type de données contenues dans l'annuaire,
• un modèle de nommage qui définit comment l'information est organisée et référencée,
• un modèle fonctionnel qui définit comment on accède à l'information,
• un modèle de sécurité qui définit comment les données et l’accès sont protégés,
• un modèle de duplication qui définit comment la base est répartie entre serveurs.
• des APIs pour développer des applications clientes,
• LDIF, et plus récemment DSML, des formats d'échange de données.
35/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Un annuaire LDAP est basé sur un modèle de collection d’objets représentant des entrées
d’annuaires. Chaque type d’entrées (d’objets) est composé de plusieurs attributs qui servent à
décrire l’objet en question. Pour illustrer ce modèle, prenons un objet "personne". L’objet personne
est défini par une liste d’attributs facultatifs ou obligatoires.
Des mécanismes de chiffrement comme SSL ou TLS, et d'authentification comme SASL, couplés à
des mécanismes de règles d'accès (ou A.C.L. pour Access Control List) gérées par l’annuaire
proprement dit, permettent de protéger les transactions et l'accès aux données.
La plupart des logiciels serveurs LDAP proposent également un protocole de communication
serveur-serveur. Il permet à plusieurs serveurs d'échanger leur contenu et de le synchroniser ou bien
de créer entre eux des liens permettant ainsi de relier des annuaires les uns aux autres.
Aujourd’hui dans la version actuelle du protocole LDAP est la version 3, celle-ci est définit par les
standards délivrés par l’IETF [RFC 2251].
Concernant la communication serveur-serveur, le « referral service » est définit par LDAPv3, par
contre le « replication service » est encore en cours de normalisation. Des produits du marché l’ont
cependant intégré avec leur propre mécanisme en participant et anticipant la parution de la
normalisation.
Contrairement à d'autres protocoles d'Internet, comme HTTP, SMTP ou NNTP, le dialogue LDAP
ne se fait pas en ASCII mais utilise le format de codage Basic Encoding Rule (BER).
4.2.2. Modèles de données LDAP
LDAP était à l'origine une passerelle d'accès à des annuaires X500. En 95, l'Université du Michigan
créa le premier serveur LDAP autonome (standalone LDAP) utilisant sa propre base de données au
format de type dbm. Les serveurs LDAP sont conçus pour stocker une grande quantité de données
mais de faible volume et pour accéder en lecture très rapidement à celles-ci grâce au modèle
hiérarchique.
Le Directory Information Tree
Les données LDAP sont structurées dans une arborescence hiérarchique qu'on peut comparer au
système de fichier Unix. Chaque noeud de l'arbre correspond à une entrée de l'annuaire ou directory
service entry (DSE) et au sommet de cette arbre, appelé Directory Information Tree (DIT), se trouve
la racine ou suffixe (fig1). Ce modèle est en fait repris de X500, mais contrairement à ce dernier,
conçu pour rendre un service d'annuaire mondial (ce que le DNS fait par exemple pour les noms de
machines de l'Internet), l'espace de nommage d'un annuaire LDAP n'est pas inscrit dans un contexte
global.
36/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Les entrées correspondent à des objets abstraits ou issus du monde réel, comme une personne, une
imprimante, ou des paramètres de configuration. Elles contiennent un certain nombre de champs
appelés attributs dans lesquelles sont stockées des valeurs. Chaque serveur possède une entrée
spéciale, appelée root directory specific entry (rootDSE) qui contient la description de l'arbre et de
son contenu.
figure 1. exemple de DIT
Le schéma
L'ensemble des définitions relatives aux objets que sait gérer un serveur LDAP s'appelle le schéma.
Le schéma décrit les classes d'objets, leurs types d'attributs et leur syntaxe.
Les attributs
Une entrée de l'annuaire contient une suite de couples types d'attributs - valeurs d'attributs. Les
attributs sont caractérisés par :
•
Un nom qui l'identifie
•
Un Object Identifier (OID) qui l'identifie également
•
S'il est mono ou multi-valué
•
Une syntaxe et des règles de comparaison
•
Un indicateur d'usage
•
Un format ou une limite de taille de valeur qui lui est associée
Les attributs décrivent généralement des caractéristiques de l'objet (tableau 1), ce sont des attributs
dits normaux qui sont accessibles aux utilisateurs (ex : attribut givenname). Certains attributs sont
dits opérationnels car ils ne servent qu'au serveur pour administrer les données (ex : attribut
modifytimestamp).
La syntaxe indique le type de données associées à l'attribut et la manière dont l'annuaire doit
comparer les valeurs lors d'une recherche (tableau 2).
37/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Certains serveurs LDAP respectent les standards X500 de hiérarchisation des attributs, qui
permettent de décrire un attribut comme étant un sous-type d'un attribut super-type et d'hériter ainsi
de ses caractéristiques. Par exemple, les attributs cn, sn, givenname sont des sous-types de l'attribut
super-type name. Ces attributs super-types peuvent être utilisés comme critère de recherche
générique qui porte sur tous ses sous attributs.
Les classes d'objets
Les classes d'objets modélisent des objets réels ou abstraits en les caractérisant par une liste
d'attributs optionnels ou obligatoires. Une classe d'objet est définie par :
•
Un nom qui l'identifie
•
Un OID qui l'identifie également
•
Des attributs obligatoires
•
Des attributs optionnels
•
Un type (structurel, auxiliaire ou abstrait)
Le type d'une classe est lié à la nature des attributs qu'elle utilise.
•
Une classe structurelle correspond à la description d'objets basiques de l'annuaire : les
personnes, les groupes, les unités organisationnelles... Une entrée appartient toujours au
moins à une classe d'objet structurelle.
•
Une classe auxiliaire désigne des objets qui permettent de rajouter des informations
complémentaires à des objets structurels. Par exemple l'objet mailRecipient rajoute les
attributs concernant la messagerie électronique d'une personne. L'objet labeledURIObject
fait de même concernant les infos Web.
•
Une classe abstraite désigne des objets basiques de LDAP comme les objets top ou alias.
Les classes d'objets forment une hiérarchie, au sommet de laquelle se trouve l'objet top. Chaque
objet hérite des propriétés (attributs) de l'objet dont il est le fils. On peut donc enrichir un objet en
créant
un
objet
fils
qui
lui
rajoute
des
attributs
supplémentaires.
On précise la classe d'objet d'une entrée à l'aide de l'attribut objectClass. Il faut obligatoirement
indiquer la parenté de la classe d'objet en partant de l'objet top et en passant par chaque ancêtre de
l'objet., l'objet inetOrgPerson a la filiation suivante :
38/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Exemple :
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
L'objet
person
a
comme
attributs
:
commonName,
surname,
description,
seeAlso,
telephoneNumber,userPassword
L'objet fils organizationalPerson ajoute des attributs comme : organizationUnitName, title,
postalAddress...
L'objet petit-fils inetOrgPerson lui rajoute des attributs comme : mail, labeledURI, uid (userID),
photo ...
Une entrée peut appartenir à un nombre non limité de classes d'objets. Les attributs obligatoires sont
dans ce cas la réunion des attributs obligatoires de chaque classe.
ableau 1 : Exemples de classes d'objets
Entry Type
Required Attributes
Optional Attributes
businessCategory
carLicense
departmentNumber
description
employeeNumber
facsimileTelephone
Number
givenName
mail
inetOrgPerson (defines entries for a person)
commonName (cn)
manager
surname (sn)
mobile
objectClass
organizationalUnit (ou)
pager
postalAddress
roomNumber
secretary
seeAlso
telephoneNumber
title
labeledURI
uid
businessCategory
description
organizationalUnit (defines entries for organizational units)
ou
objectClass
facsimileTelephoneNumber
location (l)
postalAddress
seeAlso
telephoneNumber
businessCategory
organization (defines entries for organizations)
o
description
objectClass
facsimileTelephoneNumber
location (l)
39/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
postalAddress
seeAlso
telephoneNumber
Tableau 2. types de formats des attributs
Type
Description
bin
binary information
ces
case exact string (case of text is significant during comparison).
cis
case ignore string (case of text is ignored during comparison).
tel
telephone number (numbers are treated as text, but all blanks and dashes (-) are ignored).
dn
distinguished name.
Les OIDs
Les objets et leurs attributs sont normalisés par le RFC 2256 de sorte à assurer l'interopérabilité
entre les logiciels. Ils sont issus du schéma de X500, plus des ajouts du standard LDAP ou d’autres
consortiums industriels. Ils sont tous référencés par un object identifier (OID) unique dont la liste
est
tenue
à
jour
par
l'Internet
Assigned
Numbers
Authority
(IANA).
Il est possible de modifier le schéma en rajoutant des attributs à un objet (déconseillé) ou en créant
un nouvel objet (mieux) et d'obtenir un OID pour cet objet auprès de l'IANA (encore mieux).
Un OID est une séquence de nombres entiers séparés par des points. Les OID sont alloués de
manière hiérarchique de telle manière que seule l'autorité qui a délégation sur la hiérachie "1.2.3"
peut définir la signification de l'objet "1.2.3.4". Par exemple :
2.5
- fait référence au service X500
2.5.4
- est la définition des types d'attributs
2.5.6
- est la définition des classes d'objets
1.3.6.1
- the Internet OID
1.3.6.1.4.1 - IANA-assigned company OIDs, used for private MIBs
1.3.6.1.4.1.4203
- OpenLDAP
40/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La définition du schéma
Il existe plusieurs formats pour décrire un schéma LDAP :
•
slapd.conf : fichier de configuration utilisé par U-M slapd, OpenLDAP et Netscape
Directory
•
ASN.1 : utilisé dans les documents décrivant les standards LDAP et X500
•
LDAPv3 : La version 3 du protocole LDAP introduit l'obligation pour un serveur de publier
son schéma via LDAP, pour permettre aux applications clientes d'en connaître le contenu. Le
schéma est localisé par l'attribut opérationnel subschemaSubentry de l'entrée rootDSE. La
valeur de cet attribut est une liste de DNs qui pointent vers des entrées, dont la classe d'objet
est subschema, dans lesquelles sont stockées les descriptions des objets et des attributs.
Le tableau 3 montre les différences de syntaxe pour l'attribut cn et l'objet person
Tableau 3. formats de description du schéma
slapd.conf
attribut
cn
ASN1
commonName ub-common-
2.5.4.3 cis
name
LDAPv3
INTEGER
commonName
WITH
attribut
::=
64 attributetypes: (2.5.4.3 NAME 'cn' DESC 'commonName
ATTRIBUTE Standard'
ATTRIBUTE-SYNTAX
Attribute' SYNTAX 1.3.5.1.4.1.1466.115.121.1.15)
caseIgnoreStringSyntax
(SIZE
(1..ub-common-name))
::= {attributeType 3}
objet
objectclass
person person
oid
superior
2.5.6.6
top
OBJECT-CLASS
SUBCLASS
MUST
::=
OF
{ objectclass: (2.5.6.6 NAME 'person' DESC 'standard
top person'
CONTAIN
{
requires
commonName,
sn,
surname}
cn
MAY
allows
CONTAIN
MUST
Class'
(objectclass
SUP
$
sn
$
'top'
cn
)
MAY ( description $ seealso $ telephonenumber $
{ userpassword
)
description, )
description,
seeAlso,
seeAlso,
telephoneNumber,
telephoneNumber,
userPassword}
userPassword
Object
::= {objectClass 6}
Quand une entrée est créée, le serveur vérifie si sa syntaxe est conforme à sa classe ou ses classes
d'appartenance : c'est le processus de Schema Checking.
Il existe deux objets abstraits particuliers : les aliases et les referrals qui permettent à une entrée de
l'annuaire de pointer vers une autre entrée du même ou d'un autre annuaire. L'attribut
aliasObjectName de l'objet alias a pour valeur le DN de l'entrée pointée. L'attribut ref de l'objet
referral a pour valeur l'URL LDAP de l'entrée désignée.
41/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Le Distinguish Name
Chaque entrée est référencée de manière unique dans le DIT par son distinguished name (DN). Le
DN représente le nom de l'entrée sous la forme du chemin d'accès à celle-ci depuis le sommet de
l'arbre. On peut comparer le DN au path d'un fichier Unix. Par exemple, mon DN correspondant à
l'arbre de la figure 1 est :
uid=mirtain,ou=people,dc=inria,dc=fr
Le DN représente le chemin absolu d'accès à l'entrée. Comme pour le système de fichier Unix, on
peut utiliser une relative distinguished names (RDNs) pour désigner l'entrée depuis une position
déterminée de l'arbre. Par exemple, à partir de la position dc=inria, dc=fr de la figure 1, on peut
employer les RDNs suivants :
ou=people
ou=groups
cn=Semir,ou=groups
uid=mirtain, ou=people
4.2.3. LDIF
LDAP Data Interchange Format (LDIF) permet de représenter les données LDAP sous format texte
standardisé, il est utilisé pour afficher ou modifier les données de la base. Il a vocation à donner une
lisibilité des données pour le commun des mortels.
LDIF est utilisé dans deux optiques :
•
faire des imports/exports de base
•
faire des modifications sur des entrées.
La syntaxe est un nom d'attribut suivi de : suivi de la valeur (uid: mirtain), le premier attribut d'une
entrée étant le DN (dn: uid=mirtain,ou=people,dc=inria,dc=fr). Le format utilisé est l'ASCII, les
données binaires étant codés en base 64.
La forme générale est :
dn: <distinguished name
objectClass: <object class
objectClass: <object class
...
<attribute type:<attribute value
<attribute type:<attribute value
42/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Une entrée de type personne se représente de la manière suivante :
dn: cn= June Rossi, ou= accounting, o= Ace Industry, c= US
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: June Rossi
sn: Rossi
givenName: June
mail: [email protected]
userPassword: {sha}KDIE3AL9DK
uid: rossi
telephoneNumber: 2616
roomNumber: 220
Les commandes de modification ont la syntaxe suivante :
dn: distinguished name
changetype <identifier
change operation identifier
list of attributes...
...
change operation identifier
list of attributes
...
<identifier :
add (ajout d'une entrée),
delete (suppression),
modrdn (modification du RDN),
modify (modification : add, replace, delete d'un attribut)
Le caractère - spécifie le séparateur entre 2 instructions
Par exemple :
Ajouter le numéro de téléphone et le nom du manager pour la personne Lisa Jangles :
dn: cn= Lisa Jangles, ou= Sales, o= Ace Industry, c= US
changetype: modify
add: telephonenumber
telephonenumber: (408) 555- 2468
add: manager
manager: cn= Harry Cruise, ou= Manufacturing, o= Ace Industry, c= US
43/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Pour détruire l'entrée
dn: cn= Lisa Jangles, ou= Sales, o= Ace Industry, c= US
changetype: delete
LDAP utilise le jeu de caractères Unicode Transformation Format- 8 (UTF-8) pour le stockage des
valeurs d'attributs de type texte et celui des DNs. UTF- 8 englobant tous les jeux de caractères
(isoLatin, Shift- JLS...), on peut employer différentes langues pour les valeurs d'attribut grâce à
l'option language code de l'attribut (extension proposée par l_IETF). On peut donc ainsi créer des
annuaires multilingues.
Par exemple, on peut avoir pour un objet personne, un attribut description en français et un autre en
japonais :
description, lang-fr : le texte en français
description, lang-ja : le même en japonais
Le code suit le standard ISO 639.
4.2.4. Le modèle fonctionnel
Les opérations de base sont résumées dans le tableau 4. Elles permettent d'accéder au serveur ou de
modifier la structure de l'arbre et/ou les entrées de l'annuaire. Elles jouent un rôle analogue aux
commandes de manipulation de fichiers d'Unix (cp, mv, rm...).
Tableau 4. opérations de base
Opération LDAP
Description
Search
recherche dans l'annuaire d'objets à partir de critères
Compare
comparaison du contenu de deux objets
Add
ajout d'une entrée
Modify
modification du contenu d'une entrée
Delete
suppression d'un objet
Rename (Modify DN) modification du DN d'une entrée
Bind
connexion au serveur
Unbind
deconnexion
Abandon
abandon d'une opération en cours
Extended
opérations étendues (v3)
Les commandes search et compare se font sous la forme d'une requête composée de 8 paramètres
(tableau5)
44/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
:
Tableau 5. paramètres d'une requête
Paramètre
Description
base object
l'endroit de l'arbre où doit commencer la recherche
scope
la profondeur de la recherche
derefAliases
si on suit les liens ou pas
size limit
nombre de réponses limite
time limit
temps maxi alloué pour la recherche
attrOnly
renvoie ou pas la valeur des attributs en plus de leur type
search filter
le filtre de recherche
list of attributes la liste des attributs que l'on souhaite connaître
Le scope définit la profondeur de la recherche dans le DIT. La figure 2 met en relief la portée d'une
recherche ou d'une comparaison en fonction du paramètre scope :
figure 2. le scope
search scope = base
search scope = onelevel search
searchscope = subtree
45/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Il n'existe pas de fonction read dans LDAP. Cette fonction est simulée par la fonction search avec
un search scope égal à base.
Le filtre de recherche s'exprime suivant une syntaxe spécifique dont la forme générale est :
(< operator(< search operation)(< search operation)...))
Ce filtre décrit une ou plusieurs conditions exprimées sous forme d'expressions régulières sensées
désigner un ou plusieurs objets de l'annuaire, sur lesquels on veut appliquer
L’opération voulue. Le tableau 6 récapitule les opérateurs de recherche disponibles :
Tableau 6. opérateurs de recherche
Filtre
Syntaxe
Interprétation
Approximation (sn~=Mirtain)
nom dont l'orthographe est voisine de Mirtain
Egalité
(sn=Mirtain)
vaut exactement Mirtain
Comparaison
(sn>Mirtain) , <= , >= , <
noms situés alphabétiquement après Mirtain
Présence
(sn=*)
toutes les entrées ayant un attribut sn
Sous-chaîne
(sn=Mir*), (sn=*irtai*), (sn=Mirt*i*) expressions régulières sur les chaînes
ET
(&(sn=Mirtain) (ou=Semir))
toutes les entrées dont le nom est Mirtain et du service Semir
OU
(|(ou=Direction) (ou=Semir))
toutes les entrées dont le service est le Semir ou la Direction
Négation
(!(tel=*))
toutes les entrées sans attribut téléphone
Lors de la connexion au serveur (bind), ce dernier demande une authentification. Le client doit alors
fournir un DN et le mot de passe correspondant, celui-ci transitant en clair. Pour sécuriser les
transactions,. LDAPv3 fournit la possibilité d'utiliser du chiffrement (SSL ou TLS) et le mécanisme
Simple Authentification and Security Layer (SASL) procurant des outils d'authentification plus
élaborés à base de clés ( OTP...). Une fois connecté, le client peut envoyer autant de commandes
qu'il souhaite jusqu'à ce qu'il ferme la session (unbind).
Chaque commande se voit attribuer un numéro de séquence, qui permet au client de reconnaître les
réponses lorsque celles-ci sont multiples - ce qui peut parfois arriver lors d'une recherche simple qui
peut renvoyer jusqu'à plusieurs milliers d'entrées. A chaque opération, le serveur renvoie également
un acquittement pour indiquer que sa tâche est terminée ou qu'il y a une erreur.
46/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4.2.5. Les URLs LDAP
Les URLs LDAP [RFC2255] permettent aux clients Web d'avoir un accès direct au protocole
LDAP. La syntaxe est de la forme :
ldap[s]://<hostname>:<port>/<base_dn>?<attributes>?<scope>?<filter>
<base_dn> : DN de l'entrée qui est le point de départ de la recherche
<attributes>: les attributs que l'on veut consulter
<scope>
: la profondeur de recherche dans le DIT à partir du
<base_dn> :"base" | "one" | "sub"
<filter>
: filtre de recherche, par défaut (objectClass=*)
exemples :
ldap://ldap.netscape.com/ou=Sales,o=Netscape,c=US?cn,tel,mail?scope=sub?(objetclass=person)
ldap://ldap.loria.fr/cn=Laurent%20Mirtain,ou=Moyens%20Informatiques,o=loria.fr
ldap://ldap.loria.fr/o=loria.fr?mail,uid,sub?(sn=Mirtain)
4.3. Exemples d'application de LDAP
LDAP peut fournir différents services. On peut l'utiliser comme :
•
Un protocole de diffusion de données : annuaire LDAP de type pages blanches pour
contacter les personnes.
•
Un protocole de service pour des applications : annuaire LDAP des adresses mail qui permet
aux outils ou serveurs de mail de composer ou vérifier les adresses, utilisé par des
gestionnaires de liste (sympa), base permettant de stocker les préférences de configuration
d'une application (profiles communicator).
•
Une passerelle entre applications : permettant l'échange de données entre applications
incompatibles, par exemples les carnets d'adresses Netscape Communicator et Microsoft
Outlook.
•
Un protocole de service pour les systèmes d'exploitation ou les services Internet : base
LDAP des utilisateurs utilisée par les systèmes pour assurer l'authentification (certificats
d'authentification) et gérer les droits d'accès aux ressources réseau - Des projets sont en
cours pour remplacer NIS, NIS+ par LDAP.
LDAP fournit un protocole standardisé d'accès à de l'information. Cette information peut être de
toute nature et servir à différents types d'applications, allant d'un système d'annuaire classique
jusqu'aux appels systèmes du système d'exploitation.
47/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
LDAP est disponible sur de nombreux types de plates-formes, ce qui lui confère un statut de service
fédérateur, pouvant centraliser des informations issues de différentes sources - et en simplifier ainsi
la gestion - et destinées à différentes applications et différents utilisateurs.
De ce fait, LDAP peut devenir la clef du système d'information de l'entreprise. Cela en rend la
conception et la maintenance d'autant plus cruciales. C'est pourquoi la mise en place d'un tel service,
à une telle échelle, relève d'une mission longue et délicate pouvant impliquer de nombreux
intervenants et sources d'informations et pouvant parfois remettre en cause certains fonctionnements
existants.
Apres avoir aborder tous les principaux concepts des annuaires LDAP, nous allons déployé un
annuaire LDAP on nous basson sur une politique de qualité de service
4.4. Déployer un service d’annuaire LDAP
Déployer un service d'annuaire LDAP nécessite en premier lieu une réflexion sur la nature des
données que l'on y met, sur la manière dont on les récupère, sur l'utilisation que l'on compte en faire
et sur la façon de gérer le tout. Dans notre cas, il s’agie de règle de politique. La mise en place d'un
annuaire LDAP met donc en jeu plusieurs phases de conception que l'on va passer en revue.
4.4.1. Déterminer les besoins en service d'annuaire et ses applications
Déployer un système d'annuaire se fait généralement sous la contrainte de la mise en place ou du
remplacement d'une application. C'est alors que se pose la question d'élargir le service à d'autres
types d'applications, la première venant à l'esprit étant un annuaire de régle. Cette phase consiste
donc à prévoir toutes les applications possibles, actuelles ou futures, d'un annuaire LDAP.
4.4.2. Déterminer quelles données sont nécessaires
Il s'agit d'inventorier la liste exhaustive des données que l'on souhaite inclure dans le système
d'information et de déterminer ensuite par quelle source les obtenir et les maintenir à jour. Des
aspects comme le format, la taille des données, leur confidentialité, leur pertinence, leur source
(statique, dynamique...), leur pérennité, les personnes susceptibles de les fournir, de les maintenir et
d'y accéder doivent être pris en compte lors de cette phase. De ce point de vue, c'est la plus délicate
à franchir car elle implique d'autres intervenants. Il faut également se faire une idée précise sur la
manière dont les données vont être maintenues à jour : synchronisation avec un SGBD, intervention
manuelle, scripts automatiques...
48/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4.4.3. Choisir son schéma
Dans cette phase, on désigne le schéma, il s'agit de choisir, en fonction des données que l'on a
retenues, quelles sont les classes d'objets et les types d'attributs qui s'en rapprochent le plus pour
construire son annuaire LDAP.
La plupart du temps, les schémas standards, issus de X500 et de LDAP conviennent aux besoins de
modélisation. De plus, en fonction du logiciel que l'on choisira, des objets supplémentaires seront
fournis. Il reste, au final, la possibilité de créer ses propres objets, spécifiques à ses besoins. En règle
générale, il faut éviter de modifier le schéma existant car l'on risque de rendre son annuaire
inutilisable
par
les
applications
clients
ou
les
autres
serveurs.
Il est préférable de créer une sous classe d'une classe d'objet existante et exploiter le mécanisme
d'héritage d'attributs des classes objets. Par exemple Supposant que l'on doit fournir un service
vidéo Svideo. Cette opération doit être mise en application comme politique : Fournissez le service
Svideo visuel pour les utilisateurs autorisés entre les points autorisés, mais seulement à des heures
convenues.
On peut créer la classe d'objet ApprovedUsers fille de VideoServices dans laquelle on définira les
attributs nécessaires à ses besoins :
objectclass ApprovedUsers
superior VideoServices
requires
sn,
cn
allows
user1,
user2,
user3,
user4,
Dans tous les cas, il faut prévoir de documenter son schéma pour en faciliter la maintenance et
l'évolution. Il faut proscrire également la désactivation de l'option de schema checking implantée
dans la plupart des serveurs, qui permet de vérifier que les attributs saisis sont bien conformes au
schéma que l'on a choisi.
49/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4.4.4. Concevoir son espace (modèle) de nommage
Cette étape consiste à définir comment les entrées de l'annuaire vont être organisées, nommées et
accédées. L'objectif est de faciliter leur consultation et leur mise à jour mais aussi de prévoir leur
duplication, leur répartition entre plusieurs serveurs ou leur gestion par plusieurs personnes. En
fonction de ces priorités, on privilégiera tel ou tel espace de nommage.
Les paramètres qu'il faut prendre en compte lors de cette étude sont les suivants :
•
Le nombre d'entrées prévu et son évolution ?
•
La nature (type d'objet) des entrées actuelles et futures ?
•
Vaut-il mieux centraliser les données ou les distribuer ?
•
Seront-elles administrées de manière centrale ou faudra-t-il déléguer une partie de la gestion
•
La duplication est-elle prévue ?
•
Quelles applications utiliseront l'annuaire et imposent-elles des contraintes particulières ?
•
Quel attribut utiliser pour nommer les entrées et comment garantir son unicité ?
Durant cette phase, nous allons choisir le modèle d'organisation des données, leur mode de
désignation et le suffixe de notre organisation.
4.4.5. Le Directory Tree
Le modèle de nommage structuré en arbre hiérarchique de LDAP est repris du standard X500. Ce
dernier
a
été
conçu
dans
l'optique
d'un
service
global
Le modèle LDAP, lui, n'impose pas une racine universelle du DIT car il renonce à être un service
d'annuaire mondial et se limite à une petite communauté. Dans ce cadre, le modèle LDAP peut être
plat
(fig
1),,
branché
par
type
d'objet
(fig
2).
dc=videoservices
dc=approvedusers
cn=user1
cn=user2
cn=user3
figure 1 espace de nommage plat
50/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
o=videoservices
ou=approvedusers
ou=videosources ou=videodestinations
ou=approvedtimeperiods
Figure 2 espace de nommage basé sur les objets
En règle générale, en terme de performance, il vaut mieux avoir un arbre le plus plat possible. Par
contre, en terme de facilité d'administration, il vaut mieux introduire du branchage par type d'objet
ou par organisation. Cela facilite les mises à jour de données ou la mise en place de règles d'accès
spécifiques à une partie de l'annuaire ou la répartition de la gestion de l'arbre entre plusieurs
serveurs. Si votre organisation change souvent ou bien que le personnel est très mobile, le
branchage par organisation est alors à proscrire.
4.4.6. Nommage des entrées
La deuxième étape consiste à choisir l'attribut utilisé pour le DN de l'entrée, dans la partie RDN. Ce
choix peut dépendre des applications clientes, mais il doit se faire surtout de manière à garantir
l'unicité de la valeur utilisée.
4.4.7. Choix du suffixe
La dernière étape consiste à choisir le suffixe. C'est en quelque sorte l'identifiant de l'annuaire. Son
choix est important car, même si la base n'a qu'une vocation interne, elle peut à terme devenir en
partie un maillon d'un annuaire global ou d'un système d'information. Le suffixe peut à l'extrême
être une chaîne vide, mais dans l'optique d'une diffusion de son annuaire, on choisira, en général, un
suffixe unique au monde. Pour cela, il est recommandé d'utiliser comme suffixe d'annuaire, le nom
de domaine DNS de l'organisation.
51/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4.4.8. Définir la topologie de son service
Dans cette phase, il faut réfléchir sur la manière dont le service d'annuaire LDAP va être rendu en
termes de performance, de fiabilité et de facilité de gestion. Il faut prendre en compte :
•
Les applications qui vont utiliser l'annuaire et le nombre d'utilisateurs.
•
Les capacités du logiciel serveur qui va être choisi.
•
La topologie de son réseau.
•
Le design de son espace de nommage.
La conception de la topologie du service d'annuaire LDAP est étroitement liée à celle de l'espace de
nommage. Il est donc possible de devoir revenir sur l'une ou l'autre durant la phase de conception ou
même celle d'exploitation, dans le cas d'un changement d'organisation interne ou de marque de
logiciel serveur.
La question principale de cette phase est de déterminer si la base et sa gestion seront centralisées sur
un seul serveur ou si elles devront être éclatées sur plusieurs serveurs. La deuxième étude porte sur
le nombre de serveurs redondants à déployer et leur emplacement sur le réseau physique.
4.4.9. Le partitionnement
Il consiste à séparer les données de l'annuaire sur plusieurs serveurs. Il peut être imposé par le
volume d'entrées à gérer, leur gestion répartie sur plusieurs sites, les types d'accès au réseau
physique ou le mode d'organisation de la société. Séparer les données ne veut pas dire forcément les
dissocier : les standards LDAP et X500 définissent des moyens de les relier (recoller). Ce sont les
services referral et replication.
4.5. Conclusion
Un annuaire est un type de base de données spécifique basé sur une architecture hiérarchique. Cette
architecture permet de retrouver n’importe quelle information très facilement. Il est bien sûr
possible d’insérer ou de modifier une information dans un annuaire, cependant celui-ci est prévu
pour être plus sollicité en lecture qu'en écriture.
Comme pour toutes les bases de données, son fonctionnement et son organisation interne dépendent
fortement de son constructeur. Pour cette raison, dans un souci d’interopérabilité, tous les annuaires
utilisent un protocole d’accès standardisé : LDAP, L’annuaire LDAP reste la principale technique
pour réaliser le Policy Repository.
Nous aborderont dans le chapitre suivant le chemin formel qui conduit à préciser la nature
contractuelle de la QoS dans les serveurs de politique.
52/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 5
5. LA LOGIQUE DE REECRITURE & MAUDE
53/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
5.1. Introduction
La logique de réécriture ("rewriting logic" ou RWL), telle que présentée dans [Clavel et al. 1999], [MartíOliet et Meseguer 1993], [Martí-Oliet et Meseguer 1996] et [Meseguer 1998], est une logique de changement
concurrent, qui peut traiter de façon naturelle l'état du système, et des calculs concurrents non déterministes
de haut niveau. Elle a de bonnes propriétés comme cadre de travail sémantique flexible et général, qui
apporte une sémantique à un large ensemble de langages et de modèles à concurrence. En particulier, elle
supporte très bien des calculs concurrents orientés-objets.
Une spécification en logique de réécriture peut être interprétée en termes de calcul ou en termes de logique.
Les mêmes raisons qui en font un bon cadre de travail sémantique au niveau calculatoire, en font aussi un
bon cadre de travail logique, c'est-à-dire une métalogique dans laquelle bien d'autres logiques peuvent être
représentées et implémentées de façon naturelle. Par conséquent, certaines des applications les plus
intéressantes sont celles de métalangages, dans lesquelles sont créés des environnements exécutables pour
des prouveurs de théorèmes, des langages de programmation ou des modèles de calcul.
Un outil basé sur la logique de réécriture peut constituer à la fois un langage et un système de haute
performance pour des calculs de logique équationnelle comme de logique de réécriture, avec un éventail
d'applications important.
La suite de cette partie est organisée en commençant par la présentation des différents éléments de base de la
logique de réécriture. Nous nous attarderons ensuite sur les théories de la logique de réécriture. Finalement,
nous présentons les caractéristiques du langage Maude, défini à base de cette logique, que nous utiliserons
dans le cadre de notre travail.
Pour d'avantages de précisions sur la réécriture de termes (dans un cadre plus général que la seule logique de
réécriture), [Baader et Nipkow 1998] ou [Ohlebusch 2002].
5.2. Eléments de base
A l’origine la réécriture est une mise en oeuvre informatique de la preuve de théorèmes équationnels à partir
d’axiomes (équations). Celle-ci consiste à utiliser ces équations pour remplacer les termes du théorème par
des égaux. Le théorème est vrai si l’on peut obtenir à partir d'un des membres de l’équation, l'autre membre.
Devant l'indéterminisme de ce procédé, lié au double sens de l'équation et au choix des bons axiomes, on
oriente les équations pour obtenir un système de règles de réécriture. Réécrire un terme t consiste à choisir un
sous-terme t' de t et une règle de réécriture g → d, tels que g filtre t' (on dit que t' est instance de g), et à
remplacer t' dans t par l’instance correspondante de d.
54/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La réécriture a rapidement trouvé des applications directes dans le développement de systèmes de calculs
formels. Plus récemment, elle a été appliquée dans la conception des systèmes d'aide à la preuve de
programmes, un programme étant représenté par des spécifications formelles, la preuve automatique de
théorème en logique du premier ordre, l’écriture d’interprètes de langages logiques. Les systèmes de
réécriture ont été par ailleurs utilisés pour supporter des langages de contraintes symboliques, dans le
contexte d’applications graphiques.
Dans le contexte de la logique de réécriture qui est basée sur la théorie de réécriture, réécrire un terme
consiste à trouver une relation de réécrivabilité entre les classes d’équivalences de ce terme.
En logique de réécriture chaque système est représenté par une théorie de réécriture T = (Σ, E, L, R). Sa
structure statique est décrite par la signature (Σ, E), alors que sa structure dynamique est décrite par les règles
de réécriture R.
Une signature est formée par un ensemble de sortes S et d’opérateurs F, et un ensemble équations E. Cette
signature (Σ, E) détermine une relation de congruence engendrée par E et un ensemble quotient des termes
modulo cette relation. Les objets principaux de la logique de réécriture sont les classes d’équivalence des
termes TΣ,E.
Les formules de la logique de réécriture sont construites en utilisant des classes d’équivalence de cet
ensemble. Elles ont la forme [t] → [t'] représentant intuitivement la proposition :
"La classe d’équivalence contenant le terme t peut se réécrire en la classe d’équivalence contenant le terme
t’ ".
Les symboles de fonctions Σ et leurs propriétés structurelles E sont entièrement définis par l'utilisateur. Ceci
procure à la logique de réécriture une grande flexibilité dans la définition de la structure des états, offrant
ainsi la possibilité de présenter des structures différentes et variés.
55/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Exemple :
Soient la signature (Σ, E) , les règles de réécriture R et - t1, t2, t3 ∈TΣ,E(X) des termes (avec ou sans
variable).
Sorte
bool
F (opns) true : → bool
false : → bool
not( _ ) : bool → bool
_ and _ : bool bool → bool
_ or _ : bool bool → bool
Vars x,y : bool
E (Eqns) ( not(true) = false )
( not(false) = true )
( true and x = x )
( false and x = false )
( x or y = not( not(x) and not(y)) )
R
x and y → x (1)
x and y → y (2)
t1= false, t2 = true and X, t3 = not ((true and false) or not(t2)).
5.3. Théorie de réécriture
Une théorie de la logique de réécriture est donnée par une signature et par un ensemble de règles de
réécriture représentant des axiomes. Les règles de réécriture agissent sur les classes d’équivalence de termes,
de plus elles sont étiquetées, nous ajoutons donc à une théorie de réécriture un ensemble d’étiquettes.
Définition :
Une théorie de la logique de réécriture peut être décrite comme un quadruplet : R = ( Σ , E, L, R),
où :
o Σ est un alphabet rangé de symboles de fonctions,
o E est un ensemble de Σ-équations,
o L est un ensemble de labels,
o R est un ensemble de paires.
Chaque paire de R est composée d'un label (une étiquette) et d'un couple de classes d'E-équivalence
56/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
de termes (c'est-à-dire les classes d'équivalence des termes modulo E) : R ⊆ L × T Σ, E(X)² .
X = {x1, … , xn, … } représente un ensemble de variables de cardinalité infinie.
Les éléments de R sont appelés des règles de réécriture : un couple labellisé (r ([t], [t']) est noté
Si cet ensemble de règles de réécriture est vide, on retrouve la théorie équationnelle classique de la logique
équationnelle qui est à la base des spécifications algébriques.
Etant donné une théorie de réécriture, l'ensemble des formules impliquées par conséquences logiques cette
théorie est défini par les règles de déduction de la logique de réécriture. Ces règles formalisent la notion de la
réécriture des termes en définissant comment les preuves des théorèmes sont formées.
Dans un système concurrent, la séquence des transitions exécutées à partir d'un état initial donné, constitue ce
que nous appelons le calcul qui correspond à une preuve ou à une déduction dans la logique de réécriture.
Pour une théorie de réécriture R, on dit que [t] → [t'] est prouvable dans R ( où R implique une formule [t] →
[t'] ) et on écrit R |− [t] → [t'] ssi [t] → [t'] est obtenue par une application finie des règles de déduction
suivantes:
1. Réflexivité : pour chaque [t] ∈ TΣ,E(X),
[t] → [t']
2. Congruence : pour chaque f ∈ Σn , n ∈ N
[t1] → [t'1] ... [tn] → [t'n]
____________________________________
[f(t1, ... , tn)] → [f(t'1, ... , t'n)]
3. Remplacement : pour chaque règle de réécriture
r : [t( x1, ... ,xn )] → [t'(x1, ... , xn)] if [u1(x)] → [v1(x)] ∧ ... ∧ [uk(x)] → [vk(x)] dans R,
[w1] → [w1'] ... [wn] → [w'n]
[u1( w / x )] → [v1( w / x )] ... [uk( w / x )] → [vk( w / x )]
__________________________________________________________________________________
[t( w / x )] → [t'( w' / x )]
Cette règle , signifie que par une substitution (w / x ) de xi par wi ,1 ≤ i ≤ n. on peut déduire les séquences [uj(
w / x )] → [vj( w / x )], 1 ≤ j ≤ k. et si en plus nous pouvons déduire [wi] → [w'i], pour 1 ≤ i ≤ n, nous
pouvons alors déduire que : [t( w / x )] → [t'( w' / x )].
57/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
4. Transitivité :
[t1] → [t2] [t2] → [t3]
___________________
[t1] → [t3]
Après avoir présenté les 4 règles de base, la déduction dans la logique de réécriture est une itération des
étapes suivantes :
1. La règle de remplacement identifie toutes les règles de réécriture applicables à l’état global courant. Et,
comme la logique de réécriture est une logique de changement, la règle de réflexivité, sera appliquée aux
sous termes non identifiés, les transforme mais en eux-mêmes.
2. Les règles de réécriture, identifiées par la règle de remplacement ainsi que la règle de réflexivité, sont
exécutées en concurrence et indépendamment les unes des autres. La règle de congruence compose les effets,
membres droits, de ces règles pour construire le nouveau terme global.
Les étapes (1) et (2) sont réitérées jusqu'à ce qu'il n'y ait plus de règle applicable.
3. Enfin, la règle de transitivité construit la séquence des réécritures faites du terme initiale jusqu'au terme
final. La séquence ainsi construite correspond à un calcul possible dans le système concurrent.
5.4. Applications de la logique de réécriture
Toutes les applications typiques de la programmation équationnelle et des spécifications algébriques peuvent
être supportées de façon adéquate et efficace par la logique de réécriture (Théories fonctionnelles). En fait, la
logique équationnelle a un pouvoir d'expression suffisant pour offrir d'aussi bons avantages qu'un cadre de
travail logique, pour un très large éventail de langages de spécification algébrique, et elle peut être facilement
implémentée.
Néanmoins, beaucoup d'autres applications portent au-delà de la logique équationnelle. En effet, les théories
de réécriture systèmes supportent les applications générales de la logique de réécriture. De plus, le domaine
important de la spécification et du prototypage de systèmes concurrents et distribués basés sur les objets peut
être supporté par ce type de théories.
Par ailleurs, la réflexivité rend possibles de nombreuses nouvelles applications de méta-programmation et de
métalangage. En particulier, elle est très appréciable dans toutes celles qui utilisent la logique de réécriture
comme cadre de travail logique et sémantique.
En outre, les langages de conception orientés-objets, les langages de description d'architecture et les langages
pour composants distribués trouvent une sémantique naturelle dans la logique de réécriture.
58/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
En général, un système concurrent est défini par trois concepts de base : états, transitions et calcul. L'état
décrit l'évolution du système et sa structure détermine si le système est concurrent ou non: si l'état est
atomique, le système est séquentiel mais s'il est distribué, le système a le potentiel d'être concurrent. Le
système passe d'un état à un autre en exécutant un ensemble de transitions locales, indépendantes et
distribuées. La trace ou l'histoire de toutes les transitions exécutées de l'état initial jusqu'à l'obtention de l'état
courant représente un calcul dans un système concurrent. Etant donné que la logique de réécriture est une
logique de raisonnement correct sur les systèmes concurrents ayant des états et évoluant en terme de
transitions, elle offre les outils nécessaires pour les décrire [Mes94].
La réécriture dans cette logique a lieu modulo les axiomes équationnels E (Par exemple, la réécriture peut se
faire modulo la plupart des différentes combinaisons d'axiomes d'associativité, de commutativité, d'identité et
d'idempotence), les règles de réécriture R et les quatre règles de déduction. Les règles de R n'ont pas besoin
d'avoir la propriété de Church-Rosser ou de terminer. Plusieurs chemins de réécriture différents sont alors
possibles; il en résulte que le choix de stratégies appropriées est crucial pour "exécuter" des théories de
réécriture.
De telles stratégies ne forment pas pour autant une partie en dehors de la logique de ce langage. Au contraire,
ce sont des stratégies internes définies par des théories de réécriture au méta-niveau. En effet, cela est rendu
possible parce que la logique de réécriture est réflexive : il existe une théorie universelle U qui peut
représenter n'importe quelle théorie de réécriture T présentée de façon finie (incluant U elle-même) et tous
termes t et t' de T, comme des termes T, t et t' dans U, de telle sorte à avoir l'équivalence suivante :
Puisque U peut se représenter elle-même, une "tour réflexive" peut alors être obtenue, avec un nombre
arbitraire de niveaux de réflexivité. Celle-ci rend possibles, non seulement la définition déclarative et
l'exécution de stratégies de réécriture définies par l'utilisateur, mais aussi bien d'autres applications, dont par
exemple une algèbre de modules extensible, d'opérations sur les modules paramétrées, qui serait définie et
exécutée à l'intérieur de la logique.
Cette extension par réflexivité permet d'étendre les fonctionnalités de base de la logique pour considérer
naturellement les applications orientées-objet.
59/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
5.5. Maude : un Langage à base de Logique de Réécriture
La programmation déclarative a eu le mérite de faciliter considérablement les aspects conceptuels
de la tâche de programmation. Cependant, la logique sur laquelle se base généralement les langages
déclaratifs ne prend pas en charge les caractéristiques inhérentes aux systèmes réels, notamment
l’action et le changement.
Pour mettre en évidence ce constat, Meseguer a défini un langage, appelé MAUDE, basé sur une
logique d’action qui est la logique de réécriture. Ce langage implémente et concrétise les différents
concepts de la logique de réécriture. Dans la section suivante, nous présentons en détails ce langage.
Il existe bien d’autres langages à base de la logique de réécriture, les plus connus sont :
•
ELAN [BKK 97] (France) fournit un environnement pour les systèmes de spécification et
prototypage des déductions dans un langage basée sur des règles commandées par des stratégies. Son
but est de soutenir la conception des preuves de théorèmes.
•
CAFEOBJ est une nouvelle génération des langages de spécifications algébriques qui a été
développée au Japon. L'équipe de CAFEOBJ est guidée par le prof. Kokichi Futatsugi, à JAIST
(Japon), qui est un des fondateurs originaux d'OBJ2. CAFEOBJ est un langage de spécifications
algébrique exécutable, et un successeur moderne d'OBJ, il est prévu pour la spécifications des
systèmes réels, la vérification formelle des caractéristiques, prototypage rapide, ou même de
programmation.
5.6. Le Système Maude
Maude est un langage déclaratif pur et un système performant, et aussi un environnement de développement.
Les buts du projet de Maude est de supporter la spécification formelle exécutable, et d'élargir le spectre
d'utilisation de la programmation déclarative et des méthodes formelles pour spécifier et réaliser des
systèmes de haute qualité dans des secteurs comme : le génie logiciel, réseaux de communication,
l'informatique répartie, bioinformatique, et le développement formel d'outils.
En outre, Maude a une collection d'outils formels supportant différentes formes de raisonnement logique pour
vérifier des propriétés de programme comprenant :
60/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
• Un Model-Checker pour vérifier les propriétés temporelles linéaires de la logique (LTL) des modules
d’états finis ;
• Un Prouveur de Théorème ("Theorem Prover") (ITP) : pour vérifier des propriétés des modules
fonctionnels;
• Un Analyseur Church-Rosser pour assurer une telle propriété : pour les modules fonctionnels;
• Un Analyseur de terminaison et un outil de Complétion ("Knuth-Bendix") : pour les modules fonctionnels
• Un Analyseur de Cohérence : pour les modules systèmes.
Maude a été influencé d’une manière importante par OBJ3 [JTJ 92]. En particulier, le sous langage de la
logique équationnelle de Maude contient essentiellement OBJ3 comme sous langage. La logique
équationnelle de Maude est plus riche.
• Maude est puissant : Il peut modéliser presque n'importe quelle chose, c-à-d qu’il peut modéliser tout ce
que nous pouvons écrire, parler, ou décrire avec la langue naturelle, autrement dit, Maude possède un large
spectre d’application et peut être utiliser non seulement pour les spécifications exécutables et le prototypage,
mais comme un vrai langage de programmation et de développement.
• Maude est simple : Sa sémantique est basée sur les principes fondamentaux de la théorie de catégorie, que
l'utilisateur n'a pas besoin de connaître à l’initiation. Maude possède un ensemble de mots clés et de
symboles, et quelques orientations et conventions à maintenir, et donc, les programmes Maude sont aussi
simples et aussi faciles à comprendre.
• Maude est concrêt : Il est extrêmement abstrait, et sa conception permet une grande flexibilité dans la
syntaxe des systèmes à spécifier.
• Multi-paradigme : Il combine la programmation déclarative et orientée objet.
Dans Maude, les spécifications non exécutables sont appelées "les théories", et leurs axiomes sont utilisés
pour imposer des exigences formelles sur les modules programmes et sur les interfaces des modules
paramétriques.
61/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
5.6.1. Core Maude
On appelle Core Maude l’interpréteur de Maude implémenté en C++ offrant toutes les fonctionnalités de base
Maude, intégrant les modules systèmes et fonctionnels, et n’accepte que des hiérarchies des modules
fonctionnels et systèmes non paramétré (voir Figure 1).
Core Maude intègre d’autres modules tel que : les modules prédéfinis des types de données et le module
Model-Checker , la réflexion et la fonction méta-langage.
5.6.2. Full MAUDE
Full Maude est une extension de Core Maude écrite en langage Maude (notion de méta-level), et qui dote
Maude avec un module algébrique puissant et extensible dans lequel les modules Maude peuvent être
combinés pour donner d’autres modules complexes (voir Figure 1).
Aussi, les modules peuvent être paramétrés et instantiés avec des traces appelés vues, où les paramètres sont
des théories définissent les conditions sémantiques pour l’instantiation correct, et les théories peuvent être
elle même paramétrées. Les modules orientés objet (peuvent être paramétrés) supportent les objets, les
messages, les classes et l’héritage. Enfin, on peut dire que les nouvelles notions supportées dans Full Maude
sont : les modules orientés objet et la paramétrisation.
Model checker
Modules Fonctionnels + Modules Systèmes
Module Méta niveau
Prouveur de
théorèmes
Modules Orientés objets + Modules et Vues Paramétrés
+ Expression de Modules
Figure 1 : Schéma général du système Maude
62/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
5.7. Les modules Maude
La logique de réécriture permet d'écrire des spécifications orientées propriétés de systèmes logiciels, sous la
forme de théories qui peuvent comprendre une partie décrivant les changements d'états (par réécriture de
termes). Selon qu'elle comprend ou non ces informations de réécriture, une théorie de la logique de réécriture
sera considérée comme "théories système ou fonctionnelle". Maude étant un langage qui implémente et
concrétise les différents concepts de la logique de réécriture, ses programmes (qui sont des théories de
réécriture) regroupent deux types de modules : des modules fonctionnels qui servent à décrire des types
abstraits de données et des modules systèmes qui servent à décrire des systèmes concurrents.
Les calculs concurrents dans Maude représentent des déductions dans la logique de réécriture. L’objectif
principal de Maude est d’élargir le spectre d’utilisation de la programmation déclarative au-delà de ses
applications statiques et platoniques.
5.7.1. Modules Fonctionnels
La représentation d'une théorie équationnelle (de la logique de réécriture) peut se faire, simplement sous la
forme d'un module fonctionnel. Un module fonctionnel représente essentiellement des types de données, et
les fonctions qui s' y appliquent. Comme évoqué précédemment, leurs équations doivent avoir la propriété de
Church-Rosser et doivent terminer.
Dans ce cas, chaque étape de réécriture se fait par un remplacement d'égal à égal, jusqu'à ce qu'une valeur
équivalente à celle de départ, et complètement évaluée, soit obtenue.
Exemple :
La figure 2 présente un exemple de module fonctionnel délimité par les deux mots clés : "fmod" et "endfm", il
introduit trois types, ou sortes ("sorts"), simultanément : Nat pourrait représenter l'ensemble des entiers
naturels, NzNat les entiers naturels non nuls et Nat3 l'ensemble des entiers modulo 3. Pour cela, NzNat est
déclaré comme une sous-sorte ("subsort") de Nat.
Le constructeur zero permet d'obtenir l'élément de base des Nat, et l'opération ("op") s servira à construire les
autres, tout en ne générant que des NzNat ; l'opération p, au contraire, est l'opération inverse et pourrait avoir
comme résultat un Nat n'appartenant pas à NzNat (c'est-à-dire zero). L'addition + est définie sur l'ensemble
Nat tout entier, mais il est utile de préciser que le résultat de l'addition de deux éléments de NzNat reste dans
NzNat.
Les trois premières équations ("eq") décrivent la façon dont interagissent les opérations, sur des variables
("vars") de sorte Nat ; nous retrouvons les propriétés usuelles des entiers, comme le prédécesseur du
63/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
successeur d'un nombre est ce nombre, l'addition de zéro à un nombre ne le change pas, et l'ajout du
successeur d'un nombre à un autre est équivalent à demander le successeur de l'addition de ces nombres. En
outre, les trois constantes 0, 1 et 2 sont les éléments de base de Nat3 (la spécification de Nat3 aurait pu faire
l'objet d'un autre module fonctionnel).
La seule autre opération définie sur cet ensemble est à nouveau l'addition + , mais cette fois-ci elle est
déclarée comme étant commutative ("[comm]") – d'autres propriétés auraient pu être ajoutées, comme
l'associativité ou l'importance relative de l'opérateur par rapport aux autres.
Enfin, quatre équations, requérant une unique variable N3, achève la spécification du type de données Nat3.
Chaque équation participe à la définition de classes d'équivalence de termes. Dans l'exemple de la figure 2,
chacune peut être caractérisée par la valeur de l'entier équivalent.
Figure 2. : Exemple de module fonctionnel
Le calcul dans un module fonctionnel est une simplification équationnelle par application concurrente des
équations qui sont orientées de gauche à droite. Ceci constitue la sémantique opérationnelle du module alors,
que la sémantique dénotationnelle d’un module fonctionnel est l’algèbre initial parmi la classe des algèbres
vérifiant les équations de celui-ci. Elle définit un type abstrait de données.
64/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La façon de réécriture des modules fonctionnels se termine avec une valeur simple comme résultats. Dans de
tels modules, chaque étape de la réécriture est une étape du remplacement des termes par des égaux, jusqu'à
ce qu’on trouve la valeur équivalente, entièrement évaluée.
5.7.2. Modules Systèmes
Pour ce qui suit, nous n'interprétons plus un terme t comme expression fonctionnelle, mais comme état d'un
système, et aussi une règle de réécriture t → t’ comme une égalité, mais comme une transition d’état local.
Tout changement d'état local peut intervenir en concurrence avec n'importe quel autre changement d'états
locaux.
Et comme la logique de réécriture est une logique de changement concurrent d'état. Ses quatre règles de
déduction réflexivité, transitivité, congruence, et remplacement, nous permettent de déduire tous les
changements d’état concurrents et complexes qui peuvent survenir dans le système.
En Maude la spécification de tels systèmes est réalisée par les modules systèmes. Ils exécutent les calculs de
réécriture concurrente, exactement de la même manière comme les modules fonctionnels. Cependant, leur
comportement n’est pas fonctionnel.
Exemple :
Un exemple de module système délimité entre les mots clés "mod" et "endm" est présenté dans la figure 3. Il
définit une opération ("?") de choix non déterministe sur les nombres naturels. Ce module système NATCHOICE réutilise (avec "protecting"), ou étend, la théorie prédéfinie NAT en réutilisant la sorte et les
opérations définies dans ce module. Une seule opération ? est ajoutée, qui sera spécifique aux nouveaux
éléments ajoutés.
Enfin, les règles de réécriture ("rl") définies permettent de réécrire une expression de Nat, avec ?, en
choisissant de ne conserver qu’un de ses arguments.
Figure 3: Exemple de module système
65/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Supposons que la sémantique d’un tel module (Figure 3) soit une algèbre initiale. Dans ce cas là, la déduction
équationnelle nous permettra de conclure que M = N, c-à-d., tous les éléments de l’algèbre s’effondrent à un
seul point. C’est pour ça, la déclaration "Extending NAT" dont la signification est que deux nombres naturels
distincts du sous module NAT ne seront jamais identifié par les nouvelles équations introduites par le super
module NAT-CHOICE. La sémantique mathématique d’un tel module ne peut pas être une algèbre initiale.
Il est clair qu’on utilisant l’instruction "Extending", on peut généralement ajouter des nouvelles données ou
bien des règles pour enrichir la syntaxe du module importé sans autoriser la confluence. On peut utiliser deux
autres instructions pour importer des modules, qui sont "Protecting" et "Including".
Si on utilise l’instruction "Protecting NAT" à la place "Extending NAT" dans le module NAT-CHOICE de la
figure 3, le module NAT importé est un sous module de NAT-CHOICE mais aucune nouvelle donnée de type
NAT ne sera ajoutée.
L’instruction "Including" peut ajouter des nouvelles données et équations sans aucune limitation
D’autre part, et comme dans OBJ3, la structure de type dans Maude est "order-sorted"; Il est possible aussi
d’avoir la surcharge des symboles de fonction "Overloading" pour les opérations qui sont définies à
différents niveaux de l’hiérarchie de la sorte.
5.7.3. Les Modules Orientés-objets en Maude
Les modules Orientés-Objets dans Maude sont aussi introduits. Bien qu’ils sont entièrement réductibles à des
modules systèmes, ils conviennent pour une large variété d’applications, Ils méritent une syntaxe propre à
eux, et ils sont basés sur une théorie logique des objets concurrents, qui a une bonne expression dans des
termes de la logique de réécriture.
L’état d’un système orienté-objet appelé souvent “configuration” , possède la structure d’un multi-ensemble
formé d’objets et de messages et déclaré en utilisant la syntaxe du langage Maude grâce à l’opération :
Op _ : Configuration Configuration→ Configuration[ctor assoc comm id:null]
Un “objet” est alors noté ainsi:
< O:C |a 1:v1…,a n:vn>
66/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
O est l’identificateur de l’objet,
C est la classe correspondante de l’objet,
a i , i = 1 à n, sont les attributes de l’objet,
vi , i = 1 à n, sont les valeurs des attributs.
“ Les classes” sont déclarées en utilisant la syntaxe suivante:
Class C | a 1:s1…,a n:sn.
Où C est le nom de la classe et si sont les types (“sortes” ) respectifs des attributs a i.
“Un message” est déclaré en utilisant le mot-clés: msg . Par exemple, une déclaration d’un message de
données (”Data”) envoyé et reçu par deux objets identifiés (“Oid”) : émetteur et récepteur peut être déclaré
comme suit :
Msg to : Oid Oid Data → Msg
Les interactions concurrentes entre les différents messages sont axiomatisées par des règles de réécriture
conditionnelles dont la forme générale est donnée par:
crl[r] : M1 … Mn < O1 : F 1 | atts1> …
< Om : F m|attsm> ⇒
< Oi1 : F' i1|atts' i1> … < Oik :
F' ik|atts' ik>
< Q1 : D1|atts'' 1> … < Qp : Dp|atts'' p>
M' 1 … M' q
If C
où r est l’étiquette de la règle de réécriture, Ms sont les expressions de messages, i1,…,ik, sont des nombre
pris de l’intervalle des nombres : 1,…,m. Ici, la condition de la règle de réécriture est donnée par C.
67/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Exemple :
L’exemple ci-dessous (figure 4) est repris de [ ] afin d’illustrer la syntaxe des modules orienté-objet.
On spécifie dans ce module ‘accnt’ delemité entre les deux mots clés ‘omod’ et ‘endom’ un compte bancaire,
dans ce lui-ci on peut débiter ou retirer une somme d’argent de sorte ‘nat’ grase aux deux messages déclarés :
‘credit’ et ‘debit’ le transfert d’argent d’un compte donné à un autre peut être réalisé en spécifiant le message
‘transfer-from-to-‘. Des règles de réécritures sont associées à la descriptions faite sur le compte, la classe à
laquelle appartient un objet de type compte bancaire possède un attribut représentant le montant de la somme
qui s’y trouve.
omod accnt is
protecting nat.
class accnt | bal: nat.
msg credit debit : oid nat à message.
msg transfer- from - to - : nat oid oid à message.
vars a, b :oid.
vars m,n,n’: nat.
rl [crdt] credit(a,m) < a; accnt | bal:n> è< a;accnt | bal : n+ m>.
crl [dbt] debit (a,m) < a; accnt | bal : n> è < a; accnt | bal : n-m> if n > = m.
crl [trsf] transfer(m) from(a) to(b) < a; accnt | bal : N> < b; accnt | bal : n’> è
< a; accnt | bal : n-m> < b; accnt | bal : n+ m> if n> = m.
endom.
Figure 4 : Exemple de module orienté-objets
68/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
5.7.4. Exemple récapitulatif
Afin d'illustrer plus en détail les spécifications des systèmes orientés objets nous indiquerons dans
Maude un exemple simple, un magasin de location de voiture. Les règlements du système,
particulièrement ceux qui règnent les processus de location, sont :
1. Des voitures sont louées pour un nombre spécifique de jours, après quoi elles devraient être
retournées.
2. Une voiture peut être louée seulement si elle est disponible.
3. On ne permet aucun crédit ; les clients doivent payer l'argent comptant.
4. Les clients doivent faire un dépôt au temps de ramassage des frais de location estimés.
5. Les frais de location dépendent de la classe de voiture. Il y a trois catégories : économie, mitaille, et voitures normales.
6. Quand une voiture louée est retournée, le dépôt est employé pour payer les frais de location.
7. Si une voiture est retournée avant la date due, le client paye seulement les nombres de jours
où la voiture a été utilisée. Le reste du dépôt est remboursé au client.
8. Des clients qui renvoient une voiture louée après que sa date due soient facturées tous jours
ou la voiture a été employés, avec un 20% additionnel pour chaque jour après la date due.
9. ne pas rendre la voiture à l'heure peut avoir comme conséquence la suspension des
privilèges.
Commençons par les aspects statiques de ce système, c.-à-d., sa structure. Nous pouvons identifier
trois classes principales, à savoir le magasin, les clients, et les voitures. Il y a trois genres spéciaux
de clients (personnel, clients occasionnels, et clients réguliers), et trois genres de voitures
(économie, mi-taille, et voitures normales).
Les clients peuvent louer des voitures. Ce rapport peut être représenté par une classe de location
qui, en plus des références aux objets impliqués dans le rapport, a quelques attributs additionnels. Le
système exige également un certain contrôle du temps, qui nous obtenons avec une classe
représentant des calendriers qui fournit la date du jour et simule le passage du temps.
69/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La classe de client a trois attributs, à savoir argent comptant, dette, et suspendu pour garder le
disque, respectivement, de la quantité d'argent comptant que le client a actuellement, sa dette avec le
magasin, et de s'il est suspendu ou pas. Une telle classe peut être définie par la déclaration suivante
de Maude :
L'attribut disponible de la voiture de classe indique si la voiture est actuellement disponible
ou pas, et le taux enregistre le taux de location quotidien. Nous modelons les différents types de
voitures pour le loyer par trois sous-classes différentes, à savoir EconomyCar, MidSizeCar et
FullSizeCar.
Chaque objet de location de classe établira un rapport entre un client et une voiture, dont les
marques sont maintenues dans les attributs client et voiture, respectivement. En plus de ces
derniers, la location de classe est également déclarée avec le dépôt d'attributs, le pickUpDate,
et le dueDate pour stocker, respectivement, le montant d'argent à gauche comme dépôt par le client,
la date lesoù la voiture est prise par le client, et la date l'où la voiture devrait être retournée au
magasin.
Etant donné l'utilisation simple que nous allons faire des dates, nous pouvons les représenter, par
exemple, en tant que nombres normaux. Puis, nous pouvons avoir un objet de calendrier qui garde la
date du jour et obtient accru par une règle de réécriture comme suit :
Nous ne nous inquiétons pas ici de la fréquence avec laquelle la date obtient accrue, des problèmes
possibles de synchronisation dans un arrangement distribué, ni avec aucune autre question liée aux
spécifications du temps. Quatre actions peuvent être identifiées dans l'exemple :
70/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
1. un client loue une voiture,
2. un client renvoie une voiture louée,
3. un client est suspendu pour être en retard en payant sa dette ou pour être en retard en
renvoyant une voiture louée, et
4. un client paye (une partie de) sa dette.
La location d'une voiture par un client est indiquée par la location de voiture de règle cidessous, qui fait participer le client louant la voiture, la voiture elle-même (qui doit être disponible,
c.-à-d., pas actuellement loué), et un objet de calendrier fournissant la date du jour. La location peut
avoir lieu si le client n'est pas suspendu, c'est-à-dire, si sa marque n'est pas dans l'ensemble de
marques des clients suspendus du magasin, et si le client a assez d'argent comptant pour faire le
dépôt correspondant. Noter qu'un client pourrait louer une voiture pendant moins de temps où elle
vraiment va l'employer sur le but, parce qu'elle n'a pas assez d'argent pour le dépôt, ou préfère faire
un plus petit dépôt. Selon la description du système, le paiement a lieu quand le renvoi de la voiture,
bien qu'il y ait un supplément pour les jours la voiture n'était pas réservé.
Noter que ces attributs d'un objet qui ne sont pas appropriés pour un axiome n'ont pas besoin d'être
mentionnés. Les attributs n'apparaissant pas dans le côté droit d'une règle maintiendront leurs
valeurs précédentes non modifiées. Noter que les variables A et NumDays apparaissent dans le côté
ou la condition droit de la règle mais pas dans son côté à gauche (c'est la raison pour laquelle cette
règle est déclarée pour être nonexec). Noter aussi bien l'utilisation des attributs client et voiture
dans les objets de la location de classe, qui rend explicite qu'un rapport de location est entre le
client et la voiture indiqués par ces attributs.
Un client renvoyant une voiture tard ne peut pas être forcé de payer le montant total d'argent dû au
temps de retour. Peut-être elle n'a pas un tel montant d'argent à ce moment-là. Le retour d'une
voiture louée est indiqué par les règles ci-dessous. La première règle manipule le cas dans lequel la
71/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
voiture est retournée à l'heure, c'est-à-dire, la date du jour est plus petite ou égale à la date due, et
donc le dépôt est plus grand ou égal à la quantité due.
Dans ce cas-ci, une partie du dépôt doit être remboursée. Nous pouvons voir que l'objet de
location disparaît dans le côté droit de la règle, il est enlevé de l'ensemble de locations, et la
disponibilité de la voiture est reconstituée.
La deuxième règle traite le cas dans lequel la voiture est retournée tard.
Dans ce cas-ci la dette du client est augmentée par la partie du de quantité non couvert par le dépôt.
Des dettes peuvent être satisfaites à tout moment, le seul état étant que le montant payé est entre
zéro et le montant d'argent possédé par le client à ce moment-là.
Des clients qui sont en retard en renvoyant une voiture louée ou en payant leurs dettes « peuvent »
être suspendus. La première règle traite le cas dans lequel un client a une dette en attente, et le
second manipule le cas dans lequel un client est en retard en renvoyant une voiture louée.
72/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
5.8. Conclusion
Dans ce chapitre, nous avons présenté les concepts généraux de la logique de réécriture. C’est un cadre
formel de raisonnement correct et d’analyse d’une grande variété de systèmes concurrents en particulier,
ayant des états et évoluant en termes de transitions. Ses différents concepts sont implémentés à travers
l’environnement Maude. Il permet d’une part, la programmation déclarative des systèmes modélisés et
d’autre part, leurs prototypage et vérification. Dans la suite nous nous focalisons sur la spécification de la
sémantique formelle et opérationnelle en logique de réécriture, d’un serveur de politiques, présenté dans le
chapitre précédent.
73/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 6
6. CONCEPTION D'UN SERVEUR DE POLITIQUES
74/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
6.1. Introduction
Nous présentons dans cette section notre proposition de modèle d’information pour représenter les
notions de qualité de service dans le cadre de la logique de réécriture. L'objectif principal du modèle
est de représenter d'une part l'état actuel de l’environnement du réseau, et d’autre part, les
informations nécessaires à la mise en place de nouveaux services, ou des nouveaux profils pour des
services déjà existants.
Nous définissons dans les sous-sections suivantes les hypothèses prises en compte pour la définition
du modèle et la terminologie utilisée, qui correspondent à l’ensemble de classes définies par notre
modèle.
6.2. Le modèle d’information pour les politiques de QoS
Nous intégrons à travers cette section un modèle d’information du type CIM pour les politiques de
Qos dans le cadre de la logique de réécriture. Cela fournit un moyen permettant de partager
l’information de manière uniforme dans une institution en capturant l’ensemble des informations
nécessaires à la mise en place de la solution de contrôle et de gestion à considérer.
CIM est un modèle orienté objet qui représente et organise l’information dans un environnement
géré. Les objets CIM comprennent les ordinateurs, les périphériques, les fichiers, les logiciels, les
utilisateurs, les organisations, les réseaux, etc.
En complément de la description des données brutes (composants), CIM permet la définition
d’associations et de méthodes. Les associations décrivent les relations entre objets, les dépendances,
les connexions, etc. CIM définit une série d’objets en respectant un ensemble de classes de base et
d’associations.
Le modèle conçu hérite en plus des avantages de l’approche objet (abstraction, héritage, etc), ceux
de la logique de réécriture comme formalisme de spécification formelle.
Les schémas CIM sont décrits au format MOF (Managed Object Format). Il s’agit d’un format de
description de la structure et du contenu du modèle. Dans notre cas, nous retenons de ce format
essentiellement les deux éléments suivants :
1. un méta-modèle décrivant les composants du modèle,
2. un schéma de nommage des composants gérés,
75/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Les autres éléments du modèle de l'information CIM (langage support pour la spécification des
objets gérés, modèle de l'information de référence servant de base à la spécification de nouveaux
composants gérés, ensemble de recommandations sur l'intégration de modèles de l'information) se
retrouvent implicitement dans notre formalisation.
Le méta-modèle définit les composants du modèle qui servent de briques de base à la construction
des spécifications.
Ces composants forment les éléments de base de la structure de l’information dans l’approche CIM.
Construire un modèle de l'information consiste à définir un schéma dans l'approche CIM et une
théorie orientée objet en logique de réécriture. Ce dernier est composé de classes (objets gérés,
associations, indications), d'instances et de qualifieurs. Tout composant au sein d'un schéma doit
avoir un nom unique. L'identification d'une instance se fait via les valeurs des attributs de celle-ci
définis comme clefs d'identification.
Afin de permettre la construction de nouvelles spécifications et de fournir un support textuel pour la
formalisation des modèles de l'information, le langage Maude à base de logique de réécriture
constitue un bon support. Ce langage fournit une syntaxe et une sémantique au méta-modèle CIM
permettant de spécifier tout composant d'un modèle de l'information (qualifieur, classe, association,
etc.). L’utilisation des outils de l’environnement Maude se fait de façon naturelle et est d’un très
grand intérêt pour la saisie, l’analyse et le prototypage du méta modèle CIM.
Le caractère de réflectivité dans Maude permet de générer automatiquement des « générateurs de
modèles CIM»
Notons ici que l’approche adoptée est générale, elle est appliquée à n’importe quel modèle
d’information du type CIM, en particulier le modèle PCIM considéré par l’IETF comme extension
de CIM aux techniques de gestion des politiques.
PCIM définit, en logique de réécriture, un modèle de description des politiques quels que soient
leurs domaines d’application. Il est fondé sur deux hiérarchies de classes :
•
les classes structurelles, qui forment les éléments de base des politiques,
•
les classes d’association qui déterminent les relations entre les éléments.
Le réseau est considéré comme une machine à états, c'est-à-dire une théorie système dans laquelle
on spécifie les états du réseau. Les politiques servent à contrôler les changements d’état en
identifiant l’état courant et en définissent les transitions possibles.
Les politiques forment un ensemble de conditions vraies ou fausses qui peuvent être composées
pour réaliser une politique plus complexe. Ces politiques forment à leur tour un ensemble d’actions
associées aux conditions qui modifient la configuration d’un ou de plusieurs éléments et qui
76/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
introduisent des ordres d’exécution comme la priorité des flux ou l’ordonnancement des paquets
dans le réseau.
L’expression de PCIM en logique de réécriture permet de le rendre plus flexible en permettant aux
différents domaines d’homogénéiser leurs concepts. Les principales extensions concernant une
meilleure gestion des priorités, l’ajout de règles simplifiées fondées sur les variables, la possibilité
d’avoir des règles conditionnées par d’autres règles se font de façon assez naturelle.
Enfin, remarquons que le travail de définition des politiques et d’administration est pris en charge au
sein de l’IETF par le groupe de travail POLICY. Le but de ce groupe est de proposer des solutions
pour supporter la QoS. Le travail de spécification de l’IETF s’appuie sur le travail réalisé par
plusieurs autres organismes, et notamment le DMTF (Desktop Management Task Force) et le DEN
(Directory Enabled Networks). Dans notre initiative reste indépendante des constats faits par ces
organismes.
Exemple
Supposant que l'on doit fournir un service vidéo Svideo. Cette opération doit être mise en
application comme politique : Fournissez le service Svideo visuel pour les utilisateurs autorisés
entre les points autorisés, mais seulement à des heures convenues.
En traduit cela par la règle suivante :
IF user IN ApprovedUsers
AND service IN VideoServices
AND source IN VideoSources
AND destination IN VideoDestinations
AND time IN ApprovedTimePeriods
THEN provide JitterFreeMPEG2
On peut voir dans cet exemple les différentes conditions qui exécutent la règle de politique
77/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
IF the user is a member of an approved group (ApprovedUsers)
that are authorized to have this service)
AND the service requested is one supported (VideoServicesgroup)
AND the source of the request is approved (in the VideoSources
group or has been authenticated)
AND the destination is approved (in the VideoDestinations group
or has been authenticated)
AND the time requested is OK (in ApprovedTimePeriods)
Ici, les types de condition de politique sont :
•
l'utilisateur, le service, la source, la destination, et le temps
Les éléments d'état de politique sont :
•
ApprovedUsers, VideoServices, VideoSources, VideoDestinations, et ApprovedTimePeriods, qui est tous
des groupes prédéfinis d'objets.
L’action de la règle de politique est :
IF the conditions are satisfied
THEN provide the user with video having a QoS defined by the Svideo Service
Si les conditions sont satisfaites alors on peut fournir le service demandé
6.3. Le schéma fonctionnel du serveur de politiques de QoS
Nous aborderons cette section par l’intégration et la gestion de la politique de l’exemple précédant
en Maude :
Commençons par les aspects statiques de ce système, c.-à-d., sa structure. Nous pouvons identifier
deux classes principales, à savoir le service demandé et les clients. Il y a deux genres spéciaux de
clients (clients occasionnels, clients réguliers), et deux genres de sévices (service de qualité
normale, service de qualité supérieur).
Les clients peuvent demandé un service. Ce rapport peut être représenté par une classe de
videoservices qui, en plus des références aux objets impliqués dans le rapport, à quelques
attributs additionnels. Le système exige également un certain contrôle du temps, qui nous obtenons
avec une classe représentant des calendriers qui fournit la date du jour et simule le passage du
temps.
78/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La classe client « ApproverUsers » a trois attributs, à savoir argent comptant, abonnement valide
et abonnement suspendu. Une telle classe peut être définie par la déclaration suivante de Maude :
Class ApprovedUsers / cash : Nat, AbVa : Bool, AbSus : Bool.
Nous définition les différents types de service pour les clients par deux sous-classes différentes, à
savoir « servicenormale, servicesupérieur », avec biens sure la contrainte de temps « times » et la
disponibilité du service.
Class Svideo / available : Bool, Times : Nat
Class Servicenormale.
Class Servicesupérieur
Subclasses Servicenormale Servicesupérieur < Svideo
Chaque élément classe videoservice établira un rapport entre le
client et le type de service
demander, En plus de ça, la le videoservice est également déclarée avec des d'attributs comme le
pickUptimes, et le duetimes pour respectivement, déterminé le début du service et la fin de ce
dernier.
Class VideoServices / PickUpTimes : Nat, DueTimes : Nat
ApprouvedUsers : Oid, Svideo : Oid
Etant donné l'utilisation simple que nous allons faire des dates, nous pouvons les représenter, par
exemple, en tant que nombres normaux. Puis, nous pouvons avoir un objet de calendrier qui garde la
date du jour et obtient accru par une règle de réécriture comme suit :
Class calendar / date : Nat.
Rl [new-day] :
< 0 : calendar / date : F >
< 0 : calendar / date : F + 1 >
79/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
Trois actions peuvent être identifiées dans l'exemple :
5. un client demande un service,
6. la fin du service pour un client ,
7. suspendre un service pour un client pour défaut d’abonnement
La demande d’un service par un client et indiqué par la règle ci-dessus. La disponibilité du service
reste un élément indispensable pour satisfaire la demande du client.
Ci cette élément ai valider reste a vérifier les closes du contra, entre autre la date du début et la fin
de ce service et le type d’abonnement souscrit
Crl
<
<
<
[svideo-service] :
U : ApprouvedUsers / cash : M, suspended : false >
I : Svideo / available : true, Times : rt >
C : calendar / data : today >
< U : ApprouvedUsers / cash : M – amnt >
< I : Svideo / available : false >
< C : calendar / >
< A : videoservice / PickUpTimes : today, DueTimes :
today + numdays, svideo : I, Approvedusers : U,
times : rt >
if Amnt : rt * numdays / M : Amnt
[nonexec]
Noter que ces attributs d'un objet qui ne sont pas appropriés pour un axiome n'ont pas besoin d'être
mentionnés. Les attributs n'apparaissant pas dans le côté droit d'une règle maintiendront leurs
valeurs précédentes non modifiées. Noter que les variables A et NumDays apparaissent dans le côté
ou la condition droit de la règle mais pas dans son côté à gauche (c'est la raison pour laquelle cette
règle est déclarée pour être nonexec). Noter aussi bien l'utilisation des attributs ApprovedUsers et
Svideo dans les objets de la classe vidéoservice, qui rend explicite qu'un rapport de service entre le
client et le type de service.
80/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La règle suivante étudie le cas de la fin d’un service pour un client a la date et l’heure prédéfinie
Crl
<
<
<
[servicefin] :
U : ApprouvedUsers / cash : M >
I : Svideo / times : At >
A : Videoservice / ApprouvedUsers : U, Svideo : I ?
pickuptimes : pdt, duetimes : today >
< C : calendar / date : today >
< U : ApprouvedUsers / cash : (M + dpst) - amnt >
< I : Svideo / available : true >
< C : calendar / >
If (today = ddt) / Amnt = rt * (today –pdt)
[nonexec]
Dans le dernier cas nous considérons la fin d’un service pour un client pour défaut d’abonnement
Crl [suspend-service]
< U : ApprouvedUsers / debt : M, suspended : false >
< U : ApprouvedUsers / suspended : trus >
If M > 0.
6.4. Conclusion
Nous avons présenté dans ce chapitre notre modèle d’information. Notre motivation principale est
de pouvoir faciliter le déploiement des services réseaux dynamiquement. Ce déploiement
dynamique de service est basé sur la caractérisation des besoins de service et l'état du réseau. Les
profils de service identifient une configuration possible du service (quantité de ressources, de
paramètres de configuration, etc..). Les profils de déploiement identifient une demande de service
d’un client. Ainsi, en utilisant cette information notre modèle fournit une vision en temps réel sur
l'état du réseau et sur l'acceptation ou pas des nouveaux services dans le réseau.
Cet outil permet d’établir, pour toute demande de nouveau service, l’ensemble de composants
nécessaires avec leur état (localisation, disponibilité de ressources, etc.), ainsi que leur relation
d’interdépendance. Cette cartographie permettra à un gestionnaire de prendre des décisions de
déploiement efficaces.
81/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 7
7. CONCLUSION ET PERSPECTIVES
82/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
La Qualité de Service ou QoS déferle sur les réseaux. C'est aujourd'hui le sujet le plus confus
dans ce domaine, comportant de multiples définitions pour répondre à de multiples objectifs. Cette
thèse tente de faire le point sur cette notion dans l'Internet, dans l'optique d'aider l'administrateur
réseau à se retrouver dans la jungle des mécanismes avancés par les constructeurs. En effet, la
Qualité de Service dans l'Internet est encore un vaste chantier, à tel point qu'il est difficile d'en faire
la synthèse! Aujourd'hui de multiples groupes de travail de l'IETF travaillent dans des domaines
touchant la Qualité de Service, Certains tiennent compte de nouveaux développements dans les
réseaux tels que la spécification 802.1p ou les techniques de "label switching", tandis que d'autres se
focalisent sur les politiques de contrôle dans les réseaux ou la définition de nouveaux protocoles de
routage. Tous ces travaux sont néanmoins étroitement imbriqués et permettent de construire
progressivement les morceaux du puzzle Qos adapté à l'Internet.
Pour plus de détails sur les mécanismes ou pour comprendre les enjeux économiques actuels
de la Qualité de Service, nous avons regroupé quelques définitions relatives à la Qualité de Service
(QoS), nous présentons les critères ou indicateurs généralement retenus pour caractériser les
performances d'un réseau et assurer un service de bonne qualité. Ensuite, nous décrivons quelques
mécanismes et approches permettant d'implémenter la Qualité de Service dans l'Internet sous forme
de services différenciés, ainsi que l'architecture "Integrated Services" développée par l'IETF. Pour
vérifier que les conditions de Qualité de Service sont respectées, il faut pouvoir mesurer la QoS.
Mais vite fais nous avons constaté les limites de ces approches surtout, car parallèlement au modèle
de réservation de ressources et de services intégrés posant des problèmes de déploiement à large
échelle. L’objet de ces travaux s’organise autour d’une idée, utiliser la notion de politique pour
construire des modèles d’évaluation de la qualité de service dans les réseaux multiservices.
L’approche des serveurs de politiques permet d’utilisés pour le contrôle d’admission ou l’ingénierie
de trafic. Nous avons proposé dans un travail antérieur à celui-ci, de généraliser cette modélisation à
l’estimation de la qualité de service le long d’un chemin. Nous avons élaboré un schéma original de
prédiction de la QoS qui s’appuie sur une gestion de la qualité de service à base de serveur de
politique afin de contrôler d’admission sur paramètres. L’utilisation de modèles connexionnistes
pour le contrôle d’admission n’est en soi pas nouvelle, elle présente beaucoup de limites. Les
serveurs de politique ne prennent pas directement la décision d’acceptation, mais fournissent une
évaluation des critères de QoS à partir d’une description des trafic s’entrants. Ainsi la décision
d’admission peut être prise sur la base des estimations de l’administrateur du réseau, en considérant
les contrats de chaque connexion et éventuellement à partir de règles définissant une politique de
contrôle d’admission. Ainsi le modèle suggéré s’inscrit dans le contexte du contrôle d’admission à
83/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
base de règles. Par ailleurs, les modèles d’évaluations sur chaque routeur ne se basent plus sur la
description donnée a priori à l’entrée du réseau mais sur une estimation de ce qu’il sera en arrivant
au niveau du routeur. Pour cela, les serveurs de politique doivent estimer, en plus des critères de
QoS, les caractéristiques du trafic de sortie. Celles-ci seront alors utilisées par le routeur suivant
pour faire ses estimations.
Dans le présent travail, nous avons repris le modèle informel suggéré et nous l’avons intégré
dans un cadre de raisonnement formel, à base de la logique de réécriture qui est un cadre formel de
raisonnement correct et d’analyse d’une grande variété de systèmes concurrents en particulier, ayant
des états et évoluant en termes de transitions. Ainsi, la complexité du serveur de politique est alors
mieux gérée : une compréhension approfondie par la mise en évidence des ambiguïtés laissées dans
l'ombre par les spécifications informelles, l’utilisation d'outils de preuve et d'évaluation symbolique
existants autour de cette logique. En outre, cette modélisation constitue une première application de
la logique de réécriture pour l’expression et la vérification des propriétés non fonctionnelles (QoS)
d’un système.
Notre approche de conception est inspirée de celle basée LDAP. Dans la première étape, un modèle
d’information pour les politiques de QoS de type QPIM est défini en utilisant principalement les
modèles orienté objet de Maude. Dans une deuxième étape, nous avons proposé un schéma
fonctionnel formel d’un serveur de gestion de politiques de QoS en exploitant les caractéristiques
syntaxiques et sémantiques de Maude.
Les perspectives sont nombreuses car nos travaux ne représentent qu’un premier pas vers la
modélisation par les serveurs de politique de la qualité de service. Nous avons en effet considéré des
trafics sporadiques idéalisés de politique de service et nous avons ignoré certains mécanismes,
complexes, qui entrent en jeu dans les réseaux comme les algorithmes de rejet des paquets (e.g.
WRED, Weighted Random Early Detection), la réémission par les sources de ces paquets perdus, le
contrôle de trafic réactif (e.g. TCP), etc. Les modèles d’évaluation de la QoS que nous avons
construits sont par conséquent spécifiques aux modèles que nous avons considérés.
Mais c’est en grande partie l’intérêt des modèles d’apprentissage de pouvoir s’adapter
spécifiquement aux observations qui constituent leur base d’apprentissage. L’étape suivante sera
donc de considérer la qualité de service de systèmes réels.
Enfin, l’utilisation de l’évaluation par les serveurs de politique pour considérer plus finement les
exigences de qualité de service des clients dans les problèmes d’optimisation dans les réseaux est
prometteuse. Ils sont un bon compromis entre les méthodes de simulation, plus réalistes mais
extrêmement coûteuses et l’approximation, peu coûteuse mais peu réaliste, notamment dans les
réseaux à différentiation de service. La prise en compte de cette qualité de service au travers de
84/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
contraintes de bout en bout peut permettre de considérer véritablement les exigences des clients au
niveau de routage comme nous l’avons vu, mais aussi lors du dimensionnement du réseau voire de
la conception même du réseau.
D’autre part, l’intégration du modèle d’évaluation de la QoS que nous avons construit dans le cadre
de la logique de réécriture ouvre la voie à d’autres thèmes de recherches, en particulier
l’exploitation des caractéristiques syntaxiques et sémantiques de cette logique :
•
L’expression et la vérification des propriétés non fonctionnelles des systèmes
informatiques en général.
•
La formulation correcte des métas politiques.
•
La structuration des politiques de QoS selon leur sémantique et régler ainsi le problème
de conflit sémantique qui peut se poser dans certaine situations.
85/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
CHAPITRE 8
8. BIBLIOGRAPHIE
86/94
Conception d’un Serveur de politiques QoS avec MAUDE
[Agoulmine 2002]
Fares Mounir Zemmouchi
Agoulmine Nazim, "Gestion de la QoS dans Internet via l'approche PBM",
DNAC 2002 (école d'hiver), 14-18 janvier 2002, Sainte - Luce, Martinique,
[Agoulmine 2003]
Agoulmine Nazim, Cherkaoui Omar, "Pratique de la gestion de réseau",
2003, Eyrolles, ISBN:2-212-11259-9.
[Baader et Nipkow 1998]
Franz Baader et Tobias Nipkow, Term Rewriting and All That,
Cambridge University Press, février 1998.
[Beker, Davie, 2000] Fred Baker, Bruce Davie, Francois Le Faucheur, Carol Iturralde, RSVP
Reservations Aggregation, 03/13/2000, draft-ietf-issll-rsvp-aggr-02.txt, travail en
cours
[Callon, Swallow, 1999]
Ross Callon, George Swallow, N. Feldman, A Viswanathan, P.
Doolan, A. Fredette, A Framework for MPLS, 09/22/1999, draft-ietf-mplsframework-05.txt, travail en cours
[Clark, fang, 1998]
D. Clark, W. Fang, Explicit Allocation of Best Effort Packet Delivery Service,
IEEE/ACM Transactions on Networking, August 1998, Vol. 6, No. 4, pp. 362373.
[Clavel et al. 1999]
M. Clavel, F. Durán, S. Eker, P. Lincoln, N. Martí-Oliet, J. Meseguer et J. F.
Quesada, Maude: Specification and Programming in Rewriting Logic, Maude
system documentation, Computer Science Laboratory, SRI International, 8 mars
1999.
[Cohen 2003]
"Policy QoS Information Model", Ron Cohen, John Strassner, Bob Moore, Yoram
Snir, Yoram Ramberg, draft-ietf-policy-qos-info-model-05.txt
[CRU 2003]
CRU LDAP Forum, http://www.cru.fr/ldap/
87/94
Conception d’un Serveur de politiques QoS avec MAUDE
Fares Mounir Zemmouchi
[Cui et al., 2004] Cui, Y., Li, B., and Nahrstedt, K. (2004). oStream: Asynchronous streaming
multicast in application-layer ovelay networks. IEEE Journal on Selected Areas in
Communications, 22(1):91–106.
[Damianou 2001]Nicodemos Damianou, Naranker Dulay, Emil Lupu, Morris Sloman," The ponder
policy
specification
language",
janvier
2001,
(www.doc.ic.ac.uk/~mss/Papers/Ponder-Policy01V5.pdf)
[Damianou, 2002]
Damianou, N. C. A Policy Framework for Management of Distributed
Systems. PhD thesis, Imperial College of Science, Technology and Medicine,
University of London, Department of Computing, 2002.
[Damianou, Dulay, 2002]
Damianou, N., Dulay, N., Lupu, E., Sloman, M., and Tonouchi, T.
Tools for Domain-based Policy Management of Distributed Systems. In
IEEE/IFIP Network Operations and Management Symposium (NOMS2002) (Apr.
2002), pp. 213_ 218.
[Damianou, Dulay, 2005]
Damianou, N., Dulay, N., Lupu, E., and Sloman, M. Ponder : A
Language for Specifying Security and Management Policies for Distributed
Systems. The Language Speci_cation - Version 2.3. Imperial College Research
Report DoC 2000/1, Oct. 2000. http ://www.doc.ic.ac.uk/ ncd/policies/_les/ accédé
en Avril 2005.
[Delot 2000]
Thierry Delot, "Lightweight Directory Access Protocol (LDAP)", présentation de
LDAP,
Laboratoire
PRiSM
de
l'université
de
Versailles.
http://www-
adele.imag.fr/~donsez/cours/ldapdelot.pdf
[Donsez 2002]
Didier Donsez, "Annuaires (Directory)", cours de l'université de Grenoble, version
du 19/03/2003, http://www-adele.imag.fr/~donsez/cours/
88/94
Conception d’un Serveur de politiques QoS avec MAUDE
[Durhan 2003]
Fares Mounir Zemmouchi
Information Model for Describing Network Device QoS Datapath
Mechanisms, David Durham, John Strassner, Walter Weiss, Andrea Westerinen,
Bob Moore, draft-ietf-policy-qos-device-info-model-10.txt
[Festor 2000] Olivier Festor, Nizar Ben Youssef " WBEM ", rapport de recherche avril 2000
[Festor 2001]
Olivier Festor, Nizar Ben Youssef "Représentation des spécifications CIM dans
un
Serveur
d’annuaire
LDAP
",
rapport
technique,
juillet
2001,
(ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RT/RT-0250.pdf)
[Fidalgo 2002]
FIDALGO joseane f., SADOK djamel f. h., KELNER judith, FIDALGO robson
do n., "A Simple Performance Policy Management Environment ", Net-Con 2002
(Network Control and Engineering for QoS, Security and Mobility (IFIP and IEEE
publication)), 22-25 octobre 2002, Paris, France.
[Group, 2003]
Group,
O.
M.
UML
2.0
OCL
Speci_cation,
Oct.
2003.
http
://www.omg.org/docs/ptc/03-10-14.pdf, accÈdÈ en mai 2005.
[Le Boudec, 1997]
Jean-Yves Le Boudec - An Introduction to Network Calculus -
http://ica1www.epfl.ch/ netCalSlides.pdf
[Lupu, Sloman, 1997]
Lupu, E., and Sloman, M. Con_ict Analysis for Management Policies.
In Proceedings of the 5th IFIP/IEEE International Symposium on Integrated
Network management IM'97, San Diego, CA (1997).
[Lupu, Sloman, 1999]
Lupu, E. C., and Sloman, M. Con_icts in Policy-Based Distributed
Systems Management. IEEE Transactions on Software Engineering 25, 6 (Nov.
1999), 852_869.
[Martí-Oliet et Meseguer 1993]
N. Martí-Oliet et J. Meseguer, Rewriting logic as a Logical and
Semantic Framework, rapport technique, SRI International, Computer Science
Laboratory, Menlo Park, août 1993.
89/94
Conception d’un Serveur de politiques QoS avec MAUDE
[Martí-Oliet et Meseguer 1996]
Fares Mounir Zemmouchi
N. Martí-Oliet et J. Meseguer, Rewriting logic as a Logical and
Semantic Framework, Electronic Notes in Theoretical Computer Science, 4, 1996.
[Mélin 2001]
Jean-Louis Mélin, "Qualité de Service sur IP", livre publié en février 2001 par
Eyrolles.
[Mes 02]
J. Meseguer, « Rewriting Logic Revisited» Slides of tutorial presented at WRLA
2002, Pisa, Italy, September 2002.
[Meseguer 1998]
José Meseguer, "Research Directions in Rewriting Logic", Computational
Logic, NATO Advanced Study Institute, U. Berger et H. Schwichtenberg éditeurs,
Springer-Verlag, 1998.
[Mirtain 2003]
Ressources Inria Laurent Mirtain.
http://www-sop.inria.fr/semir/personnel/Laurent.Mirtain/LDAP.html
[Ohlebusch 2002]
Enno Ohlebusch, Advanced Topics in Term Rewriting, Springer-Verlag, XV,
2002.
[RFC 2205]
R. Braden, Ed., L. Zhang, S. Berson, S. Herzog, S. Jamin. Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification. Septembre 1997.
[RFC 2205]
S. Shenker, C. Partridge, R. Guerin. Specification of Guaranteed Quality of
Service. Septembre 1997.
[RFC 2211]
J. Wroclawski. Specification of the Controlled-Load Network Element Service.
Septembre 1997.
[RFC 2330]
V. Paxson, G. Almes, J. Mahdavi, M. Mathis,.Framework for IP Performance
Metrics. Mai 1998.
[RFC 2474]
K. Nichols, S. Blake, F. Baker, D. Black., Definition of the Differentiated Services
Field (DS Field) in the IPv4 and IPv6 Headers. Decembre 1998.
90/94
Conception d’un Serveur de politiques QoS avec MAUDE
[RFC 2475]
Fares Mounir Zemmouchi
S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W. Weiss. An Architecture
for Differentiated Service. Decembre 1998.
[RFC 2597]
J. Heinanen, F. Baker, W. Weiss, J. Wroclawski., Assured Forwarding PHB
Group. Juin 1999.
[RFC 2598]
V. Jacobson, K. Nichols, K. Poduri. An Expedited Forwarding PHB. Juin 1999.
[RFC 2698]
J. Heinanen, R. Guerin, A Two Rate Three Color Marker, Juin 1999.
[RFC 2044]
F. Yergeau,, "UTF-8, a transformation format of Unicode and ISO 10646",
octobre 1996, (www.faqs.org/rfcs/rfc2044.html).
[RFC 2212]
S. Shenker, C. Partridge, R. Guerin , "Specification of Guaranteed Quality of
Service", septembre 1997, (www.faqs.org/rfcs/rfc2212.html).
[RFC 2247]
S. Kille, M. Wahl, A. Grimstad, R. Huber, S. Sataluri
LDAP/X.500
Distinguished
Names",
"Using Domains in
janvier
1998,
(www.faqs.org/rfcs/rfc2247.html).
[RFC 2251]
M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access Protocol (v3)",
decembre 1997, (www.faqs.org/rfcs/rfc2251.html).
[RFC 2251]
M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access Protocol (v3)",
décembre 1997, (www.faqs.org/rfcs/rfc2251.html).
[RFC 2252]
M. Wahl, A. Coulbeck, T. HowesS. Kille,
Protocol
(v3):
Attribute
Syntax
"Lightweight Directory Access
Definitions:",
decembre
1997,
(www.faqs.org/rfcs/rfc2252.html).
[RFC 2253]
M. Wahl, S. Kille , T. Howes ,
" Lightweight Directory Access Protocol
(v3):UTF-8 string representation of Distinguished Names ", decembre 1997,
(www.faqs.org/rfcs/rfc2212.html).
91/94
Conception d’un Serveur de politiques QoS avec MAUDE
[RFC 2254]
Fares Mounir Zemmouchi
T. Howes, " The String Representation of LDAP Search Filters", decembre 1997,
(www.faqs.org/rfcs/rfc2254.html).
[RFC 2255]
T. Howes, M. Smith,
" The LDAP URL Format", decembre 1997,
(www.faqs.org/rfcs/rfc2255.html).
[RFC 2256]
M. Wahl, "A Summary of the X.500(96) User Schema for use with LDAPv3 ",
decembre 1997, (www.faqs.org/rfcs/rfc2256.html).
[RFC 2307]
L. Howard , " An Approach for Using LDAP as a Network Information Service",
Mars 1998, (www.faqs.org/rfcs/rfc2307.html).
[RFC 2377]
A. Grimstad, R. Huber , S. Sataluri , M. Wahl " Naming Plan for Internet
Directory-Enabled
Applications",
septembre
1998,
(www.faqs.org/rfcs/rfc2377.html).
[RFC 2474]
K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the Differentiated Services
Field (DS Field) in the IPv4 and IPv6 Headers", décembre 1998,
(www.faqs.org/rfcs/rfc2474.html).
[RFC 2589]
Y. Yaacovi, M. Wahl , T. Genovese , " Lightweight Directory Access Protocol
(v3)
:
Extensions
for
Dynamic
Directory
Services",
Mai
1999,
(www.faqs.org/rfcs/rfc2589.html).
[RFC 2596]
M. Wahl, T. Howes,
"Use of Language Codes in LDAP ", Mai 1999,
(www.faqs.org/rfcs/rfc2596.html).
[RFC 2748]
D. Durham, J. Boyle , R. Cohen, S. Herzog, R. Rajan, A. Sastry, "The COPS
(Common
Open
Policy
Service)
Protocol",
janvier
2000,
(www.faqs.org/rfcs/rfc2748.html).
[RFC 2753]
R. Yavatkar, D. Pendarakis, R. Guerin, "A Framework for Policy-based Admission
Control", janvier 2000, (www.faqs.org/rfcs/rfc2753.html).
92/94
Conception d’un Serveur de politiques QoS avec MAUDE
[RFC 2829]
Fares Mounir Zemmouchi
M. Wahl, H. Alvestrand , J. Hodges , R. Morgan "Authentication Methods for
LDAP ", Mai 2000, (www.faqs.org/rfcs/rfc2829.html).
[RFC 2830]
J. Hodges, R. Morgan , M. Wahl , " Lightweight Directory Access Protocol (v3) :
Extensions
for
Transport
Layer
Security",
Mai
2000,
(www.faqs.org/rfcs/rfc2830.html).
[RFC 2849]
G. Good,
"The LDAP Data Interchange Format (LDIF) - Technical
Specification", juin 2000 1997, (www.faqs.org/rfcs/rfc2849.html).
[RFC 2891]
T. Howes, M. Wahl , A. Anantha , "LDAP Control Extension for Server Side
Sorting of Search Results", august 2000, (www.faqs.org/rfcs/rfc2891.html).
[RFC 3060]
B. Moore, E. Ellesson, J. Strassner, A. Westerinen, "Policy Core Information
Model - Version 1 Specification", février 2001, (www.faqs.org/rfcs/rfc3060.html).
[RFC 3062]
K. Zeilenga , "LDAP Password Modify Extended Operation", fevrier 2001,
(www.faqs.org/rfcs/rfc3062.html).
[RFC 3112]
K. Zeilenga ,
"LDAP Authentication Password Schema", Mai 2001,
(www.faqs.org/rfcs/rfc3112.html).
[RFC 3198]
A. Westerinen, J. Schnizlein, J. Strassner, M. Scherling, B. Quinn, S. Herzog, A.
Huynh, M. Carlson, J. Perry, S. Waldbusser, "Terminology for Policy-Based
Management", novembre 2001 (www.faqs.org/rfcs/rfc3198.html)
[RFC 3377]
J. Hodges , R. Morgan, "Lightweight Directory Access Protocol (v3) : technical
Specification ", septembre 2002, (www.faqs.org/rfcs/rfc3377.html).
[RFC 3384]
E. Stokes, R. Weiser , R. Moats , R. Huber, "Lightweight Directory Access
Protocol
(version
3)
Replication
Requirements
",
octobre
2002,
(www.faqs.org/rfcs/rfc3384.html).
93/94
Conception d’un Serveur de politiques QoS avec MAUDE
[RFC 3460]
Fares Mounir Zemmouchi
B. Moore, "Policy Core Information Model (PCIM) Extensions", janvier 2003,
(www.faqs.org/rfcs/rfc3460.html).
[Rizcallah 2002] RIZCALLAH marcel, "Annuaires LDAP", "2ème édition", 2002, Eyrolles,
ISBN:2-212-11033-2.
[Stardust 1999] Stardust.com, Inc, Introduction to QoS Policies, juillet 1999
[Strassner 1998] Policy Framework Definition Language,John Strassner/Stephen Schleimer, draftietf-policy-framework-pfdl-00.txt
“CIM
Tutorial”,
DMTF,
Mars
1999
.http://www.csd.uwo.ca/faculty/hanan/cs434/qos1.pdf)
http://www.dmtf.org/education/cimtutorial.php
[Yu, 2003]
Yu, W. (2003). Peer-to-peer approach for global deployment of voice over IP
service. In Proceedings of the 12th International Conference on Computer
Communications and Networks (ICCCN’03), Dallas, U.S.A.
[Zhang, Yavatkar, 2000]
Lixia Zhang, R. Yavatkar, Fred Baker, Bruce Davie, Peter Ford, Bob
Braden, John Wroclawski, M. Speer, Y. Bernet, Eyal Felstaine, A Framework For
Integrated Services Operation Over Diffserv Networks, 03/13/2000, draft-ietfissll-diffserv-rsvp-04.txt travail en cours.
94/94