organisation du partage des ressources dans un reseau p2p par la
Transcription
organisation du partage des ressources dans un reseau p2p par la
8e Conférence Internationale de MOdélisation et SIMulation - MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie « Evaluation et optimisation des systèmes innovants de production de biens et de services » ORGANISATION DU PARTAGE DES RESSOURCES DANS UN RESEAU P2P PAR LA COOPERATION DES PAIRS A. CABANI*, W. ALSHABI** M. ITMI** (*) ESIGELEC/IRSEEM EA 4353 Avenue Galilée, BP 10024 76801 St-Etienne du Rouvray - France [email protected], [email protected] (**) INSA/LITIS EA4108 Avenue de l’Université, BP 08 76801 St-Etienne du Rouvray - France [email protected] RESUME : Nous nous intéressons à la simulation distribuée selon un paradigme pair-à-pair. Notre approche s’appuie sur la déclaration des pairs selon leurs ressources. Nous avons implémenté et testé ce modèle. Nous y abordons le problème de la gestion du partage des ressources par une approche coopérative : les pairs se partageant les ressources selon un modèle de coopération que nous avons construit. Nous avons étudié ce modèle de coopération dans une simulation multi-agents et nous l’avons implémenté. Cette approche va dans le sens de l’équilibrage des charges du réseau P2P. MOTS-CLES : Coopération, organisation, réseau pair-à-pair, simulation distribuée, systèmes multi-agents. 1 INTRODUCTION Les dernières statistiques affiché par l’Arcep (L’autorité de régulation des communications électroniques et des postes), en août 2009, montre que le nombre des ménages en France se connectant à Internet ne cesse d’augmenter. En une seule année, il y a eu une hausse de 12% pour atteindre les 18.6 millions d’abonnements au haut débit. Derrière chaque abonnement haut débit il y a au moins un ordinateur. Ces derniers sont très rarement utilisés d’une manière optimale. Plusieurs sont laissés allumés des heures pour n’utiliser qu’un faible pourcentage de leurs capacités matérielles. Nous proposons de tirer profit de ces ressources disponibles et non utilisées en les faisant agréger autour de notre plate-forme PHAC (A P2P-based Highly Avaible Computing Framework). Le but étant d’offrir un réseau pair-à-pair hautement disponible. Dans ce papier, nous introduisons le modèle de réseau pair-à-pair et les modèles de coopération dans les systèmes multi-agents. Ensuite nous présentons notre plate-forme PHAC avec son modèle de coopération qui permet d’organiser le partage des ressources dans un réseau pair-à-pair. Ce modèle est inspiré de nos travaux sur la coopération multi agents. Dans le paragraphe 5, nous présentons les résultats obtenus par simulation avant de conclure avec des perspectives pour ces travaux. 2 MODELE DE RESEAU PAIR-A-PAIR C’est un modèle distribué de nœuds qui jouent à la fois le rôle de serveurs et de clients. Ce modèle est en pleine expansion depuis les années 90. Une des applications les plus connues est celle qui permet à des millions d’internautes de partager et de télécharger librement des fichiers (logiciels : Napster, Kazaa, Emule, etc.). D’autres applications sont apparues. Elles ont profité du potentiel offert par ce nouveau paradigme. On peut citer le calcul distribué qui utilise les machines connectées à l’Internet ainsi que les espaces collaboratifs basés sur les échanges instantanés de messages. Le pair-à-pair est une technologie émergeante. Son utilité se fait de plus en plus ressentir car il est possible d’adopter ce paradigme dans divers types d’applications afin de réduire les coûts. Les applications sont plus stables parce que les échanges de messages s’effectuent directement de pair à pair sans passer par un serveur. Ceci permet un meilleur passage à l’échelle en évitant les goulots d’étranglement qui sont fréquents dans les architectures client/serveur. On distingue trois types d’architectures pour ce modèle : − Le modèle centralisé : il repose sur un serveur central qui détient l’ensemble des connaissances. Les clients envoient leurs requêtes vers le serveur. Celui-ci répond par une liste des ressources et des clients les hébergeant. Par la suite les clients communiquent entre eux directement. − Le modèle hybride : le contrôle des informations s’échange à travers le serveur alors que les flux des données sont échangés de pair à pair. Le serveur agit en tant qu’agent de surveillance. Son rôle dépend des infrastructures. A titre d’exemple sur Kazaa, le rôle du serveur est la découverte et la localisation des ressources. − Le modèle pur : dans ce type de modèle, il n’y a aucun serveur. Le fait qu’un pair quitte le réseau n’affecte pas le bon fonctionnement du système. Parmi les systèmes adoptant ce type MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie d’architecture, on peut citer les systèmes à base de table de hachage distribuée telles que Chord [1], CAN [2], etc. Le modèle pair-à-pair a ses caractéristiques intrinsèques. Parmi elles, une des plus importantes à prendre en considération est la volatilité des pairs. Tout pair a la liberté de rester présent sur le réseau ou de s’en déconnecter sans aucun préavis. Avec ce type de modèle le passage à l’échelle est assuré par la décentralisation. Une étude menée en 2001 [3] a montré que Gnutella comptabilise une moyenne de dix mille participants simultanés. Dans la suite nous nous inspirerons de la coopération dans un système multi agents pour construire la coopération des pairs dans un réseau P2P. 3 MODELE DE COOPERATION Les systèmes multi-agents ont surtout l'avantage de faire intervenir des schémas d'interaction sophistiqués. Une interaction est une mise en relation dynamique de deux ou plusieurs agents par le biais d’un ensemble d’actions réciproques. Les agents interagissent, le plus souvent, selon des modes de coopération, de concurrence ou de coexistence [4]. La notion de coopération est une caractéristique très importante dans les systèmes multi agents. En effet, la résolution distribuée d’un problème est le résultat de l’interaction coopérative entre les différents agents. Quatre buts génériques ont été définis par Durfee et al. [5] pour établir la coopération dans un groupe d’agents: − augmenter la vitesse de résolution des tâches grâce au parallélisme ; − augmenter le nombre de tâches réalisables grâce au partage de ressources (information, expertise, dispositifs physiques, etc.) ; − augmenter les chances de finaliser des tâches en les dupliquant et en utilisant éventuellement des modes de réalisation différents ; − diminuer l’interférence entre les tâches en évitant des interactions négatives. L’importance de la coopération était à l’origine de plusieurs travaux de recherches avancés par les scientifiques. Parmi ces travaux de recherche nous pouvons citer les travaux de Lesser et Durfee [5], Galliers [6] et Bouron [7]. Néanmoins, l’ensemble de ces études concerne plutôt des aspects de la coopération assez différents et il règne une certaine confusion sur la signification de la coopération. D’autres travaux de recherche ont été réalisés dans le domaine [8, 9], néanmoins, jusqu'à présent, les stratégies de coopérations employées sont pour la plupart soit adhoc dans la façon dont elles sont développées, soit difficiles à réadapter et à réutiliser dans d’autres applications. 4 COOPERATION DES PAIRS D’après une étude effectuée par l’Omni group consulting, il s’avère que 47% des ressources sont non utilisées dans une entreprise. Il est judicieux de pouvoir tirer profit de ces dernières au dépend d’autres solutions plus coûteuse en terme d’investissement. Dans ce qui suit nous présentons les principes et les différents aspects de la mise en œuvre de la plate-forme PHAC [10, 11] qui constitue une plate-forme flexible pour distribuer une application. 4.1 Les PeerGroups Rappelons quelques définitions : - Un Peer est une entité (un processus, un processeur, un hôte ou un utilisateur) appartenant à un réseau. - Un PeerGroup consiste en un groupe logique et dynamique, constitué de pairs ayant un intérêt commun et un ensemble de politiques communes (la thématique du contenu ou des services partagés, les conditions d’appartenance au groupe, les communications, la sécurité, ...). Différentes études ont montré l'avantage de définir un PeerGroup [12]. La définition d'un tel groupe permet la création de domaines sécurisés pour l'échange de contenus, de créer des groupes qui partagent un intérêt commun. Cela a pour effet de réduire la portée des requêtes et des découvertes des autres pairs en se limitant aux seuls pairs du groupe et non plus à toute la communauté. Tous les algorithmes existants dans les systèmes P2P structurés supposent que tous les pairs sont uniformes c'est-à-dire qu'ils ont les mêmes ressources disponibles. Les messages sont acheminés sur le réseau sans considérer les différences de capacités parmi les pairs participant. Pourtant, certaines études [3, 13] ont montré que les systèmes P2P sont extrêmement hétérogènes. Le goulot provoqué par les capacités très limitées de certains pairs pourrait donc causer une perte de temps et un mauvais déroulement des algorithmes. Vu que les réseaux P2P sont volatiles, et afin d'améliorer leur fiabilité nous avons proposé de définir deux catégories de PeerGroup [14] : JobPeerGroup et RedundancyPeer. Le premier type sera utilisé pour distribuer des applications collaboratives sur les différents pairs le formant. Le choix de ces derniers est crucial. Il peut influencer directement les temps de calcul, la fiabilité du réseau et la robustesse du système. Une attention MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie particulière sera donnée au choix des pairs formant ce groupe et, surtout, aux caractéristiques suivantes : - - Les ressources matérielles (charge du processeur libre, mémoire libre, espace disque libre), Bande passante élevée, Le temps de propagation en boucle (Round-Trip Delay Time), Disponibilité et durée de fonctionnement des machines. Le deuxième type sera utilisé pour donner plus de fiabilité. A chaque pas de temps prédéfini, l'état des pairs appartenant au JobPeerGroup est recopié dans des machines appartenant au RedundancyPeer. Cette redondance des données peut améliorer la fiabilité du système. Les caractéristiques les plus importantes à prendre en compte lors du choix des pairs sont : - Bande passante élevée, Ressources matérielles (espace disque libre), Disponibilité et durée de fonctionnement des machines. 4.2 La plate-forme PHAC Comme déjà évoqué, il n'existait jusqu'à présent aucun environnement prenant en compte la disparité des pairs et destiné à être utilisé pour la simulation distribuée. Afin de remédier à ce manque, nous proposons la plateforme PHAC pour « A P2P-based Highly Available Computing Framework » [10, 11]. PHAC est une plate-forme basée sur une architecture pair-à-pair totalement décentralisée. Le but étant de tirer profit des machines connectées sur le réseau et qui ne sont pas en activité. Une attention particulière est donnée à la disponibilité de ces machines afin d’avoir un réseau pair-à-pair hautement disponible. Si un pair quitte le réseau inopinément, ceci ne devrait pas gêner le bon déroulement de l’application. Pour pouvoir répondre au dessein projeté, il faut bien organiser les pairs formant le réseau. Pour cela nous avons défini sur chaque machine, un fichier journal contenant l’ensemble des caractéristiques de la machine tels que la fréquence du processeur, la mémoire, la vitesse de connexion sur l’intranet et l’internet, etc. L’utilisateur de la plate-forme spécifiera les caractéristiques dont il a besoin pour former son réseau (voir figure 1). La plate-forme PHAC essayera de répondre de son mieux aux exigences de l’utilisateur. Figure 1 : La plate-forme PHAC. Les machines pouvant faire partie du réseau pair-à-pair doivent lancer un daemon au préalable, ce qui permettrait de pouvoir les contacter et les ajouter au réseau en cours de formation. La technique utilisée pour la recherche des pairs volontaires à faire partie du réseau est la technique de bootstrapping. Il s’agit d’une technique d’inondation du réseau de requêtes de proche en proche. La machine à partir de la quelle la requête de formation d’un réseau pair-à-pair est appelée s’intitule pair maître. Les autres machines formant le réseau sont appelées des pairs exécutants. Une fois les pairs exécutants découverts, ils formeront le réseau pair-à-pair. Ces pairs sont regroupés en deux catégories. Des pairs allant faire partie du JobPeerGroup et qui auront pour rôle d’utiliser au maximum la puissance de calcul offerte par ces derniers. D’autres pairs feront partie du RedundancyPeerGroup. Ils auront pour rôle de répliquer les données. Ceci permettra en cas de déconnexion inopinée de l’un des pairs faisant du calcul de continuer la tâche à partir du dernier temps de réplication et pas à partir du début (voir Figure 2). Pour cela, à des pas de temps réguliers prédéfinis par l’utilisateur, les données sont stockées sur des machines appartenant au RedundancyPeerGroup. La technique utilisée est la sérialisation et la persistance des objets. Les objets sont tout d’abord encodés sous forme d’une suite d’octets pour créer une copie conforme des objets d’origine et ensuite sauvegardés sur un ou plusieurs pairs appartenant au RedundancyPeerGroup. Pour reprendre les données répliquées, on utilise la technique de désérialisation. Il s’agit d’un processus de conversion d’un flux d’octets stockés en un objet actif. MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie Figure 2 : Diagramme d’activité modélisant la distribution d’une application. Comme une des caractéristiques des réseaux pair-à-pair est la volatilité des pairs le formant. Il est important de vérifier à des pas de temps réguliers la connexion des pairs. Pour détecter la déconnexion d’une machine du réseau, soit à cause d’une panne ou délibérément de son utilisateur, nous avons utilisé le protocole gossip-style [15] pour sa possibilité de passage à l’échelle sans aucune difficulté. Avec ce modèle, la détection des fautes est effectuée d’une manière distribuée et réside sur chaque pair appartenant au réseau. Chaque pair maintient MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie une table avec pour chaque membre connu son adresse et un entier qui sera utilisé pour détecter les pannes. Cet entier n’est autre qu’un compteur appelé communément heartbeat counter. A chaque pas de temps prédéfini, chaque membre incrémente son propre compteur et sélectionne une autre machine aléatoirement et lui envoie sa liste. A la réception du message contenant la liste, le membre fusionne la liste reçue dans le message avec la sienne et adopte la valeur maximale du counteur hearbeat. Chaque membre maintient aussi, dans sa liste pour chacun des autres membres, le dernier temps dont le compteur heartbeat a été incrémenté. Si le compteur des messages heartbeat, pour une même entrée, n'est pas incrémenté après une certaine période, cette entrée est considérée comme défaillante. En cas de panne détectée, le pair est aussitôt remplacé par un autre pair lui ressemblant. Les données perdues sont récupérées à partir d'un pair redondant. 4.3 Modèle de coopération Afin d’optimiser la coopération entre les différents pairs, nous allons définir une structure simple, juste et efficace. Simple, car tout à fait intuitive dans son approche. Elle peut être facilement adaptée et appliquée dans de multiples domaines et avec différents types de contraintes. Juste (équitable) car tous les pairs pouvant fournir les services nécessaires, obtiennent au départ des opportunités égales pour la réalisation des différentes tâches. Efficace parce que l’approche est pragmatique dans la manière dont la coopération est conçue et orchestrée. Elle sépare les stratégies du travail (attentes économiques) de la conception de la solution. De plus, un mécanisme très efficace est fourni pour non seulement mettre en œuvre la coopération, mais aussi contrôler les points qui l’étouffent. Ce modèle permet une entière flexibilité ainsi qu’une grande efficacité coopérative au sein de PHAC. Sa flexibilité provient du fait qu’il est capable de répondre aux deux extrémités sur l’échelle coopérative, et qui peut aller de la coopération totale à l’antagonisme total. Quant à son efficacité, elle est due au fait qu’elle permet d’améliorer la performance des pairs de manière à les aider à mieux survivre sans forcément que l’amélioration des performances individuelles cause un effet négatif sur le groupe, ce qui est souvent le cas. Par analogie avec les systèmes multi agents, Ferber, cite un bon exemple de ce problème où une population d’herbivores qui du fait d’être capables d’exploiter son territoire, peut aboutir à l’épuisement de ses ressources et entraîner en conséquence sa perte. L’approche que nous précisons est inspirée d’un modèle que nous avons construit par ailleurs pour des systèmes multi agents. Le problème de la coopération dans de tels systèmes vient de deux principales propriétés des agents intelligents : leur autonomie et leur sociabilité [16]. Cela est identique pour notre plate-forme PHAC, les pairs devant coopérer pour effectuer une tâche sont totalement autonomes et doivent coopérer entre eux afin de pouvoir réaliser la tâche demandée par l’utilisateur. L’autonomie des agents suppose que ces derniers ont leurs propres buts, leurs propres croyances et agissent en fonction de leur rationalité individuelle, alors que la sociabilité des agents suppose qu’ils peuvent coopérer avec d’autres agents pour satisfaire des buts communs, qu’ils peuvent être influencés pour adopter des buts d’autrui, acceptent de travailler pour le bien être social du système et agissent en fonction des normes sociales du système. En conséquence, le défit pour les modèles ou les mécanismes de coopération est d’assurer un équilibre entre ces deux points de vue : la vision individuelle de l’agent et la vision globale du système. D’ailleurs, Jennings et Campos [17] trouvent que dans la majorité de cas, les agents sont conçus pour maximiser leur bénéfice individuel et par conséquent ils adoptent un comportement individualiste (self interested stance) où ils essayent de maximiser leur utilité individuelle. Dans de telles stratégies, le succès de l'individu est l'unique mesure pour l'évaluation de performance. Par contre, il devient difficile voire impossible de prévoir les résultats des interactions d'agents. Par analogie, dans la plupart des cas, chaque pair a un comportement individualiste. Le partage des ressources du pair n’est possible que si ce dernier n’est pas en activité. Or parfois, le pair peut être en activité sans pour autant utiliser l’ensemble de ses ressources. Dans ce cas, le pair peut éventuellement partager ses ressources non utilisées. C’est un équilibre à trouver entre satisfaire ses besoins et en même temps faire profiter de ses ressources non utilisées l’ensemble des autres pairs sollicitant des ressources. Dans les systèmes multi-agents et les premières applications, telles que DVMT [18] et HEARSAY II [19], les composants individuels ont été d'une importance secondaire par rapport aux besoins du système. Pour de telles stratégies, l'évaluation de performance se mesure selon la performance globale de l’ensemble des agents dans le système multi-agents. Dans ces systèmes les agents ne possèdent qu’une autonomie limitée. Dans ce contexte, des chercheurs comme Decker [20] et Chaib-Draa [4] ont souligné le fait qu’un système peut être caractérisé par le type de coopération mis en œuvre qui peut aller de la coopération totale à l’antagonisme total. Des agents totalement coopératifs peuvent changer MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie leurs buts pour répondre aux besoins des autres agents afin d’assurer une meilleure coordination entre eux. Dans le système PHAC, il est possible qu’un pair choisisse d’être très coopératif et donc qu’il puisse partager ses ressources malgré son activité. Le pair met en priorité les performances globales du système avant les siennes même si ce partage de ressources peut le ralentir. Cette participation ne doit pas pour autant entraver le bon fonctionnement de la machine. De l’ensemble de ces travaux nous pouvons distinguer deux extrémités qui représentent certains des systèmes déjà développés. D’une part, il y a les systèmes totalement coopératifs avec des ressources dédiées. La performance totale est la mesure essentielle d’évaluation. D’autre part, il y a les systèmes totalement antagonistes où l’aspect coopératif est quasi inexistant. Chacun travaille sur sa machine sans se soucier de l’existence de ressources disponibles qui peuvent être à ses côtés. Dans ce cas, la performance est évaluée selon l’intérêt individuel. La plupart des systèmes existants se situent entre les deux extrêmes : coopération totale et antagonisme total. Notre plate forme PHAC, permet de faire coopérer des machines dès qu’il y a une demande de ressources de la part d’un pair faisant partie du réseau. Pour cela nous avons défini la notion d’indicateur de coopération (CI Cooperation Indicator). Ce dernier est inspiré des travaux faits par Castelfranchi [21] et Jennings [17]. Dans ces travaux, les auteurs mettent l’accent sur l’intérêt et la nécessité de définir un indicateur qui permet d’établir un certain équilibre entre le bénéfice individuel de l’agent et celui du système entier. Notre indicateur de coopération nous permet à la fois de répondre aux deux extrémités pour suivre l’évolution du travail. De plus, il permet de quantifier la coopération et d’avoir plusieurs niveaux de coopération. Cela permet également d’éviter que le niveau de coopération soit figé comme c’est le cas dans la plupart des systèmes existants. Ainsi chaque pair peut définir son indice de coopération. Un autre grand problème réside dans le grand nombre de communications entre les pairs. Cela est dû au fait que les pairs sont des entités autonomes plongées dans un environnement et qui doivent communiquer pour pouvoir coopérer. La problématique qui est l’augmentation non négligeable des communications est un point important. Il arrive qu’une application distribuée soit moins rapide à l’exécution qu’une application non répartie. La simple répartition du calcul est loin de garantir automatiquement des temps de calcul plus courts. Une conception inadaptée de l’application pourra conduire à un nombre important de messages de partage d'information entre pairs. Dans les systèmes multi agents, Mathieu [22] avance que pour des applications nécessitant la coopération de plus d’une dizaine d’agents, le système risque de voir ses performances s’effondrer à cause de la complexité de la structure de l’agent. La raison est que chaque agent du système doit pour chaque geste, chaque action, tenir compte des possibilités d’actions de tous les autres agents qu’il connaît. En cas de conflit, l’agent doit rentrer en négociation avec ses concurrents. Il est donc difficile de gérer plusieurs agents vu que la complexité du système augmente avec le nombre d’agents. Chaib-draa [23] résume cela par le fait que lorsque la taille du groupe grandit et que le nombre des tâches augmente, le nombre de liens et la quantité d’informations échangées peuvent devenir rapidement un handicap sérieux. Afin de ne pas être dans ce cas, nous avons proposé d’organiser nos pairs d’une façon hiérarchique et dynamique. La capacité des pairs de communiquer entre eux directement a permis de réduire considérablement le nombre de messages échangés. En outre, la division des pairs en sous-groupes de JobPeerGroup et RedundancyPeerGroup et l’introduction d’un pair superviseur pour chaque groupe ont facilité la coordination des pairs [24]. Le processus général de recherche de compétences (SSP) fait succéder alternativement deux modes de recherche [24, 25]. Autrement dit, il alterne entre la recherche ASM (Acquaintances Skills Matrix) et la recherche par délégation MPM (Message Passing Mechanism). La succession de ces deux phases est inspirée du comportement des insectes sociaux. C’est typiquement le cas de modèles de recherche collective de nourriture chez les fourmis. Rappelons que les colonies de fourmis parviennent à retrouver des sources de nourriture éloignées de leur nid et à former des chaînes continues permettant de rapporter la nourriture. Les éthologistes, notamment Deneubourg [26], fournissent une explication à ce phénomène. Les fourmis se déplacent de manière aléatoire dans leur environnement. Lorsqu’elles trouvent de la nourriture, elles rentrent au nid en déposant sur leur chemin des marqueurs chimiques appelés phéromones. En retour, ces phéromones attirent les autres fourmis qui sont incitées à suivre la même piste. La conjonction de l’évaporation des phéromones et de la pose de phéromones par les fourmis aboutit à l’apparition d’une piste unique entre le nid et la source de nourriture. Cette piste s’avère en outre être le chemin le plus court reliant ces deux points. Les algorithmes de contrôle et d’optimisation inspirés des comportements collectifs chez les fourmis ont connu un succès inattendu et sont connus sous le nom de (Ant Colony Optimisation - ACO) ou (Ant Colony Routing ACR). On trouve notamment des applications pratiques de l’ACR dans l’optimisation des réseaux de MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie télécommunication. Ces algorithmes ont été utilisés également pour résoudre des problèmes posés en informatique tel que le problème du voyageur de commerce (Traveling Salesman Problem - TSP) [27]. Dans notre modèle, la phase de recherche par délégation MPM peut représenter l’étape d’exploration aléatoire de l’environnement effectué au départ par les fourmis. Ainsi, nous commençons par explorer l’ensemble des pairs afin de trouver et identifier les pairs compétents. Une fois ces derniers sont identifiés, nous utiliserons les liens d’accointances ASM comme un moyen de communication direct et plus rapide. Dans l’exemple de colonies de fourmis mentionné précédemment, une fois toute la quantité de nourriture déplacée vers le nid, les fourmis recommencent à nouveau la recherche d’une nouvelle source de nourriture. Ils reprennent, donc, le même processus de recherche effectué auparavant. Autrement dit, elles se déplacent au départ de manière aléatoire dans leur environnement, ensuite elles vont suivre la piste entre le nid et la source de nourriture établie grâce aux phéromones déposées lors du déplacement. De même dans notre modèle, après une période de temps prédéfinie, nous considérerons que les liens directs entre les pairs sont inexistants et nous recommencerons une recherche globale. Cette alternance entre la recherche par délégation MPM et la recherche ASM agit de façon à ce que la connaissance du pair par rapport aux autres pairs (son ASM) soit mise à jour. Le mécanisme de choix (ACP - Agents’ Choice Process) est un mécanisme flexible qui est capable de traiter différents degrés de coopération entre les pairs. Ce degré de coopération peut varier d’antagoniste à coopératif. De plus, ce mécanisme permet à l'utilisateur de déterminer le pourcentage de coopération attendue. Cela peut être réalisé par l’intermédiaire du CI donné par l'utilisateur à l'initialisation. Ce mécanisme permet également de définir une valeur de tolérance par l'utilisateur. La conjonction de la valeur de CI et de la valeur de tolérance (TV - Tolerance Value) permet de définir une zone de tolérance. Pour mieux illustrer l’idée de la TV, considérons que la TV définie par l’utilisateur est égale à ± 20%. Pour un CI égale à 50%, la zone de tolérance dans ce cas est illustrée par la Figure 3. Il s’agit de la zone hachurée. C’est la bande située dans la zone suivante : [CI-TV , CI+TV] = [0.5-0.1 , 0.5+0.1] = [0.4 , 0.6] Tous les pairs situés dans cette zone sont satisfaisants du point de vue de l'utilisateur. Plus le nombre de pairs appartenant à cet intervalle est élevé plus le résultat est satisfaisant. Notre objectif est de maximiser le nombre de pairs situés dans la zone donnée et voulue par l’utilisateur et par conséquent de réduire le nombre de pairs en dehors de cette zone. Figure 3 : La zone de tolérance. Dans la première architecture de PHAC, un pair présentait directement ses fonctionnalités comme un objet possède des méthodes. Pour des raisons de découplage fonctionnel propre au génie logiciel, on préfère aujourd’hui présenter les fonctions d’un agent via une interface appelée le rôle. Au même titre que dans les systèmes multi-agent et où Savall [28] défini le rôle en tant qu’une représentation abstraite d’une fonction ou d’un service proposé par un agent, dans notre modèle le rôle est la tâche qu’un pair peut réaliser dans les meilleurs conditions tels que le calcul ou le stockage. Dans notre modèle, un rôle peut être attribué dynamiquement à un pair. Il peut par exemple assurer des calculs ou stocker des données ou même les deux simultanément. D’autres rôles peuvent être définis comme le rôle de pair routeur qui se charge de la mise en relation de plusieurs pairs. Notre approche permet à un pair d’appartenir à plusieurs groupes et donc de pouvoir adopter plusieurs rôles au sein de ces différents groupes. Chaque agent peut prendre en charge plusieurs rôles et un rôle identique peut être tenu par plusieurs agents. La Figure 4 montre l’adoption de plusieurs rôles par les pairs. Les cercles blancs présentent les rôles inactifs pour un pair tandis que les autres cercles présentent les rôles actifs d’un pair au sein d’un groupe. Une modélisation avec les réseaux de pétri des différents rôles nous a permis de valider leurs fonctionnements. Figure 4 : Rôles actifs et inactifs pendant la formation d'un groupe. MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie 100 95 90 CIréel 85 Série1 80 Série2 75 70 65 60 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 Itération Figure 5 : Résultats obtenus par le système pour un CIattendu = 80%. 5 requêtes leurs demandant d’exécuter une tâche sans pour autant posséder les compétences nécessaires. RESULTAT Dans ce qui suit, les pairs ont été assimilés à des agents. Nous présentons les résultats obtenus par simulation. Ils nous ont permis de tester et de valider notre modèle. Le but est d’arriver à une coopération égale à 80%. Des requêtes ont été envoyées à des destinataires tirés aléatoirement. Ainsi, les pairs peuvent recevoir des Un point de la courbe représente la moyenne des CI pour deux cents requêtes tirées au hasard. L’axe des abscisses représente le nombre d’itérations réalisées pour atteindre une coopération égale à 80%. 100 90 80 70 CIréel 60 CI ideal CI (100) CI (200) CI (500) CI (1000) CI (2000) 50 40 30 20 10 0 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 Figure 6CIidéal : CIideal & CIréel. MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie La série n°2 représente le cas où lorsqu’un pair initiateur reçoit une requête et ne possède pas la compétence appropriée. Ne pouvant pas participer à une offre, le nombre de Requested Bid ne change pas. On peut remarquer que les résultats sont relativement lointains de l’objectif fixé. Afin d’améliorer la convergence du système et de se rapprocher davantage de la valeur de coopération fixée, le nombre Requested Bid est incrémenté même si le pair initiateur ne possède pas la compétence requise. On peut voir aisément dans la Figure 5, série n°1, que la moyenne de CIréel est aux alentours de 80% qui représente l’objectif fixé. Dans un cas plus général, le système peut ne pas converger vers le résultat attendu. Nous avons effectué un programme de simulation qui permet d’envisager ce cas de figure. Les résultats obtenus sont présentés dans la figure 6. En abscisse, on a l’indice de coopération idéal et en ordonnée on a l’indice de coopération réel c’est-à-dire l’indice de coopération attendu. Cinq scénarios sont présentés : pour 100, 200, 500, 1000 et 2000 requêtes. On peut voir que plus le nombre de requêtes augmente, plus le CIréel converge vers le résultat attendu même pour des CI faibles. 6 at the Multimedia Computing and Networking 2002 (MMCN'02), San Jose, California, United States, 2002. [4] B. Chaib-draa and P. Levesque, "Hierarchical model and communication by signs, signals and symbols in multi-agent environments," Journal of Experimental and Theoretical Artificial Intelligence (JETAI), vol. 8, pp. 7-20, 1996. [5] E. H. Durfee, et al., "Trends in cooperative distributed problem solving," presented at the IEEE Transactions on Knowledge and Data Engineering, 1989. [6] J. R. Galliers, "Modelling autonomous belief revision in dialogue," in Proceedings of the Second European Workshop on Autonomous Agents in a Multi-agents World, 1991. [7] T. Bouron, "Structures de communication et d'organisation pour la coopération dans un univers multi-agents," Université Pierre et Marie Curie (Paris VI), 1992. [8] N. E. Bensaid and P. Mathieu, "A hybrid and hierarchical multi-agent architecture model," presented at the Proceedings of the Second International Conference and Exhibition on the Practical Application of Intelligent Agents and Multi-Agent Technology (PAAM’97), LondonUnited Kingdom, 1997. [9] D. Bell and J. Grimson, Distributed database systems: Addison-Wesley, 1992. [10] A. Cabani, et al., "Phac: A P2P-based environment for distributed collaborative applications," The International Journal of Intelligent Control and Systems, (IJICS), 2007. [11] A. Cabani, et al., "Phac: an environment for distributed collaborative applications on P2P networks," presented at the 4th International Conference on Distributed Computing and Internet Technology (ICDCIT'07), 2007. [12] B. Traversat, et al. (2003, Project JXTA 2.0 Super-Peer Virtual Network. Available: http://www.jxta.org/docs/JxtaProgGuide_v2.pdf [13] D. Andersen, et al., "Resilient overlay networks," SIGOPS Oper. Syst. Rev., vol. 35, pp. 131-145, 2001. [14] A. Cabani, et al., "Multi-agent Distributed Simulation : Discussions and prototyping a P2P architecture," in Computer Simulation CONCLUSION L’agrégation des ressources offertes par les pairs permet de donner une puissance de calcul importante à moindre coût. En nous appuyant sur nos travaux concernant la coopération multi agents, nous avons mis en avant une approche permettant de faire coopérer des machines interconnectées via un réseau. Vu l’hétérogénéité des configurations des pairs, notre modèle propose de les organiser en sous groupes avec des rôles qui peuvent évoluer dynamiquement. La simulation multi agents en accord avec ce modèle a donné des résultats concluants. La suite de nos travaux concerne l'implémentation du modèle de coopération des pairs accompagnée de tests réels sur une application. REFERENCES [1] I. Stoica, et al., "Chord: A Scalable Peer-ToPeer Lookup Service for Internet Applications," in ACM SIGCOMM 2001, San Diego, California, United States, 2001, pp. 149-160. [2] S. Ratnasamy, et al., "A Scalable ContentAdressable Network," in ACM SIGCOMM 2001, San Diego, California, United States, 2001, pp. 161-172. [3] S. Saroiu, et al., "A Measurement Study of Peer-to-Peer File Sharing Systems," presented MOSIM’10 - 10 au 12 mai 2010 - Hammamet - Tunisie multiagent systems: part 1, Bologna, Italy, 2002. Conference (SCSC'05), Philadelphia, Pennsylvania, United States, 2005, pp. 281-286. [15] R. V. Renesse, et al., "A gossip-style failure detection service," Technical report1998. [16] L. Esmahi, "Modèles formels pour la coopération dans les SMA," presented at the Actes des 9ème Journées Francophones d'Intelligence Artificielle et Systèmes MultiAgents (JFIADSMA'01), 2001. [17] N. R. Jennings and J. R. Campos, "Towards a social level characterisation of socially responsible agents," presented at the IEE Proceedings on Software Engineering, 1997. [18] D. D. Corkill and V. R. Lesser, "The use of meta-level control for coordination in a distributed problem solving network," presented at the Proceedings of the Eighth International Joint Conference on Artificial Intelligence, Karlsruhe, Allemagne, 1983. [19] L. D. Erman and V. R. Lesser, "A mulit-level organisation for probleme solving using many diverse cooperating sources of knowledge," presented at the Proceedings of the International Joint Conference on Artificial Intelligence (IJCAI-75), Stanford, CA, 1975. [20] K. S. Decker, "Environment centered analysis and design of coordination mechanisms," Computer Science Departement, University of massachusetts, 1995. [21] C.Castelfranchi, "Through the Minds of the Agents," Journal of Artificial Societies and Social Simulation, vol. 1, 1998. [22] P. Mathieu, multi-agent Proceedings conference et al., "Dynamic organization of systems," presented at the of the first international joint on Autonomous agents and [23] B. Chaib-draa, et al., systèmes multi-agents : principes généraux et applications: Hermès Sience Publications, Lavoisier, 2001. [24] W. Alshabi, et al., "Towards a social responsible agents in hybrid organization," presented at the International Simulation Multiconference (ISMc'08) : Grand Challenges in Modeling & Simulation (GCMS’08), Edinburgh, Scotland, 2008. [25] W. Alshabi, et al., "Un mecanisme de cooperation dans une organisation hierarchique," presented at the 7ème Conférence Internationale de MOdélisation et SIMulation - MOSIM’08 - « Modélisation, Optimisation et Simulation des Systèmes : Communication, Coopération et Coordination.», 2008. [26] J. L. Deneubourg, et al., "The self-organizing exploratory pattern of the argentine ant," Journal of Insect Behavior, vol. 3, pp. 159-168, 1990. [27] D. S. Johnson and L. A. McGeoch, Experimental analysis of heuristics for the STSP: Kluwer Academic Publishers, 2002. [28] M. Savall, "Une architecture d’agents pour la simulation : Le modèle YAMAM et sa plateforme Phoenix," Institut National des Sciences Appliquées de Rouen (INSA), 2003.