gnutella web cache

Transcription

gnutella web cache
UNIVERSITE LIBANAISE
UNIVERSITE SAINT-JOSEPH
(Faculté de Génie)
(Faculté d'Ingénierie)
Sous l'égide de l'Agence Universitaire de la Francophonie
AUF
Diplôme d'Etudes Approfondies
Réseaux de télécommunications
Proposition d’architecture de réseau actif pour le
déploiement d’un réseau Peer to Peer
Par
Maher Souheil Nasreddine
Encadré par : Mme. Rima Kilany
Soutenance, le 22 décembre 2004 devant le jury composé de
MM.
Samir Tohmé
Mohamad Zoaeter
Wajdi Najem
Imad Mougharbel
Nicolas Rouhana
Mahmoud Doughan
Maroun Chamoun
Président
Membre
Membre
Membre
Membre
Membre
Membre
Mes remerciements !
Au président du jury M. Samir Tohme et à tous les autres membres du jury.
Aux responsables de l’agence universitaire de la francophonie pour l’année
universitaire 2003-2004 pour leurs supports et aides, représentés par M. Nicolas
Rouhana (USJ) et M. Imad Mougharbel (UL).
A mon assistante de projet Mme Rima Kilany, dont j’apprécie son aide et ses
conseils indispensables pour la bonne réalisation de ce projet.
A tous ceux qui m’ont fourni l’aide et accordé leur temps et leur attention pour
orienter mon travail.
Veuillez agréer l’expression de mes sentiments, les meilleurs
Maher
2
Table des matières
Sujet ………………………………………………………………………………
6
Sommaire …………………………………………………………………………
7
1 Les réseaux P2P ……………………………………………………………...
1.1 Introduction……………………………………………………………
1.2 Etat de l’art …………………………………………………………..
1.2.1 Généralités………………………………………………………
1.3 Applications P2P……………………………………………………...
1.3.1 Napster ou le modèle hybride …………………………………..
1.3.2 Gnutella ou le modèle pur……………………………………….
1.3.3 Skype (VOIP) ………………………………………………….
1.4 La gestion du réseaux peer to peer …………………………………...
1.4.1 Gestion des performances ………………………………………
1.4.2 Contrôle du trafic peer to peer ………………………………….
1.4.3 La gestion des fichiers et contenus……………………………...
1.4.4 Gestion de présence JIM ………………………………………
1.4.4.1 Jxta Instant Messaging……………………………………
a Les états en JIM ……………………………………….
a-1 JIM et JXTA …………………………………….
a-2 Instrumentation …………………………………...
1.4.4.2 RRS….……………………………………………………
a- Le Service de Rendez-vous a distance (RRS)……….....
b- Garder un Non Rendez-vous Pair bien Connecté…….
c- L'administration à distance de Rendez-vous Pairs…….
8
9
9
9
12
13
14
16
18
18
19
19
19
19
20
20
21
21
21
21
22
2 Les Réseaux Actifs …………………………………………………….............
2.1 Introduction …………………………………………………………..
2.2 Etat de l’art..........................................................................................
2.2.1 Définitions et généralités............................................................
2.2.2 Applications................................................................................
2.2.2.1 Network Management........................................................
2.2.2.2 Contrôle de gestion............................................................
2.2.2.3 Multicasting.......................................................................
2.2.3 Sécurité des réseaux actifs...........................................................
2.2.3.1 Du point de vue système...................................................
2.2.3.2 Du point de vue langage de programmation.....................
2.2.4 Architecture des réseaux actifs..................................................
2.2.4.1 Approches « Actives Paquets » .......................................
2.2.4.2 Approche « Active Nodes » ..............................................
2.2.4.3 Approche mixte « Active Packets and Nodes »…………...
2.2.5 Comparaison...............................................................................
2.2.6 Réseaux actifs et Ants...................................................................
2.2.6.1 NodeOS des réseaux actifs..................................................
1. Architecture du NodeOS .............................................
2.2.6.2 Protocole ANEP..................................................................
2.2.6.3 ANTS "Active Network Transfer System"……………….
2.3 Gestion des Réseaux Actifs...................................................................
2.3.1 MIB basée XML : Architecture de gestion de réseau actif.... ....
2.3.1.1 Introduction........................................................................
2.3.1.2 Translation MIB à XML......................................................
24
24
25
25
26
26
27
27
28
28
29
29
29
30
31
31
31
32
32
34
34
35
35
35
35
3
2.3.1.3 La méthode de transmission de la MIB basée sur XML en
utilisant ANEP..................................................................
2.3.1.4 Le MIB 'manager' dans un Noeud Actif..............................
2.3.2 AVNMP: Active Virtual Network Management Prédiction....
2.3.3 Application Level Active Network...........................................
2.3.3.1 Introduction.......................................................................
2.3.3.2 Motivation.........................................................................
2.3.3.3 Les Buts.............................................................................
2.3.3.4 ALAN (Fry et Al)..............................................................
3 Proposition d’architecture de réseau actif pour le déploiement et la gestion
d’un réseau Peer to Peer………………………………………………………...
3.1 Introduction…………………………………………………………....
3.2 Super Peer……………………………………………………………..
3.2.1 Les Réseaux Superpeers.…………………………………….…..
3.2.2 Rendez-vous superpeer (RDV)……………………………….....
3.3 ALAN (Architecture)………………………………………….............
3.4 VAP Virtual Active Peer………………………………………………
3.4.1 Introduction………………………………………………………
3.4.2 Architecture de AVP (Super Peer)……………………………….
3.4.3 Gestion de AVP………………………………………………….
3.4.3.1 Le contrôle d’accès…………………………………………
3.4.3.2 Routage…………………………………………………….
3.4.3.3 Topologie Contrôle …………………………………………
3.4.3.4 Gestion des ressources ……………………………………...
3.4.4 Contribution……………………………………………………….
37
37
38
40
40
40
40
41
44
44
44
45
46
47
48
48
50
51
51
51
51
52
52
4 L’implémentation………………………………………………………………. 54
4.1 Création d’un service Web…………………………………………….... 54
4.1.1 Environnement……………………………..……………………… 54
4.1.2 Langage de programmation……………………………………….. 54
4.1.3 Les Fonctions Web………………………………………………… 54
4.1.4 Page d’aide du service Web……………………………………... 54
4.2 Fonctionnement globale du réseau p2p centralisé…………………….. 55
4.2.1 Enregistrement d’un fichier sur le serveur………………………. 55
4.2.2 Page d’aide du service Web……………………………………... 56
4.2.3 Recherche d’un fichier…………………………………………... 57
4.2.4 Télécharger un fichier…………………………………………… 57
4.3 Développement de l’application………………………………………. 57
4.3.1 Création de référence Web……………………………………… 57
4.3.2 Déroulement de l’application…………………………………… 57
57
4.3.2.1 L’enregistrement de fichier………………………………
4.3.2.2 Recherche et téléchargement……………………………... 58
4.4 Monitoring ……………………………………………………………. 59
4.4.1 Qu’est ce que WMI……………………………………………… 59
4.4.2 Architecture WMI ………………………………………………. 60
4.4.2.1 Ressources gerees ………………………………………... 60
4.4.2.2 Infrastructure de WMI …………………………………… 60
4.4.2.3 Consommateurs WMI ……………………………………. 60
61
4.4.3 L’application de gestion ……………………………………….
5 Conclusion …………..…………………………………………………………
Bibliographie ……………………………………………………………………..
4
62
63
Table des Figures
Figure 1. Classification des systèmes informatiques.
Figure 2. Exemple de Topologie virtuelle.
Figure 3. Les Modèles p2p
Figure 4. P2P vs Client/Serveur
Figure 5. La taxonomie des applications p2p
Figure 6. Les échanges dans Napster
Figure 7. En-tête message Gnutella
Figure 8. Connexion d’un Peer Gnutella
Figure 9. Routage des messages
Figure 10. Mécanisme de TTL
Figure 11. Recherche de données (Query-Query Hit)
Figure 12. Skype : Messagerie Instantanée
Figure 13. Architecture de JIM / Jxta
Figure 14. Les peers et les pipes
Figure 15. Le format de paquet d’ANEP
Figure 16. XML basée MIB
Figure 17. Prédiction de charge
Figure 18. Architecture ALAN
Figure 19. Illustration d’un réseau Superpeer
Figure 20. Paramètres de configuration et valeurs par défaut
Figure 21. Rendez-vous Superpeer
Figure 22. ALAN
Figure 23. Exemple de topologie à Virtual Peer Actif.
Figure 24. Pile protocolaire
Figure 25. Architecture AVP 1
Figure 26. Déploiement de AVP
Figure 27. Architecture AVP 2
Figure 28. Gnutella vs réseau AVP
Figure 29. Contrôle de Topologie
Figure 30. Gestion de ressources
Figure 31. Test 1
Figure 32. Test 2
Figure 33. Test 3
Figure 34. Test 4
Figure 35. Test 5
5
9
10
11
12
12
13
15
15
15
16
16
17
20
21
37
38
39
41
45
46
46
47
48
50
50
50
51
51
52
52
55
55
56
58
61
Sujet.
Le développement d’Internet en raison de son succès auprès du grand public est à
l’origine de l’apparition de nouvelles applications de réseau. Particulièrement spectaculaire
est l’émergence des systèmes de partage de fichiers en réseau paritaire (Peer-to-Peer) qui
génèrent à ce jour 40% du volume des données échangées.
L’objectif de se projet consiste à étudier les réseaux peer-to-peer, le fonctionnement
des différentes approches et surtout les limites concernant leur déploiement à grande échelle.
Nous étudierons en particulier le déploiement d’une architecture de découverte et de
monitoring de ressources vu que c’est un exemple qui montre bien l’utilité des architectures
peer-to-peer. Ceci a été prouvé par le succès d’applications basées sur Gnutella ou Freenet.
D’une part, le paradigme P2P s’accorde bien avec notre proposition. Les peers
distribués vont coopérer en vue :
-De générer des alarmes précises
-De réduire la consommation de ressources puisque les modules peuvent partager de
l’information.
-D’éliminer le besoin d’un module d’analyse centralise et complexe.
D’autre part, les avantages des réseaux actifs étant bien identifiés vu qu’ils
fournissent un déploiement rapide de services, une distribution de charge sur le réseau, une
connectivite entre les équipements et une personnalisation de réseau suivant les applications
utilisées, il faudra proposer une architecture basée sur les réseaux actifs pouvant répondre a
tous les besoins de déploiement de réseaux et d’applications peer-to-peer.
6
Sommaire.
Le terme Peer-to-Peer (P2P) désigne une classe d’applications distribuées qui repose
sur un modèle décentralisé. Contrairement au modèle client/serveur où chaque élément ne
peut être que client ou serveur d’un service, les éléments participants à une application P2P
peuvent être potentiellement client et serveur à la fois.
De plus en plus d’application sont construites sur ce modèle qui présente de nombreux
avantages parmi lesquels on compte un très bon passage à l'échelle, le partage des coûts de
mise en œuvre et maintenance, et l’utilisation du fort potentiel de machines inexploitées
situées en bordure de l’Internet.
En effet, le modèle P2P est mis en œuvre dans de nombreux domaines d’application
couvrant notamment le calcul distribué comme Global GRID Project, la collaboration
comme Groove et le partage de fichiers comme Gnutella.
Les administrateurs ont constamment besoin d’avoir une vision claire de
l’infrastructure entière de leur réseau d’ordinateurs. Plus on ajoute de stations de travail et de
serveurs au réseau, plus obtenir et manipuler des données concrètes devient difficile.
Depuis quelques années, la programmation des réseaux commence à apparaître dans les
équipements. Les routeurs, les switchs et autres éléments des réseaux IP commencent a
acquérir une certaine intelligence qui permet de faciliter la manipulation des réseaux, et
l’introduction rapide de nouveaux services. L’exemple du réseau intelligent donne un avantgoût de ce que pourrait apporter l’introduction des réseaux actifs. Ils fournissent un
déploiement de services rapides, et une distribution de charge sur le réseau. D’une part ils
permettent d’ouvrir les équipements et permettent la personnalisation du réseau suivant les
applications utilisées ; d’autre part ils sont évidement plus complexes que les réseaux
classiques et introduisent plus de problèmes de sécurité.
Dans cette mémoire, je vais faire l’étude des réseaux Peer-to-Peer avec les différentes
approches, applications, protocoles ainsi que la gestion des réseaux P2P, ensuite une étude
des réseaux actifs, leurs approches et plateformes ainsi que la gestion des réseaux à l’aide des
réseaux actifs ; pour clôturer enfin avec une proposition de conception d’une infrastructure
de supervision pour les services et réseaux P2P qui étudie comment les peers vont
communiquer les informations de gestion de façon active tout en s’inspirant des solutions de
gestion de réseaux a l’aide de l’approche de réseau actif pour l’appliquer à notre réseau P2P.
Une dernière partie aussi se présentera pour mettre en œuvre ma proposition, c’est la partie
pratique dont on aura une implémentation de la plateforme .NET avec le langage de
programmation C# en se referant a la plateforme P2P développée a l’ESIB.
Plus précisément, les réseaux p2p présentent des défis au niveau du passage à
l’échelle. Principalement, le modèle hybride p2p ne passe pas à l’échelle à cause du goulot
d’étranglement au niveau du serveur central malgré la présence de l’application Napster qui
est toujours connu.
Aussi le modèle pure présente un difficile passage à l’échelle à cause du Flooding ou
inondations des messages de configuration Ping et Pong. La limite réside encore dans la
recherche des fichiers qui est limitée en profondeur à cause du champ TTL qui peut avoir
une valeur maximale de sept.
Pour cela on a recourt à un modèle qui est le routage par document. Ce modèle va appliquer
une fonction de hache sur l’intitulé d’un document et lui donner un identificateur puis quand
on va chercher un document on va faire le routage vers le peerID qui est le plus proche du
docID, l’intérêt sera dans la fiabilité et la pertinence de la réponse d’une part et le nombre de
sauts d’une autre part.
7
Les réseaux actifs fournissent un déploiement de services rapide et une distribution de charge
sur le réseau. Mais leur implémentation pose plusieurs défis. Leurs performances doivent être
comparable à celle des réseaux existants ainsi qu’ils doivent offrir au moins la même sécurité
et la même robustesse, ce qui est un grand défi quand le code peut migrer et s’exécuter dans
un grand réseau hétérogène. Vu cette hétérogénéité, ils doivent avoir un certain degré
d’interopérabilité leur permettant de fonctionner comme les réseaux classiques.
Les architectures des réseaux actifs sont groupées selon leurs différentes approches.
L’approche paquets actifs, qui se caractérise par le transport du code actif au niveau des
paquets. Les Smart packets, le projet active IP, et l’architecture MO en sont des exemples.
Dans l’approche nœud actif, les paquets ne transportent pas le code, mais une référence à des
fonctions prédéfinies qui résident dans les nœuds actifs. L’architecture DAN ainsi que ANTS
en sont des exemples.
L’approche paquet actif introduit plus de problèmes de performances, vu que les exigences
de sécurité sont énormes. Ce qui n’est pas le cas de l’approche noeud actif qui offre de
meilleures performances. Mais la flexibilité d’une telle approche est limitée. Dans un effort
pour améliorer cette flexibilité, DAN et ANTS ont adopté un schéma de déploiement de
code à la demande, avec la possibilité de faire un cacheur de ce code, pour des utilisations
ultérieures.
Dans ma proposition de gestion de réseau p2p je vais utiliser l’approche ALAN qui
est Application Level Active Network comme son nom indique un réseau actif au niveau
applicatif. Pour ce, il faudra aborder quelques nouvelles notions aussi qui sont les SuperPeers
et les Pairs Actifs Virtuels (AVP) dont trois thèmes importants qui sont AOL : Application
Optimisation Layer, VCC : Virtuel Contrôle Cash et NOL : Network Optimisation Layer ;
pour arriver à ma contribution qui est de rester sur l’idéologie des réseaux p2p qui dit que
chaque utilisateur est un client et serveur en même temps. Donc la question que je pose est :
« Pourquoi ne pas continuer cette idéologie et au lieu d’avoir un superpeer fixé qui
sera responsable d’un groupe de peers, ne pas avoir un réseau dont chaque peer peut être a
son tour (suivant les conditions du réseau : bande passante, utilité, latence, …) un
superpeer? »
Pour la partie implémentation, il faudra beaucoup plus d’études, de recherches et de temps
pour appliquer cette idée pratiquement, pour cela on va traiter un cas de réseau p2p simple et
étudier sa gestion et plus précisément je vais utiliser la plateforme déjà développée par les
étudiants de l’ESIB, l’implémenter et gérer quelques paramètres qui nous intéressent.
8
PARTIE 1. LES RESEAUX PEER TO PEER
1.1 Introduction
Le sujet de peer-to-peer attire plus d’intérêt dans la communauté de réseau, malgré les
différentes définitions associées à ce terme. Cette technologie qui existe depuis quelques
années, promet de changer radicalement le future des réseaux.
Le peer-to-peer modélise l’échange directe des ressources et services entre ordinateurs,
chaque élément étant client et serveur à la fois, d’où la notion de SERVENT. Un des
principaux avantages étant l’utilisation maximale de la puissance de réseau, en éliminant les
coûts d’infrastructure et en faisant communiquer directement les clients entre eux. Du fait du
déploiement massif des ordinateurs représentant un fort potentiel inactif en bordure de
l’Internet, le P2P retient de plus en plus l’attention de la recherche, des développeurs et des
investisseurs.
Systèmes
informatique
Systèmes
centralisé
Systèmes
distribués
Client Serveur
Peer-to-Peer
Hiérarchiques
Plats
Pures
Hybride
Figure 1.Classification des systèmes informatiques
1.2 Etat de l’art
1.2.1 Généralités
1-Définition :
Le terme peer to peer concerne une classe de systèmes et d’applications qui utilisent des
ressources distribués pour effectuer une tache donnée d’une manière décentralisée.
2- Peer-to-Peer traditionnel :
Définit par Webopidia comme « un type de réseau dans lequel chaque station possède des
capacités et responsabilités équivalentes. Ceci diffère de l’architecture client/serveur dans
laquelle quelques ordinateurs sont dédies pour servir les autres ».
Les ordinateurs dans un Workgroup sont configurés pour partager les ressources comme les
fichiers et imprimantes. Aussi, un ordinateur peut jouer le rôle d’un serveur de fichier ou de
Fax à n’importe quel moment, tous les ordinateurs sur le même réseau peuvent généralement
9
héberger ces services. En particulier, les ordinateurs seront typiquement situés à coté des
autres physiquement tout en possédant les mêmes protocoles de réseaux.
3- Architecture P2P d’aujourd’hui :
Une bonne définition technique des systèmes P2P inclue les sept clefs caractéristiques
suivants :
*Interface usager génère à l’extérieur du navigateur Web.
*Les ordinateurs des usagers peuvent jouer le rôle client/serveur à la fois.
*Tout un système facile à utiliser et intégré.
*Le système incluse des éléments pour supporter les usagers voulant créer quelque chose ou
ajouter des fonctionnalités.
*Le système assure des connections avec les autres usagers.
*Le système fait des choses nouvelles et excitantes.
*Le système supporte les réseaux croises.
Dans cette vue mise à jour des P2P, les éléments maintenant peuvent joindre le réseau de
n’importe ou avec un minimum d’effort. Au lieu des LAN dédiés, Internet devient lui-même
le réseau de choix. La facilité de configuration et de contrôle sur l’application permet à
n’importe qui de se joindre à la communauté.
Trois points importants sont à rajouter :
1- Les éléments constituants d’un réseau paritaire peuvent être de nature différentes
(PC, PDA, téléphone portable, …)
2- Ce réseau présente une topologie virtuelle (Fig.2).
3- Ce réseau est de nature ad hoc, c'est-à-dire que les éléments constituants peuvent aller
et venir et la topologie du réseau est instable.
Réseau pair
à pair virtuel
Computer
Computer
Router
Router
Laptop
Réseau physique
Hand held computer
Workstation
Figure 2. Exemple de Topologie virtuelle.
4- Objectifs P2P :
C’est un modèle très général dont des applications de nature différentes l’utilise d’où les
objectifs sont variés, principalement :
• Partage et réduction des coûts entre les différents peers.
• Fiabilité et passage a l’échelle (pas de centralisation).
• Agrégation de ressources et interopérabilité.
10
• Anonymat assuré par certaines applications.
• Communication ad hoc et collaborative.
5- Classification de réseau P2P :
Modèle pure :
-Parité effective des éléments
-Gnutella, Freenet, …
Modèle hybride :
-Centralisation d’informations
-Différents niveaux : SuperPeers, serveurs d’infos, Centralisés.
IBM Compatible
IBM Compatible
Server
IBM Compatible
IBM Compatible
IBM Compatible
IBM Compatible
IBM Compatible
Modèle décentralisé
Modèle centralisé
Figure 3. Les Modèles p2p
6- Caractéristiques des systèmes P2P :
Les principales caractéristiques des différents protocoles [1]:
• La localisation des fichiers dans un environnement distribué
• Des méta données ou index du réseau P2P
• La libre circulation des fichiers entre systèmes
• Un mode de communication standard (TCP et http)
• Des capacités de connexion variables suivant les modèles
• Des échanges d’informations non sécurisées
• Nature ad hoc
• Aucun peer n’a une vue globale du système.
• Transparence
o Technologie sous-jacente
ƒ Machine
ƒ Connexion réseau
o Adresse et localisation
ƒ Firewall & NAT
ƒ Adressage de niveau applicatif
ƒ Mobilité
• Résistance aux fautes
o Pas de point central
o Utilisation de relais
o Duplication des ressources
• Interopérabilité
o Pas supportée actuellement
o Quelques initiatives
ƒ IETF : BEEP, APEX
ƒ JXTA
• Décentralisation
11
IBM Compatible
o Equilibre la charge du réseau
o Répartit les coûts entre les usagers
o Difficulté à localiser les ressources
o Différents degrés de centralisation
o
7- P2P contre client serveur :
Conceptuellement, le P2P est une alternative au modèle client/serveur, qui est constitué d’un
serveur ou d’un cluster de serveurs et de beaucoup de clients. Dans le modèle pur du P2P, il
n’y a plus de serveur, tous les participants sont des peers. Cependant il n’y a pas de bordures
nettes entre les deux modèles.
Figure 4. P2P vs Client/Serveur
Peer-to-Peer
Client/Serveur
• Auto organisé
• Evolution dynamique, Ad hoc
• Découverte des peers
• Flux distribué (mesh)
• Symétrie du réseau
• Communication par Messages
• Adressage dynamique au niveau application
• Entités Autonomes
• Attaques difficiles (mobilité, anonymat)
• Management centralisé
• Configuré
• Consultation de tables
• Flux centralisé
• Asymétrie du réseau
• Orienté RPC
• Adressage statique @IP
• Entités dépendantes
• Attaques plus simples
1.3 Applications P2P
Application Pair à Pair
Parallèle
Calcul
intensif
Calcul
composental
Gestion des fichiers
et contenus
Echange
de contenu
Systèmes
de fichiers
Filtrage
extraction
Collaboration
Messages
instantannés
Figure 5. La taxonomie des applications p2p
12
Applications
partagées
Jeux
1.3.1 NAPSTER ou le modèle hybride
Napster est une application de partage de fichiers musicaux mp3. Le service est fondé en mai
1999 par Shawn Fanning et Sean Parker. Après différentes poursuites judiciaires pour droits
d’auteur, il est arrêté en septembre 2001.
Aujourd’hui Napster est considéré comme une application phare du modèle P2P, par son
architecture qui utilise le modèle centralisé et décentralisé et par le nombre de
téléchargements effectué (40 millions de téléchargements de fichiers, en moyenne 160 000
utilisateurs).
P2P centralisé ou hybride
Napster utilise un modèle P2P à répertoire centralisé pour les données administratives et les
index des fichiers mp3 téléchargeables par les peers.
Un peer se connecte directement sur le serveur. Le protocole basique est simple, avec des
primitives de service : login request, login OK, login failed, user unknown, user not accepted,
…
Le peer communique au serveur central la liste des fichiers qu’il partage, ainsi qu’un numéro
de port TCP où il pourra être contacté pour un téléchargement.
Les peers sont donc les fournisseurs de fichiers, et les échanges vont se faire directement
entre les peers suivant un modèle pur. La recherche et le téléchargement vont se passer de la
manière représentée sur la figure 6:
Un peer recherchant un fichier va envoyer sa requête au serveur central (1), lequel va lui
répondre par une liste triée de peers qui hébergent le fichier recherché (2). Le peer va alors
choisir parmi les réponses celle qui lui convient le mieux (pertinence de la réponse, bande
passante, taille du fichier, …) et contacte directement le peer choisi. Le téléchargement
s’effectue alors directement entre les deux peers (3).
Figure 6. Les échanges dans Napster
Les limites
• Pas d’anonymat partout
o Vous êtes connus du serveur …
o … et des peers sur lesquels vous téléchargez
• Limites habituelles d’un serveur central
o Disponibilité
o Problème du passage à l’échelle :
Saturation de la bande passante
Saturation du nombreux processus
13
o Légal : très facile de fermer le service car localisé
• Mauvaises informations du débit des peers pour ne pas être sollicités
Les avantages
• Avantages habituels d’un serveur central
o Facile à administrer
o Facile à contrôler, à fermer
• Evite les recherches coûteuses sur le réseau
o Pas de routage
o Planification de la gestion des utilisateurs
• Tolérance aux fautes
o Par un sondage régulier des peers connectés, état cohérent
• Service novateur
o Généralise le P2P
o généralise les procès contre le non-respect des droits d’auteur
Un serveur Napster est toujours connu et son passage à l’échelle parait impossible, vu le
goulot d’étranglement du serveur central.
1.3.2 GNUTELLA ou le modèle pur
Gnutella est un protocole de fichiers partagés. La première version (version 0.4) date de mars
2000, il fut développé en une quinzaine de jours par Justin Frankel et Tom Pepper. Les
applications qui implémentent le protocole Gnutella autorisent les utilisateurs à rechercher et
charger des fichiers sur tous les autres utilisateurs connectés à la communauté Gnutella, avec
plusieurs dizaines de milliers d’utilisateurs simultanés. Il existe beaucoup d’implémentations
compatibles apportant des extensions : Limewire, ToadNode, BearShare.
Terminologie
Comme Gnutella repose sur une architecture réseau complètement décentralisée, chaque
élément joue le rôle à la fois de client et de serveur, d’où la notion de servent qui est la
contraction des mots serveur et client.
Les messages sont les informations émises par les servents à travers le réseau Gnutella.
Le protocole
Gnutella repose sur un modèle pur. C’est un protocole qui fonctionne au-dessus de TCP/IP.
Un servent dispose de 6 types de messages principaux :
• Ping : Utilisé pour découvrir les autres servents sur le réseau. Un servent qui reçoit
un Ping doit répondre avec un ou plusieurs Pong ;
• Pong : C’est la réponse à un Ping; ce message contient l’adresse IP et le port du
servent qui répond, ainsi qu’une information sur les fichiers et leur tailles partagés par
celui-ci ;
• Query : Message pour la recherché de fichier sur le réseau. Un servent qui reçoit un
Query répondra par un Query Hit s’il trouve une correspondance avec un ou plusieurs
de ses fichiers partagés et les critères de recherche ;
• Query Hit : C’est la réponse à un Query (Figure 11) ;
• Get : téléchargement des données (Figure 11) ;
• Push : Permet de télécharger des données depuis un servent qui se trouve derrière un
Firewall.
14
Remarque : Si les deux servents sont derrière un firewall, le téléchargement est impossible.
Les messages ont un en-tête commun (figure 7) :
• Payload Type : type du message (Ping, Pong, …) ;
• Hops : nombre de servents traversés ;
• Payload lenght : longueur du message.
Figure 7. En-tête message Gnutella
Routage des messages
La première opération réalisée par un servent est la connexion à un autre servent connu du
réseau Gnutella (figure 8), chaque servent possédant une liste de servents à utiliser au
démarrage.
Figure 8. Connexion d’un Peer Gnutella
Un nouveau peer s’annonce lui-même sur le réseau en envoyant un ping Gnutella (figure 9).
Afin de diffuser les messages de requête, Gnutella utilise un mécanisme de flooding. Le ping
est propagé à ces voisins, qui envoient eux-mêmes des pings.
Tous les voisins répondent par un pong.
Figure 9. Routage des messages
1
Des champs de TTL et d’identification des messages évitent la diffusion de messages
zombies ainsi que l’apparition de boucles. Chaque requête ping contient un TTL, qui est
décrémenté par chaque voisin. Il est souvent positionné à 7 au départ.
Quand le TTL passe à zéro, la propagation du ping s’arrête, le message est droppé (figure
10).
15
Figure 10. Mécanisme de TTL
Figure 11. Recherche de données (Query-Query Hit)
Bien que le réseau supporte 8000 à 10000 usagers, son mécanisme de flooding amène des
limites, et ne semble pas supporter le passage à l’échelle :
• Réseau rapidement inondé par des Ping et des Pong ;
• Supporte mal une forte montée en charge du nombre d’utilisateurs ;
• Message Push continuellement envoyé si pas de réponse.
Son mécanisme de recherche présente une limite, fixée par la valeur initiale du TTL. Ainsi
une requête peut être stoppée par une expiration de TTL sans avoir parcouru l’intégralité du
réseau et retourner une réponse négative. Seulement 25% des requêtes aboutiraient.
Les avantages
• Administration simple mutualisée
• Topologie évolutive
• Disponibilité du réseau, on ne peut l’arrêter.
Gnutella semble ne pas supporter un passage à l’échelle, et manque de fiabilité dans ses
requêtes.
Une orientation possible est les super peers ou arbre de peers comme dans le protocole en
cours de définition Gnutella Version 0.6 ou comme pour Kazaa.
1.3.3 SKYPE (VOIP)
« Skype est un outil VoIP très efficace, bien conçu et professionnel et c’est sure que si vous
l'essayez pour vous, vous ne serez pas déçu ». Comme ça est défini Skype qui permet VoIP
sous les très pires conditions défavorables, y compris les utilisateurs derrière les pare-feu et
16
derrière NAT qui toujours ont des difficultés dans les communications avec les autres et les
outils de visioconférence.
Bien que la disponibilité de grands outils de visioconférence de Toile qui abordent les
solutions de VoIP fiables et exécutant dès 2002, Skype entre solidement pour remplir une
partie de la niche, trop longue dominée par les majeurs IM (YM, AOLIM, MSN, ICQ), qui
n'ont jamais pu fournir une solution de VoIP véritablement efficace, et par les challengers
téléphoniques tels que Mediaring, Net2Phone et Dialpad.
Skype est basé sur FastTrack, réseau P2P pareil que celui utilisé par Kazaa et les autres
systèmes de partage de fichiers. Contrairement à Yahoo Messenger, Skype compte sur un
réseau P2P (peer-to-peer), signifiant que les paquets de voix n'étant pas envoyés par-dessus
un serveur centralisé qui les redistribue, mais sont directement envoyé entre les utilisateurs.
Figure 12. Skype : Messagerie Instantanée
L'avantage est que Skype ne compte pas sur une infrastructure centralisée pour maintenir la
directoire des utilisateurs router chaque appel. Ceci signifie que les services basés sur une
infrastructure centralisée, le coût d'échelle est proportionnel avec la base d'utilisateurs, alors
que fournissant la qualité et la fiabilité devient toujours plus difficile à atteindre.
Skype est un simple "instant messager" avec des fortes fonctionnalités "Voice Over Ip".
L'installation et le setup sont très faciles.
Si vous avez utilisé un messager immédiat avant, il n'y a rien de nouveau a apprendre; Faire
un appel c'est comme choisir un « ami ».
La qualité, la latence (le retard) de la voix sont véritablement impressionnantes. Les résultats
des tests ont toujours démontre un retard de transmission au dessous de 500ms.
Les caractéristiques d'annulation d'écho sont intégrées de façon continue et il n'y a pas de
problème dans la conversation même si vous avez mis vos haut-parleurs (un problème
typique et très exigeant des premières générations des systèmes VoIP).
Il n’y a rien à appuyer pour parler et le microphone est toujours ouvert sur les deux côtés.
17
La version disponible permet maintenant seulement les appels un à un et elle supporte très
bien les utilisateurs sur les "dial-up lines" même à 33,6 Kbps.
Une fenêtre intégrée de conversation fournit le soutien pour les échanges de texte dans un
mode simple et discret. Si vous parler à quelqu'un, vous pouvez aussi parler avec quelqu'un
d'autre en même temps. Après avoir téléchargé Skype vous pouvez commencer à parler en
moins de 5 minutes.
Dans juste sa première semaine de disponibilité, 60.000 personnes ont téléchargé le logiciel
de Skype gratuit. Les autres services VoIP, tels que Vonage ou Free World Dialup (FWD)
ont besoin de plusieurs mois pour attirer le même niveau d'intérêt.
Skype a fait un travail efficace pour résoudre une fois pour toutes beaucoup de problèmes et
de limitations typiques inhérentes dans les systèmes de VoIP. Le retard, la latence, la qualité
de voix, la largeur de bande, l'annulation d'écho, l'activation de voix automatique et plus.
Quelque chose par exemple qui peut être évité à peine dans les communications de voix sur
IP est le fait que quand votre ordinateur commencent à faire quelque chose d'autre
(télécharge l'email, charger un page Web dans le fond), ce n’est plus aussi fiable et vous
pouvez avoir quelques long moments silencieux ou des mots brisés.
1.4 La gestion des réseaux P2P
A ce jour, il n’est pas d’application P2P qui présente une interface de supervision explicite.
Bien souvent, le minimum de gestion nécessaire au bon fonctionnement d’une application est
effectué de manière autonome. Citons par exemple, Kazaa qui auto configure les peers
participant au service de manière à organiser sa topologie autour de super peers, CAN qui
effectue des mesures de RTT entre peers adjacents virtuellement pour garantir une
performance optimale ou PAST qui propose l’utilisation de cartes à puce pour contrôler
l’accès des usagers à des données distribuées.
1.4.1 Gestion des performances
De plus, les quelques travaux de recherche qui sont menés dans le but d’ajouter un aspect
gestion à des applications P2P ne consistent pas à offrir une interface de supervision à un
éventuel administrateur de domaine, afin que cette catégorie d’application souvent déployée
de manière sauvage puisse être contrôlée, mais plutôt à accroître le niveau intrinsèque de
qualité d’une application P2P, sans se soucier du contexte dans lequel elle est exécutée. C’est
par exemple le cas de The active virtual peer technology [16], une infrastructure P2P qui
permet d’effectuer de la gestion de performance sur une application de type Gnutella. Celleci propose d’utiliser un coeur de réseau P2P actif qui permette de restreindre les messages de
signalisation à des domaines clos, de paramétrer le routage en fonction de l’état des liens, de
rediriger des requêtes de téléchargement, et enfin de contrôler et adapter la topologie
virtuelle.
Dans le même ordre d’idée, on peut citer le projet MMAPPS (Market Management of Peerto-Peer Services) [17] qui a pour objectif de gérer les communautés P2P en utilisant des
techniques issues de la gestion de marché. Ainsi, les applications P2P pourraient être plus
couramment déployées dans un environnement où la coopération entre les peers serait
constructive et ne mettrait pas en danger le potentiel de la communauté. Pour inciter les peers
à contribuer plutôt que de simplement consommer, MMAPPS utilise un mécanisme
18
d’évaluation de la contribution et n’autorise l’accès aux ressources fournies qu’en fonction
de celle-ci.
1.4.2 Contrôle du trafic P2P
Considérons maintenant le coté administration système. De ce point de vue, la supervision
d’un service de partage de fichiers P2P s’apparente plus à un contrôle du trafic plutôt qu’à la
garantie d’une qualité de service aux usagers. Néanmoins, contrôler ce type de trafic s’avère
assez compliqué. En effet, le contrôle du trafic P2P passe tout d’abord par son identification ;
et les applications P2P n’utilisant pas un port bien défini, il est ainsi nécessaire d’inspecter
les paquets jusqu’au niveau des couches 3 à 7 pour identifier un paquet appartenant à un flux
P2P. Ensuite, une fois l’identification d’un paquet P2P effectuée, le contrôle du trafic doit
être en mesure de traiter l’ensemble du flux auquel appartient le paquet, quel que soit le sens
du trafic. Enfin, d’une manière plus générale, les applications P2P changeant constamment, il
est nécessaire de pouvoir répondre à ces changements rapidement et efficacement en
s’adaptant aux nouveaux protocoles et en fournissant de nouveaux mécanismes
d’identification.
Identifier le trafic P2P permet de lui appliquer un traitement particulier en accord avec une
politique de supervision propre. Celle-ci peut consister à contrôler la bande passante P2P
parmi l’ensemble d’un trafic, à différentier le traitement effectué en fonction des sources,
destinations, la date ou le profil d’un usager ou mettre en place un système de quotas par
personne. Néanmoins, ce type de comportement ne peut être déployé que sur des éléments de
réseaux capables d’assurer une bonne identification du trafic et un niveau de ressources
suffisamment conséquent.
1.4.3 La gestion des fichiers et contenus
Ce type d’applications, comme nous l’avons vu au chapitre 2, consiste à stocker et retrouver
des informations sur différents éléments du réseau.
L’application principale concerne l’échange de contenu ; elle est fortement connue par
Napster, Gnutella, Morpheus, Freenet (anonymat des sources et intégrité des documents),
Kazaa et BitTorent, (transfert parallèle de plusieurs sources, possibilité d’arrêt et de reprise
d’un transfert).
D’autres projets consistent à établir un système de fichiers distribué dans une communauté,
comme PAST, OceanStore (plus de 6 millions d’utilisateurs), CAN ou Chord. Les bases de
données distribuées et les tables de hachage distribuées commencent aussi à utiliser les
protocoles P2P (Mariposa).
1.4.4 Gestion de présence JIM
1.4.4.1 Jxta Instant Messaging
JIM est utilisé pour faire une instrumentation de service de présence d'une application IM.
C'est conforme au modèle de présence de IETF qui utilise les peers WATCHER/POLLER.
Cette conception construite sur JXTA nous permet de comparer différentes implémentions
sur cet environnement et de préparer une instrumentation de JXTA soi-même.
Contrairement a d'autre applications IM, JXTA utilise un modèle P2P. En effet, AOL Instant
Messaging ou ICQ, utilisent un modèle client/serveur avec des fonctionnalités très similaire
au "mail", c'est-à-dire un client dans un domaine envoie et reçoit des données messages
instantanées a travers des serveurs bien connu et le routage entre les différents domaines est
fait a travers des communications serveur serveur.
19
a- Les états dans JIM.
Un peer sur JIM peut présenter plusieurs états :
-En ligne: prêt a recevoir et répondre aux messages.
-Occupe: peut recevoir mais peut ne pas répondre immédiatement.
-Loin: peut recevoir mais lente réponse.
-Hors ligne: c'est-à-dire que le peer n'est pas capable de recevoir des messages et les
tentatives d'envoyer des messages sont aussi refusées.
a-1 JIM et JXTA
Dans la figure 13 on peut localiser l'application JIM en relation avec JXTA, qui fournit
plusieurs niveaux et des API pour construire les applications P2P. On peut citer les "pipes"
qui sont des canaux logiques à travers lesquels un peer peut envoyer des données vers u ou
plusieurs peers.
La communication entre les peers peut être achevée autant que les peers appartiennent au
même Peer Group (qui représente un set de peers dans JXTA). Les services de sécurité et de
monitoring du cœur de JXTA ne sont pas directement utilises dans JIM, mais sont utilises
par d'autre éléments de JXTA d'une façon implicite.
Figure 13. Architecture de JIM / Jxta
JIM utilise JXTA pour créer des utilisateurs PeersGroup pour l'application IM et les "pipes"
pour implémenter les messages et les services de présence. La figure suivante illustre le
mécanisme de présence; on peut remarquer qu'un peer contient tout le set d'éléments de
gestion de présence. Peer p1 a une liste des peers appelées "Buddylist" reliée au PeerGroup
de JXTA crée pour JIM et qui utilise un pipe vers chacun.
De cette façon, le modèle opérationnel est le suivant: dans des intervals réguliers un peer
envoie un message Ping a chaque peer appartenant a BuddyList. Chaque peer répond a ce
message en envoyant un Pong contenant son état.
Selon le modèle de l'IETF, un peer envoyant tel requête joue un rôle vers le service de
présence qui est représente par une réponse de chaque peer appelé par le pipe.
L'instanciation du modèle est représentée dans la figure 14. Les entités "Status Updater",
"Controler" et "User" sont des parties logiciel de JIM qui jouent les rôles respectif
observateur, service de présence et présence. Le Status Controler joue un double rôle car il
traite avec les deux messages Pong (Observateur) et Ping (Service de présence).
20
Figure 14. Les peers et les pipes
a-2 Instrumentation:
Pour mesurer les performances du service de présence on choisit d'instrumenter le RTT
(Round Trip Time) d'un échange Ping/Pong.
Le résultat reçu représente le temps qu'un peer doit attendre pour être notifié de l'état d'un
utilisateur. Pour instrumenter ces échanges on utilise comme transaction l'ARM (Application
Response Mesurement), Java Api et implémentation. Chaque record de transaction sera
enregistré dans une plateforme de gestion normée JMX Java Api (Java Management
Extension). ARM est désigne pour évaluer les niveaux de services des systèmes uniques et
des applications distribuées en mesurant la disponibilité et la performance des transactions.
1.4.4.2 RRS
a- Le Service de Rendez-vous a distance (RRS)
RRS (Remote Rendez-vous Service) complète les services fondamentaux de JXTA en
rendant capable la connectivité de pair au réseaux JXTA et en fournissant l'entretien avancés
et les fonctionnalités d'administration pour les pairs de rendez-vous.
Les fonctionnalités de RRS ont été ajoutées à l'application "Shell" de JXTA.
Les autres programmeurs d'application de JXTA peuvent contenir les fonctionnalités de RRS
dans leur code. Pour illustrer le besoin pour et l'usage de RRS, considérer les cas suivants
utilisant le "Shell" de JXTA.
b- Garder un Non Rendez-vous Pair bien Connecté
JXTA pairs ont besoin pour établir des connexions à un ou plusieurs rendez-vous pairs afin
de découvrir des pairs, les groupes de pairs et les autres éléments de réseau au delà du
21
"subnet" local. La configuration par défaut de la plate-forme contient une liste de pairs de
rendez-vous accessibles en public où un pair essaie de se connecter au début d'une session.
Cependant, au cours d'une séance, les connexions aux pairs de rendez-vous peuvent être
perdues, ou aucune connexion ne peut être établie à cause du chargement de pair de rendezvous ou parce qu'il y a des problèmes de routage dans le réseau JXTA.
RRS permet de déterminer si l'arrivée à un pair de rendez-vous particulier est capable, et si la
connexion à lui est établie sans interruption de la séance de pair ou sans la reconfiguration de
la plate-forme.
Un exemple d'une séance "Shell" de JXTA dans lequel l'utilisateur d'un non rendez-vous
pair utilise RRS :
Si l'utilisateur est sur une machine "Windows", il fonctionne le programme "runrrs.bat" dans
le fichier RRS afin de commencer une "Shell" de JXTA RRS-enable.
Supposons que l'utilisateur sait d'un pair de rendez-vous avec l'adresse du point final
"http://jxta.clip2.com:6002". Au début, il vérifie que ce rendez-vous pair peut être atteint par
son pair :
JXTA>endpointping http://jxta.clip2.com:6002
endpoint ping passed
(Cette commande marche fonctionne aussi pour tous les pairs connus et non seulement pour
les rendez-vous pairs.) Si le nœud est atteint, l'utilisateur peut alors connecter son pair au pair
de rendez-vous :
JXTA>rdvadd -e http://jxta.clip2.com:6002
L'utilisateur confirme que la connexion a été ajoutée en tapant la commande rdvstatus (une
partie standard de non-RRS du "Shell"de JXTA).
JXTA>rdvstatus
[rdvstatus output follows]
La commande rdvstatus permet d'imprimer les ID des rendez-vous pairs connectés.
JXTA>rmtrdvstatus -c -p [peerID]
[rmtrdvstatus output follows]
Et reçoit une liste de pairs connectés au pair de rendez-vous. Trouver une longue liste est
bien dans le sens que le pair de rendez-vous est bien connecté, mais c'est mauvais dans le
sens que la réceptivité de ce pair de rendez-vous peut être plus basse que celle d'un paire
moins populaire.
Pour se déconnecter du pair de rendez-vous, il faut simplement écrire la commande suivante:
JXTA> rdvremove -p [peerID]
c- L'administration à distance de Rendez-vous Pairs
Considérons un scénario dans lequel un rendez-vous pair déclenche un processus démon sur
une machine à distance. Dans ce cas, l'opérateur a besoin de pouvoir vérifier le statut du pair
de rendez-vous chaque fois pour déterminer s'il marche bien, combien de connexions il y en
a, et ainsi de suite. RRS implémente les fonctionnalités
pour faire ceci.
L'opérateur fait fonctionner simplement une "Shell" JXTA RRS-enable sur une machine
22
locale (comme dans le premier cas) et après il distribue les commandes RRS au pair de
rendez-vous. Par exemple, s'il y a un besoin pour le pair de rendez-vous de se connecter à des
pairs de rendez-vous supplémentaires, l'opérateur peut taper rdvadd. D'autre part, rdvremove
peut être utilisé pour enlever des connexions aux autres pairs de rendez-vous.
23
PARTIE 2. LES RESEAUX ACTIFS
2.1 Introduction
Plusieurs nouveaux services nécessitent la manipulation des données à l’intérieur des
paquets (web-cache, vidéo multicast, …), le déploiement de ces nouveaux services nécessite
un délai de 6 à 8 ans à partir de l’instant de définition de ses spécifications.
Ces principaux besoins poussent les chercheurs à changer l’architecture passive des réseaux
actuels qui sont de simples réseaux de transfert de données à une architecture plus dynamique
aux exigences des services du future.
C’est entre l’estimation des capacités potentielles du future et l’inertie du passé que
plusieurs approches visent à apporter le dynamisme aux réseaux.
On trouve ainsi des approches plus réalistes dans le sens de la possibilité du déploiement à
court terme comme “opensig” par exemple. Ces approches apportent un changement linéaire à
l’architecture passive des réseaux actuels par le fait de l’adoption d’un nouveau plan de
signalisation pour le déploiement du code à l’intérieur des noeuds et le conservation du plan
normal de transfert de données.
D’autres approches visent des architectures plus puissantes, apportant beaucoup plus
d’abstraction et par la suite plus de malléabilité à l’espace software. On cite les agents mobiles
en premier lieu et les réseaux actifs en second lieu. Ces approches adoptent la définition d’un
être software et les services accomplis par ces types de réseaux sont le fruit de l’interaction
entre ces êtres formant ainsi une société d’êtres software.
Les systèmes multi agents visent des sociétés plus complexes que celles des réseaux actifs, son
être software sont plus puissantes, c’est en être autonome, proactive, social,…
La capacité potentielle de cet être va amplifier son interaction avec son environnement selon
laquelle il va décider quelle action entreprendre. De même l’état de l’environnement de l’agent
est le résultat des actions prisent par chaque agent.
Cette boucle crée une complexité qui est souvent intraçable mathématiquement.
Les réseaux actifs (approche intégrée) de leur coté ne spécifient pas certaines
caractéristiques de leurs être software sauf qu’il doit être de taille réduite, c’est ainsi que la
plupart des applications sur les plates-formes des réseaux actifs définissent des êtres (capsules)
dont la structure est moins complexe que celle de l’agent mobile, cette structure réduite de la
capsule ne va pas trop encombrer l’espace software, ce qui les rend plus réalisables à court
terme que les agents mobiles.
Mais leur implémentation pose plusieurs défis. Leurs performances doivent être comparable à
celle des réseaux existants. Ainsi qu’ils doivent offrir au moins la même sécurité et la même
robustesse, ce qui est un grand défi quand le code peut migrer et s’exécuter dans un grand
réseau hétérogène. Finalement vu cette hétérogénéité, ils doivent avoir un certain degré
d’interopérabilité leur permettant de fonctionner comme les réseaux classiques.
Les architectures des réseaux actifs sont groupées selon leurs différentes approches.
L’approche paquets actifs, qui se caractérise par le transport du code actif au niveau
des paquets. Les Smart packets, le projet active IP, et l’architecture MO en sont des exemples.
24
Dans l’approche nœud actif, les paquets ne transportent pas le code, mais une référence
à des fonctions prédéfinies qui résident dans les nœuds actifs. L’architecture DAN ainsi que
ANTS en sont des exemples.
L’approche packet actif introduit plus de problèmes de performances, vu que les
exigences de sécurité sont énormes. Ce qui n’est pas le cas de l’approche noeud actif qui
offre de meilleures performances. Mais la flexibilité d’une telle approche est limitée. Dans un
effort pour améliorer cette flexibilité, DAN et ANTS ont adopté un schéma de déploiement
de code à la demande, avec la possibilité de faire un caching de ce code, pour des utilisations
ultérieures.
2.2 Etat de l’art
2.2.1 Définition et généralités
Les réseaux traditionnels avaient pour fonction primaire de délivrer les paquets d'un
noeud source vers un nœud destination. Le traitement du réseau était un traitement simple,
indépendant de celui des utilisateurs: Il s'agissait seulement du routage, du contrôle de
congestion et de qualité de service. Ce type de réseau peut être considère comme "passif",
puisque son traitement est le même quelque soit le type de paquet a traiter. Les routeurs, par
exemple, ne comprennent pas plus que le niveau 3, et se basent donc sur l'information du
header pour trouver le chemin vers la destination.
Plus tard, l'évolution des applications et l'avènement des multimédia introduisent un
nouveau type de paquets dans les réseaux, des paquets qui exigent de nouveaux services de la
part du réseau, notamment de la qualité de service , de la limitation des délais de transit et de
leurs variations. On s'est alors rendu compte que donner aux équipements une certaine
intelligence leur permettant de comprendre les informations des niveaux supérieurs, pourrait
optimiser les services offerts par les réseaux, les rendre plus performants. C'est pour cela que
les fournisseurs d'équipements, et dans le but d'améliorer les rendements de leurs produits,
leur donnent une 'intelligence' propriétaire. Les équipements deviennent des systèmes de plus
en plus clos et l'interopérabilité est difficile à réaliser.
Dans une tentative de casser ces barrières, et de passer des réseaux jusque-la clos vers
des réseaux ouverts, une aspiration mondiale vers les réseaux actifs s'est développée.
Un réseau actif est un réseau qui permet aux routeurs intermédiaires d'exécuter des
traitements jusqu'à la couche application. Des codes écrits dans des langages varies peuvent
être charges dans les routeurs. L'exécution dans le réseau de ces codes assure ainsi des
services varies. De plus, les utilisateurs peuvent programmer le réseau en injectant leurs
programmes qui seront exécutes au niveau des nœuds intermédiaires. On dit que les routeurs
font des traitements sur les données mêmes de l'utilisateur. Cette approche de réseaux offre
une infrastructure beaucoup plus flexible avec des capacités croissantes. Cependant elle est
clairement plus complexe que les réseaux traditionnels et demande un niveau de sécurité plus
important.
Grâce aux réseaux actifs, les fournisseurs d'équipements n'auront pas seuls mots à dire
dans la conception des réseaux. Les équipements se transforment en plateformes ouvertes.
Différentes parties peuvent se concentrer chacun sur l'une des fonctionnalistes de
l'équipement. La concurrence entre les différents fournisseurs de 'services' permet à
l'utilisateur de choisir lui-même le service qu'il veut utiliser pour ses données et ceci
indépendamment du type d'équipement par lequel passent ses données.
25
L'implémentation de nouvelles technologies supportant l'encapsulation, le transfert et
l'exécution des programmes et des fragments de programmes a contribue a la création de ces
nouveaux réseaux.
Les réseaux actifs peuvent améliorer la performance du réseau puisque la configuration
des services sous forme d'objets individuels dans des langages de programmation de haut
niveau, facilite leur implémentation et leur manipulation. En conséquent, les réseaux actifs
assurent l'interopérabilité de ces derniers sur des plateformes ouvertes.
Quelques services peuvent être mieux implémentés s'ils utilisent des informations qui
existent exclusivement dans le réseau. De plus, l'avantage des réseaux actifs apparaît dans
l'argument "end-to-end" qui consiste à ne placer une fonction ou un service dans le réseau
que si le rapport efficacité/prix l'impose.
L'argument contre les réseaux actifs est que l'Internet connaît du succès grâce a sa
simplicité, pourquoi donc se compliquer la vie avec les réseaux actifs?
L'implémentation des réseaux actifs montre jusqu'à présent que ces derniers restent,
malgré tout, moins performants que les réseaux passifs. Les codes, étant non propriétaires,
écrits dans des langages de haut niveau, accentuent les délais de traitement dans les nœuds
actifs.
De plus, avoir une plateforme ouverte dans laquelle quiconque peut charger son propre code
et l’exécuter sur le nœud, introduit des problèmes de sécurité. Il faudra s’assurer de la source
du code avant de l’exécution si elle met le nœud en risque…
Tout ceci rend l’architecture du nœud actif du loin plus complexe que l’architecture du nœud
passif sans que cette complexité puisse améliorer de façon concrète les performances.
2.2.2 Applications :
Le grand trait des réseaux actifs est leur capacité à programmer le réseau ; les nouveaux
protocoles et technologies peuvent être facilement implémentés dans les nœuds du réseau,
puisqu ‘il s’agira uniquement du déploiement d’une composante indépendante de la
plateforme
Une des applications la plus utilisée dans les réseaux actifs est l’utilisation de l’agent
« mobile software » qui joue un rôle à côté d’un utilisateur ou d’un autre programme et qui
est capable de se déplacer dans le réseau sous son propre contrôle .L’agent choisit quand et
où il va « migrer », et peut interrompre sa propre exécution et la continuer dans une autre
partie du réseau. L’agent retourne des résultats et des messages d’une façon asynchrone.
Les applications des réseaux actifs présentent des solutions aux problèmes rencontrés dans les
réseaux passifs actuels. Parmi ces applications, nous citons les suivants :
2.2.2.1 Network Management :
Le network management est une application qui consiste à gérer les équipements à distance.
Ceci est réalisé grâce à des stations de Management qui récupèrent les données des
équipements à gérés. Mais vu l’augmentation du nombre de nœuds dans le réseau, plusieurs
problèmes émergent. Le trafic se concentre aux centres de management qui deviennent des
points d’implosions, noyés par un large volume d’informations. De plus, en cas de
problèmes, le délai que l’information subit pour alerter le centre de management et revenir
26
vers le nœud concerné avec des indications sur l’action à prendre, peut être considérable,
rendant cette action inutile puisque le dommage se serait déjà produit.
Les réseaux actifs constituent une solution idéale aux problèmes déjà cités : les nœuds
intermédiaires du réseaux étant actifs. les centre de gestion peuvent être déplacés dans le
cœur du réseau de cette façon on réduit les délais des réponses et l’utilisation de la bande
passante réservée au management.
D’autre part. on peut injecter un code spécial de secours dans les paquets en cas de problème
sur un nœud .Ce code sera exécuté dans le nœud affecté et changera automatiquement son
état sans avoir à attendre la réponse d’un centre de management. D’autres paquets peuvent
jouer le rôle de surveillance (patrol) en cherchant les anomalies au sein du réseau.
Trois projets ont appliqué le concept du réseau actif au Network Management : le projet
« Smart Packets » tenu par BBN Technologies .le projet »Network Mangement » par
« Delegation Pradigm of Colombia University » et le projet « Darwin Project of Carnegie
Mellon University ».
2.2.2.2 Contrôle de gestion :
La congestion est l’un des grands problèmes des réseaux passifs. Les algorithmes de contrôle
de congestion plus ou moins efficaces permettent de résoudre le problème en partie. Les
choses commencent à se compliquer quand les données, de type différents (données,
multimédia…) se multiplexent, et que les mécanismes de contrôle de congestion diffèrent
d’un type de donnée à l’autre.
Les réseaux intelligents peuvent résoudre le problèmes : les nœuds actifs peuvent contenir
une composante pour le contrôle de congestion. Cette dernière pourra, par exemple :
1- prendre des mesures différentes lors de la congestion suivant le type de trafic
2- superviser la bande passante et le débit sortant
3- assurer une qualité de service là cela est nécessaire
4- prendre des décisions plus correctes lorsqu’il s’agit de prendre des paquets à la
congestion
2.2.2.3 Multicasting :
Dans les applications Internet, on rencontre une grande variété de trafic comme l’audio, la vidéo, la
téléconférence, etc…Ces nouvelles techniques se basent la plupart du temps sur le multicast. Les réseaux
actifs peuvent, d’une façon élégante, résoudre beaucoup de problèmes courants comme l’implosion de
Negative ACKnowledge (NACK).la concentration des demandes de retransmission dans une seule
machine, les retransmissions inutiles, la duplication des paquets. A MIT, l’Active Reliable Multicast,
ARM permet de faire du « loss recovery ». Les inventeurs de ARM ont déclaré qu’il peut résoudre tous les
problèmes cités ci-dessus. ARM utilise des routeurs intermédiaires pour protéger l’utilisateur. Ces
routeurs jouent un rôle actif dans le loss recovery.
La solution apportée par les réseaux actifs permet de réduire le nombre de NACK retournant
vers la source du trafic, puisque les routeurs intermédiaires, étant actifs peuvent stocker les
paquets pour une retransmission ultérieure. Les paquets multicast contiennent des informations
sur les nœuds demandant une retransmission. De plus, les paquets NACKs transmis aux nœuds
parents dans l’arbre du multicast, contiennent des informations sur les liens sortants du nœud
d’où sont provenus les NASKs, ainsi que les liens vers lesquels l’équipement est capable de
renvoyer une retransmission. Ceci permet de ne pas retransmettre inutilement les paquets vers
tous les membres du groupe.
27
2.2.3 Sécurité des réseaux actifs :
Dans les réseaux passifs, les paquets arrivant dans les nœuds intermédiaires du réseau ne
consomment que la mémoire et du temps processeur dans le calcul du chemin optimal de
routage du paquet. La situation change pour les réseaux actifs : les paquets actifs peuvent
comporter du code qui s’exécute à l’intérieur même du réseau. Ce code actif est capable, s’il
n’est pas contrôle, de changer nuisiblement l’état d’un nœud actif.
Les attaques qu’ont peut imaginer sur les réseaux ouverts sont beaucoup plus nombreuses et
dangereuses que celles des réseaux passifs .D’ou des mesures de sécurité p lus développées
sont utilisées dans ces derniers.
2.2.3.1 Du point de vue système
Les paquets actifs s’exécutant dans les noeuds actifs consomment du temps processeur. D’ou
la nécessité de réaliser l’équité entre les différents paquets actifs d’une part ,et d’empêcher un
paquet actif de monopolises le processeur ,réalisant ainsi une attaque de ‘Denial of service’
d’autre part .Il faudra donc limiter le temps d’exécution d’un paquet actif et empêcher sa
duplication dans le noeud .De plus une certaine fonction de contrôle dans le noeud actif devra
donner les permissions d’accès aux différentes ressources du noeud après authentification du
paquet ainsi que sa source .Ceci peut être fait grâce a des algorithmes de signature
électronique (mécanismes d’authentification en cryptographie) et de Proof Carrying Code .La
fonction de contrôle suit pour cela une politique de sécurité qui varie suivant les situations .
Le Proof Carrying Code est un mécanisme par lequel la source du paquet actif introduit une
sorte de preuve sur son exactitude .Puisqu’il devient plus facile au actif de vérifier cette
preuve plutôt que de la retrouver, l’authentification devient plus rapide.
D’autres types d’attaques possibles dans les noeuds actifs consistent a envoyer des paquets
qui peuvent accédera des données privées sur le noeud actif, les effacer, les rapporter a un
parti malfaiteur, ou pire encore, détériorer les ressources du noeud.
Les nœuds actifs doivent aussi être capable d’assurer la protection des paquets en les cryptant
d’une part pour empêcher leur interprétation par quiconque, et en utilisant des techniques de
tolérance de fautes d’autre part. De ces techniques de tolérance, on cite la réplication la
redirection, et la persistance.
•
La persistance est le mécanisme de conservation en mémoire statique du
paquet actif dans le noeud , de sorte que la panne du noeud n’entraîne pas
la perte du paquet.
• La réplication, quant à elle, consiste à dupliquer le paquet dans chaque nœud
parcouru par le paquet.
• Alors que la redirection permet au paquet actif de rechercher lui-même un
chemin alternatif en cas de panne de la route principale.
C’est ainsi qu’un nœud actif devra exécuter les étapes suivantes à l’arrivée de chaque paquet
actif:
1.
2.
3.
4.
authentifier le contenu du paquet,
identifier la source du paquet,
identifier la personne envoyant le paquet,
autoriser l’accès aux ressources appropriées basées sur ces identifications
suivant la politique de sécurité,
28
5. permettre l’exécution mais en tenant compte des autorisations suivant la
politique de sécurité,
6. supervise et contrôle les accès aux ressource du système durant toute
l’exécution,
7. si nécessaire, crypter le paquet pour protéger son code et ses données qui
transitent.
Pour garantir un réseau bien sécurise, on doit tenir compte de deux points importants:
l’intégrité et la confiance.
L’intégrité signifie qu’une certaine couche protocolaire délivre un service fiable à la source
supérieur. La confiance veut dire qu’une couche considère comme sécurise et fiables les
services et informations délivrées par la couche inférieure.
2.2.3.2 Du point de vue langage de programmation:
Il est possible de sécuriser le réseau grâce au langage de programmation utilise. Ainsi, on n’a
plus besoin de contrôler l’exécution. L’usage de langages non adaptes peut introduire
certains problèmes dont on cite :
1. L’usage de références vers des secteurs arbitraires de mémoire: le langage Java et la
solution la plus adapter à ce problème puisqu’il est considérer comme un langage
orienter objet qui n’utilise pas la notion des pointeurs comme le langage C.
2. Allocation d’une grande partie de la mémoire ou augmentation du nombre de sous
processus: ceci peut être résolue en limitant le nombre de processus fils que peut
créer n’importe quel processus.
3. Faible performance due a la supervision du processus périodiquement lors de son
exécution par les modules de sécurité. Il est donc préférable d’utilise un langage qui
remplace les contrôles d’exécution dynamiques par les contrôles statiques.
Faible performance due a l’exécution de code: puisque le transport des paquets doit être
rapide, l’exécution du code assurant le transport de ces paquets actifs devrait l’être aussi. Pour
avoir une meilleure performance, il faudra donc séparer les processus responsables du transport
des paquets des autres tels que celui de l’attribution du tas.
2.2.4 Architecture des réseaux actifs:
Les architectures des réseaux actifs sont groupées selon leurs différentes approches:
2.2.4.1 Approches « Actives Paquets » :
La majorité des architectures des réseaux actifs suivent cette approche qui transporte le code
actif dans des paquets. Les nœuds sont actifs car ils permettent les traitements jusqu'à la
couche application, mais ils ne contiennent pas des codes actifs. Le code est tenue par le
paquet puisqu’il sera exécuté pour ce même paquet.
Des exemples de ces architectures sont: le projet « Smart Paquets » propose par BBN
Technologies, le « Actif IP Option » propose par MIT, et le « M0 architecture » propose par
le « University of California at Berkeley » et par l’« Unisversity of Zurich ».Quelques unes
de ces architectures seront décrite plus tard.
29
2.2.4.2 Approche « Active Nodes » :
Dans cette approche, les paquets ne transportent pas le code actuel, mais des références à des
fonctions prédéfinies déjà présentes dans les nœuds. Les paquets décident quelles fonctions
vont être exécuté sur leurs données.
Les architectures utilisant des nœud actifs sont: l’architecture proposée par « Georgia
Institute of Technology », l’architecture DAN proposée par « Washington University » et
« ETH Zurich » et l’architecture ANTS proposée par MIT.
Dans ces architectures, les utilisateurs jouent un rôle très important:
- Ils contrôles l’invocation des fonctions prédéfinies à travers l’information de contrôle
qui se trouve dans l’entête du paquet.
- Ils peuvent sélectionner la fonction à traiter et peuvent ajouter des paramètres a ces
traitement. Le « Network Service Provider » implémente les fonctions a utilisé.
- Ils ont une influence sur le traitement d’une fonction sélectionnée mais ne peuvent
pas définir des fonctions arbitraires à traiter.
Architecture d’un nœud actif:
L’architecture d’un nœud actif définit trois couches de code:
•
La couche de NodeOS représente le système d’exploitation du nœud. Elle a été
conçue pour supporter plusieurs environnements d’exécution (EE), pour offrir une
sécurité entre différents EEs et pour garantir des fonctionnalités communes à chaque
nœud actif. Cette couche est responsable de l’allocation des ressources et des
connexions. Elle gère les memory pools les threadpools et les fichiers.
Les canaux : ils servent a recevoir les paquets entrant (ils sont alors appelles
inCHam- « incoming channel »), a envoyer les paquets (outCham-« outgoing
channel »), et a transiter des paquets a l’intérieur même du nœud (cutChan-« cutthrough channels »).
o Les threadpools : C’est l’abstraction de la capacité de traitement ou d’exécution
délivrée par le nœud actif a un domaine donne. Plusieurs paramètres sont
spécifies lors de la création d’un threadpool comme le nombre maximal de
threads, le synchroniseur, le taux de cycle CPU alloué a ce threadpool.
o Les Memorypools : c’est l’abstraction de la zone mémoire associée au nœud,
utilisée pour implémenter des files d’attente pour les paquets et des piles de
mémoire pour les processus de l’Environnement d’Exécution.
o Les fichiers : C’est l’abstraction des zones de stockage permanentes des données
associées a un environnement d’exécution.
o
•
•
L’Environnement d’Exécution représente l’environnement dans une interférence de
programmation pour les différentes applications développées par les utilisateurs.
L’Active Application (AA) représente l’application développée sur la plateforme du
niveau EE.
30
2.2.4.3 Approche mixte « Active Packets and Nodes »
Il s’agit d’une combinaison des deux approches déjà citées. On utilise donc les paquets
actifs pour transporter les codes simples et restreints, bénéficiant de l’aspect dynamique et
mobile qu’ils apportent au réseau. Quant aux nœuds actifs, ils contiennent les codes les plus
complexes. Suivant la nature de leurs applications, les utilisateurs peuvent bénéficier de la
sécurité apportée par les codes statiques des nœud actifs ou de la mobilité des paquets actifs.
Un exemple typique de cette approche est l’architecture de SwitchWare proposée a
l’université de la Pennsylvanie.
2.2.5 Comparaison
L'approche paquets actifs permet une grande flexibilité du réseau, puisque le code nécessaire
pour traiter le paquet est contenu dans le paquet lui- même. Beaucoup de risques surgissent
pour cette approche, ce qui fait que des mesures de sécurités très strictes sont mises en place
pour protéger le réseau.
L'approche nœuds actifs, quant a elle, offre sécurité et performance :
Les fonctions à exécuter étant déjà présentes dans le nœud, on ne risque pas les dommages
des codes mobiles nuisibles. Les procédures de sécurité sont donc minimisées, ce qui assure
une meilleure performance. Cette approche a cependant un point faible: tout le code d'une
application doit être installe dans chacun des nœuds du réseau pour que cette application
fonctionne. Les codes ne peuvent pas être télécharges dynamiquement, comme c'est le cas
pour les paquets actifs.
C'est pour combler cette lacune que ANTS et DAN a pensé à des techniques de déploiement
dynamique de code en utilisant des méthodes de catching dans les nœuds actifs du réseau.
2.2.6 Réseaux Actifs et Ants
La technique des réseaux actifs et l’idée des capsules a été décrite premièrement par
(Tennehouse & Wetherall 1996).la caractéristique importantes des capsules est leur taille
minime, qui est tolérable par la dimension actuelle de l’espace software, ce qui les rend plus
effectives actuellement à la réalisation des services que d’autres techniques. On trouve deux
approches dans les réseaux actifs (l’approche intégrée et l’approche discrète).
- Approche discret :
Par cette approche on distingue 2 plans, un plan pour le déploiement du code et un autre
plan de donnée pour le transfert normal des données des utilisateurs. Cette différenciation
des 2 plans apporte dans un premier temps un taux de sécurité élevé par rapport à d’autres
approches puisque les techniques du déploiement du code par l’utilisateur dans le même
espace d’exécution demeure non mure et nécessite des efforts supplémentaires du point de
vue de contrôle de ressources et de sécurité qu’on va décrire quelques uns dans les
chapitres qui suivent.
31
- Approche intégrée:
L’approche intégrée combine les 2 plans code et données et unifie l’espace software par la
définition élémentaire de son être software. Cette approche présente évidement des défis
de contrôle de ressources et de sécurité mais présente plus de malléabilité et d’abstraction
au niveau programmation.
Plusieurs plates-formes existent actuellement pour les réseaux actifs:
- Smart packet and sprocket
- Switchwar and plan
- Active IP
- Ants
- …
Les besoins de contrôle de ressources, sécurité et multiplication des environnements
exécution actuels ont conduits à la proposition d’une architecture commune pour les réseaux
actifs pour un groupe de travail sur les réseaux actif financé par DARPA.
Cette architecture basée sur 3 couches sera détaillée dans le paragraphe suivant.
2.2.6.1 NodeOS des réseaux actifs
L’Active Network Working Group de DARPA a établit une nouvelles architecture pour
le noeud d’un réseau actif dans laquelle on définit un système d’exploitation pour le noeud.
Active application
Exécution Environnement
NodeOS
Cette architecture définit 3 couches de codes (AN working group)
Le plus bas niveau représente le système d’exploitation du noeud, il est responsable du
multiplexage des ressources pour les différents types de capsules traversant le noeud.
Le second niveau l’environnement exécution dans lequel les capsules vont être exécutés
Il présente ainsi une interface de programmation pour les différentes applications développées
par les utilisateurs.
Le dernier niveau représente l’application développée sur la plate-forme du deuxième niveau.
Cette structure va permettre le support de plusieurs environnements exécution sur un
même NodeOS et par suite sur un même noeud et assure en même temps le contrôle des
ressources dans le Coeur commun de NodeOS.
1. Architecture du NodeOS:
L’interface NodeOS définit 5 abstractions principales:
-
domaine
channels
threadpools
memorypools
Files
32
Les 4 dernières abstractions révèlent les ressources du noeud : bande passante, cycle
Cpu, mémoire volatile et mémoire permanente. La première abstraction ou notion, qui est le
domaine en capsule les ressources du noeud suivant les 4 dernières abstractions et les
attribues à un type donné de paquets. Un domaine peut contenir ainsi une collection de
channels, une memorypool et un threadpool.
A- Domaine
Les domaines sont organisés en hiérarchies. Le domaine principal sera alors le
NodeOS, les domaines secondaires (fils) seront les environnements exécution et les domaines
tertiaires seront les applications actives.
Cette structure en hiérarchie est indépendante de l’allocation des ressources, c’est à dire les
ressources attribuées au domaine fils ne sont pas comptés des ressources attribuées aux
domaines pères.
Il faut noter aussi qu’à chaque domaine, il est attribué une identité de sécurité
(credential) qu’il lui associe certains privilèges ou permission à l’accès à certaines méthodes de
NodeOS.
B- Channels
Les channels représentent l’abstraction de contrôle de ressources présent par le passage
d’un type donné de paquet .Ainsi un Channel consomme de threadpool et memorypool
attribué au domaine auquel il appartient , on distingue 3 types de channels:
-
inchannels: pour recevoir les paquets entrant au noeud et délivrer à l’environnement
exécution
Outchannels : pour lancer les paquets sortant du noeud
Cut-through channels : pour transmettre les paquets (transit) passant par le noeud et non
délivré à aucun environnement exécution
C- Threadpools
C’est l’abstraction de la capacité de traitement ou exécution délivré par un noeud actif
à un domaine donné. Plusieurs paramètres sont spécifiés lors de la création d’un threadpool:
-
nombre maximal de thread
le synchroniseur
taux de cycle Cpu alloue au pool
…
D- Memorypool
C’est l’abstraction de la zone mémoire associée au noeud. Il faut noter qu’une pile de
mémoire peut être associé à plusieurs domaines cela pour donner à l’environnement exécution
la possibilité de gestion des ressources mémoires allouées à ses domaines.
E- Files
C’est l’abstraction des zones de stockage permanent des données associées à un
environnement exécution.
33
2.2.6.2. Protocole ANEP
ANEP, Active Network Encapsulation Protocole, représente un protocole
d’encapsulation des paquets des réseaux actifs pour la transmission dans différents réseaux, ce
protocole propose un format qui permet l’utilisation de l’infrastructure actuelle des réseaux
comme IP ou Ipv6, il permet en même temps la coexistence de plusieurs environnement
d’exécution dans un réseau ou dans un même noeud et assure le démultiplexage des paquets
suivant leur environnement exécution.
Le champ option de ce protocole assure son extensibilité, on peut ainsi intégrer des
mécanismes d’authentification, confidentialité ou intégrité.
2.2.6.3. ANTS “Active Network Transfer System”
Je ne sais pas si c’est voulu ou c’est une coïncidence,mais que l’abréviation de cette
plate-forme signifie “fourmis” et que le déploiement du code adopté par cette dernière
ressemble au déploiement de phéromones par les fourmis lors de leurs parcours est amusant à
constater.
Architecture
L’Ants est l’une des premières plates-formes de réseaux actifs, sa première version
n’implante pas la notion de NodeOS de DARPA, alors que dans sa deuxième version Ants2.0 il
y a une séparation des fonctions attribuées à un environnement exécution et celle au NodeOS
(projet Janos).
L’architecture de la nouvelle version sera décrite dans le chapitre suivant mais dans
cette partie on va décrire les considérations architecturales invariantes qui caractérise cette
plate-forme comme le chargement de code, les capsules en groupe et le modèle de référence de
capsules.
A-Chargement de code
Le chargement se fait par propagation du noeud extrémité lançant une capsule donnée,
passant par les noeuds intermédiaire dont chacun commence à recevoir le protocole (traitant la
capsule ) du noeud qui le précède arrivant au noeud destinataire de le capsule en question . Les
protocoles ainsi chargés sont sauvegardés dans le cache de ce dernier.
Avec ce mécanisme le chargement de code est sensiblement séparé du transfert normal
des capsules lancées par les applications pour accomplir le service voulu.
Cette séparation a pour but suivant Wetherall d’apporter de la performance par la réduction
du trafic de transfert de code dans les lignes de communication et par le fait que le chargement
de code n’est effectué que seulement dans l’ensemble des noeuds du réseau suivant lesquels les
capsules y passent.
B-Capsules en groupe
Le modèle de déploiement de code adopté par Ants et expliqué dans le paragraphe
précèdent impose donc un transfert de code d’un noeud à un autre.
Le principe d’optimisation impose le changement du code nécessaire et suffisant pour
accomplir un but donné dans un noeud donné.
34
David Watherall a fais un compromise entre un déploiement entier et de tout le code
d’un protocole et le déploiement spécifique de juste du code qui va être exécuter dans un
noeud donné et décomposant le protocole en Codes Group. Ces codes groups représentent un
ensemble de capsules qui seront déployées ensemble dans un noeud donné. Le choix des
capsules qui appartiennent au même groupe sera affecter par la relation entre elle et plus
précisément si l’une nécessite la génération d’une autre.
De cette manière si une capsule X va générer une capsule Y (par exemple) dans un noeud N, la
code group contenant la capsule X va être chargé du noeud précèdent, et la capsule Y va être
génère directement (sans chargement supplémentaire) puisque cette dernière appartient aussi
Code Group contenant la capsule X et qui est déjà chargée.
Si les capsules sont les unités élémentaires de transfert du code exécutables dans le réseaux, les
“codes Group” dans Ants seront les unités élémentaires de déploiement du code exécutable
dans le réseaux.
Ce modèle de capsule en group présente un désavantage de redondance ,on peut avoir
le cas ou on a besoin d’une capsules dans plusieurs code group et le code de celle ci sera alors
chargé plusieurs fois dans le même noeud. Un changement convenable non compliqué dans le
code d’Ants peut permettre de résoudre ce problème en permettant à différentes capsules de
différent code groups d’avoir différents noms mais ferons référence au même code dans le
cache.
C-Capsule par référence
Comme c’est déjà décrit dans le paragraphe précédent, chaque environnement
exécution essaya de créer des locaux exécution indépendants pour ses différent services afin
d’organiser et sécuriser leur travail. Wetherall adopte dans son rapport de thèse un mécanisme
qu’il appel “fingerprint-based protection”
Pour faire la séparation des services, ce modèle intègre dans l’entente de chaque capsule une
référence à son code qui se trouve dans le cache du noeud. Cette référence est calcule par une
suite de hachageMD5 de son code, de son code group et de son protocole.
Ce mécanisme lie alors la capsule a son code, a la structure de son code group et a celle
de son protocole et une vérification de cette référence est exécute par la plate forme Ants
2.0seulement lors du déploiement du code dans le noeud.
Wetherall déclare alors que son nouveau modèle de protection adopte la séparation de
services au lieu d’utilisateur (mécanisme lourd d’authentification) et il est exécute durant le
déploiement du code au lieu du “run time” ce qui le rend acceptable de point de vue sécurité et
optimal de point de vue consommation de ressource. Mais ce modèle de protection de service
lie la référence d’une capsule a la structure du protocole tout entier et je pense qu’elle fige le
service et l’empêche de la rénovation ou l’amélioration linéaire puisque le changement d’un
bit de code de n’importe quelle capsule va affecter toutes références de toutes les capsules du
protocole.
35
2.3 Gestion des Réseaux Actifs
2.3.1 MIB basée XML : Architecture de gestion de réseau actif
2.3.1.1 Introduction
Le réseau actif est un paradigme notable de NGI (Next Generation Network). Ce concept va
résoudre le problème des réseaux contemporains. Plusieurs problèmes avec les réseaux
d'aujourd'hui sont identifies: la difficulté d'intégrer des nouvelles technologies et standard a
l'infrastructure des réseaux commun, faible performance a cause des opérations redondantes a
plusieurs couches de protocoles et des difficultés dans l'accommodation de nouveau services
dans le model architectural présent.
Dans le réseau actif, les paquets portent des codes de programmes en plus que les données.
Ces paquets sont appelés paquets actifs ou capsules.
Le code peut être un programme (service) ou peut instancier une nouvelle application
(extension) dans les nœuds.
Aussi les nœuds actifs peuvent créer des nœuds actifs virtuels en utilisant leur propre
environnement d'exécution. Le nœud actif virtuel capte les fonctionnalités et les ressources
que le fournisseur offre au consommateur et il peut être utilise par le consommateur pour
lancer les services du réseau. Aussi le nœud actif virtuel est similaire dans quelques
caractéristiques au VPN (Virtual Private Network), le réseau actif virtuel assure un degré de
flexibilité et de contrôle plus grand que le VPN.
On va étudier une architecture de gestion MIB basée sur xml pour le nœud actif virtuel dans
un réseau actif.
2.3.1.2 Translation MIB à XML
Généralement MIB signifie que l'information de gestion est une agrégation de systèmes ou
applications spécifiques.
Cette information est décrite par ASN1 et aussi définie par SMI (Structure of Management
Information). XML est propose par W3C en 1998 et 'est un type de texte standard qui assure
le transfert des documents structures a travers le web. XML peut surmonter la présentation
limitée de HTML et résoudre la complexité de SGML. L'utilisateur de XML peut définir un
nouveau tag user-define.
La raison de translation de MIB à XML résulte de la variété et des forts avantages de XML
vue que XML a une extensibilité pour faire des structures nouvellement définies en lumière,
aussi si on utilise XML pour la présentation des informations, pour la gestion des systèmes
ou des réseaux, il amène beaucoup d'avantages au système au niveau de la gestion des
données intégrées et le gestion des données gérées.
De plus, MIB basé sur XML assure une montée dynamiquement de la MIB, des versions,
partager les informations de gestion entre les applications de gestion et observer les
informations de gestion à travers le navigateur WEB.
36
2.3.1.3 La méthode de transmission de la MIB basée sur XML en utilisant
ANEP
ANEP (Active Network Encapsulation Protocol) spécifie un mécanisme d'encapsulation des
trames du réseau actif pour la transmission sur les medias différents. Le format suggère
permet d'utiliser l'infrastructure du réseau existant ou la transmission sur la couche de lien.
Le mécanisme propose doit être le plus générique et extensible possible. Ce mécanisme
permet la co-existence de différents environnements d'exécutions et un décodage propre des
paquets reçus.
La figure suivante montre le format de paquet d'ANEP. Chaque champ est rempli par la
valeur correspondante.
Version
Flags
Type ID
ANEP Header Length ANEP Packet Length
Options
Payload
Figure 15. Le format de paquet d’ANEP
Dans notre cas, on prend les champs TYPEID et PayLoad pour la transmission des données
de la MIB basée sur XML. Le TYPEID indique l'environnement d'évaluation du message. Le
nœud actif doit évaluer le paquet dans le propre environnement. La longueur de ce champ est
de 16 bits.
ANANA (Active Network Assigned Number Authority) est la bonne autorité pour assigner
les valeurs du TYPEID. On définie dans notre cas deux TYPEID pour les opérations
d'insertion et d'enlèvement de la MIB.
Le champ payload est rempli par des données String qui sont décrit par XML pour
représenter une MIB. Le nœud actif virtuel est l'endroit où les opérations de créations et de
terminaisons de service sont fréquemment déclenchées par l'utilisateur du nœud. Ces derniers
qui allouent les ressources du nœud, veulent contrôler leurs services pour assurer un QoS
(Quality of Service). Quand le paquet arrive au nœud actif, le paquet sera contrôlé par démon
ANEP et ensuite les opérations d'insertions ou effacement peuvent être décidé par le
TYPEID. Si une opération est sélectionnée, la MIB sera insérée ou effacée à travers le
processus d'analyse utilisant JDOM API qui analyse les données XML des PayLoads.
2.3.1.4 Le MIB 'manager' dans un Noeud Actif
Virtual Active Node est un type de service qui est assure par le nœud actif. Le client qui loue
un nœud actif virtuel pour faire ses services, veut contrôler son état. Pour cela, dans un
système de réseau actif virtuel, la nouvelle definition de la MIB est demandée quand les
nouveaux services sont crées. Alors, le client doit définir la MIB qui répond aux types de
services qu'il veut. Quand la definition de la MIB est finie, le client envoie un paquet pour
ajouter une MIB appropriée dans son système. La figure suivante montre l'architecture d'un
MIB 'manager' pour un nœud virtuel actif et son processus.
37
3, 4
MIB Manager
XML based MIB
2
1
ANEP Parser
5
1- Prendre les paquets
actifs reçus du buffer
2- Voir le TypeID du
paquet header
3- Si TypeID est 200
ou 201 envoyer vers
le module
4- Ajouter ou détruire
la MIB en utilisant API
5- Autre processus
Autre processeur
Buffer
Architecture d’un MIB manager pour un nœud actif
Figure 16. XML basée MIB
2.3.2 AVNMP: Active Virtual Network Management Prediction
AVNMP fournit un service de prédiction de réseau désigne pour faciliter la gestion des
réseaux actifs larges et complexes d'une manière proactive.
La gestion de réseau incluse une vaste variété de responsabilité dont la gestion de la
configuration, des fautes, des calculs et de la sécurité. Un système de gestion de réseau doit
être capable de contrôler, gérer et rapporter sur l'état de tous ces secteurs.
En plus, le système de gestion de réseau doit être plus qu'un équipement pour génère des
rapports et aider à fixer les problèmes, il doit avoir la capacité d'anticiper et fixer les
problèmes avant qu'ils influent la performance du réseau. AVNMP complète la prédiction et
l'anticipation de faute en utilisant un complément de concepts de simulations distribues et de
réseau actif.
Un simple exemple montre les résultats d'AVNMP sur un seul nœud pour la prédiction de la
charge qui est montrée dans la figure suivante:
38
Figure 17. Prédiction de charge
Dans les systèmes de gestion de nos jours une MIB (Management Information Base)
maintient seulement les valeurs de l'état courant. Dans AVNMP, la charge est prédite dans le
future comme dans l'avancement du temps réel, appelé Wallclock. Alors les valeurs futures
estimées sont valables sur le nœud ainsi que les valeurs courantes.
Dans la figure précédente, le Local Virtual Time (LVT), qui est le temps future, s'écoule en
avant du Wallclock Time (temps courant). Les valeurs des charges prédîtes sont raffinées
jusqu'au moment où le Wallclock atteint le LVT d'une valeur particulière. Cette capacité est
assurée par une nouvelle plateforme de gestion de réseau proactive qui combine trois clefs
qui rendent cette topologie capable:
Simulation distribuée, synchronisation optimisée et réseaux actifs.
La capacité de prédiction fournie par AVNMP facilite le développement d’une variété
d’application prédictive de la gestion des endroits des modèles sans fils et la sécurité des
réseaux pour améliorer la QOS.
AVNMP fournit un service de prédiction idéal pour les systèmes mobiles pour prédire leurs
endroits. Puisque l’allocation des mobiles peut être prédite, les situations de hand-off sont
connus avant qu’ils occurrent et l’organisation des hand-off peut prendre place avant
événements ce qui résulte un hand-off plus rapide et une meilleur QOS.
Dans le domaine de la sécurité de réseau, AVNMP peut anticiper le progrès d’une attaque à
travers tous les chemins possibles de vulnérabilité et incorporer cette information pour
prendre la décision. Une attaque peut être propagées à travers le système avant qu’elle arrive
pour déterminer son impacte. Plusieurs d’autres utilisations et scénarios de AVNMP sont
aussi valables.
Finalement, la gestion proactive est un ingrédient nécessaire pour gérer les futurs réseaux
Une partie des capacités proactives est assurée en analysant la performance courante et
prédisant les futures performances basées sur des événements qui peuvent avoir lieu dans le
futur et la réaction du réseau à ces événements.
39
2.3.3 Application Level Active Network
2.3.3.1 Introduction
D’abord les recherches dans le domaine des réseaux actifs étaient conduites au niveau réseau
(IP, routeur). Mais le réseau actif à ce niveau peut présenter des problèmes de sécurité et
inefficacité d’allocation des ressources.
Pour cela on a penser à implémenter un réseau actif au niveau applicatif d’où la notion
d’ALAN : Application Level Active Network.
Les réseaux actifs implémentés permettent à des serveurs spécifiques de lancer eux-mêmes
des programmes qui permettent le développement de nouveaux services de réseau.
2.3.3.2 Motivation
A nos jours, c’est très difficile d’ajouter des codes au niveau applicatif. Cette opération
implique une mise a jour an niveau logiciel et dans la plupart des cas ils sont installes dans
des machines spécifiques comme routeurs, serveurs d’accès, et d’autres machines
spécialisées.
Mais maintenant, i y a des serveurs qui sont connectes largement dans le réseau qui rendent
possible d’ajouter des fonctions similaires au niveau application comme celles qui existent
au niveau IP. Ceux ci doivent optimiser la communication et peuvent être introduit par des
codes dynamiques charges sur les serveurs d’extrémités.
2.3.3.3 Les Buts
Actuellement, le principal objectif d’un tel projet est de développer un logiciel pour le
modèle ALAN. La plateforme ALAN décrit des composants distincts qui possèdent toute les
capacités pour l’allocation des taches sur un réseau actif. On est concerné avec les problèmes
suivants :
Mobilité
Capacité de transporter le code entre les logiciels de plateformes différentes qui massacre
différents types de codes.
Sécurité
La capacité à limiter des ressources que les objets pourraient demander. Par exemple, ne pas
permettre d’écrire dans le système de classement local aux noeuds actifs. Ceci va en toute
probabilité être une partie de la tâche installée dans chaque noeud actif.
Efficacité
S'assurer que considérant les problèmes ci-dessus la performance ne sera pas affectée.
40
2.3.3.4 ALAN (Fry et Al)
Le modèle de base consiste d’une architecture client/serveur. Les clients peuvent être des
applications Standalone crées par n’importe quel ôte Internet. La communication entre les
clients et les serveurs est établie à travers Dynamique Proxy Server (DPS). Il est aussi
possible de charger dynamiquement les protocoles au système ALAN. Les composantes des
protocoles sont emmagasinées dans des Protocol Server et ils actent comme des filtres pour
rendre la communication entre les clients et les serveurs plus rapide. Ainsi, un client peut
demander un protocole spécifique pour établir un lien avec le serveur. Il faut aussi qu’un
accord entre le client et le serveur spécifiant quel protocole de communication va être valable
pour leur communication soit possible.
La figure 18 montre le diagramme du cadre ALAN proposé par Fry et Al.
Figure 18. Architecture ALAN
Dynamic Proxy Server – DPS
Ce type de serveur est le principal composent du système. Le DPS a des responsabilités de
s’occuper des Proxylets. Il rend l’exécution des codes des parties tierces prélevées du
Proylets Server faisable. Une cachette de serveur est adoptée au DPS pour rendre possible la
réutilisation des Proxylets. Juste avant que le DPS essaye de trouver une Proxylet d’un autre
serveur, le DPS cherche dans sa propre table. Si la Proxylet est trouvée mise à jour sur la
cachette locale, ce n’est pas logique de continuer la recherche sur les autres serveurs. La
41
notion de cache peut réduire le taux de ressources à l’aide de la réduction de l’utilisation de
la bande passante du réseau.
Typiquement, un DPS fournit les interfaces suivantes :
-Load_Proxylet (URL, ProxyletName)
Charge dynamiquement une Proxylet. Pour cela, un URL qui réfère à un Proxylet Server est
passé. La communication entre le DPS et Proxylet Server peut être établie en utilisant
n’importe quel protocole d’application valable. C’est mandataire qu’une validation soit
achevée à ce stage en utilisant les politiques qui se trouve emmagasinés dans le Policy
Server.
-Run_Proxylet (Proxylet Name)
Lance la Proxylet déjà chargée.
-Modify_Proxylet (Proxylet Name)
Utilisé pour changer l’état de la Proxylet.
-Stop_Proxylet (Proxylet Name)
Utilisé pour annuler une Proxylet qui n’a plus besoin d’être exécuté.
De plus, chacune des opérations mentionnées ci-dessus quand appelés, les rendements
emmagasine de l'information du comportement de DPS dans le Serveur de Comptabilité.
Cette information joue un rôle important pour l'interception de réseau et la visualisation.
Juste avant de traiter une opération, le DPS suit quelques indications de sécurité. D’abord, il
vérifie les règles de cloison pare-feu emmagasinées dans le Serveur de Serveur/Politique de
Cloison pare-feu. Ce serveur sert d'un filtre bloquant pour les opérations ou les hôtes
spécifiques. L'intégrité de code doit être vérifiée pour s'assurer que le code binaire n'a pas été
immédiatement changé.
Proxylet Server
Fondamentalement, il a la fonction de stockage de Proxylets dans la forme binaire. Il n'offre
pas une interface directement. Le DPS prélève Proxylets de ce serveur utilisant les protocoles
de FTP ou HTTP.
Proxylet
D’abord, Proxylets sont des programmes être exécutés dans DPS. Un Proxylet peut contenir
des filtres et des protocoles qui sont attachés dans son propre code. Cependant, cette pratique
ne peut pas aider le réutilisation de Proxylet dans le DPS. La meilleure approche est pour le
chargement dynamique de Proxylet le composant de Pile de Protocole est exigée.
Dans notre implémentation le Proxylet de composant fournit une interface avec les
opérations :
42
Run () – Opération abstraite qui doit être implémentée par les développeurs de Proxylet avec
le code approprié pour l’exécuter dans le DPS.
Stop () – terminer une exécution de Proxylet.
Les deux opérations doivent être invoquées seulement par le DPS qui a une permission de
charger, lancer et arrêter une Proxylet.
De même que ceci, un Proxylet peut avoir autant de méthodes qu'il a besoin de. Bien que
seulement le Run () et le Stop () sera directement exécuté, un directeur de sécurité doit être
installé pour éviter n'importe quel défaut de sécurité avec la mémoire locale et le système de
classement local.
Protocol Stack
C'est une interface flexible disponible à l'entrepreneur de Proxylet. Cependant, il n'y a pas de
série fixe d'opérations comme nous avons trouvé dans l'interface de Proxylet. Chaque
entrepreneur de Pile de Protocole exporte pour ses utilisateurs une interface ouverte.
Fondamentalement, l'entrepreneur de Pile de Protocole spécifie quelles opérations devraient
être exportées. Cependant, nous avons trouvé utile définit quelques opérations cachées pour
cet entrepreneur. Cet arrangement vise à exécuter quelque vérification d'intégrité de code.
Retourner à notre exemple de serveur de FTP, nous pouvons agréger deux autres opérations
telles que Check_Integrity () et Verify_Firewall_Table (). Ces opérations ne sont pas visibles
pour les entrepreneurs.
Monitors Systèmes
Ce module fournit des moyens pour obtenir l'état de système d'ALAN actuel. Toutes données
pertinentes aux serveurs de réseau sont emmagasinées dans le Serveur de Comptabilité. Les
événements importants qui peuvent être observés sont :
-L’état de Réseau - l'information des Piles de Proxylets et Protocole. Quelques champs de
données qui semblent être utiles sont : l'adresse de IP, le serveur de dépôt, Proxylet ou le
nom de Pile de Protocole, le timestamp d'événement et l’état (le programme chargé, le
programme courant, le programme modifié, le programme terminé).
-L’état de Serveur - une série fixe d'information des serveurs de système tels que : l'hôte
nomme et IP, le système opérationnels et le statut de serveur (courant, occupé ou sans la
communication).
Ce module est serviable pour appliquer une balance de chargement dans le système d'ALAN.
Le système a besoin de conclure le sens des données de comptabilité emmagasinées afin
d'élaborer une carte de réseau sur le plan du chargement, l'usage de largeur de bande et les
autres mesures pertinentes qui peuvent améliorer l'exécution de réseau actif.
Client
Le client est une entité importante dans le cadre. Il développe ses programmes pour exécuter
Proxylets dans le DPS. Le résultat de calcul est donné dans les types de données accorder
entre Proxylet et le client. Donc, le client réagit réciproquement directement avec le DPS.
43
PARTIE 3. LA PROPOSITION
Proposition d’architecture de réseau actif pour le déploiement et la gestion d’un
réseau Peer to Peer.
3.1 Introduction
Donc dans notre proposition d’architecture de réseau actif pour le déploiement et la gestion
d’un réseau p2p, on va se baser sur l’architecture d’ALAN dont on a déjà parler, qui n’est
autre qu’un réseau actif au niveau application, pour la gestion des réseaux p2p.
Pour cela, il faudrait aborder quelques notions qui sont les Superpeers, avec leurs
implémentations et les Rendez-vous Superpeer, et VAP Virtual Active Peer qui introduisent
de nouvelles couches au niveau des superpeers qui sont AOL, VCC et NOL dont on verra
leurs spécifications ultérieurement.
Je vais ajouter à cette proposition ma propre contribution qui sera un attachement à
l’idéologie de SERVENT, qui est la définition de base du réseau Peer to Peer et qui dit que
chaque peer peut être client et serveur à la fois.
3.2 Super Peer
Un super peer est un noeud dans un réseau P2P qui opère de deux façons "serveur" pour un
set de client et équivalent dans un réseau superpeers.
Les réseaux super peer assurent une balance entre l'efficacité des recherches centralisées et
l'autonomie, la charge et la robustesse contre les attaques fournies par la recherche distribuée.
De plus ils prennent l'avantage des capacités hétérogènes a travers les peers (comme la bande
passante) que les nouvelles études ont démontre qu'ils sont énormes.
Les nouveaux et anciens systèmes P2P comme Kazaa et Gnutella sont entrain d'adopter les
supers peers dans leurs systèmes.
Les réseaux super peers pressentent un passage entre les systèmes pures et les systèmes
hybrides. Un super peer est un nœud qui acte comme un serveur centralise à un certain
nombre de clients. Les clients envoient leurs requêtes vers leurs super peers et reçoivent les
résultats de lui comme un système hybride. Mais les supers peers sont aussi connectes les uns
aux autres comme des peers dans un système pure qui route les messages sur le réseau,
répond et reçoit les requêtes de leurs clients. Donc les super peers sont équivalents dans le
terme de la et tous les peers (inclus les clients) sont équivalents dans le terme du
téléchargement.
Un réseau superpeer est simplement un réseau P2P constitué de ces super peers et de leurs
clients. A cause de la combinaison que les réseaux super peers font entre les éléments des
systèmes purs et des systèmes hybrides, ils ont le potentiel de combiner l'efficacité de la
recherche centralisée avec l'autonomie, le balancement des charges et la robustesse contre les
attaques fournies par la recherche distribuée.
44
Par exemple, puisque les super peers réagissent comme des serveurs centrales pour leurs
clients, ils peuvent contrôler les requêtes avec plus efficacité Cependant puisqu'il y a
relativement plusieurs super peers dans un système aucun superpeer a besoin de contrôler
une grande charge, si un peer devient aura goulot d'étranglement ou un unique point d'échec
pour le système entier.
3.2.1 Les Réseaux Superpeers :
Un réseau super peer opère exactement comme un réseau P2P pur, à l'exception que chaque
nœud, comme décrit avant est un superpeer et chaque superpeer est connecté à un set de
clients. Les clients sont connectes à un seul superpeer.
La figure illustre comment la topologie d'un réseau superpeer va être. On appelle superpeer et
ses clients "clusters", où la taille du cluster est le nombre de clients et du superpeer dans un
cluster.
Figure 19. Illustration d’un réseau Superpeer
Un réseau P2P pur est alors un réseau superpeer "dégénéré" où la taille du cluster est de 1
c'est à dire que chaque nœud est un superpeer avec aucun client.
Quand un superpeer reçoit une requête d'un voisin, il traite la requête sur la part du client au
lieu d la transmettre à lui. Pour traiter la requête pour ses clients, un superpeer laisse un
indexe sur les donnes des clients. Cet indexe doit prendre des informations suffisantes pour
répondre a toutes les requêtes. Par exemple si les données partagées sont des fichiers et les
requêtes sont des mots clefs recherchés sur le titre du fichier alors le superpeer doit laisser
une liste sur le titre des fichiers que le client possède.
Si le superpeer trouve un résultat, il retournera un message "Réponse". Ce message contient
des résultats et l'adresse de chaque client dont sa collection a produit un résultat.
Pour qu'un superpeer maintient cet index quand un client joint le système, il envoie une
donnée de sa collection au superpeer et le superpeer va ajouter les données du client dans son
indexe. Si un client met à jour ses données (insertion, effacement ou modification) il envoie
une mise a jour au superpeer aussi. Donc les réseaux superpeers introduisent deux actions de
base en plus que Query qui sont "join" et "update".
Quand un client veut soumettre une requête au réseau, il envoie la requête au superpeer
seulement. Le superpeer va soumettre ensuite les requêtes vers ses voisins comme si ces
requêtes étaient ses propres requêtes et de même envoie n'importe quelle Réponse qu'il reçoit
vers ce client. Au dehors d'un cluster une requête d'un client n'est pas distinguée des requêtes
du superpeer.
45
Nom
Graph type
Graph size
Cluster size
Redondance
Avg. Outdegree
TTL
Défaut
Power
10000
10
No
3.1
7
Query rate
9.26 .10-³
Update rate
1.85 .10-²
Description
Type de réseau
Nombre de peer dans le
réseau
Nombre de nœuds par cluster
Valeur booléenne
TTL du message query
Nombre de requête par
utilisateur par seconde
Nombre de mise à jour par
utilisateur par seconde
Figure 20. Paramètres de configuration et valeurs par défaut
Basé sur des études faites sur le réseau Gnutella
3.2.2 Rendez-vous superpeer (RDV):
Rendez-vous sont des peers qui se sont mis d'accord pour cacher les indexe d'annonces
(pointeurs vers les peers pour garder l'annonce correspondante). Le concept de rendez-vous
correspond à des endroits bien connus, utilises pour indexer et localiser l'annonce. La
politique par défaut d'un rendez-vous fournit l'infrastructure minimale pour amorcer d'une
façon efficace un ping de haut niveau pour l'annonce de haute recherche.
Figure 21. Rendez-vous Superpeer
Par exemple, à travers un rendez-vous, un peer peut trouver des peers suffisant pour amorcer
des politiques de recherches avancées. Des services de recherches avancés sont prévus de
fournir des mécanismes de recherche plus efficaces car ils peuvent avoir une meilleure
connaissance des contenus de la topologie.
46
L'infrastructure du rendez-vous peer par défaut fournit un mécanisme de découverte de bas
niveau pour découvrir les annonces, mais de l'autre cote fournit des crochets pour allouer des
services de découvertes de haut niveau pour participer au processus d'annonce de recherche.
Les peers de bordure maintiennent une relation spéciale avec leur rendez-vous peers,
n'importe quel peer peut devenir un rendez-vous peer s'il y a les bonnes qualifications.
Un rendez-vous juste maintient un indexe d'annonce publié par leur peer de bordure.
Ne pas garder les annonces fait de l'architecture rendez-vous plus "scalable" et réduit le
problème de laisser des annonces qui ne sont pas mis à jour.
Le service SRDI Shared Ressource Distributed Index est utilise par les peers de bordure
pour indexer leurs annonces sur le rendez-vous. Les peers de bordures utilisent SRDI pour
pousser les indexes d'annonces à leurs rendez-vous quand une nouvelle annonce est publiée.
Les indices peuvent être pousser d'une façon synchrone quand une nouvelle annonce est
publie, ou d'une façon asynchrone par le démon SRDI qui est lancé à des intervalles fixes.
La figure précédente, par exemple, montre comment les peers A et B sont entrain de pousser
leurs annonces vers leurs rendez-vous respectifs Rdv1 et Rdv2.
Quand une requête d'annonce est distribuée du peer A pour une annonce emmagasinée sur le
peer B, la requête est transmise au rendez-vous du peer A qui est Rdv1 (1). Rdv1 voit s'il a
un indexe de cette annonce, s'il ne trouve pas il propage la requête (2) au rendez-vous suivant
Rdv2.
Quand la requête arrive au Rdv2 il trouve l'indexe de l'annonce et l'avance vers le peer B (3).
Ceci est fait pour assurer que la dernière copie de l'annonce sur le peer B sera transmise au
peer A. Quand Peer B reçoit la requête il envoie une annonce au peer A (4).Il est important
de noter que n'importe quel peer indépendamment de sa position peut être un rendez-vous.
Dans la figure on voit que le peer 2, physiquement est derrière un NAT et il réagit comme un
rendez-vous.
3.3 ALAN (Architecture)
Monitor Interface
Execution Environment
for Proxylets (EEP)
Proxylet
Server
Protocol
Server
Proxylet
Gnutella Active Peer
Proxylet
Control
Interface
Superpeer
Gnutella Ctrl
Interface
Gnutella Mon.
Interface
Figure 22. ALAN
47
Peer
Peer
Le système est constitué de proxylets et de EEPs
Proxy let
¾ Applet ou Servlet aux extrémités d’une connexion
¾ Modules de code dynamique spécifiant la gestion de protocole
¾ Une seule copie mise au serveur central; identifiée par une référence
(URL)
EEPs
¾ Environnement d’exécution des proxylets; localisé à des points
stratégiques
¾ Proxylets de contrôle: load, run, modify, stop
¾ Déploiement dynamique
¾ Attend les requêtes pour démarrer les proxylets
¾ Routage, découverte et gestion des erreurs des proxylets
3.4 VAP Virtual Active Peer
AO L
AO L
A c tiv e V ir t u a lP e e r
AO L
N o rm a l P e e r
Figure 23. Exemple de topologie à Virtual Peer Actif.
3.4.1 Introduction
Le logiciel et les fonctions des réseaux actuels sont incorporés par les vendeurs dans les
noeuds du réseau à un temps donné; l'évolution et le changement de ces fonctions et du
logiciel sont à ce moment très complexe et les processus lents souvent exigent des années de
travail et de beaucoup de protocoles.
L'initiative récente de DARPA et les recherches des réseaux actifs, ont reconnu l'erreur
d'assortiment et ils cherchent à changer ceci en rendant programmables les noeuds du réseau.
Le réseau actif est l'un qui soutient le déploiement et l'exécution dynamique du logiciel de
réseau dans les noeuds intermédiaires. Ce logiciel, tels les nouveaux protocoles, le
monitoring du trafic et le filtrage du logiciel, ou la configuration des ressources, peuvent
exécuter le traitement actif sur les applications de données. Par exemple, avec un réseau actif
on pourrait déployer des protocoles efficaces originaux pour la téléphonie IP, ou déployer les
48
fonctions de Firewall dynamiquement afin de contrôler les changements de topologie dans un
réseau mobile.
L'Architecture Virtual Active Network (VAN) proposée est une architecture originale de
réseau actif virtuel qui fournit des caractéristiques qui sont nécessaires pour que les
applications prennent tout l'avantage des réseaux actifs.
Le but de (VAN) sera de rendre capable les grandes applications du réseau pour contrôler et
configurer la topologie du réseau et les ressources pour mieux soutenir leurs besoins. VAN
est particulièrement utile pour les applications qui exigent une des services suivants à être
fourni par le réseau
•La couverture de réseau d'un service
• La conscience d'emplacement du réseau
• Le soutien QoS spécialisé
• Disponibilité et fiabilité importante
• Sécurité
Par exemple, des applications cache du Web profiteront très fortement des services qui
fournissent la couverture d'un emplacement spécifique dans le réseau ; et les applications de
multi diffusion profiteront du soutien de QoS spécialisé. La disponibilité, la fiabilité et la
sécurité ont d'intérêts généraux à n'importe quelles applications dans le réseau.
L'architecture VAN définit des abstractions par lesquelles les applications peuvent spécifier
un réseau actif virtuel avec un type de service désiré, une caractéristique de topologie, une
contrainte de ressource et une contrainte de fiabilité. L'architecture VAN fournit des
algorithmes et des protocoles pour construction dynamiques d'un tel véritable réseau actif
selon la spécification de l'application. Quand les VAN multiples sont simultanément
construites d'une façon distributive, les potentiels 'deadlock' qui résultent des différentes
VAN concourant pour le noeud partagé et les liens entre les ressources, sont résolu par le
conflit de l'algorithme de résolution et du protocole de l'architecture VAN. A l'exécution,
l'architecture VAN contrôle la condition physique du réseau et adapte en conséquence à
mieux garde la VAN sémantique quand des échecs commencent, par exemple quand un lien
physique échoue.
Virtual Active Peer est une architecture de Middleware qui permet aux applications de
configurer la topologie du réseau et allouer les ressources aux nœuds et aux liens.
Active Virtual Peer
¾ Réseau actif
¾ Cœur de réseau ou bordure de domaine
¾ Informations et contrôle supplémentaires
Fonctionnalités
¾
¾
¾
¾
Restriction de la signalisation (par domaine)
Routage paramétré par l’état des liens
Redirection des requêtes de téléchargement
Implémente le contrôle et l’adaptation de la topologie
49
AA
EE
AA
AA
EE
AA
EE
VAN
OS
Node HW
Figure 24. Pile protocolaire
3.4.2 Architecture de AVP (Super peer):
Proxy let Active d’une application
Application Optimization Layer
Virtual Ctrl Cache
Network Optimization Layer
Figure 25. Architecture AVP 1
Application Optimisation Layer – AOL
¾ Proxy let: exécuté dans un EE
¾ Connexion à d’autre AOL
¾ Implante les fonctions de gestion
Virtual contrôle cache – VCC
¾ Capacité d’agrégation au niveau application
¾ Facilite la différentiation
¾ Gain de performance et économise les ressources
Network Optimisation Layer – NOL
¾ Mapping (optimale) du trafic P2P dans la couche réseau
¾ Assure une ingénierie de trafic « dynamique »
Figure 26. Déploiement de AVP
50
3.4.3 Gestion de AVP :
Active Proxy let
Optimization
LayerPerformance
Topology CtrlApplicationPolicy
Ctrl
Monitoring
Virtual Ctrl Cache
Network Optimization Layer
Figure 27. Architecture AVP 2
3.4.3.1 Le contrôle d’accès :
Création de domaines contrôlés à l’intérieur d’un système P2P
Contrôle d’accès aux peers et leurs ressources
Synthèse des messages
Figure 28. Gnutella vs réseau AVP
3.4.3.2 Routage :
Module de routage multi protocole
o Message AOL - AOL
o P2P protocole
o Routage entre les réseaux AVP
Protocole de routage avancé
o Décroître le trafic de signalisation
o Routage probabiliste
3.4.3.3 Topologie contrôle
Assurer une connexion stable avec d’autres EEPs
Termine une connexion
51
Distribution des annonces (Ping)
Etablir et détruire les connections basées sur les métriques :
Virtual Link State
Virtual Peer State
Figure 29. Contrôle de Topologie
3.4.3.4 Gestion de Ressources :
AVP produit des composants de VCC
Les requêtes des peers sont générer par l’AOL et envoyer au VCC
Les réponses des requêtes vont passer par le VCC
Figure 30. Gestion de ressources
3.4.4 Contribution
Mon point de vue :
Bien que les groupes (domaines) soient efficaces, un superpeer devient un unique point de
défaillance et d'échec pour le cluster et présente un potentiel goulot d'étranglement. Quand un
52
superpeer échoue ou simplement part du système, tous ses clients deviennent temporairement
déconnectés au moment où ils trouvent un superpeer pour se connecter à lui.
Dans le but de maximiser l'utilité du peer et d'augmenter sa stabilité et pour fournir une
fiabilité pour le cluster et de diminuer la charge sur le superpeer, je vais introduire ma
contribution concernant ce cas.
En effet on est entrain d'étudier un réseau peer to peer. Pourquoi ne pas garder l'idéologie des
systèmes peer to peer et au lieu de s'inspirer des systèmes client/serveur, qui sont en grande
différence avec les systèmes peer to peer, comme le tableau suivant nous rappelle, pourquoi
ne pas avoir un système où tous les peers peuvent agir, à un certain moment, comme
équivalent.
Peer-to-Peer
Client/Serveur
• Auto organisé
• Evolution dynamique, Ad hoc
• Découverte des peers
• Flux distribué (mesh)
• Symétrie du réseau
• Communication par Messages
• Adressage dynamique au niveau application
• Entités Autonomes
• Attaques difficiles (mobilité, anonymat)
• Management centralisé
• Configuré
• Consultation de tables
• Flux centralisé
• Asymétrie du réseau
• Orienté RPC
• Adressage statique @IP
• Entités dépendantes
• Attaques plus simples
La méthode que je propose est la suivante :
La supériorité au niveau des peers dans un certain groupe va être donnée au peer qui répond
le plus aux conditions du réseau. De la même façon peut être que le mode PIM Sparse utilisé
pour le routage dans Multicast, on peut spécifier peut être un «Join Spécifique » qui sera
généré par la station qui demande de prendre la supériorité et devenir Super peer.
Ainsi beaucoup de problèmes seront résolut ont :
-Allocation et découverte des ressources
-Réduire le trafic de synchronisation
-Agrégation et organisation
-Perte de la bande passante/latence/paquet
53
PARTIE 4. L’ IMPLEMENTATION
4.1 Création d’un service Web:
4.1.1 Environnement :
Le service Web peut être créer sur une machine Windows 2000 ou XP Professional, mais
dans les deux cas, le composant IIS (Internet Information Service) doit y être installé. En
effet, les applications Web ASP et les services Web XML exigent qu le IIS soit installe pour
le développement de ce type de projet.
4.1.2 Langage de programmation :
Notre service Web est développe avec le langage C# sur la plate-forme Microsoft .NET. Le
langage C# est orienté objet, ce qui facilite la manipulation des services Web XML. En effet,
il existe une classe System.Web.Services.WebService qui fournit un accès direct aux objets
ASP.NET. Lorsqu’un service Web est créé sur la plate-forme .NET, il hérite
automatiquement de cette classe.
Les propriétés de l’attribut du service Web :
•
•
•
Description : La valeur de cette propriété contient un message descriptif du service Web.
Name : La valeur de cette propriété contient le nom du service.
Namespace : Chaque service Web XML a besoin d’un unique Namespace.
Le Namespace va permettre aux clients de différencier entre les services Web qui
utilisent des fonctions de nom identiques.
4.1.3 Les fonctions Web (WebMethod) :
Lorsqu’on crée un service Web, celui-ci doit obligatoirement contenir des fonctions qui
peuvent être appelée à distance par des clients Web. Ces fonctions s’appellent WebMethod.
Dans le code C#, chacune de ces fonctions doit être déclarée avec l’attribut [WebMethod] qui
la précède.
4.1.4 Page d’aide du service Web :
Les services Web XML utilisent des fichiers d’exécutions .asmx qui peuvent être visualises
avec le web browser. Ces fichiers génèrent automatiquement une page du service Web
nomme Service1 .asmx qui fait partie du projet WebServer sur la machine locale, on utilise
l’url suivant : http://localhost/WebServer/Service1.asmx
Voici ce qu’on voit sue le Web browser :
54
Figure 31. Test 1
Cette page permet d’abord de tester que le service Web fonctionne. Ensuite, on peut
visualiser une description du service en question. Enfin, on peut accéder aux fonctions
proposées par ce service.
4.2 Fonctionnement global du réseau peer-to-peer centralisé
On a auparavant donne un aperçu sur ce type de réseau. On va maintenant expliquer son
fonctionnement plus en détail. Ce réseau doit contenir des machines appelées peers pouvant
échanger des fichiers. Il faut alors trouver une entité intermédiaire qui puisse simplifier la
recherche de fichiers sur le réseau et ceci d’une manière assez performante. C’est le rôle du
service Web. Nous allons d’abord présenter les fonctions Web du serveur.
4.2.1 Enregistrement d’un fichier sur le serveur :
Cette étape est indispensable pour le fonctionnement du système. Le peer doit pouvoir
partager un ou plusieurs fichiers sur le réseau .Il doit donc envoyer les informations
essentielles concernant le fichier à partager au serveur Web.
Ces informations sont :
•
•
•
L’adresse IP du propriétaire du fichier pour permettre aux autres peers de le retrouver sur
le réseau.
Le path pour accéder au fichier sur la machine du propriétaire.
Le nom du fichier.
55
• La taille du fichier en bytes.
Remarques :
•
•
•
L’adresse IP et le path doivent être transparents par rapport aux utilisateurs. Ce sont des
données uniquement utilisées par l’application.
On aurait pu ajouter un autre paramètre à ces quatre comme une description du fichier par
exemple.
Ces données sont effacées du serveur lorsque le peer est déconnecté.
Pour assurer le transfert de ces données, une fonction WebMethod doit être définie sur le
serveur. Cette fonction prend en paramètre ces quatre variables.
4.2.2 Page d’aide du service Web :
On a vu précédemment comment voir la page d’aide relative au service. Cette page contient
les fonctions Web de ce service. Si on clique sur l’une de ces fonctions, une nouvelle page
s’ouvre. Voici la page d’aide de la fonction qui enregistre un fichier.
Figure 32. Test 2
Cette page nous permet d’abord de s’assurer que la WebMethod fonctionne correctement.
Ensuite, om peut faire des tests en ajoutant manuellement des données au serveur.
On a vu comment on peut enregistrer un fichier sur le serveur. Maintenant il s’agit de
rechercher un fichier sur le serveur.
56
4.2.3 Recherche d’un fichier :
Le peer qui cherche un fichier précis doit tout simplement envoyer le nom de ce fichier au
serveur. Le serveur compare la chaîne de caractère qu’il a reçu avec les noms des fichiers
préenregistrés. Ensuite, le serveur renvoie au peer les informations sur tous les fichiers
correspondants à ce nom sous forme de tableau.
Il reste la dernière étape qui est en fin de compte l’essentiel. Il s’agit du téléchargement de
fichier. Notons que cette étape n’est pas une fonction du serveur. Le téléchargement concerne
seulement les peers.
4.2.4 Télécharger un fichier :
Apres que le peer ait reçu ce tableau, l’utilisateur peut choisir un fichier pour le télécharger.
Ici, on revient a la définition d’un peer qui est une entité jouant le rôle de client et de serveur
en même temps. Donc un peer, comme tout serveur, doit être continuellement en mode
d’écoute. Voici les étapes du téléchargement :
•
•
•
Le peer qui veut télécharger se connecte au peer propriétaire du fichier par une connexion
TCP/IP, comme tout client se connectant a un serveur.
Le peer « client » envoie au peer « serveur » le path du fichier pour qu’il sache de quel
fichier il s’agit.
Le peer « serveur » envoie au peer « client » le fichier.
4.3 Développement de l’application
L’application doit être présenté sur chaque peer. C’est une GUI (Graphic User Interface), elle
est programmée aussi en C# sur le Microsoft .NET. Le namespace utilise est
System.Windows.Forms qui contient des classes relatives a la construction de GUI. Voyons
d’abord comment cette application peut utiliser les services Web.
4.3.1 Création de références Web :
Pour simplifier le développement des applications clients des services Web, un concept de
références Web est introduit. Une référence Web est une classe proxy qui représente
localement les fonctionnalités d’un service Web. Lorsque l’application client crée une
instance de cette classe proxy, il est alors capable d’appeler les fonctions du service Web
comme s’il était un composant local. Par exemple, le client peut au sein de l’application,
appeler la fonction RegisterFile pour enregistrer un fichier sur le serveur.
4.3.2 Déroulement de l’application :
4.3.2.1 L’enregistrement de fichiers :
Nous avons vu que le peer doit fournir quatre paramètres pour l’enregistrement d’un fichier.
En réalité, l’utilisateur ne fournit qu’un seul paramètre qui est le path du fichier. L’adresse
IP, le nom et la taille du fichier sont directement pris en charge par l’application.
57
Figure 33. Test 3
4.3.2.2 Recherche et téléchargement :
Il existe une nouvelle page employée pour la recherche de fichiers. Lorsque le serveur
effectue la recherche, il envoie les données sous forme de tableau. Sur l’interface graphique,
seuls le nom et la taille du fichier sont visibles pour l’utilisateur. Celui-ci peut alors choisir le
fichier qu’il désire, et le télécharger. Ce fichier sera dans un répertoire nomme « p2p
download » crée dynamiquement par l’application.
Figure 34. Test 4
58
4.4 Monitoring avec WMI
Microsoft Windows Management Instrument (WMI) est à ce qu’on dit le grand secret de
Microsoft de gestion pour Windows. Qu’est-ce que cela implique? Si vous gérez des serveurs
et des postes de travail Windows ou si vous des applications de gestion Windows, il est
indispensable de connaître WMI.
4.4.1 Qu’est-ce que WMI ?
Lance a l’origine en 1998 comme composant additionnel de Windows NT 4.0 Service Pack
4, WMI est la technologie centrale de gestion intégrée a la gramme Windows 2000, Windows
XP et produits Windows Server System. Basée sur des WMI regroupe les instruments et la
plomberie via lesquels toutes –ou quasiment toutes- les ressources Windows peuvent faire
l’objet d’un accès et être configurées, gérées et surveillées.
Avant WMI, tous les outils administratifs graphiques de Windows s’appuyaient sur des
interfaces de programmation d’applications (API) Win32 pour accéder aux ressources
Windows et les gérer. Pourquoi ? Parce que la seule manière d’accéder aux ressources
Windows par programmation avant Wmi était par l’intermédiaire des API Win32. Cette
situation ne mettait a la disposition des administrateurs de systèmes Windows aucune
manière rapide d’automatiser les taches courantes d’administration des systèmes en utilisant
les langages de script courant, car la plupart de ces langages ne pouvaient pas appeler
directement les API Win32.WMI change cela en proposant un modèle et une infrastructure
homogènes via lesquels toutes les ressources Windows sont décrites et exposées au monde
extérieur. De plus les administrateurs système peuvent utiliser la bibliothèque de scripts
WMI pour créer des scripts d’administration de systèmes afin de gérer n’importe quelle
ressource Windows exposée via WMI.
En utilisant Windows Script Host et Microsoft Visuel Basic Sripting Edition (VBScript), on
peut écrire des scripts pour gérer et automatiser les aspects suivants des systèmes,
applications et réseaux d’entreprise :
•
Gestion des produits Windows Server System, Windows XP Professional et
Windows 2000. On peut écrire des scripts pour extraire des données de performance,
gérer des journaux d’évènements, des systèmes de fichiers, des imprimantes, des
processus, des paramètres de bases de registres, un planificateur, la sécurité, les services,
les partages et de nombreux autres composants et paramètres de configuration du système
d’exploitation.
•
Gestion des réseaux. On peut créer des scripts bases sur WMI pour gérer des services de
réseau tels que les services DNS, DHCP et SNMP compatibles.
•
Surveillance en temps réel de l’état de santé. A l’aide des abonnements aux
évènements WMI, on peut écrire des scripts pour surveiller et réagir en temps réel aux
entrées du journal d’évènements, aux modifications des systèmes de fichiers et des bases
de registres et à d’autres modifications en temps réel subies par le système d’exploitation.
Du point de vue conceptuel, les abonnements aux évènements et notifications
59
d’évènements de WMI sont a WMI ce que les interruptions SNMP sont au monde du
SNMP.
•
Gestion des produis Windows Server System. On peut écrire des scripts pour gérer
Microsoft® Application Center, Opération Manager, Systems Management Server,
Internet Information Server, Exchange Server et SQL Server.
4.4.2 Architecture de WMI :
L’architecture de WMI comprend trois couches principales, comme illustre dans la figure cidessous :
•
•
•
Ressources gérées
Infrastructure de WMI
Consommateurs
4.4.2.1 Ressources gérées :
Une ressource gérée est tout composant logique ou physique, exposé et gérable en utilisant
WMI. Les ressources Windows pouvant être gérées a l’aide de WMI incluent le système
informatique, les disques, les périphériques, les journaux d’évènements, les fichiers, les
dossiers, les système d’exploitation, les compteurs de performance, les imprimantes, les
processus, les paramètres de base de registres, la sécurité, les services, les partages, les
utilisateurs et les groupes SAM, active Directory, Windows Instaler, les pilotes de
périphériques Windows Driver Model (WDM) et les données SNMP Management
Information Base (MIB). Une ressource gérée par WMI communique avec WMI via un
fournisseur.
4.4.2.2 Infrastructure de WMI :
La couche intermédiaire est l’infrastructure de WMI. WMI comprend trois composants
principaux : le Common Information Model Object Manager (CIMOM), le référentiel
Common Information Model (CIM) et les fournisseurs.
Ensemble, ces trois composants fournissent l’infrastructure via laquelle sont définies,
exposées, atteintes et extraites les données de configuration et de gestion. Un quatrième
composant, même s’il est petit mais absolument essentiel aux scripts, est la bibliothèque de
scripts de WMI.
4.4.2.3 Consommateurs WMI :
Les consommateurs constituent la couche supérieure. Un consommateur est un script, une
application de gestion d’entreprise, une application basée sur le Web ou un autre outil
administratif qui accède et contrôle les informations de gestion disponibles via
l’infrastructure de WMI.
On ne va pas rentrer plus en détail dans le fonctionnement de WMI, on va plutôt s’intéresser
à notre application de monitoring, notamment le monitoring des services web.
60
4.4.3 L’application de gestion
Figure 35. Test5
L’application que j’ai développé est une simple application développée sous C#, comme on
peut voir dans le menu de contrôle, on peut spécifier le nom de la machine sur le réseau dont
on veut contrôler même les compteurs nous laisse voir n’importe quel paramètre qui nous
parait important.
A chaque fois qu’un chargement sera complété, on peut choisir le paramètre à gérer selon son
type. Des qu’on choisi un paramètre a contrôler un graphe sera visible qui nous montre l’état
de ce compteur. On peut arrêter ou faire marche le graphe au moment ou l’on veut, ainsi
qu’on peut voir plusieurs graphes en même temps ainsi qu’on peut avoir plusieurs fenêtres
dont chacune peut comporter plusieurs graphes en même temps.
Le développement d’applications utilisant WMI peut être très simple, et se révèle très
fructueux quant a l’importance des informations qu’il pourrait nous procurer. Dans notre cas,
on fait un monitoring sur presque tous les paramètres de notre machine et même des
machines voisines, en WMI ; ceci pourrait donner plusieurs idées, comme utiliser le
monitoring sous des services Web, c’est adire de mettre des fonctions faisant le monitoring
en tant que Web Methods accessible depuis les clients. Ceci permettrait d’avoir plus
d’interactivité entre les clients et le service web.
61
PARTIE 5. CONCLUSION
En guise de conclusion, je voudrais seulement mentionner que cette proposition m’a
fourni beaucoup d’information et d’expérience, surtout que les thèmes de réseau actif et de
peer to peer attirent plus d’attention dans la communauté de réseau à nos jours.
Les systèmes peer to peer sont récemment devenus des moyens très populaires à
travers lesquels un très grand nombre de données sont partagés.
Les réseaux actifs eux déjà bien connus et déterminés, mais leur implémentation pose
plusieurs défis. Leurs performances doivent être comparable à celle des réseaux existants.
Ainsi qu’ils doivent offrir au moins la même sécurité et la même robustesse, ce qui est un
grand défi quand le code peut migrer et s’exécuter dans un grand réseau hétérogène.
La proposition d’architecture de réseau actif pour le déploiement et la gestion d’un
réseau p2p est bien placée, malgré que plusieurs autres questions puissent avoir lieu comme :
au lieu d’appliquer un certain mécanisme comme proposé « join spécifique » : Quel sera
l’effet de la redondance sur de telles architectures ? Est-ce qu’elle sera bien supportée ?
62
Bibliographie:
Réseaux P2P:
-Aberer, K. and Hauswirth, M., Peer-to-Peer informations systems: concepts and models,
state-of-the-art, and future systems, Tutorial 2002.
-Wireless/Networking: Introduction to P2P Networks.
-Minar, N. and Hedlund, M.; A Network of Peers; P2P: Harnessing the power of a disruptive
technologie; Oral; Mar. 2001.
-Les protocoles P2P et leurs utilisations, Guillaume Doyen, Feltin, Festor-Loria.
-Napster messages, open-nap-source forge/ Napster.txt.
-Gestion de reseaux Pairs a Paires, Exposé d'avancement de thèse, Doyen-Loria.
-Project JXTA: Java Programmer Guide; Sun Microsystems, Inc; 2001.
-Management of p2p networks applied to IM, Nataf, Doyen, and Futor.
-RRS Design Document – implementation details clip2.
-Satinel – p2p based networks systems & applications monitoring.
-The Gnutella Protocol specification v0.4; Jun. 2001.
-Managed P2P – A new architecture for Service Management-Stephenson-2002.
Disruption P2P VoIp Tech.
-Designing a Super-Peer Network, by Yang-Molina.
-Project JXTA 2.0 Super Peer Virtual Network, Traversat – Duigou 2003.
Réseaux Actifs :
-Active Networks: Applications, Security, Safety and Architecture-Psounis.
-Active Virtual Network Management Prediction-Bush.
-An Active Network Management Architecture using XML-based MIB-Lee, Hong.
-ALAN Programming Manual-Fry, Ghosh.
-Milojicic, D. and Kalogeraki, V. and Lukose, R. and Nagaraja, K. and Pruyne, J. Richard,
B. and Rollins, S. and Xu, Z., Peer-to-Peer Computing, HP Laboratories Research Report,
HPL-2002-57, March 2002.
Les sites Webs:
www.hpl.hp.com/techreports/2002/HP-2002-57.pdf
www.sourceforge.net/projets/rfc-gnutella
www.smartmobs.com
www.techdictwireless.com
www.geckzone.co.nz
www.skype.com
www.numapps.org
www.clips2.com
http://www.prism.uvsq.fr/~tad/rapport/ants.html
http://www.rennes.enst-bretagne.fr/RHDM99/reseauxactifs.pdf
http://www.inria.fr/rrrt/rt-0270.html
http://www.cpmsoc.org/pubs/surveys/1q99issue/psounis.html
http://www-rp.lip6.fr/euronetlab/actnet.html
63

Documents pareils