Académique Documents
Professionnel Documents
Culture Documents
R eSyD
Thèse de Magister
Option : Réseaux et Systèmes Distribués
Thème
AMAD Mourad
iii
Table des Matières
Remerciements xiii
Résumé xiv
Introduction Générale 1
iv
1.4.1.2 L’identificateur du nœud . . . . . . . . . . . . . . . . . . . . . 18
1.4.1.3 Le hachage consistent (Cohérent) . . . . . . . . . . . . . . . . 19
1.4.1.4 Placement des ressources . . . . . . . . . . . . . . . . . . . . . 20
1.4.1.5 Recherche de données . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1.6 Exemple de recherche . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1.7 Tables des raccourcis . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.1.8 Algorithme de recherche avec des tables de raccourcis . . . . . 23
1.4.1.9 Arrivée d’un nœud . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.1.10 Construction des tables de raccourcis . . . . . . . . . . . . . . 23
1.4.1.11 Algorithme de recherche avec tolérance aux fautes . . . . . . . 24
1.4.1.12 Les caractéristiques du protocole Chord . . . . . . . . . . . . . 24
1.4.2 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.4.2.1 Arrivée d’un nœud . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4.2.2 Départ d’un nœud . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4.2.3 Le routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4.3 Pastry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.4.4 Analyse des systèmes basés sur les DHTs . . . . . . . . . . . . . . . . . . 28
1.5 L’aspect sémantique dans les réseaux P2P . . . . . . . . . . . . . . . . . . . . . 29
1.5.1 Détection implicite de la sémantique . . . . . . . . . . . . . . . . . . . . 29
1.5.2 Détection explicite de la sémantique . . . . . . . . . . . . . . . . . . . . 29
1.6 Performances des systèmes P2P . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.7 Problèmes ouverts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
v
3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
vi
5 Performance de la plateforme JXTA à grande échelle 58
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2 Index distribué de partage de ressources (SRDI) . . . . . . . . . . . . . . . . . . 58
5.3 La recherche distribuée dans le réseau JXTA . . . . . . . . . . . . . . . . . . . . 59
5.3.1 Les avantages des approches distribuées . . . . . . . . . . . . . . . . . . 60
5.4 La recherche en largeur et la recherche en profondeur dans JXTA . . . . . . . . 60
5.4.1 La recherche en largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.2 La recherche en profondeur . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.5 L’architecture de la recherche JXTA . . . . . . . . . . . . . . . . . . . . . . . . 61
5.5.1 Les objectifs de JXTA search . . . . . . . . . . . . . . . . . . . . . . . . 61
5.5.2 Les composantes de JXTA search . . . . . . . . . . . . . . . . . . . . . . 62
5.5.3 Les services de JXTA search . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
vii
6.3.3 SIP ou H.323 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.4 Les Firewalls et les NATS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.4.1 Protocoles de découverte des Firewalls et des NATs . . . . . . . . . . . 82
6.4.1.1 STUN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.4.1.2 TURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.5 La téléphonie basée sur le protocole SIP . . . . . . . . . . . . . . . . . . . . . . 83
6.6 La téléphonie IP basée sur une architecture P2P . . . . . . . . . . . . . . . . . 84
6.6.1 La registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.6.2 Architecture de P2P-SIP . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.6.3 La registration d’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.6.4 Défaillance d’un nœud . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.6.5 Localisation des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.6.6 Les messages Off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.7 Skype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.7.1 Architecture de Skype . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.7.2 Les composantes software de Skype . . . . . . . . . . . . . . . . . . . . . 90
6.7.3 Les fonctions de Skype . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Bibliographie 96
viii
Liste des tableaux
ix
Liste des algorithmes
x
Table des figures
xi
6.1 La transmission de la voix sur le réseau IP . . . . . . . . . . . . . . . . . . . . . 69
6.2 La téléphonie IP et le RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.3 La pile des protocoles Internet Multimédia . . . . . . . . . . . . . . . . . . . . 71
6.4 Format des messages SIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.5 Exemple d’une session SIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.6 Tests de performances de protocole SIP . . . . . . . . . . . . . . . . . . . . . . 78
6.7 Constitution de H.323 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.8 Exemple d’une session H.323 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.9 La téléphonie internet classique . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.10 La recherche et l’enregistrement des utilisateurs . . . . . . . . . . . . . . . . . . 84
6.11 La téléphonie IP en mode P2P. . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.12 La recherche et l’enregistrement des utilisateurs . . . . . . . . . . . . . . . . . . 85
6.13 Diagramme d’un nœud P2P-SIP . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.14 Node startup and outgoing registration . . . . . . . . . . . . . . . . . . . . . . . 87
6.15 Défaillance d’un super nœud dans le DHT . . . . . . . . . . . . . . . . . . . . . 88
6.16 La localisation des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.17 Les messages off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.18 Architecture de Skype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.19 Organigramme de login dans Skype . . . . . . . . . . . . . . . . . . . . . . . . . 92
xii
Remerciements
xiii
Résumé
Résumé : Popularisés par différents logiciels de partage et d’échange de fichiers, les sys-
tèmes Pair à Pair (peer-to-peer ou P2P ) reposent sur le principe de mutualisation de ressources
(par exemple les données, les programmes, les services, les capacités de stockage et de calcul ) à
l’échelle de l’Internet. Le modèle P2P est une alternative au modèle client-serveur : Les peers
sont tous au même niveau, peuvent à la fois offrir (rôle serveur ) et demander (rôle client)
des ressources. Ils peuvent librement rejoindre et quitter le système (ou tomber en panne) et
fournissent les ressources de manière intermittente. Dans ce contexte, on a proposé un nou-
veau protocole (I4N ) de découverte et localisation de services en mode P2P. Le modèle P2P
semble particulièrement intéressant pour les systèmes d’information répartis à grande échelle,
qui sont par nature, hétérogènes et instables. Plusieurs types d’applications commencent à se
migrer de l’architecture client- serveur vers l’architecture P2P, comme la téléphonie IP. Ces
différents protocoles sont incapables d’interchanger des informations entre eux, pour cela, diffé-
rentes plateformes P2P ont été mise en œuvre, JXTA a pris une grande partie dans ce mémoire.
Mots clés : P2P, protocole de routage, Plateforme P2P, JXTA, La telephonie Internet,
I4N.
Abstact : Popularized by various softwares of sharing and exchange of files, the systems
Peer to Peer (P2P ) are based on the principle of mutualisation of resources (par example
data, programs, services, capacities of storage and calculation ) on the scale of the Internet.
The model P2P is an alternative to the client-server model : The peers are all on the same
level, can at the same time offer (role server ) and to ask (role customer ) of the resources.
peers can freely join and leave the system (or to break down ) and provides the resources in
manner intermittent. In this context, we have proposed a new protocol (I4N ) for the disco-
very and localisation of services in P2P model. The model P2P seems particularly interesting
for the information systems distributed on a large scale, which by nature, are heterogeneous
and unstable. Several type of applications starts to be migrated of architecture client server
towards architecture P2P, as telephony IP. These various protocols are unable to interchange
information between them, for that, different plateforms P2P were implemented, JXTA take
a great part in this thesis.
Keys Words : P2P, routing protocols, P2P plateform, JXTA, Internet telephony, I4N.
xiv
Introduction Générale
D E nos jours, on constate une augmentation des capacités de stockage, des puis-
sances de calcul des processeurs, des débits des réseaux, du nombre d’utilisateurs
connectés à Internet et de la quantité de données hébergées par les utilisateurs. Les ques-
tions qui peuvent être posées sont : Comment construire un système ayant pour but
de stocker des données à grande échelle ? ou qui peut faire des calculs qui consomment
beaucoup de temps ? Comment faire pour qu’il soit robuste, extensible et peu coûteux ?
Comment trouver ces données à travers Internet ?. A travers ce mémoire on va essayer
de répondre à ces différentes questions.
Le terme Pair à Pair (P2P ) fait référence à une classe de systèmes ou d’applications
qui utilisent les ressources distribuées pour réaliser une opération d’une manière dé-
centralisée. Un système P2P ne dispose d’aucune structure centralisée pour réaliser ses
objectifs. Depuis quelques temps, les systèmes pair à pair font l’objet d’une attention
considérable, en raison de leur architecture sous-jacente, particulièrement adaptée au
passage à l’échelle des applications distribuées que l’on trouve sur internet. Dans un
système pair à pair, il n’y a aucun contrôle centralisé, ni aucune organisation hiérar-
chique. Chaque pair est équivalent en fonctionnalité et coopère avec d’autres pairs dans
l’objectif de réaliser une tache collective. Les systèmes pair à pair ont évolué depuis le
simple système de partage de fichiers comme Napster, jusqu’aux systèmes évolués de
gestion de données distribuées comme Seti@home.
1
Introduction générale 2
délais aussi brefs que possible. De nombreuses propositions ont été faites dans la littéra-
ture pour la construction des réseaux Pair à Pair, mais quelques prototypes seulement
qui ont été implementés.
Notre mémoire est organisé en six chapitres comme suit :
Dans le premier chapitre, on a décrit les différents protocoles P2P, leurs architec-
tures et leurs caractéristiques. On les a regroupé suivant deux grands types : les réseaux
structurés comme Chord, CAN, Pastry qui sont basés sur les tables de hachage distri-
buées et les réseaux non structurés comme Napster qui est basé sur un index global et
Gnutella dont laquelle la recherche est basée sur la technique de diffusion (Flooding).
On a conclu le chapitre par une comparaison entre ces différents protocoles P2P sui-
vant plusieurs critères comme la scalabilité, la décentralisation, le coût de recherche et
la tolérance aux fautes.
Dans le troisième chapitre, on a fait un survol sur les différentes plateformes P2P
largement utilisées comme XtremWeb, ProActive et JXTA.
Le sixième chapitre est consacré à la téléphonie IP en mode P2P. Nous avons com-
mencé par une introduction sur quelques protocoles de signalisation comme H.323 et
SIP pour arriver à détailler deux grandes approches de la téléphonie IP en mode P2P.
La première est Skype, un protocole P2P propriétaire qui est mis en oeuvre et qui
est en augmentation continue d’utilisateurs ces dernières années. La deuxième est une
architecture de la téléphonie IP en mode P2P pur basée sur le protocole SIP pour la
signalisation.
Introduction générale 3
Enfin, notre mémoire s’achève par une conclusion générale résumant les grands
points qui ont été abordés dans ce mémoire, ainsi que des perspectives que l’ont sou-
haite accomplir prochainement.
Chapitre I
en mode P2P
1.1 Introduction
Les systèmes pair à pair (P2P ) constituent une plateforme récente pour exécuter
des applications reparties dans des environnements à grande échelle. Contrairement à
l’approche Client-Serveur, les nœuds sont connectés entre eux directement au dessus du
réseau physique. Ces systèmes permettent de partager les ressources et les services entre
les différents nœuds, tels que : Le contenu de leurs disques durs, largeur de bande pas-
sante et leur CPU. Cela permet d’avoir une très grande mémoire d’archivage, des bons
résultats de recherche et une puissance de calcul plus accrue que n’importe quel utilisa-
teur aurait pu avoir individuellement. Dans ce type de systèmes, les nœuds peuvent se
comporter à la fois comme client et serveur. En restant autonome, chaque ordinateur
prend part du réseau global indépendamment de son type de connectivité. Les peers ne
nécessitent pas obligatoirement une adresse IP permanente, contrairement aux serveurs
dans les architectures client-serveur qui doivent avoir une adresse IP permanente [50].
Les systèmes P2P sont devenus une forme commune d’interchangement on-line des
données [61]. Ils sont par nature distribués, sans aucune organisation hiérarchique ou
contrôle centralisé. Le problème fondamental qui confronte les applications peer-to-peer
est la recherche et la localisation des nœuds qui stockent des données particulières [60],
l’optimisation du nombre de messages traversés d’un peer à un autre pour maintenir la
4
Chapitre 1 : Découverte et localisation de services en mode P2P 5
stabilité du système, ainsi que pour la recherche de données, c’est le cœur de chaque
système P2P.
– Communication
Elle regroupe la messagerie instantanée (AOL, ICQ, MSN Messenger, Yahoo Mes-
senger,...), la téléphonie par Internet (WebPhone, Skype,...), ainsi que la vidéo-
conférence (CUseeME,...).
– Collaboration
Celle-ci est la moins connue, elle regroupe les applications de groupeware tels que
Groove Network qui facilite le travail en-ligne.
– Sécurité
C’est la capacité des systèmes de gérer et de protéger des informations sensibles.
Plusieurs définitions du mot sécurité existent. Une approche pour définir ce mot
est de le définir en terme de services qui peuvent être fournis. Les services de
sécurité les plus appropriés à la couche réseau de modèle OSI sont : la confiden-
tialité, l’intégrité, l’authentification et la non repudiation avec preuve de l’origine
de données.
Définition 1. La confidentialié de données est la propriété par laquelle l’information
n’est pas rendue disponible ou n’est pas relevée aux individus, aux entités ou aux proces-
L’intégrité de données est assurée par les fonction de hachage, comme à titre
d’exemple : MD4, MD5 (Message Digest), SHA-1(Secure Hash Algorithm 1) ou
SHA-2 .
Définition 3. L’authentification de l’origine des données garantit que les données re-
çues proviennent de l’expéditeur déclaré [55].
recues. Elle protege ainsi le destinataire contre une tentative de nier l’envoi de données
La non repudiation peut être assurée par les signatures digitales ou les certificats
à clé publique.
Au début, les systèmes P2P n’ont pas implémenté les mécanismes de sécurité, mais
Chapitre 1 : Découverte et localisation de services en mode P2P 8
la communauté des chercheurs est de plus en plus attirée vers ce problème [58].
Dans l’architecture Client-Serveur, les serveurs sont des points faibles dans le
réseau (coté sécurité), car ils sont peu nombreux, très chargés et facilement iden-
tifiables, cela les rend vulnérables à des surcharges des requêtes qu’elles aient une
cause naturelle ou liée à une attaque de type déni de service (envoi d’un nombre
important de requêtes simultanément afin de rendre un serveur inutilisable).
– Anonymat
Elle est définie comme étant le degré pour lequel les systèmes P2P tiennent compte
des opérations non identifiées [58].
– Dynamisme
Les systèmes P2P doivent supporter le dynamisme, c’est-à-dire les ressources
comme par exemple les peers, peuvent joindre ou quitter le système de manière
continue, sans qu’ils affectent le fonctionnement de ce dernier.
– Décentralisation
Il n’y a pas un contrôle centralisé, ni une vue globale de tous les peers dans le
réseau. La majorité des systèmes P2P ne sont pas purement distribués, mais ils
sont hybrides.
– Connectivité ad Hoc
Pour permettre d’établir une communication sans aucune architecture préexis-
tante, car les systèmes P2P visent à faire communiquer les différents nœuds dans
les différents types de réseaux (réseau filaire, mobile, ad hoc).
– Robustesse
La robustesse doit être maintenue dans les trois composantes des systèmes P2P
suivantes : sécurité, l’agrégation des ressources et la fiabilité.
– Sécurité
L’utilisation des logiciels de partage de fichiers P2P peut soulever des problèmes
sérieux de sécurité [56]. Les applications P2P permettent aux ordinateurs l’accès
direct aux autres ordinateurs, donc à leurs dispositifs du stockage, par conséquent,
Chapitre 1 : Découverte et localisation de services en mode P2P 9
– Interopérabilité
Dans les réseaux P2P, Les applications utilisent différentes technologies réseaux
ainsi que différentes plateformes. Le fait que plusieurs plateformes puissent coha-
biter au sein de celles-ci, avec différents systèmes de sécurité, rend l’interopérabi-
lité difficile. Aujourd’hui, les services des systèmes P2P sont relativement simples
comme le transfert de fichiers musicaux, mais dans le futur ça ne sera pas le cas.
– Bande passante
Parce que les utilisateurs des réseaux P2P dans le monde ne cessent d’augmenter,
le trafic causé par ce type de systèmes peut saturer le réseau P2P.
fications
Les systèmes P2P peuvent être classifiés suivant le type de recherche utilisé, la main-
tenance et l’organisation de la structure du réseau comme il est montré sur la figure 1.1.
Dans les architectures structurées, le système correspondant est organisé suivant une
topologie virtuelle connue, comme à titre d’exemple (Chord (Anneau), CAN(Tore),...).
Dans les architectures non structurées, la topologie virtuelle et la topologie physique
sont les mêmes. Différents protocoles dans les deux types d’architectures sont décrits
dans [41].
Chapitre 1 : Découverte et localisation de services en mode P2P 10
Recherche Structure
Exhaustive Organisé
1.3.1 Napster
C’est l’un des plus vieux et plus célèbres des systèmes P2P, il est destiné pour le
partage de fichiers musicaux. C’est un système P2P hybride dont lequel la recherche de
services est centralisée. Dans Napster, les utilisateurs ont recours à un serveur central
possédant l’index de tous les utilisateurs connectés, ainsi que leurs données partagées.
Le serveur se charge de mettre en relation un peer demandeur avec un peer possédant
les fichiers désirés. Le stockage des fichiers demeure sur les machines utilisateurs. Le
processus de transfert s’effectue directement entre les peers sans passer par le serveur
central. L’avantage principal de Napster est la localisation rapide et efficace, par contre,
elle présente un inconvénient majeur, qui est la résistance aux pannes. La figure 1.2
Chapitre 1 : Découverte et localisation de services en mode P2P 11
Réponse
Requête
Téléchargement
Serveur
Client
1.3.2 Gnutella
Contrairement à Napster, Gnutella est un protocole de recherche P2P décentralisé.
Il a pris la suite en résolvant le problème de centralisation de Napster. Lors d’une
recherche, le peer envoie la requête à ses voisins, qui font de même et ainsi de suite,
jusqu’à atteindre les nœuds à distance 7 du demandeur, cette distance est l’équivalent
du nombre de sauts maximal d’une requête HTTP [23]. L’inconvénient majeur est que
la recherche n’est pas exhaustive (la requête peut échouer même si la donnée recherchée
est présente dans le système).
Avec :
– L’identificateur du message : Pour identifier les messages Gnutella.
– Type : C’est l’action à réaliser parmi les suivantes : Ping, Pong, Query, Query
Hit, Push, Bye.
– TTL : Le nombre de sauts non encore réalisés.
– Sauts : Le nombre de sauts réalisés.
– Ping [0x00] : Il est utilisé pour découvrir les autres servents (Serveur-Client)
sur le réseau. Un servent qui reçoit un Ping doit répondre avec un ou plusieurs
Pong.
– Pong [0x01] : C’est la réponse à un Ping, elle contient l’adresse IP et le numéro
du port du servent, ainsi que le nombre et la quantité de données partagées.
Avec :
– Port : Le port sur lequel le pair est en attente.
– Adresse IP : L’adresse IP par laquelle le pair est atteignable.
– Query [0x80] : Est utilisé pour la recherche d’un fichier, il a la forme suivante :
Avec :
– Vitesse : Débit minimum pour qu’un pair répond (ko/s)
– Critère : Chaîne de caractères terminée par 0x00.
Un nœud (peer ) se connecte sur le réseau Gnutella, il commence par rechercher tous
les nœuds Gnutella présents, pour cela il transmit une trame d’identification (ping) à
tous ses voisins qui eux-mêmes le transmettons à leurs voisins. Ces envois sont encapsu-
lés dans une trame TCP. Le mécanisme de recherche joue sur le TTL (Time To Live)
de la trame pour borner le nombre de sauts des messages. A chaque nœud du réseau,
le TTL est décrémenté et lorsqu’il devient égal à zéro, la retransmission est stoppée.
Un mécanisme permet d’éviter les boucles causées par les transmissions successives,
lorsqu’une trame est reçue, elle est stockée pendant un court laps du temps. Si le nœud
reçoit pendant ce laps du temps une trame identique, il la rejette, car elle est déjà trai-
tée. Lorsqu’un nœud est identifié, il envoie à l’émetteur une trame de réponse (pong).
La figure 1.3 met en evidence le mécanisme de routage dans Gnutella.
D
C
B TTL=1
A
TTL=2 E
TTL=3
F
X I TTL=1
TTL=2 TTL=2
G
TTL=1
K J
H
Le nœud X cherche la donnée D1, il transmit sa requête vers ses voisins, si un voisin
ne possède pas la donnée recherchée, il continue de transmettre la requête vers ses voi-
sins et ainsi de suite, jusqu’à l’expiration de la requête (TTL=0 ). Tous les nœuds qui
ont reçu la requête et qui possèdent la donnée, la retransmettent. Le nœud qui a émis
la requête utilise le protocole HTTP pour télécharger les données trouvées. Le coût de
la recherche dans Gnutella est O(n) ce qui limite la scalabilité dans ce système [22]. la
figure 1.4 met en evidence le mécanisme de recherche dans Gnutella.
Dans l’exemple décrit sur la figure 1.4, le nœud X recherche la donnée D1, il envoie
D
C
B
A Rech D1
Rech D1 E
Rech D1
Resul G F
X I Rech D1
Resul G,K
Resul G
Rech D1
Rech D1 Resul K G
Rech D1
J Liens entres les noeuds
K
Requête
H
Réponse
Resul K
une requête Query à tous ses voisins, après l’expiration de TTL (TTL = 0 ), la donnée
est trouvée dans les nœud K et G, ces derniers répondent par des Query Hit, le nœud
X envoie un Push aux deux nœuds K et G en utilisant leurs adresses IP retournées
dans Query Hit.
Dans le protocole Gnutella, les nœuds ne gardent que les liens avec leurs voisins
dans leurs tables du routage, cela présente un inconvénient majeur lors d’une décon-
nexion involontaire (défaillance). Si par exemple dans la figure 1.5, le nœud E quitte
involontairement le réseau, alors ce dernier sera divisé en trois parties, qui ne sont pas
reliées entre elles.
D D
C C
B B
A A
E
F F
X I X I
G G
K J K J
H H
SearchRequest(s, res, rp, TTL) : Requête émet par la source s pour localiser
les ressources res, le message ne peut propager au maximum TTL peers, rp est la sé-
quence des peers qui ont reçu le message, cette séquence sera utilisée dans le chemin
inverse ramenant à la source.
Quand un peer reçoit une requête SearchRequest, il cherche en premier lieu dans
son répertoire local (LC), ensuite dans son répertoire de cache (DC). Si la ressource est
trouvée dans son répertoire local, il envoie le message RessourceFound par le chemin
Chapitre 1 : Découverte et localisation de services en mode P2P 16
Chaque peer P maintient une table de routage de plusieurs niveaux. Chaque niveau
N de la table contient une liste de voisins de P , dont les N premiers chiffres sont
communs à ceux de P , Dans la figure 1.6 chaque nœud possède un identifiant écrit
sous forme hexadécimale d’une longueur de quatre chiffres. Le nœud d’identifiant 0325
fait parvenir un message à un nœud d’identifiant 4598, il va alors consulter le premier
niveau de sa table de routage et y cherche un voisin dont le dernier chiffre est 8 (ici
Chapitre 1 : Découverte et localisation de services en mode P2P 17
le nœud B4F8 ), puis lui faire suivre ce message. A son tour, ce dernier va consulter le
second niveau de sa table de routage et cherche un voisin dont l’identifiant se termine
par 98 (ici 9098 ) et lui faire suivre le message. Ce processus se répète jusqu’à atteindre
le nœud considéré. Cette méthode de routage garantit qu’un nœud présent dans un
système de N peers peut être joint en lnb (n) itérations, avec b la base des identifiants.
B4F8 0 1 ......... E F
N1
N1 xxx0 xxx1 xxxE xxxF
N1 0325
N2 xx05 xx15 xxE5 xxF5
N1
9098 2BB8 0098 3E98 N3 x025 x125 xE25 xF25
N1 N1 N1
N4 0325 1325 E325 F325
7598 4598 1698
N1
N1 N1
Chord repose sur une topologie en anneau. Le prédécesseur d’un nœud et son suc-
cesseur dans le protocole Chord ne sont pas nécessairement adjacents dans le réseau
physique, comme il est montré sur la figure 1.7.
Internet
Réseau physique
Les systèmes P2P structurés utilisent les tables de hachage distribuées pour obtenir
des identificateurs de données et de nœuds d’une manière unique dans le réseau. Les
clés peuvent être obtenues par le hachage des noms de données et les identificateurs
des nœuds par le hachage de leurs adresses IP [10]. Dans Chord, les identificateurs se
construisent de la même manière pour les données et les nœuds, ils sont de la forme
h(x) avec h est la fonction de hachage comme par exemple SHA-1(Secure haching
Chapitre 1 : Découverte et localisation de services en mode P2P 19
Algorithm) et x est l’adresse IP du nœud concaténée avec un index d’un nœud virtuel
entre zéro et une valeur maximale.
Les algorithmes de hachage utilisent des fonctions de hachage H, pour mettre les
clés correspondent aux données dans leurs emplacements. H : K → L, où K est l’en-
semble de toutes les clés et L est l’ensemble de tous les emplacements. La clé est un
identificateur unique qui représente la donnée. Les algorithmes usuels de hachage loca-
lisent les données en un temps constant par exemple O(ln(k)) où k est le nombre de
clés dans la table de hachage.
Un exemple de fonction de hachage est SHA-1, elle peut hacher un nombre ar-
bitraire de données en L = 2160 emplacements différents . Les fonctions de hachage
doivent permettre de hacher des clés similaires en des emplacements différents [61], par
exemple dans la figure 1.8, l’emplacement de H(0 peer0 ) est indépendant de l’empla-
cement de H(0 peers0 ). Les opérations de base que doivent implementer les interfaces
d’applications avec les tables de hachage distribués (figure 1.9) peuvent être résumées
dans put(key, value), get(key), remove(key).
Chapitre 1 : Découverte et localisation de services en mode P2P 20
H (’Chord’)
Fig. 1.9 – Interface d’application pour les systèmes P2P structurés basés sur les tables
de hachage distribuées
Dans la figure 1.10, la clé K16 est localisée dans le nœud N21 et la clé K54 dans
le nœud N56. La simple connaissance du prédécesseur et du successeur permet certes
de construire une topologie en anneau, mais elle présente des performances médiocres
en terme de nombre de nœuds à parcourir pour acheminer une requête, cette valeur
Chapitre 1 : Découverte et localisation de services en mode P2P 21
N1
N56
N8
K54 Rechercher (K54)
N51
N14
N48
K16
N42
N21
N36
N32
Afin de palier à ce problème, une table de routage distribuée est adoptée dans
le protocole Chord, ainsi chaque nœud ne nécessite pas trop d’informations de routage
concernant les autres nœuds, c’est uniquement O(ln(n)). Pour un espace de clés compris
dans l’intervalle [0, 2m [, chaque nœud N se voit doter d’une entrée vers les nœuds
(appelés fingers) de clé suivant(N/2i−1 ) avec 1 < i < m. Ainsi, chaque nœud maintient
une table des successeurs de m entrées, le successeur K qui correspond à la k iemme entrée
est le premier nœud sur l’anneau qui vérifie (i + 2k − 1) mod 2n, 1 <= k <= m. Le
nombre maximum de nœuds parcourus pour acheminer une requête est alors exprimé
en O(ln(n)).
Chapitre 1 : Découverte et localisation de services en mode P2P 22
N102 N1
N70 N32
N80
71 ... 71 N70 N8 33 ... 33 N40
72 ... 73 N79 N70 34 .. 35 N40
74 ... 77 N79 N14
36 .. 39 N40
78 ... 85 N80 N52
40 ... 47 N40
dans Chord. La figure 1.12 montre qu’une requête de clé K54 est acheminée en trois
N1
N56
N8
Rechercher (K54)
N51
N14
N48
N42
N21
N36
N32
sauts, en utilisant les tables des raccourcis, alors qu’elle est acheminée en 8 sauts sans
utiliser les tables de raccourcis (figure 1.10).
Chapitre 1 : Découverte et localisation de services en mode P2P 23
Boostrap Host
2 construit
Nouveau noeud
Le protocole Chord est adapté efficacement aux arrivés et aux départs des nœuds [59].
Quand un nœud N rejoint le réseau, après avoir eu un identificateur, il doit initialiser
Chapitre 1 : Découverte et localisation de services en mode P2P 24
sa table de raccourcis (figure 1.14) de telle manière qu’elle contient m entrées, le début
de l’intervalle de la iiemme entrée doit être supérieur ou égal à N + 2i−1 et la fin de
l’intervalle doit être égale à (début de l’intervalle -1 ) de l’entrée suivante.
N1
N102
N20
N80 N8
21 ... 21
22 ... 23
N70 N14
24 ... 27
N20
28 ... 35
N52
36 ... 51 N21
N40
52 ... 83 N32
N36
84 ... 19
1. Equilibrage de charge : Chord est basé sur les tables de hachage distribuées,
qui fournissent un degré d’équilibrage de charge important.
2. Décentralisation : Le protocole Chord est purement distribué, aucun nœud
n’est important que les autres.
Chapitre 1 : Découverte et localisation de services en mode P2P 25
1.4.2 CAN
Can [47] est une infrastructure décentralisée et distribuée. Il est organisé autour
d’un espace virtuel de coordonnées cartésiennes de dimension d ( d-tore). L’espace des
coordonnées est partitionné dynamiquement entre les nœuds. La figure 1.15 montre un
exemple d’espace de coordonnées cartésiennes de deux dimensions [0, 1][0, 1] partitionné
entre six nœuds.
0.5
1.0 Les coordonnées cartésisiennes
D E F de chaque zone
Quand un nouveau nœud rejoint le réseau par l’intermédiaire d’un autre nœud qui
existe déjà dans le système (trouvé par la technique de Boostrapping [29] ), il choisit un
point P dans l’espace de coordonnées cartésiennes d’une manière aléatoire, il envoie
une requête JOIN au nœud dont lequel sa zone contient le point P . Cette zone sera
subdivisée en deux parties, l’une des moitiés sera assignée au nouveau nœud. Les deux
nœuds mettent à jour les listes de leurs voisins.
Dans un espace de dimension 2 (figure 1.16), une zone est subdivisée premièrement
suivant l’axe des X, ensuite suivant l’axe des Y .
1.0 1.0
C C
0.75 A 0.75 A
D D
0.5 0.5
B E B E F
les coordonnées cartésiennes de chaque zone les coordonnées cartésiennes de chaque zone
A (0.0 −− 0.5 , 0.5 −− 1.0) A (0.0 −− 0.5 , 0.5 −− 1.0)
B (0.0 −− 0.5 , 0.0 −− 0.5) B (0.0 −− 0.5 , 0.0 −− 0.5)
C (0.5 −− 1.0 , 0.75 −− 1.0) C (0.5 −− 1.0 , 0.75 −− 1.0)
D (0.5 −− 1.0 , 0.5 −− 0.75)
D (0.5 −− 1.0 , 0.5 −− 0.75)
E (0.5 −− 0.75 , 0.0 −− 0.5)
E (0.5 −− 1.0 , 0.0 −− 0.5)
F (0.75 −− 1.0 , 0.0 −− 0.5)
(a)
(b)
Fig. 1.16 – (a) : espace de coordonnées cartésiennes avant que le nœud F arrive, (b) :
espace de coordonnées cartésiennes après que le nœud F arrive
Quand un nœud quitte le réseau (figure 1.17), la zone qui été occupée par ce nœud
sera occupée par un de ses voisins. Une mise à jours des listes de voisins est nécessaire
pour ces derniers .
Chapitre 1 : Découverte et localisation de services en mode P2P 27
1.0 1.0
C
0.75 A 0.75 A C
D
0.5
0.5
B E F B E F
Fig. 1.17 – (a) : espace de coordonnées cartésiennes avant que le nœud D quitte, (b) :
espace de coordonnées cartésiennes après que le nœud D quitte
1.4.2.3 Le routage
Chaque nœud dans CAN maintient une table de routage qui contient les identifica-
teurs des nœuds adjacents et leurs adresses IP dans un espace de dimension d.
Comme il y a plusieurs chemins entre deux peers (ex : C et N dans la figure 1.18),
même si un peer intermédiaire (dans le chemin reliant C et N ) quitte le système, il y
aura toujours un autre chemin qui relie ces deux nœuds.
A B C D
E F G H
I J K L
M N O P
Parmi les chemins qui relient les nœuds C et N dans La figure 1.18 on trouve :
C->B->F->J->N C->G->K->O->N C->D->H->G->K->J->N
C->G->F->J->N C->G->K->O->N C->D->H->L->P->O->N
C->G->K->J->N C->G->K->O->N C->D->H->L->K->O->N
C->G->K->O->N C->D->H->L->K->J->N C->D->H->G->K->O->N
C->D->H->G->F->J->N ..............
Chapitre 1 : Découverte et localisation de services en mode P2P 28
1.4.3 Pastry
Pastry [49] est un réseau recouvrant purement décentralisé, scalable et s’auto-
organise en anneau. Chaque nœud ou donnée dans Pastry à un identificateur unique de
128 bits obtenu d’une manière aléatoire lors de la première entrée dans le système, en
basant sur son adresse IP ou sa clé publique et en utilisant un mécanisme de cryptogra-
phie et de hachage. Ce mécanisme permet de générer des identificateurs uniformément
distribués sur l’espace des identificateurs. Pastry est basé sur un mécanisme de routage
fondé sur la notion de préfixe/suffixe.
x312 3712
xxx3 xx32
xx42 x412 4712
xxx4
x512 5712
xxx5 xx52
xx62 x612 6712
xxx6
xxx7 xx72 7712
XLRU : Chaque nœud possède une liste ordonnée de voisins. Pour chaque voisin
répondant d’une manière correcte à une requête, celui ci est placé en tête de la liste,
ainsi, par la suite, chaque requête est d’abord envoyée au voisin en tête de la liste, puis
au suivant et ainsi de suite.
XHistorique : La méthode historique choisit les x nœuds les plus utiles durant
une plage de temps déterminée.
XPopularité : Cette solution est une méthode hybride des deux méthodes précé-
dentes. Elle permet d’obtenir des listes sémantiques contenant la plupart du temps les
nœuds de même type, en conservant la simplicité de LRU.
X La première méthode est basée sur un regroupement explicite des nœuds au sein
du réseau P2P. Afin d’améliorer l’efficacité, celle ci introduit le concept du réseau recou-
vrant sémantique SON (Semantic Overlay Network ). Au dessus d’un réseau recouvrant
existant, les nœuds sont regroupés en plusieurs SONs en fonction de leurs intérêts com-
muns. Un nœud peut appartenir à plusieurs SONs, permettant ainsi à un utilisateur de
ne pas se limité à un seul thème.
1.8 Conclusion
Dans ce chapitre, on a fait un tour d’horizon sur les systèmes P2P les plus connus,
on les a classifiés dans deux grandes classes, les systèmes non structurés comme Naps-
ter, Gnutella, etc, les systèmes structurés comme Pastry, CAN, Chord. On a énuméré
leurs avantages et leurs inconvénients. Notons qu’il y a aussi d’autres systèmes P2P qui
ne sont pas cités dans ce mémoire comme : KazaA, Freenet, Morpheus, Kademlia[32],
Edutella[42], ...
Les systèmes Pair à Pair (P2P ) sont confrontés à des problèmes liés à leurs tailles, leurs
sensibilités à la charge et leurs dynamismes. En effet, ces systèmes doivent potentielle-
ment pouvoir gérer des millions de machines en restant efficaces, malgré des connexions
et des déconnexions très fréquentes. Les recherches scientifiques dans les réseaux P2P
sont classifiées suivant trois grands axes :
1. Les plateformes P2P : Elles sont destinées principalement pour régler le pro-
blème d’interopérabilité dans les systèmes P2P, ainsi que pour faciliter l’implé-
mentation des applications P2P, JXTA (Voir chapitres 3, 4 et 5 ) est un exemple
de plateforme P2P .
2. Les algorithmes P2P : Comme le réseau Internet augmente sans cesse à une
grande accélération, l’architecture client-serveur commence à avoir des problèmes
de scalabilité. Les algorithmes P2P sont devenus intéressants au fur et à mesure
de cette augmentation, on peut citer à titre d’exemple CAN, Chord.
3. Les applications P2P : Une application P2P est un algorithme P2P implé-
menté au dessus d’une plateforme P2P.
En outre, les réseaux P2P ne doivent pas être systématiquement associés aux appli-
cations de partage de fichiers, ces réseaux sont actuellement utilisés dans de nombreux
autres domaines tels que : le travail collaboratif ou le calcul distribué . Si l’on considère
l’évolution actuel de l’informatique, avec les réseaux ad hoc, les réseaux sans fils, la
mobilité, l’accroissement de la puissance des machines et de la bande passante, il nous
semble que dans ce contexte, les réseaux P2P prennent leur places et occupent une
partie importante du trafic réseau.
Résumé : un problème fondamental qui confronte les applications P2P est la décou-
verte et la localisation efficaces des nœuds qui stockent des données particulières. Dans
ce chapitre on a proposé I4N (Internet à Quatre Niveaux ) : Nouveau protocole P2P
scalable et distribué qui traite ce problème.
Mots clés : P2P, protocole de routage P2P, systèmes P2P structurés, I4N.
2.1 Introduction
Les réseaux P2P sont classifiés en deux grandes classes. La première classe est les
réseaux P2P non structurés comme Gnutella [24] dans laquelle la recherche se fait
par la technique de diffusion (flooding), en utilisant les TTLs et donc la recherche de
ressources n’est pas déterministe. Une requête peut échouer même si la donnée cherchée
est présente dans le système. La deuxième classe est les réseaux P2P structurés, dans ce
type de système, les nœuds sont organisés suivant une architecture bien définie comme
Chord (Anneau)[60], CAN (Tore)[47]. Dans ce chapitre on va proposer un système
P2P, scalable à l’échelle de l’Internet et complètement décentralisé, structuré suivant
des anneaux à plusieurs niveaux.
32
Chapitre 2 : Internet à Quatre Niveaux (I4N) 33
2.2 Motivations
Le routage dans les réseaux P2P est un routage au niveau applicatif et par consequent,
le nombre du sauts correspondant dans la couche réseau sera plus grand. L’objectif dans
le routage P2P est de diminuer au maximum possible le nombre de sauts.
Les ressources à leurs tours, sont identifiées par des identificateurs uniques générés
par les tables de hachage distribuées. La clé d’une ressource est composée de quatre
parties de la forme (A.B.C.D).
Les nœuds appartenant à deux anneaux de niveaux différents sont les nœuds appar-
tenant à l’ensemble Z = X ∩ Y tel que :
X = { l’ensemble des nœuds appartenant à l’anneau de niveau i , leurs adresses IP
sont de la forme P1.Pi.P3.P4 } (ici i =2 ).
Y= { l’ensemble des nœuds appartenant à l’anneau de niveau i + 1, leurs adresses
Chapitre 2 : Internet à Quatre Niveaux (I4N) 34
Chaque nœud maintient une table de routage qui contient les adresses IP et les
numéros du port des nœuds qui lui sont reliés logiquement et qui lui sert pour la
recherche de ressources. Cette table contient au maximum 2 ∗ ln(256) entrées, ln(256)
entrées pour chaque niveau, car chaque peer peut appartenir à deux anneaux de niveaux
successifs.
N90
N72
N74 N69
Niveau 1
N81 N62
N50
N99
N60
N41
N50 N66
Niveau 2
N38
N29
N111
N120 N67
N31
Niveau 3
Niveau 4 N61
N210
N200 N21 N52
N90
finger table N50/N52
N50 + 1 N60
N72 N50 + 2 N60
N74 N69 N50 + 4 N60
Niveau 1
N50 + 8 N60
Niveau 1 N50 + 16 N69
N81 N62
N50
Niveau 2
N52 + 2 N60
N60 N52 + 4 N60
N41 N52 + 8 N60
N52 + 16 N29
N50 N66
Niveau 2
N38
N29
N111
N120 N67
N31
Niveau 4
Niveau 3 Niveau 4
N61
N210
N200 N21 N52
N20
N3
N3
N3
N2
N2 N4
N3
N3
N1
N2
N4
N3
N2
N3
N3
N4 N3
N4
N4
N4
2.13 Conclusion
Les protocoles P2P de la troisième génération basés sur les tables de hachage distri-
buées, possèdent plusieurs avantages par rapport à ceux de la deuxième génération et
ceux de la premiere génération, qui sont basés respectivement sur la diffusion et l’index
centralisé, car, le coût de recherche est considérablement diminué. Par nature, les DHTs
maintiennent un équilibrage de charge, mais elles sont difficiles à mettre en œuvre. L’as-
pect sémantique est très loin d’etre implementé avec ces dernières. Le protocole I4N
(Internet à Quatre Niveaux ) que nous avons proposé dans ce chapitre, divise le réseau
des réseaux en des sous réseaux imbriqués, il est équivalent au protocole Chord en coût
P Q
de recherche car ln(n) = (ln(ni )) tel que n = (ni ). Il utilise les DHTs pour générer
uniquement les clés de ressources, celles des nœuds sont construites à base des adresses
IP.
Chapitre III
3.1 Introduction
Les applications P2P sont en pleine expansion et les programmes P2P actuels im-
plémentent généralement une seule fonction (service réseau), par conséquent, elles sont
incapables d’échanger directement des données avec d’autres applications similaires (par
exemple eDonkey avec KazaA ). Ainsi, les applications P2P ne peuvent fonctionner que
sur une seule plateforme, ce qui est contradictoire avec le principe des systèmes P2P.
C’est pour ces raisons que plusieurs plateformes P2P ont été proposées.
3.2 XtremWeb
XtremWeb est une plateforme expérimentale de global Computing à l’université
paris-sud. L’idée derrière le global computing est de récupérer le temps libre des ordi-
nateurs connectés à Internet, ces ordinateurs étant repartis à travers le monde. L’ob-
jectif principal de XtremWeb est la conception et le développement d’un environne-
ment de calcul pair à pair et d’exécuter d’une manière complètement distribuée de
très grosses applications pluridisciplinaires. XtremWeb est destinée à des applications
de types SPMD1 (Single Program Multiple Data), ce type d’applications est aisé à
la distribution. On divise le programme en des morceaux de codes indépendants et
on les distribue chacun sur un peer. Avec XtremWeb, les participants ne réalisent pas
1
SPMD est une sous classe de SIMD
39
Chapitre 3 : Les différentes plateformes P2P 40
seulement la tache de calcul, mais ils peuvent aussi proposer leurs applications qui né-
cessitent une puissance de calcul pour être distribuées.
XtremWeb nécessite sur chaque peer un ensemble de serveurs et d’applications (Ap-
pache, PHP, MySQL). Ces besoins logiciels sont difficilement compatibles avec des
petites machines comme les PDAs.
XtremWeb peut être utilisée de deux manières différentes :
3.3 ProActive
ProActive est une bibliothèque JAVA pour le calcul parallèle, distribué et concurrent,
prenant en charge la mobilité et la sécurité sur des grilles de calcul. Elle est développée
à l’université Sophia Antipolis de Nice, elle offre un ensemble de primitives et des APIs
de programmation pour faciliter la mise en œuvre des applications distribuées sur des
LANs, des clusters, ainsi que sur des grilles de calcul.
ProActive repose sur le modèle MIMD (Multiple Instruction Multiple Data), elle
est basée sur le concept d’Objet Actif. Elle s’appuie aussi sur le MOP(Meta Object
Protocol ) et utilise la librairie standard JAVA RMI(Remote Method Invocation) comme
une couche de transport portable.
3.4 JXTA
La plupart des applications P2P, actuellement existantes, sont dédiées à une seule
fonction ou une seule classe de problèmes, de plus, elles ne peuvent s’exécuter que sur
un seul type d’architecture et elles ne permettent pas de partager directement leurs
Chapitre 3 : Les différentes plateformes P2P 42
ressources avec les autres. C’est dans le cadre de cette problématique que SUN Micro-
system a créé le projet JXTA [37].
Le but de projet JXTA est de créer une plateforme P2P qui permet de construire
simplement, facilement et efficacement un ensemble de services d’applications distri-
buées pour tout dispositif qui pourrait être un pair. JXTA permet aux développeurs de
concentrer sur le développement de leurs applications en créant des logiciels interopé-
rables .
JXTA est faite pour que toutes ses applications puissent s’exécuter sur n’importe
quelle plateforme (PC, Serveur, PDA, Station de travail, téléphone,...). La philosophie
de JXTA est de fournir les mécanismes de base et de laisser les choix d’implémentation
des applications aux développeurs. Pour ce faire JXTA s’appuie sur des standards tels
que XML, JAVA.
3.5 Conclusion
Différents protocoles P2P ont été proposés dans la littérature, chacun d’eux a ses
avantages et ses inconvénients. L’inconvenient principal de ces protocoles dans les ré-
seaux P2P est qu’ils sont indépendants les uns des autres, ils sont incapables d’échanger
des services, chacun d’eux crée sa communauté d’utilisateurs. Pour ces raisons, plusieurs
plateformes P2P ont été proposées ces dernières années, malheureusement, la majorité
de ces plateformes sont dédiées à une classe de problèmes limitée, comme par exemple
ProActive pour le calcul global et le Grid computing. La plateforme la plus généraliste
est JXTA, dans laquelle la plupart des services peuvent être implémentés, comme le
partage de fichiers, la messagerie instantanée , la téléphonie IP, le calcul distribué, etc.
Chapitre IV
JXTA
4.1 Introduction
Le vocabulaire Peer to Peer (P2P ) est aujourd’hui un des mots les plus à la mode.
Il n’est pas un nouveau concept, il existe depuis l’apparition de l’Internet en 1970 [18].
Ces dernières années, il a attiré l’attention des industrielles et des universitaires. Cette
nouvelle technologie est de plus en plus utilisée, elle constitue une méthode efficace
de partage de ressources entre membres d’une même communauté. Par ailleurs, en
plus des utilisateurs grand public les plus connus (partage des fichiers et messagerie
instantanée), cette technologie peut résoudre un ensemble de problèmes liés à l’utili-
sation optimale des ressources disponibles dans les réseaux et les entités constituant
ceux-ci. Le P2P peut être défini comme étant le partage des ressources par l’échange
direct entre peers. Cependant, aujourd’hui, les implémentations d’architectures P2P
sont non-intérropérables et en générale sont limitées à des plateformes dédiées. C’est
dans l’optique de supprimer ces défauts que Sun Microsystem a proposé le framework
peer-to-peer Open Source JXTA.
43
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 44
4.2.1.1 Interopérabilité
Plusieurs systèmes peer-to-peer ont été conçus pour un seul type de service, comme
à titre d’exemple Napster pour le partage de musique, Gnutella pour le partage des
fichiers, AIM pour la messagerie instantanée, Skype pour la téléphonie IP, etc. Chaque
système construit sa propre communauté d’utilisateurs dans le réseau des réseaux. Pour
qu’un peer profite des autres communautés dont il n’appartient pas, il faut qu’il soit
capable de supporter les différentes implémentations des réseaux peer-to-peer. JXTA
permet à tous les peers de toutes les communautés de communiquer entre eux grâce à
une même plateforme P2P.
Citation : "le projet JXTA a pour but d’offrir au monde de P2P ce que le browser
a apporté à Internet".
4.2.1.3 Ubiquité
Elle matérialise le désir que le framework JXTA soit implémentable sur n’importe
quel périphérique doté d’un cœur digital : Des sensous, l’électronique grand public, les
PDAs, les GSMs, les routeurs réseaux, les ordinateurs du bureau et les serveurs, ...
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 45
4.2.1.4 Sécurité
JXTA utilise un identificateur UUID de 128 bits pour référencer n’importe quelle
entité dans le réseau (Peer, Advestissement, Service, ...). Toutes les ressources dans
JXTA utilisent un UUID unique, l’unicité de UUID est indépendante du temps et de
l’emplacement [20]. Ils existent deux identificateurs spécifiques : null et NetPeerGrou-
pID.
Un exemple d’identificateur d’un peer est :
urn :jxta :uuid-59616261646162614A78746150325033F3BC76FF13C24414CBC0AB6
63666DA53903.
Un exemple d’identificateur de pipe est :
urn :jxta :uuid-59616261646162614E504720503250338E3E786229EA460DADC1A17
6B69B731504
4.2.2.2 Peers
Le peer peut représenter n’importe quelle entité dans le réseau, il peut être un
processeur, processus, machine, routeur, utilisateur, etc. Ils existent plusieurs types de
peers : un simple peer, RendezVous peer, peer Router, Relay peer, etc. Un peer JXTA
charger les classes de charger le groupe Adv publier charger charger charger lier
la plateforme JXTA
instancier le groupe localement les pipes adv le peer adv les pipes adv
rejoindre le goupe l’extrémité
par defaut demande d’adhésion publier ouvrir obtenir les obtenir les
ouvrir listener sockets joindre le groupe à distance input end de sortie
peers éloignés
etc pipes éloignées
nécessite d’effectuer une série d’opérations pour joindre et participer dans le réseau
JXTA [19] (figure 4.1) :
1. Boostrap dans la plateforme JXTA
2. Joindre un peerGroup
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 46
4.2.2.3 Advertissement
C’est un document XML structuré pour nommer, décrire et annoncer les ressources
comme le peer, peerGroup, pipe, etc. Toutes les ressources réseaux sont des advertisse-
ments. La technologie JXTA définit un ensemble d’advertissements de base [16].
4.2.2.4 PeerGroup
C’est une entité virtuelle, constituée d’une collection de peers qui partagent les
mêmes intérêts. Les peerGroups subdivisent le réseau en des régions sécurisées qui ne
respectent pas les frontières physiques du réseau. les peers s’auto-organisent dans un
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 47
2. Les services des adhérents (Membership service) : Ils sont utilisés par les
membres courants de peerGroup pour accepter ou rejeter une demande d’adhé-
sion au peerGoup (c’est-à-dire pour permettre à un nouveau peer de joindre un
peerGoup). Les peers voulant joindre un peerGroup doivent découvrir au moins
un membre de ce dernier, puis lui demandent de se joindre. Cette demande est
acceptée ou rejetée par l’ensemble collectif de tous les membres courants de ce
peerGoup ou par un représentant de ce dernier.
3. Service d’accès : les services d’accès sont utilisés par les peers pour valider les
requêtes provenant d’un autre peer. Le peer qui reçoit la requête, vérifie si celui
qui a envoyé la requête est autorisé ou non (le service d’accès est limité à quelques
actions pour quelques peers dans le peerGoup).
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 48
4. Le service de pipe : les services de pipe sont utilisés pour créer et gérer les
connexions entre les membres d’un peerGroup.
5. Resolver service : ce type de services est utilisé pour envoyer des requêtes
génériques aux autres peers. La figure 4.2 est un exemple de resolver service.
Peer Requête 1
H1 Réponse 1
H2 Requête 2
Resolver service
6. Monitoring service : ils sont utilisés pour autoriser un peer de surveiller les
membres d’un même peerGroup.
4.2.2.5 Module
C’est une abstraction utilisée pour représenter une pièce du code afin d’implementer
un comportement dans la plateforme JXTA. Un module peut être une classe JAVA, un
fichier JAR, DLL, un ensemble de messages XML ou un script. Il y a trois types de
modules dans la plateforme JXTA :
4.2.2.6 Pipe
Input End
Peer D
Les pipes JXTA unicast Les pipes JXTA propagées
4.2.2.7 Message
L’information à transmettre à l’aide des pipes est empaquetée comme message (figure
4.4). Les messages sont les unités d’échange de données entre les peers, ils définissent une
enveloppe pour transférer n’importe quelle genre de données. Les peers communiquent
avec des messages XML ou binaires. Les liens entre les nœuds représentent les canaux
de communication (pipes), ils peuvent être de type 1 à 1, 1 à N, N à 1 ou N à N.
Couche Application
JXTA community applications
JXTA
Couche Service Schell
JXTA community services
Couche Noyau
PeerGroup Pipes PeerMonitoring
Sécurité
Cette couche encapsule les primitives minimales et essentielles qui sont communes
à la gestion des réseaux P2P, y compris les peers, les peeerGroups, la découverte, la
communication, la surveillance ainsi que des primitives associées à la sécurité. Elle offre
les mécanismes de base tels que : Les PeerGroups, les Pipes et le Peer Monitoring.
Elle permet d’étendre les mécanismes de base offerts par la couche noyau, donc elle
les rend de plus haut niveau. Les principaux services proposés dans cette couche sont :
Les mécanismes de recherche, d’indexation, de partage de ressources, de stockage, de
traduction de protocoles et d’authentification.
Au sein de cette couche, les applications seront développées à base des services
disponibles dans la couche service accédant aux mécanismes de base fournis dans la
couche noyau, elle inclut la messagerie instantanée et les systèmes d’E-mail de P2P.
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 51
PDP est utilisé par le peer pour publier ses propres ressources et découvre celles
des autres peers ou peerGroups. Les ressources sont décrites et publiées par des adver-
tissements. PDP constitue le protocole de découverte par défaut du WorldPeerGroup.
Il fournit des mécanismes de base permettant la découverte des advertissements tout
en servant de support à la conception éventuelle du service de découverte spécifique au
groupe et ayant une meilleure connaissance de la topologie du groupe. PDP utilise PRP
pour envoyer ses requêtes et recevoir les réponses, il travaille en mode "Best effort"1 .
PRP permet d’envoyer une requête à un ou plusieurs peers et recevoir une ou plu-
sieurs réponses à une requête. Les requêtes peuvent être dirigées à tous les peers du
PeerGroup (Broadcast) ou à des peers spécifiques à l’intérieur d’un PeerGroup (Multi-
cast).
Le Rendez vous protocol est utilisé par PRP et PBP pour propager les messages.
endpoint en fonction des advertissements recus ou envoyés et cela, quel que soit le type
de couche transport du peer endpoint (HTTP, TCP, UDP,...).
Chacun des protocoles JXTA est indépendant des autres, un peer n’a pas besoin
d’implementer tous ces protocoles pour être un peer JXTA, il met en application seule-
ment les protocoles qu’il va utiliser. Par exemple, un peer peut utiliser un ensemble
préconfiguré de peers pour envoyer ses messages, donc il n’a pas besion de mettre en
application le protocole ERP. Un peer peut décider de cacher des annonces découvertes
par le protocole PDP pour une utilisation postérieure, car ceci peut conduire à une
optimisation non négligente devant une deuxième recherche.
Les deux participants opèrent d’une manière symétrique. Les séquences de messages
suivent les quatre phases suivantes : Ouverture de la connexion, message Welcome,
message(s) et fermeture de la connexion.
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 53
Le transport de messages via HTTP [13] est logiquement divisé en deux fonctions :
l’initiateur et le récepteur. L’initiateur peut établir des raccordements, tandis que le
récepteur peut accepter des raccordements.
C’est par l’envoi en multicast vers tous les peers dans le LAN.
Comme le Shell UNIX, le Shell JXTA permet par une simple interface de ligne
de commandes, l’accès interactif à la plateforme JXTA. Contrairement au Shell Unix
où les commandes sont conçues pour être exécutées dans un environnement local, les
commandes de Shell JXTA sont conçues pour être exécutées dans un environnement
réseau [16]. En utilisant l’interpréteur de commandes Shell, les utilisateurs peuvent
travailler de façon interactive avec la plateforme JXTA pour publier, rechercher et exé-
cuter des codats 2 , découvrir des nouveaux peers ou peerGroups, créer des pipes pour
connecter deux peers, envoyer et recevoir des messages.
Les opérations de base dans la plateforme JXTA ont été implementées par des
commandes telles que : Shell, cat, env, exit, groups, leave, newpipe, peers, rev, man,
etc. La commande man permet d’énumérer les différentes commandes de JXTA avec
des indications d’utilisation.
2
codat : données de n’importe quel contenu
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 55
Toutes les commandes de Shell sont dans le package net.jxta.impl.shell.bin. Pour une
nouvelle commande, le fichier de la classe JAVA correspondante doit être copié dans
le repertoire Shell bin class. Il n’est pas nécessaire de recompiler le Shell JXTA pour
prendre en compte la nouvelle commande [36].
1111
0000
Internet
0000
1111
Peer C
Relay
Firewall
Peer B
Peer A
La figure 4.6 décrit un scénario de routage de messages à travers les firewalls. Les
peers A et B veulent communiquer entre eux, mais le firewall ne permet pas d’établir
une connexion directe. Pour cela, le peer A contacte le peer C en utilisant un protocole
qui permet de pénétrer le firewall comme HTTP. De sa part, le peer C contacte le peer
B en utilisant un protocole comme TCP/IP, par conséquent une connexion virtuelle
sera établie entre le peer A et le peer B par l’intermédiaire de peer C.
4.3 Conclusion
Les architectures P2P précédemment décrites constituent chacune un système dis-
tinct, incapables de communiquer entre eux. Au vue de ce constat, certaines entreprises,
telle que Sun Micro System ont entrepris des efforts de standardisation des protocoles
de communication, indépendants des systèmes d’exploitations et des langages de pro-
grammation comme JXTA.
JXTA est une plateforme de programmation réseau, elle est destinée à être la fon-
dation des systèmes peer-to-peer, elle est définie comme étant un ensemble de six pro-
tocoles. Cette technologie est aussi indépendante des protocoles de transport (TCP/IP,
HTTP, ...), des systèmes d’exploitation (Linux, Windows, Solaris,...), ainsi que des
Chapitre 4 : Les Réseaux P2P et la technologie JXTA 57
JXTA s’appuie sur des standart ouvert tels que XML, JAVA et sur les concepts
qui font d’UNIX un puissant et fléxible systéme d’exploitation : Shell avec commandes
intéroperables, ainsi que l’utilisation de pipes pour accomplir des taches complexes.
Chapitre V
grande échelle
5.1 Introduction
La plateforme JXTA est un ensemble de protocole P2P généralisés et open sources,
qui permettent de faire communiquer n’importes quels appareils dans le réseau (PDA,
PC, Serveur, ...). C’est un réseau ad hoc, les peers peuvent joindre ou quitter le réseau
JXTA en n’importe quel moment. Comme la majorité des applications dans les réseaux
P2P, JXTA à ses propres méthodes de découverte et de localisation de services [4].
58
Chapitre 5 : Performance de la plateforme JXTA à grande échelle 59
Requête
Internet
JXTA RDV
JXTA peer
Requête multicast
JXTA peer
JXTA RDV
JXTA RDV
1. JXTA Search Information Providers : C’est une entité qui peut répondre à
une requête composée par le producteur, elle est présentée en QRP, elle peut être
un peer, un serveur web, ...
2. JXTA Search Consumers : C’est une entité qui peut envoyer une requête en
QRP. Un consommateur peut être un peer, un serveur web avec une interface
client HTTP. Il y a deux types de peers consommateurs dans le réseau JXTA
search : JXTA peer consommateur pur et peer web consommateur [46]. la diffé-
rence entre les deux, est que JXTA peer consommateur peut envoyer directement
des requêtes à n’importe quels peers JXTA producteur (les hubs sont inclus) et
reçoit directement les réponses de ces peers. Par contre, le peer web consommateur
doit utiliser un hub comme médiateur pour accomplir les opérations de recherche
et de découverte.
3. JXTA Search Hub : C’est un mécanisme qui facilite le routage des requêtes
Chapitre 5 : Performance de la plateforme JXTA à grande échelle 60
SGBD
Internet Serveur Web
Station de travail PC
• La structuration : Toutes les requêtes dans JXTA sont construites à l’aide des
messages XML.
• L’extensibilité : Des queryspace (voir section 5.5.2) peuvent être utilisées dans
le réseau de recherche JXTA, il n’ y a aucun besoin de centraliser la gestion de
ces queryspaces, simplifiant ainsi la collaboration ad hoc.
• La scalabilité : Le réseau JXTA est conçu pour supporter des millions d’uti-
lisateurs (producteurs et consommateurs) qui peuvent effectuer des milliards de
transactions par jour [66], supportant ainsi la scalabilité .
Chapitre 5 : Performance de la plateforme JXTA à grande échelle 62
¨ Queryspace : Une Queryspace est utilisée pour définir la structure d’une re-
quête valide en XML, car les données stockées sont de natures différentes. Elle
est destinée pour faire la coordination entre le producteur et le consommateur.
Queryspace doit incorporer les informations suivantes :
¨ Query routing (routage des requêtes) : Les requêtes sont routées vers les
producteurs appropriés par l’envoi des messages XML au dessus de HTTP. Le
routeur envoie toutes les requêtes et attend les réponses, il surveille continuelle-
ment les producteurs pour déterminer la disponibilité et la fiabilité.
¨ JXTA search Consumer service : C’est des services qui envoient des requêtes
écrites en QRP au hub (ou directement au JXTA search provider ) et attendent
des réponses en QRP. Le service consommateur analyse la réponse pour la pré-
senter à l’utilisateur final ou l’application.
Chapitre 5 : Performance de la plateforme JXTA à grande échelle 65
¨ JXTA search registration service : C’est des services qui envoient des re-
quêtes au hub pour la registration et mettent à jour le fichier d’enregistrement
pour le producteur.
¨ JXTA search Hub service : C’est des services qui sont responsables de rou-
tage des requêtes de consommateur vers le producteur. Le Hub service accepte
les requêtes, les résout aux fournisseurs appropriés, gère leurs routage vers les
producteurs appropriés et envoie les résultats assemblés aux consommateurs de-
mandeurs. Le hub service est constitué de deux composantes :
1. JXTA search router : C’est un software qui route et gère les connections
des requêtes, collecte les résultats et les retourne aux consommateurs.
2. JXTA search resolver : C’est un software qui envoie les requêtes aux
producteurs en utilisant un moteur de recherche à texte integral, il classe les
meta-données indiquées par les fournisseurs durant la registration.
Chapitre 5 : Performance de la plateforme JXTA à grande échelle 66
requête registration de
producteur vers le Hub
requête pour
JXTA search
registration de fichier
Resolver
JXTA imput
JXTA search Pipe JXTA
JXTA JXTA
provider Search
peer JXTA output peer Hub
Service
Pipe
JXTA search
Router
Requête
JXTA JXTA search
consumer réponse
peer
Service
5.6 Conclusion
L’architecture de la plateforme JXTA est très complexe, dont laquelle le réseau est
constitué de plusieurs types de peers (peer simple, rendez-vous peer, peerGoup, edge-
peer, ...). La recherche peut se faire de plusieurs manières. Tous ces aspects doivent être
pris en compte pour une bonne évaluation de performances de cette plateforme.
Chapitre VI
6.1 Introduction
La téléphonie Internet connue aussi sous le nom "la téléphonie sur IP" complémente
et remplace peu à peu la téléphonie classique [53]. La téléphonie Internet est la livraison
en temps réel de la voix et probablement d’autres types de données et de multimédia
entre deux parties ou plus à travers le réseau, en utilisant les protocoles internet. Le
problème principal est l’efficacité et la rapidité de transmission de la voix et de la vidéo.
Internet offre une infrastructure globale permettant de réaliser quasiment tous les
moyens de communications que nous connaissons actuellement (téléphone, fax, ...). En
comparaison, le RTC (Réseau Téléphonique Commuté) ne permet pas une grande flexi-
bilité, car il repose énormément sur des technologies propriétaires peu adaptées à une
utilisation autre que celles prévues au départ. Par opposition, Internet et sa composi-
tion autours de standards ouverts (tel que TCP/IP, HTTP,...) offre une infrastructure
généraliste et flexible apte à un grand nombre d’utilisations dont beaucoup n’ont pas
été prévues au départ.
Le transport de la voix sur un réseau IP et sur le RTC sont deux opérations radi-
calement différentes. Sur le RTC, la voix est acheminée sous forme d’un flux constant,
alors que sur le réseau IP, ce n’est pas de tout le cas. Le transport sur ce dernier se
fait en découpant la voix en paquets au départ, à envoyer ces paquets avec le protocole
adéquat sur le réseau IP et a tout reconstitué à l’arrivée.
67
Chapitre 6 : La téléphonie Internet en mode P2P 68
La téléphonie Internet peut être vue comme une application basée sur une archi-
tecture P2P, où les participants s’auto-organisent dans le système P2P, localisent et
communiquent avec d’autres participants [57].
– La perte de paquets : La voix supporte bien la perte des paquets par rapport
à d’autres applications.
Chapitre 6 : La téléphonie Internet en mode P2P 69
Aquisition Paquétisation
Numérisation Codage
audio RTP
Internet
Recouvrement des
paquets perdus
Ordinateur
IP
Téléphone
Ethernet
Passerelle
PABX
RTC
Téléphone
IPphone
La couche physique peut être un réseau local Ethernet, une ligne téléphonique (V.90)
en mode point à point (PPP ), ATM, réseau Ad Hoc (802.11),...
Le protocole Internet (IP ) est utilisé dans cette couche pour router les paquets dans
le réseau à leurs destinations, il travaille en mode "best effort".
Cette couche utilise deux octets pour le numéro du port afin de délivrer le da-
tagramme à la destination. Quelques ports sont dédiés à des protocoles particuliers.
Chapitre 6 : La téléphonie Internet en mode P2P 71
Couche
H.323 SIP RTP DNS DHCP
Application
Couche
Transport TCP UDP
Couche
IP
Internet
AAlx PPP
Couche
ATM V.90 Ethernet 802.11
Physique
Ces ports sont appelés numéro du port "bien connus", par exemple (HTTP utilise le
port bien connu 80, tandis que SIP utilise les numéros du ports bien connus compris
entre 49152 et 65535 ). Trois protocoles sont utilisés dans la couche transport : TCP
(Transmission Control Protocol ), UDP (User Datagram Protocol ) et TLS (Transmission
Layer Sercurity).
Cette couche inclut les protocoles de signalisation comme SIP (Session Initiation
Protocol ), les protocoles de transport média comme RTP (Real time Transport Protocol ).
H.323 qui est un protocole de signalisation alternatif au SIP, développé par l’union de
télécommunication international (ITU), protocole de description de sessions (SDP),
HTTP, SMTP, FTP et Telnet.
tocol (RTCP)
Real time Transport Protocol [51] est développé pour permettre le transport des
paquets en temps réel contenant la voix, la vidéo et autres informations. Le RTP peut
être véhiculé par des paquets multicast afin d’acheminer des conversations vers des des-
tinataires multiples. Le protocole RTP ne garantit pas l’arrivée des paquets, il n’assure
pas que chaque paquet va arriver, ni à temps, ni en séquence. RTP n’est pas un standard
définissant le type du codage transporté, cette information est décrite dans des descrip-
teurs de profils. Les principaux éléments qui rentrent en compte dans le fonctionnement
Chapitre 6 : La téléphonie Internet en mode P2P 72
de RTP sont :
1. Payload : Les données temps réel transportées par RTP dans un paquet.
2. RTP Paquet : Un paquet de données est constitué d’un entête RTP fixe, d’une
liste de sources participant au flux et de payload.
3. RTCP Paquet : Un paquet de contrôle est constitué d’un entête fixe similaire
à celui de RTP, suivi par des éléments qui dépendent de type de paquet RTCP.
4. Port : Permet de distinguer les différentes destinations de paquets sur la même
machine.
5. Adresse de transport : C’est une combinaison d’une adresse réseau et un port
permettant d’identifier un point de terminaison au niveau transport (ex :Adresse
IP + port UDP ).
6. Session RTP : Association d’un ensemble de participants communiquant via
RTP. Pour chaque participant, la session est définie par un couple d’adresse de
transport (Adresse réseau + port RTP + port RTCP ). Dans le cas de multicast,
l’adresse transport peut être la même pour tous. Dans une session multimédia,
chaque média à sa propre session RTP et ses propres paquets RTCP identifiés par
des ports et/ou adresses multicast différentes.
7. Source de synchronisation (Synchronization Source SSRC) : Source d’un
flux de paquets RTP identifiée par 32 bits dans le header RTP. Tous les paquets
ayant le même SSRC ont une même référence temporelle et de séquencement.
8. Source contributive (Contributing Source CSRC) : Source d’un flux de
paquets RTP qui contribue au flux de sortie d’un mixeur.
Le protocole RTP n’a pas été conçu pour effectuer la réservation de ressources ou
le contrôle de la qualité de service.
proche du signal initial. Cette technique ne conserve pas la forme temporelle du signal.
Dans ce type de codage le débit est compris entre 16 et 64 kbit/s [9].
6.2.8 Codecs
Les codecs sont développés pour être des codeurs et des décodeurs de digitalisation
des données analogiques (PCM, GSM,...). Des techniques de compression et de décom-
pression sont ajoutées afin de réduire la bande passante avec préservation de la qualité
de la voix.
générées par les serveurs. Dans le cas de la téléphonie IP l’appelant est le client et
l’appelé est le serveur [52].
6.3.1.2 Fonctionnalités
Avec SIP, les utilisateurs qui ouvrent une session, peuvent communiquer en mode
point à point, en mode diffusif ou en un mode combinant ces deux.
1. Point à Point : Communication entre deux machines.
2. Diffusif : Plusieurs utilisateurs en multicast via une unité de control (Multipoint
Control Unit).
3. Combinatoire : Plusieurs utilisateurs pleinement interconnectés en multicast
via un réseau à maillage complet.
SIP choisit l’Email comme adresse de la forme : "user@domain", " user@IP adresse",
"numéro telephone@gateway". Le nom de domaine peut être le nom du hôte sur lequel
l’utilisateur est logé. L’adresse de la forme "numéro telephone@gateway" désigne le
numéro du téléphone PSTN [52]. A l’inverse des numéros de téléphone, les adresses
SIP désignent une entité plutôt qu’un terminal. Cette différence fondamentale permet
à celles-ci de représenter un individu, quelque soit sa localisation physique et également
quelque soit le terminal à sa disposition.
Pour établir et terminer des communications multimédias, SIP utilise les 5 fonctions
suivantes :
1. User location : Permet de localiser le poste terminal utilisé pour communiquer.
Chapitre 6 : La téléphonie Internet en mode P2P 76
2. User capabilités : Détermine quels médias vont être échangés (voix, vidéo, don-
nées,...), ainsi que les paramètres associés.
3. User availability : Détermine si le poste appelé souhaite communiquer et au-
torise l’appelant à le contacter.
4. Call setup : Avertit les parties appelée et appelante de la demande d’ouverture
de session et met en place des paramètres d’appel.
5. Call handling : Gère le transfert et la fermeture des appels.
Les échanges entre un terminal appelant et un terminal appelé se font par l’inter-
médiaire de requêtes :
1. INVITE : Indique que l’utilisateur correspond à l’URL SIP spécifié est invité
à participer à une session. Le corps du message décrit cette session. En cas de
réponse favorable, l’invité doit spécifier les médias qu’il supporte.
2. ACK : Permet de confirmer que le terminal appelant à bien reçu une réponse
définitive à une requête INVITE.
3. OPTIONS : Un proxy server en mesure de contacter un terminal appelé, doit
répondre à une requête OPTIONS, en précisant ses capacités à contacter le même
terminal.
4. BYE : Cette requête est utilisée par le terminal de l’appelé afin de signaler qu’il
souhaite mettre fin à la session.
5. REGISTER : Cette méthode est utilisée par un client pour enregistrer son
adresse auprès du serveur auquel il est relié.
Un message SIP peut être une requête d’un client vers un serveur (figure 6.4.a) ou
une réponse de serveur vers un client (figure 6.4.b). Les adresses IP sont difficiles à
retenir et les utilisateurs peuvent changés fréquemment les machines sur lesquelles ils
se connectent. Pour cela le protocole SIP utilise un niveau supérieur des adresses de la
forme user@domain [14].
Chapitre 6 : La téléphonie Internet en mode P2P 77
Conversation
BYE ahmed@172.45.123.12
BYE ahmed@172.45.123.12
OK
OK
Les tests sur le protocole SIP (figure 6.6) qui ont été faits récemment dans le la-
boratoire ENIC Telecom Lille1, ont montré que dans certains conditions, les délais
d’établissement de session SIP pour la VoIP peuvent être importants et dépassent les
seuils de l’ITU. Ceci est dû, en particulier à la taille des messages SIP (non compres-
sés) qui peuvent atteindre 1500 bytes au format textuel(ASCII ), ainsi que le routage à
travers les proxys SIP (routage n’est pas forcement optimal ).
Chapitre 6 : La téléphonie Internet en mode P2P 78
Agent Agent
Proxy
Utilisateur Utilisateur
01 1
0 0
1
Delai de post−selection
Invite
1010 10 0
1 0
1
Trying
0110
Invite 35
1010 01
001
11 0
LAN
Delai de pré−selection
180 Ringing 30 802.11b
1010 11 00 00
110
1 0
1
180 Ringing Cable Modem
00
11 1010
Delai en seconde
25 Modem 56 kbs
10 11 00 00
110
1 0
1
200 Ok
1010 00
11
200 Ok 20
00
11 00
110
1 0
1
Delai de connection
1010 11 00
11 1010
Ack
0
1
15
Bye
Ack
00 1010 00
11 00
11
00
110
1 0
1
00
11 0
1
10
101011
00 1010
Bye
10 11
00 10 01
001
11 0
5
00
11
200 Ok
200 Ok 0
S1 S2 S3
Scénario
(a) : un shéma d’execution de SIP (b) : delai de connection
11
00
3
01
30
1
0 11
00 00
11
LAN
0
1 10100110
LAN
0
1
2.5 802.11b
1010
25
00
11 00
11
Delai en seconde
0
1 0
1 délai en seconde
2
0010
11
Cable Modem
00
11
20 Modem 56 Kbs
0
1 10101010
Modem 56 kbs 1.5
00
11 00
11
15
0
1
00
11
1
00
11
00
1110 001010
11
101010
10
5
0
10
1 0
1
00
11
0.5 00
11
00
11 1010 00
11
0
01
10
S1 Scénario0
1 S2
(c) : delai de post−connection
S3
0 00
11
S1 S2 (no trying)
Scénario
(d) : delai de pré−connection
S3
35000
(1.x) : Avec compression
30000 (2.x) : Classique
2500 (y.1) : Delai de connection
(1.1) (2.1) (y.2) : Delai de pré−selection
25000
délai en m seconde
1500 (1.2)
15000
(2.2)
1000 (2.3)
10000
500 5000
0 0
Message INVITE Trying Ringing Ok Ack 1.2 2.4 4.8 9.6 19.2 52
kbs
( e ) : Tailles des messages SIP ( f ) : Délais SIP avec et sans compression
Le standard H.323 est normalisé en 1996, il fournit une base pour la communication
utilisant de l’audio, vidéo et les données à travers le réseau IP. En se conformant au
standard H.323, les produits et les applications multimédias peuvent interopérer. H.323
est une recommandation venant de l’ITU (International Télécommunications Union).
La norme H.323 est la principale concurrente de SIP pour la transmission du son,
de données et de la vidéo en temps réel sur le réseau IP.
Protocole Titre
H.320 Communication au dessus de réseau ISDN
H.321 Communication au dessus de réseau ISDN (ATM)
H.322 Communication dans un réseau local avec qualité de service garantie
H.323 Communication dans un réseau local avec qualité de service non garantie
H.324 Communication au dessus de réseau PSTN
¨ Terminaux H.323 : équipements des utilisateurs, par exemple des PCs avec des
logiciels de la téléphonie.
¨ Passerelles (Gateways) : c’est un intermédiaire entre un réseau IP et le RTC.
Elles assurent entre autre le codage et le décodage de la voix, la mise en paquets.
Ces boites ont typiquement des interfaces Ethernet (connectée au réseau IP ) et
un ensemble de ports pour connecter les téléphones classiques ou PABX. Les
systèmes de la téléphonie IP peuvent fonctionner avec les téléphones traditionnels
en utilisant les gateways qui translatent les données transmises de et vers les
formats appropriés de téléphone et d’Internet [26].
Chapitre 6 : La téléphonie Internet en mode P2P 80
Un exemple d’ouverture d’une session H.323 est schématisé sur la figure 6.8.
SIP est un protocole très rapide, indépendant de la couche transport, il peut bien
s’utiliser avec TCP qu’avec UDP, il sépare le flux de données de celui de signalisation,
ce qui rend plus souple l’évolution d’une communication.
Chapitre 6 : La téléphonie Internet en mode P2P 81
flux RTP
flux RTP
Instructions RTCP
H.323 SIP
Organisme initiateur ITU-T IETF
(Date) (1996 ) (1999 )
Protocoles de transport TCP TCP ou UDP
Caractéristiques lourde et robuste simple et leger
messages en ASN.1 messages textuels/UTF-8
protocole peu evolutif protocole supportant
evolutivité Codecs prédéfinis les extentions (nouveaux
Structure rigide de la entêtes, ajout de fonctions
trame H.221 aux serveurs)
Déploiement large faible
interoperable avec RTCP (en cours de normalisation)
3. Cône à port restreint : C’est comme la cône restreint avec des numéros de
ports restreints. Un dispositif externe d’adresse IP x et numéro du port y peut
envoyer des paquets au dispositif interne uniquement si ce dernier a déjà envoyé
des paquets au dispositif d’adresse IP x et numéro du port y.
6.4.1.1 STUN
STUN (Simple Traversal of UDP through NATs) est un protocole qui permet aux
applications de découvrir la présence, ainsi que le type des NATs et Firewalls entre elles
et l’Internet. Il permet aussi aux applications de déterminer leurs adresses IP publiques
alloueés par les NATs.
6.4.1.2 TURN
TURN (Traversal Using Relay NAT ) est un simple protocole qui permet à des
éléments situés derrière des NATs ou des Firewalls de recevoir des données à l’aide des
connexions TCP ou UDP.
Chapitre 6 : La téléphonie Internet en mode P2P 83
home.com
(1) : REGISTER
(2): INVITE
Sipd
Téléphone de Ahmed (3): INVITE
Ordinateur de Mourad
Ahmed@office.net
Mourad@home.com
Le contrôle centralisé peut être une cause de défaillance qui empêche le fonctionnement
de système. Deux solutions ont été proposées dans [57].
1. La première solution décrite dans la figure 6.10.(a) consiste à dupliquer les ser-
veurs et leurs contenus. Lors de la première phase, les utilisateurs s’enregistrent
dans tous les serveurs. Quand un autre utilisateur veut les contacter, il envoie sa
requête à l’un des serveurs. L’inconvénient de cette solution est que la registra-
tion et le départ des nœuds ne se font pas en temps réels. Par consequent, si par
exemple un utilisateur A quitte le système avant que les serveurs mettent à jour
cette information, il se peut qu’un autre utilisateur B contacte l’utilisateur A alors
que ce dernier a déjà quitté le système et donc il y a une information inconsistante.
2. La deuxième solution décrite sur la figure 6.10.(b) consiste à dupliquer les serveurs
et leurs contenus. Lors de la première phase, les utilisateurs s’enregistrent dans
l’un des serveurs. Quand un autre utilisateur veut les contacter, il envoie sa requête
à tous les serveurs. Celui dans lequel l’interlocuteur est enregistré s’occupe de
l’acheminement des requêtes. L’inconvénient de cette solution est que le nombre
Chapitre 6 : La téléphonie Internet en mode P2P 84
(1) : REGISTER
(2) : INVITE (1) : REGISTER (2) : INVITE
.................. ..................
de messages pour chaque nouvelle recherche est élevé, ainsi que la registration
dans un seul serveur ne garantit pas que les utilisateurs restent connectés au
réseau en cas de défaillance de serveur sur lequel il sont connectés.
Noeud ordinaire
Noeud ordinaire
Super Noeud
forment le réseau P2P, alors que les nœuds ordinaires utilisent ce réseau à travers le
super nœud auquel ils sont attachés. Dans cette architecture, chaque nœud peut être
un super nœud ou un nœud ordinaire suivant ses capacités. Le coût de la recherche
dans les deux types d’architecture est O(ln n). La première solution est coûteuse en
maintenance de stabilité s’il y a fréquemment des nouveaux super nœuds qui arrivent
ou quittent. Alors que la deuxième solution présente un problème pour les nœuds de
capacités limités.
Chapitre 6 : La téléphonie Internet en mode P2P 85
Dans la deuxième architecture (P2P pure) le problème qui se présente est que
quelques nœuds ont par exemple un faible CPU, une petite mémoire, une petite bande
passante ou ils sont derrière un NAT ou un Firewall, donc ils ne peuvent pas accomplir
leurs fonctions dans le réseau P2P. Ce problème peut être résolu en adoptant un réseau
P2P hybride, avec des super nœuds. Les nœuds qui ont une grande capacité (bande
passante, mémoire, CPU, ainsi que des adresses IP publiques), constituent des super
nœuds. Un nœud ordinaire est connecté à un des super nœuds. La décision de devenir
un super nœud ou un nœud ordinaire est locale. Quand un nouveau nœud rejoint le ré-
seau, il devient un nœud ordinaire. Quand il détecte qu’il a des capacités lui permettant
d’être un super nœud, il peut transiter vers un super nœud.
6.6.1 La registration
A l’arrivée d’un nouveau utilisateur (nœud ), il indique son nom (mourad@open.com).
En utilisant les tables de hachage distribuées, il obtient une clé à partir non pas de son
adresse IP, mais à partir de son nom, ensuite il se place dans le réseau P2P (La clé de
Mourad est 30 dans la figure 6.12.(a)). Quand un autre utilisateur qui possède l’adresse
75 52
50
Mourad@open.com Gilles@home.com
30 11 REGISTER Gilles@home.com= 50 13
41 15
REGISTER Mourad@open.com = 13
19
27 30
(a) : Rejoindre le réseau P2P sans registration (b ) : Rejoindre le réseau avec registration
de Mourad veut parler avec lui (Gilles qui a la clé 11 ), il calcule sa clé par la même
fonction de hachage en utilisant son nom et il lance la requête rechercher(clé 30). Après
établissement de la connexion, les deux utilisateurs peuvent parler entre eux. Cette
architecture ne contient pas de registration et par conséquent elle ne permet pas la
messagerie off-line (si Mourad n’est pas présent alors Gilles ne peut pas lui envoyer des
messages). Dans la deuxième architecture(figure 6.12.(b)) la clé du nœud et celle de
l’utilisateur sont calculées séparément. Un message SIP REGISTER est utilisé à la fois
pour l’insertion d’un nouveau nœud dans le réseau, ainsi que pour la registration de ce
dernier dans le même réseau.
Quand Mourad lance son application client, le nœud utilise son adresse IP pour
calculer sa clé, par exemple 30 et il prend place dans le réseau, ensuite, il calcule
Chapitre 6 : La téléphonie Internet en mode P2P 86
la clé d’utilisateur en utilisant le nom d’utilisateur et publie cette clé par un message
REGISTER de clé 13. Le nœud 15 qui est responsable de la clé 13 accepte la registration
et maintient dans sa table de routage que la clé 13 se trouve dans le nœud 30. Si Gilles
n’est pas présent alors Mourad peut lui envoyer des messages off-line avec la clé 50, qui
vont être délivrés à Gilles quand il devient on-line.
On Startup
User Interface
( Buddy list, ...)
Audio
Outgoing Devices
Registration User Location
Codecs
Détéction
des DHT Logic
Firewalls
RTP/RTCP
et NATs SIP
User id =
Mourad@home.com
Quand un super nœud quitte le système, ce dernier doit faire quelques mises à jour
qui concernent les nœuds ordinaires qui ont été attachés à ce super nœud, ainsi que ses
voisins. Dans la défaillance d’un super nœud, les nœuds ordinaires qui ont été attachés
à ce dernier seront ré-attachés à un autre super nœud. La défaillance d’un super nœud
est détectée par leurs voisins.
Chapitre 6 : La téléphonie Internet en mode P2P 88
60 60
1
1
31
40 20
20
31
30 30
17 17
Ali@home.com home.com
62
2 10
60
40 1 14
3 2 15
Farid@home.com
40
31 19
38
Ahmed@net.com 34
16
Kamel@exem.com
60
59
le noeud 69 enregistre ses
messages dans son successeur
les messages destinés au noeud
50 sont stockés dans le noeud 69 69
10
41
19
40
37
15
35
18
les messages de noeud 18
ne nécessite pas d’ être enregistrés
6.7 Skype
Skype est une application P2P de téléphonie IP basée sur l’architecture KaZaa.
C’est un protocole propriétaire [57], il supporte la messagerie instantanée ainsi que les
conférences audio. Skype est un service téléphonique et n’est pas une architecture, le
plus important, c’est qu’il est centralisé dans l’authentification et par conséquent, si le
serveur présente une défaillance, tout le système sera défaillant.
Chaque client Skype (SC) maintient une table pour sauvegarder les adresses IP et les
Super Noeud
Noeud ordinaire
numéros du port des supers nœuds appelée le cache des hôtes (HC). Il utilise TCP pour
la signalisation et UDP/TCP pour le transfert des données. Le trafic de médias et la
signalisation ne sont pas envoyés sur le même port.
2. Cache hote (HC) : C’est une liste qui contient les adresses IP est les numéros
du port des super nœuds. Le SC sauvegarde les données de HC dans HKEY-
CURRENTUSER / SOFTWARE / SKYPE / PHONE / LIB / CONNECTION
/ HOSTE-CACHE. Elle contient au maximum 200 entrées. Cette liste est utilisée
pour accélérer la recherche, elle est similaire à finger-table dans Chord. Une ana-
lyse qui a été faite dans [3] a montré que le HC est initialisé par les sept adresses
décrites dans le tableau 6.3. Ces nœuds sont appelés les Boostraps super nœuds.
4. Liste des Amis : C’est une liste qui contient des informations concernant les
amis de l’utilisateur. Elle est digitalement signée et encryptée, elle n’est pas sto-
ckée dans le serveur central de Skype.
Chapitre 6 : La téléphonie Internet en mode P2P 91
2. Login : Durant cette phase, le client Skype s’authentifie par son nom d’utilisa-
teur et son mot de passe, dans le serveur de login, donc il déclare sa présence à
ses amis ainsi que les autres peers. Il détermine le type de NAT ou de Firewall
derrière lesquels il est et il découvre les autres nœuds Skype qui sont connectés.
Dans une analyse de skype qui a été faite dans [3], ils ont remarqué que le client
Skype communique toujours avec le nœud d’adresse IP 80.160.91.11. Pour cela,
ils ont constaté qu’avec une très grande probabilité qu’il soit le serveur de login
1
AES : algorithme de cryptographie symétrique
2
RSA : algorithme de cryptographie asymétrique
Chapitre 6 : La téléphonie Internet en mode P2P 92
Start Oui
Connecté
UDP à HC l’adresse
Connexion TCP avec
IP et Port
adresse IP et le numéro de
port 443 (port HTTPS)
Réponse Oui
dans 5 secondes
Oui
Connecté
Non
Non
Connnexion TCP avec
adresse IP et le niméro de port Oui
Tentative connexion
=5
Non échec
Connexion Oui
Attendre 6 secondes
Non
Connexion TCP avec succès
adresse IP et le numéro de
port 80 (port HTTP)
Skype ne supprime pas le silence durant les appels, c’est-à-dire : Quand deux
utilisateurs skype établissent une communication, alors même les silences durant
la communication seront transmis comme tout autre paquet de voix.
6.8 Conclusion
Malgré la forte croissance de flux de données et de flux multimédia observés ces
dernières années, la téléphonie classique constitue encore le principal média pour les
entreprises, aussi bien pour les communications internes qu’externes. Par rapport à la
téléphonie classique, la téléphonie IP offre non seulement des perspectives intéressantes
de simplification d’architecture et d’administration des équipements, mais aussi des
nouveaux services enrichis, intégrant des applications informatiques. Le déploiement de
cette technologie permet de franchir un premier pas dans la convergence des réseaux
voix et données.
Skype est le premier protocole de la VoIP basé sur la technologie P2P [3], trois
facteurs essentiels qui le rend populaire :
A VEC l’arrivé de l’Internet et son rôle actif croissant dans l’économie et la société,
l’informatique réseau n’a eu de cesse de trouver des innovations pour exploiter les
ressources qu’un réseau de cette ampleur contient. Aujourd’hui, on parle sérieusement
du peer to peer comme un modèle de communication capable de changer radicalement
certaines approches de l’informatique en réseau.
Les réseaux pair à pair connaissent un franc succès. Les domaines d’application du
P2P sont nombreux : Partage de ressources ( fichiers, CPU, mémoire,...,), travail col-
laboratif, calcul distribué...
94
Conclusion générale et perspectives 95
Pour résoudre ces différents problèmes, les grandes entreprises, ainsi que la commu-
nauté des chercheurs ont construit des plateformes de programmation réseau. Comme
à titre d’exemple ProActive qui est dédiée au calcul distribué, ainsi que JXTA qui sup-
porte pratiquement n’importe quel service.
E N perspectives, nous allant simuler le protocole I4N que nous avons proposé pour
le comparer à d’autres protocoles P2P de même génération comme Chord. On va
le renforcer par un mécanisme de sécurité.
Nous voulons orienter nos recherches vers la téléphonie IP en mode P2P, car les
architectures P2P ont prouvé leurs efficacités dans la pratique, nous voulons utiliser
le protocole SIP comme protocole de signalisation, car ce dernier a été conçu pour
supporter des extensions. Au cours de ces dernières années, il est devenu le principal
concurrent de standard H.323. Nous voulons concevoir une architecture qui supporte un
bon nombre de services, ainsi, l’utilisateur n’a pas besoin de changer l’application pour
changer de service. Pour introduire l’aspect sémantique dans le protocole de recherche,
nous voulons utiliser les skip graphs. Pour résoudre le problème d’interoperabilité, nous
voulons choisir la plateforme open source JXTA de SUN micosystem qui nous semble
qu’elle a un très grand avenir dans le monde de réseau, à cause de son indépendance des
langages de programmation, des systèmes d’exploitation et des protocole de transport,
elle n’est pas destinée à un type particulier de machines ou d’applications.
Dans ce mémoire, on a soulevé le problème de sécurité dans les réseaux P2P, mais on
n’a pas abordé les solutions proposées. Pour assurer la confidentialité, les algorithmes
de cryptographie comme AES sont des bons outils. L’utilisation de ces derniers est
confrontée aux problèmes de partage de clés. Il nous semble que l’utilisation des proto-
coles d’accord des clés sont très adaptés aux protocoles P2P des réseaux structurés.
Bibliographie
[1] Sameh El Ansary, Design and analyses in structured peer to peer systems , doctorat
thesis, Swidich institute of computer science (2005).
[2] Hari Balakrishnan, Frans Kaashoek, David Karger, Robert Moris, and Ion Stoica.,
looking up data in P2P systems, Communication of the ACM, Vol 46, n 2 (2003),
P43–P48.
[3] Salman A. Baset and Henning Schulzrinne, An analysis of the skype Peer to Peer
Internet telephony protocol, Columbia university (2004).
[4] Sherif Botros and Steve Waterhouse, Search in JXTA and other distributed net-
works, Proceedings of the First International Conference on Peer-to-Peer Compu-
ting (P2P.01) (2002).
[5] Frank Cappello, Samir Djilali, Gilles fedak, Tangui Morlier, and Oleg Lodygensky.,
Calcul global , Desktop Grids et XtremWeb, (2004).
[6] David Clark, Face-to-Face with Peer-to-Peer Networking, IEEE internet computing
(2001).
[7] Curt Cramer, Kendy Kutzner, and Thomas Fuhrmann, Boostrapping Locality-
Aware P2P Networks, (2003).
[8] Tim Dierks and Christopher Allen, The TLS Protocol : Version 1.0, IETF RFC
2246. Internet Engineering Task Force. (1999).
[9] Zenkri Djamel and Marine Souheil, Téléphonie sur IP, Document IP-Tel/7-F,
Union internationale des télécommunications (2001).
[10] Peter Jan Doets, Routing in structured P2P networks, Technical report, Delft uni-
versity of technology (2005).
[11] P. Faltstrom, E.164 number and DNS, RFC 2916 (RFC3761) (2000).
[12] Jerome Ferbake, Neelakanth Nadjir, Greg Ruetsch, and Illya Sharapov, Framework
for Peer-to-Peer distributed computing in a heterogeneous decentralized Environ-
ment, Sun Microsystem, Inc , Palo Alto ca, 94303 USA (2002).
96
Bibligraphie 97
[30] Alfred W. Loo, The futur of P2P computing, Communication of the ACM Vol 46.
N9 (2003), P56 – P61.
[31] Guillaume Madre, Application de la transformée en nombre entiers à l’étude et au
développement d’un codeur de parole pour transmission sur réseau IP , Thèse de
doctorat Université de Bretagne occidentale- Ecole doctorale SMIS (2004).
[32] Petar Maymounkov and David Maziére, Kademlia : a peer to peer information
system based on the XOR metric , http ://kademlia.scs.cs.nyu.edu (2001).
[33] Daniel A. Menascé, Scaling the web : scalable P2P search , IEEE internet compu-
ting (2003), P83 – P86.
[34] Daniel A. Menasce and Lavanya Kanchanapalli, probabilistic scalable P2P ressource
Location Services, Proc. 2002 ACM Sigmetrics Practical Aspects of Performance
Analysis (PAPA 2002) (2002).
[35] M. Mezmaz, N. Melab, and E-G Talbi, Optimisation parallèle hybride sur un sys-
teme pair à pair, (2002).
[36] SUN micosystem, Projet JXTA : technical Shell overview, JXTA White paper
(2001).
[37] SUN Microsystem, Projet JXTA , http ://www.jxta.org (2000).
[38] SUN MICrosystem, Project JXTA : An Open, Innovative collaboration, SUN Mi-
crosystem (2001).
[39] Sun microsystem, Projet JXTA : Getting started , Sun Microsystem, Inc, White
paper (2001).
[40] SUN Microsystem, Projet JXTA Version 2.0, JAVA Programmer’s Guide, SUN
Microsystem (2003).
[41] Dejan S. Milojicic, Vana Kalogeraki, Rajan Lukose, Kiran Nagaraja, Jim Pruyne,
Bruno Richard, Sami Rollins, and Zhichen Xu, Peer to Peer conputing Survey, HP
Laboratories Palo Alto, HPL-2002-57 (2002).
[42] Wolfgang Nejd, Boris Wolf, Changtao Qu, Ambjorn Naeve, Mikael Nilsson, Mat-
thias Palmer, and Tore Risch, EDUTELLA : A P2P networking infrastrucure based
on RDF, Journal of ACM (2005), P604 – P615.
[43] Victor Paulsamy and Samir Chatterjee, Network convergence and the
NAT/Firewalls problems, Proceeding of the 36th Hawaii international conference
on system science (HICSS’03) , IEEE computing society (2002).
[44] C.Greg Plaxton, Rajmohan Rajaraman, and Andrea W. Richa, Accessing nearby
copies of replicated Objects in a distributed environnement, Procceding of the 9th
Annual ACM Synposium on parallel algorithms and architectures (SPAA) (1997),
P311– P320.
Bibligraphie 99
[45] Defence Advanced Research project Agency, Internet protocol, RFC 0791 (1981).
[46] Changtao Qu and Wolfgang Nejdl, Exploring JXTA search for P2P educational
media discovery , (2002).
[47] Sylvia Ratnasamy, Paul francis, Mark Handley, Richard Karp, and Scott Shenker,
A scalable content adressable network, ACM SIGCOMM (2001).
[48] Sylvia Paul Ratnasamy, A scalable content adressable network, Doctorat thesis,
University of california at berkeley. (2002).
[49] Antony Rowstron and Peter Druschel, Pastry : a scalable, decentralized object lo-
cation and routing for large scale peer to peer systems, Proceding of the 18 th
IFIP/ACM international conference on distributed systems plateforms (Middel-
ware 2001), Heidelberg, Germany. (2001).
[50] German Sakaryan, Markus Wulff, and Herwig Unger, Search methods in P2P net-
works : a survey, (2004).
[51] H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson, RTP : A Transport
Protocol for Real-Time Applications, RFC3550 (2003).
[52] Henning Schulzrinne and Jonathan Rosenberg, Signaling for internet telephony,
IEEE internet computing (2000).
[53] Hinning Schulzrinne, Internet telephony, Practical handbook of intenet computing.
(2004).
[54] Gauri Shah, Distributed data strucures for peer to peer systems, Doctorat thesis
(2004).
[55] R. Shirey, Internet security glossary, RFC 2828 (2000).
[56] Bartlomiej Sieka, Ajay D. Kshemkalyani, and Mukesh Singhal, On the Security
of Polling Protocols in Peer-to-Peer Systems, IEEE internet Computing, Procee-
dings of the Fourth International Conference on Peer-to-Peer Computing (P2P’04)
(2004).
[57] Kundan Singh and Henning Schulzrinne., Peer-to-Peer Internet telephony Using
SIP, Columbia university (2004).
[58] Clarke Siobhan, Dependability in Peer-to-Peer System, IEEE internet computing
(2004).
[59] Ion Stoica, Robert Morris, David Karger, M.Frans Kaashoek, and Haris Balakri-
shnan, Chord : A Scalable Peer-to-Peer lookup Service for Internet Application,
Proceeding of the ACM SIGCOMM’01, san Diego ,California (2001).
[60] Ion Stoica, Robert Morris, David Liben-Nowell, David Karger, M.Frans Kaashoek,
Frank Dabek, and Haris Balakrishnan, Chord : A Scalable Peer-to-Peer lookup
Service for Internet Application, IEEE Transactions on networking (2003).
Bibligraphie 100
[61] Egemen Tanin, Aaron Harwoodm, and Hanan Samet, Indexing distributed com-
plex data for complex queries, Proceedings of the National Conference on Digital
Government Research - DGO, pp. 81-90, 2004, Seattle, WA. (2003).
[62] Stephanos Androutsellis Theotokis, A survey of peer-to-peer files sharing techno-
logies, White paper , ELTRUN : Athens university of economics and business,
Greece. (2002).
[63] Bernard Traversat, Mohamed Abdelaziz, and Eric Pouyoul, Projet JXTA : A
loosely-consistent DHT rendez-vous walker, (2003).
[64] Bernard Traversat, Ahkil Arora, Mohamed Abdelaziz, Mike Duigou, Carl Hay-
wood, Jean-Christophe Hugly, Eric Pouyoul, and Bill Yeager, Projet JXTA 2.0
Super peer Virtuel Network , SUN microsystem, White paper (2003).
[65] Steave Watehouse, David M.Doolin, Gene Kan, and Yaroslav Faybisjenko, Distri-
buted search in distributed network, IEEE Internet Computing (2002).
[66] Steve Waterhouse, JXTA search : Distributed search for distributed network., Sun
Microsystem, JXTA White paper (2001).
[67] William Yeager and Joseph Williams, Secure Peer-to-Peer Networking : The JXTA
example, IEEE internet computing (2002).
Index
A Freenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
advertissements . . . . . . . . . . . . . . . 46, 64
G
algorithmes P2P . . . . . . . . . . . . . . . . . . 31
global computing . . . . . . . . . . . . . . . . . . 39
application P2P . . . . . . . . . . . . . . . . . . . 31
gnus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
aspects sémantiques . . . . . . . . . . . . . . . 29
Gnutella . . . . . . . . . . . . . . . . . . . . . . 12, 14
authentification . . . . . . . . . . . . . . . . . . . . . 7
H
B
H.323 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Boostraping . . . . . . . . . . . . . . . . . . . . . . . 23
Boostrapping . . . . . . . . . . . . . . . . . . . . . . 26 I
Boostraps super . . . . . . . . . . . . . . . . . . . 90 I4N . . . . . . . . . . . . . . . . . . . . . . . 32, 35, 37
inondation . . . . . . . . . . . . . . . . . . . . . . . . 10
C
intégrité de données . . . . . . . . . . . . . . . . 7
calcul distribué . . . . . . . . . . . . . . . . . 6, 31
Can . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 27 J
Chord . . . . . . . . . . . . . . . . . . . . . . . . . 18, 23 JINI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
client-serveur . . . . . . . . . . . . . . . . . . . . . . 31 JXTA . . . . . . . . . . . . . . . . . . . . . 31, 42, 95
codage de la parole . . . . . . . . . . . . . . . . 73
K
confidentialié . . . . . . . . . . . . . . . . . . . . . . . 7
Kademlia . . . . . . . . . . . . . . . . . . . . . . . . . 31
D KazaA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
décentralisation . . . . . . . . . . . . . . . . . 7, 37
M
DHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
messagerie instantanée . . . . . . . . . . 6, 42
diffusion . . . . . . . . . . . . . . . . . . . . . . 14, 32
messagerie off-line . . . . . . . . . . . . . . . . . 85
E Morpheus . . . . . . . . . . . . . . . . . . . . . . . . . 31
Edutella . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
N
ERP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Napster . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
F NATs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
firewall . . . . . . . . . . . . . . . . . . . . . . . . 13, 56 non repudiation . . . . . . . . . . . . . . . . . . . . 7
fonction de hachage . . . . . . . . . . . 16, 18
P
101
Index 102
R
réseaux non structurés . . . . . . . . . . . . . . 2
réseaux structurés . . . . . . . . . . . . . . . . . . 5
registration . . . . . . . . . . . . . . . . . . . . . . . . 85
RSVP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
RTCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
RTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
S
sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . 7–9
scalabilité . . . . . . . . . . . . . . . . . . . . . . . . 5, 9
servents . . . . . . . . . . . . . . . . . . . . . . . 12, 13
Shell JXTA . . . . . . . . . . . . . . . . . . . . . . . 54
SIP . . . . . . . . . . . . . . . . . . . 74, 75, 79, 83