Title: Bernard Ourghanlian
1Bernard Ourghanlian bourghan_at_microsoft.com
Chief Technology Security OfficerMicrosoft
France
- Le Peer-to-Peer IPv6 en environnement Windows
2Sommaire
- Le panorama du Peer-to-Peer
- Le Peer-to-Peer en environnement Windows les
principes fondateurs - Les technologies requises
- NAT traversal
- Résolution des noms
- Graphes, groupes et groupements
- Stockage répliqué
- Recherche distribuée
- La mise à jour Peer-to-Peer pour Windows XP
- Résumé
- Démonstration 3 degrees
3Le Peer-to-Peer
- Le Web correspond fondamentalement un modèle de
type client-serveur lutilisateur demande une
page Web et le serveur Web lui répond - Le Peer-to-Peer, popularisé initialement par
Napster ou Gnutella, fonctionne différemment
puisque pratiquement toutes les interactions ont
lieu entre les clients - On peut définir le Peer-to-Peer comme un modèle
de traitement dans lequel les périphériques
client communiquent directement - Par rapport au traditionnel modèle du
client-serveur, le Peer-to-Peer présente les
avantages suivants - Le contenu et les ressources peuvent être
partagés à la fois depuis le centre et la bordure
du réseau - Un réseau de pairs peut être facilement
étendu et être plus fiable quun seul serveur - Un réseau de pairs peut partager sa capacité
de calcul, afin de consolider des ressources de
traitement pour des tâches de traitement
distribuées, plutôt que de se reposer sur un seul
calculateur (un supercalculateur, par exemple) - Les ressources partagées des ordinateurs
pairs peuvent être accédées directement
4Le Peer-to-Peer
- Le Peer-to-Peer autorise la résolution des
problèmes suivants - Permettre lutilisation des ressources de calcul
des ordinateurs situés aux extrémités du réseau
pour des tâches de calcul distribuées - Permettre le partage des ressources locales
directement sans avoir le besoin de serveurs
intermédiaires - Permettre une communication multipoint efficace
sans avoir à reposer sur une infrastructure de
type IP multicast
5Le panorama du Peer-To-Peer
- Communications temps réel (RTC)
- Messagerie instantanée, voix, vidéo
- Cela existe aujourdhui mais la plupart des
programmes existants ainsi que leurs protocoles
de communication reposent sur lexistence de
serveurs - Jeu temps réel / collaboration
- La plupart des environnements de jeu distribués
reposent sur lexistence dun site Web permettant
aux joueurs de saffronter - Collaboration
- Espace de travail projet permettant datteindre
un objectif commun - Partage de fichiers avec dautres personnes
- Ce type de partage existe mais nest pas toujours
aisé car les adresses des machines dextrémité ne
sont pas toujours publiées - Distribution de contenu
- Concert, réunion de société, classe en ligne,
audio, vidéo - Bien souvent, la diffusion organisée de
fichiers audio et vidéo repose sur lexistence de
gros serveurs - Distribution de mise à jour de produits
- Cest une méthode efficace pour distribuer les
mises à jour de logiciels
6Le panorama du Peer-To-Peer
- Traitement distribué
- Dissection et distribution dune tâche de calcul
- Nécessite que les algorithmes soient parallélisés
- Agrégation de ressources machines
- Popularisé par le grid computing
- Amélioration des technologies de lInternet
- Nouveaux protocoles pour lInternet
- Historiquement, lInternet a été conçu pour
permettre une connectivité de bout en bout
force est de constater quen raison de la
raréfaction des adresses et de la prolifération
des NAT, on a perdu cette connectivité de bout en
bout - IPv6 est la promesse du retour de lInternet à
ses principes de conception originels
7Pourquoi du nouveau ?
- Limitation du nombre dadresses publiques
- La présence des NATs limite les possibilités de
partage - Limitation du système de résolution de noms
- Ne gère pas (assez) les adresses dynamiques
- Ne fonctionne pas en environnement ad hoc
- Ne facilite pas une utilisation aisée à la
maison - Communication multipoint inefficace
- Chacun a une certaine tendance à reconstruire
linfrastructure en fonction de ses besoins
8Prolifération des NAT
- Network Address Translators
- NAT résoud le problème dadresses
- MAIS
- Les applications sont souvent cassées
- La sécurité est faible
- Difficile à gérer, pas de standards
- Complique le sans-fil et la mobilité
- Limite linnovation dans les nouveaux scénarios
Mobile IP, VoIP, QoS, Peer-to-Peer - Rompt le modèle Internet de bout en bout
9Scénario 1 Jeu à plusieurs (Exemple Age of
Empires II en Direct Play)
P1
P2
LAN Maison
LAN Maison
Internet
NAT
NAT
P3
- Avec NAT, logiciel complexe et fragile
- 2 adresses, à lintérieur et à lextérieur
- P1 fournit ladresse interne à P3,
ladresse externe à P2 - Besoin de reconnaître linterne de lexterne
- P1 ne connaît pas ladresse externe de P3 pour
lindiquer à P2
10Scénario 2 Peer-To-Peer(Exemple RTC ou
récupération de fichiers)
P1
P2
LAN Maison
LAN Maison
Internet
NAT
NAT
- Avec NAT
- Besoin dapprendre ladresse en dehors du NAT
- Fournir cette adresse à lapplication paire
- Besoin de disposer dune application compatible
NAT - On peut avoir besoin dun serveurs
denregistrement tiers pour faciliter la
recherche des pairs
11Lépuisement des adresses IP est réel !
Épuisement Total
Épuisement pratique
- Lextrapolation du nombre dadresses DNS
enregistrées indique un épuisement total en 2009 - Mais, en pratique, cela peut arriver bien avant !
- En fait, ce nest pas un problème dadresses
cest un problème lié à ce que peuvent faire les
utilisateurs (scénarios)
122003 la fin du P2P ?
Avec la rareté des adresses, les ISP ne peuvent
en avoir suffisamment, ils déploient de plus en
plus de NAT et les applications peer-to-peer
commencent davoir des problèmes !
13Les principes fondateurs dune solution
Peer-to-Peer
- Lobjectif long terme de la mise à disposition
dun environnement Peer-to-Peer est le suivant - Permettre aux utilisateurs de communiquer et de
partager de linformation de manière sécurisée
avec dautres utilisateurs sans dépendre de
serveurs centralisés mais en restant capable de
fonctionner encore mieux si des serveurs sont
présents - Dans un premier temps, la cible de
lenvironnement Peer-to-Peer est la mise à
disposition dun environnement de développement
permettant aux développeurs de créer des
applications Peer-to-Peer - Les applications seront certainement la clé du
succès dIPv6 !
14Les principes fondateurs du design dune solution
Peer-to-Peer
- Sécurité robustesse en face dune défaillance
ou dune attaque - Scalable capable dévoluer depuis des réseaux
ad hoc jusquà lInternet - Sans serveur pas de point de défaillance
central - Self-tuning sadapte à des changements
constants - Self-repairing se répare tout seul
- Sharing permet à nouveau le partage des données
et des applications depuis les frontières du
réseau
15Les problèmes techniques à résoudre en
environnement Peer-to-Peer
- Le DNS
- Cest un autre point de différence majeur entre
lenvironnement client-serveur et les réseaux
Peer-to-Peer - Les serveurs sont généralement enregistrés dans
le DNS de telle façon que les clients puissent
résoudre le nom de ces serveurs - Les clients ne sont généralement pas enregistrés
dans le DNS pour les raisons suivantes - De nombreux clients ont des connectivités
temporaires et on peut leur assigner un adresse
différente à chaque connexion - Les clients nont pas de ressources à partager et
ne répondent donc pas aux demandes de ressources
16Les problèmes techniques à résoudre en
environnement Peer-to-Peer
- Les participants dun environnement Peer-to-Peer
ont, par contre, des ressources à partager tout
en continuant cependant davoir une connectivité
temporaire - Ils peuvent utiliser un DNS dynamique mais il ny
a que peu de serveurs DNS sur lInternet qui
supportent le dynamic DNS - Pour avoir du succès, les ordinateurs en
environnement Peer-to-Peer ne doivent donc pas
reposer sur une infrastructure DNS existante il
doit donc y avoir un mécanisme permettant de
résoudre les noms des pairs qui ne repose pas sur
le DNS - Le mécanisme utilisé en environnement Windows
Peer-to-Peer est le Peer Name Resolution Protocol
(PNRP)
17Les problèmes techniques à résoudre en
environnement Peer-to-Peer
- La sécurité
- Dans un environnement Peer-to-Peer, il ny a pas
de serveur centralisé avec des bases de données
de sécurité qui peuvent assurer des services de
sécurité typiques tels que lauthentification ou
lautorisation - Dans cet environnement, les pairs doivent
procurer leur propre authentification - Dans lenvironnement Windows Peer-to-Peer,
lauthentification est assurée en utilisant des
certificats auto-signés de type X.509 - Ces certificats sont créés par chaque pair
- Chaque nœud agit comme une autorité de
certification, ce qui permet de supprimer la
nécessité de déposer le certificat racine dans
chaque zone de stockage de confiance de chaque
pair
18Les problèmes techniques à résoudre en
environnement Peer-to-Peer
- Chaque pair génère la paire de clés
privée/publique et le certificat qui est signé en
utilisant la clé privée - Le certificat auto-signé est utilisé pour
lauthentification et fournit de linformation
sur lentité pair - Comme lauthentification X.509,
lauthentification en environnement Peer-to-Peer
repose sur une chaîne de certificats qui
permettent de remonter à une clé publique digne
de confiance
19Larchitecture de limplémentation Peer-to-Peer
en environnement Windows
20Les Technologies clés
- NAT Traversal
- Résolution des noms
- Graphes
- Groupes et groupements
- Stockage répliqué
- Recherche distribuée
21Les mécanismes du NAT
Machine B 10.1.1.2
Machine A 10.1.1.1
22NAT Traversal
- Limplémentation dIPv6 sur Windows admet
essentiellement deux technologies de transition - Intra-Site Tunnel Addressing Protocol (ISATAP)
- Technologie daffectation et de tunneling
automatique qui est utilisé pour fournir une
connectivité unicast entre hôtes IPv6 au travers
dun Intranet IPv4 - ISATAP est décrit dans le draft Internet
Intra-Site Automatic Tunnel Addressing Protocol
(ISATAP) (draft-ietf-ngtrans-isatap-0x.txt) - 6to4
- Technologie daffectation et de tunelling
automatique qui est utilisé pour fournir une
connectivité unicast entre hôtes IPv6 au travers
de lIntranet IPv4 (RFC 3056) - Pour plus dinformation à propos dISATAP et de
6to4, on peut consulter avec profit le livre
blanc IPv6/IPv4 Coexistence and Migration
(http//www.microsoft.com/windows.netserver/techno
logies/ipv6/ipv6coexist.mspx)
23NAT Traversal
- Pour une connectivité IPv6 au travers de
lInternet IPv4, 6to4 est la méthode privilégiée
daffectation dadresse et de tunelling - Toutefois, 6to4 dépend de laffectation dune
adresse publique IP à un ordinateur connecté à un
réseau privé qui fonctionne comme un routeur 6to4 - Le protocole IPv6 pour Windows XP et Windows
Server 2003 peut être utilisé comme routeur 6to4
automatiquement en mettant en service lInternet
Connecion Sharing (ICS) ou manuellement - Malheureusement il reste quelques obstacles
- Peu des NAT utilisés aujourdhui pour connecter
la maison ou de petites entreprises disposent
déjà dune possibilité de routage 6to4 - Il peut y avoir plusieurs NAT à traverser dans
un tel cas, 6to4 ne fonctionne pas - Le protocole utilisé par 6to4 est le protocole 41
or la plupart des NAT ne permettent que de
retransmettre le trafic TCP ou UDP si ce type
de trafic est ignoré par le NAT, il sera ignoré
et donc non retransmis
24NAT Traversal
- Pour adresser les besoins daffectation
dadresses et de tunelling qui fonctionne aussi
pour les systèmes hôtes situés à travers des NAT
qui ne peuvent aussi être des routeurs 6to4,
Microsoft travaille avec lIETF pour définir
Teredo également connu sous le nom de NAT
Traversal - Teredo est défini par le draft Teredo
Tunneling IPv6 over UDP through NATs
(draft-ietf-ngtrans-shipworm-0x.txt,
http//www.ietf.org/html.charters/ngtrans-charter.
html) - Teredo fonctionne en affectant des adresses
globales IPv6 qui sont fondées sur ladresse
publique IPv4 de linterface NAT qui est
connectée à lInternet et en encapsulant les
paquets IPv4 dans, à la fois, une en-tête IPv4 et
une en-tête UDP - En utilisant à la fois des en-têtes IPv4 et UDP,
la plupart des NAT peuvent traduire le trafic
Teredo - Pour plus dinformation du Teredo, consulter le
livre blanc Teredo Overview
(http//www.microsoft.com/windowsxp/pro/techinfo/a
dministration/p2p/overview.asp)
25Teredo NAT Traversal
Machine A XX9D01101460XX
Machine C XXAC01101464XX
26Résolution de noms et PNRP
- Pour permettre la communication entre des pairs,
ceux-ci doivent être capables de découvrir la
présence des autres et den résoudre les
emplacements réseau (adresses, protocoles, ports)
à partir de leurs noms ou dautres types
didentificateurs et tout ceci sans recourir au
DNS - Lenvironnement Windows Peer-to-Peer résout ce
problème en utilisant un mécanisme qui a les
attributs suivants - Résolution des noms distribuée et sans serveur
- Comme en environnement DNS, la liste complète des
noms des ordinateurs est stockée dans le
nuage - Contrairement au DNS, il ny a pas de serveur
pour fournir la résolution des noms chaque pair
stocke une portion de la liste dans son cache et
peut se référer aux autres pairs en cas de besoin
(il peut toutefois y avoir un nœud damorçage
seed node pour faciliter linitialisation mais
cela nest pas obligatoire)
27Résolution de noms et PNRP
- Utilisation didentificateurs (ID) à la place de
noms - Plutôt que dutiliser un nom comme un FQDN en
environnement DNS, les ID sont utilisés pour
identifier les pairs. Les ID sont juste des
nombres et ne sont donc pas sujets à des
problèmes de langue ou de marque déposée - Utilisation de plusieurs ID
- Chaque calculateur, utilisateur, groupe,
périphérique, service ou autre type de pair peut
avoir son propre peer ID - Possibilité dévoluer vers un très grand nombre
dID - La liste des ID qui est distribuée parmi les
pairs utilise un cache à plusieurs niveaux et un
système de référence qui permet au mécanisme de
résolution de noms dévoluer jusquà plusieurs
milliards dID tout en requerrant des besoins
minimums en ressources sur chacun des nœuds
28Résolution de noms et PNRP
- Le protocole utilisé pour envoyer des messages de
résolution de noms et de découverte des pairs est
appelé Peer Name Resolution Protocol - PNRP utilise plusieurs types de nuages un
nuage est un groupement de machines qui utilisent
des adresses dans un périmètre spécifique (scope) - Un périmètre spécifique est une zone du réseau
sur laquelle ladresse est unique - Les nuages PNRP sont fondés sur les address
scopes des adresses IPv6 - Il y a 3 types de nuages
- Le nuage global (global cloud) qui correspond au
périmètre dadressage global dIPv6 et représente
tous les calculateurs de lInternet IPv6 il ny
a quun seul nuage global - Le nuage spécifique au site correspond au
périmètre dadressage IPv6 du site (site-local
adresses) il peut y avoir plusieurs nuages
spécifiques au site - Le nuage du lien local correspond au périmètre
dadressage IPv6 du lien local (link-local
addresses) - Un nuage de type lien local correspond a un
lien spécifique, typiquement le même que le
sous-réseau local - Il peut y avoir plusieurs nuages de type lien
local
29Noms et PNRP ID
- Un nom de pair est un point terminal pour la
communication, cest-à-dire une machine, un
utilisateur, un groupe, des services, etc. - En fait nimporte quoi pour lequel on a besoin
dune résolution en adresse IPv6 - Les noms de pairs peuvent être enregistrés de
manière sécurisée ou non sécurisée - Non sécurisé chaîne de caractère qui peut être
sujette au spoofing ou pour laquelle nimporte
qui peut enregistrer un nom en double - Sécurisé enregistré uniquement par le
propriétaire et qui est protégé par un certificat
et une signature numérique
30Noms et PNRP ID
- Les PNRP ID sont définis sur 256 bits et ont la
composition suivante - 128 bits de poids fort P2P ID, hash du nom de
pair affecté au point terminal - Format Authority, Classifier
- Pour les noms sécurisés, Authority est le hash
(SHA) de la clé publique du nom de pair en
hexadécimal - Pour les noms sécurisés, Authority est le
caractère 0 - Classifier est une chaîne de caractère qui
identifie lapplication et qui peut être
nimporte quelle chaîne Unicode de jusquà 150
caractères de long - 128 bits de poids faible utilisés pour la
localisation du service, nombre généré qui
identifie de façon unique les différentes
instances du même P2P ID dans le même nuage - Les combinaisons 256 bits des P2P ID et des
emplacements de service permettent à plusieurs
PNRP ID dêtre enregistrés pour la même machine
31Noms et PNRP ID
- Pour chaque nuage, chaque nœud pair gère un cache
de PNRP ID qui comprend à la fois ses propres
PNRP ID ainsi que des entrées cachées au fur et à
mesure - Lensemble complet des PNRP ID situés sur tous
les nœuds pairs dans un nuage comprend un table
de hash distribuée - Il est possible davoir des entrées pour un PNRP
ID situé sur plusieurs pairs - Chaque entée dans le cache PNRP contient
- Le PNRP ID
- Une adresse de pair certifiée (CPA Certified
Pair Address) - Ladresse IPv6 du nœud denregistrement
- Le CPA est un certificat auto-signé qui fournit
une protection dauthentification pour le PNRP ID
et contient les informations de point terminal
pour lapplication (adresses, numéros de
protocole, numéros de port) - Le processus de résolution de nom consiste donc
en la résolution dun PNRP ID en CPA une fois
le CPA obtenu, la communication entre les points
terminaux peut commencer
32Résolution des noms PNRP
- Quand un pair veut faire correspondre un nom de
pair et son adresse, son protocole et son numéro
de port, il construit le P2P ID en fonction du
nom de pair - Le pair examine les entrées dans son propre cache
- Sil trouve le P2P ID en question, le pair envoie
une requête PNRP au pair concerné et attend une
réponse - Ceci permet dassurer que le nœud pair vers
lequel on cherche à communiquer est bien actif - Sil ne le trouve pas, le pair envoie une requête
PNRP vers le pair qui correspond à lentrée dont
P2P ID est le plus proche du P2P ID à résoudre - Le nœud qui reçoit cette requête regarde dans son
propre cache si lentrée y est trouvée, il
transfère le requête au nœud concerné et ce nœud
envoie une réponse vers le nœud requérant en
suivant le chemin de la requête - Si lentrée nest pas trouvée, le nœud qui a reçu
la requête envoie un message PNRP vers le pair
qui correspond à lentrée dont le P2P ID est le
plus proche du P2P ID à résoudre et ainsi de
suite, jusquà ce que lon trouve le bon pair
33Simple résolution de nom
34Simple résolution de nom
35Simple résolution de nom
- Pour éviter les boucles dans le transfert des
messages de requêtes PNRP, le message contient la
liste des pairs qui ont déjà transmis la requête
en question - Alors que le message de requête PNRP est
transmis, son contenu est utilisé pour peupler
les caches des nœuds qui le transmettent - Quand la réponse est envoyée à travers le chemin
de retour, son contenu est également utilisé pour
peupler les caches des nœuds traversés
36Gestion du cache à plusieurs niveaux
- Afin de permettre de garder une taille
raisonnable au caches PNRP, les nœuds pairs
utilisent un cache à plusieurs niveaux, chaque
niveau contenant un nombre maximum dentrées - Chaque niveau du cache représente n/10m
(0mltlog10n) de lespace des PNRP ID (2256) - Le niveau le plus bas du cache contient les PNRP
ID enregistrés localement et les autres PNRP ID
qui sont numériquement proches - Lors quun niveau du cache est rempli avec un
maximum de 20 entrées, on crée un nouveau niveau
de cache - Le nombre maximum de niveaux de cache est de
lordre de log10(nombre total de PNRP ID dans le
nuage) - Avec 100 millions de PNRP ID, on na pas plus de
8 log10(100 000 000) niveaux dans le cache et
un nombre comparable de hops pour résoudre les
PNRP ID lors de la résolution de nom
37Gestion du cache à plusieurs niveaux
- Ce mécanisme permet la création dune table de
hash distribuée pour laquelle un PNRP ID
arbitraire peut être résolu en transmettant les
messages de requête PNRP au pair le plus proche
jusquà ce que lon trouve un pair dont le CPA
corresponde - Lexemple suivant montre un cache à plusieurs
niveaux pour un espace de 1000 entrées où chaque
niveau représente n/10m (0mlt3) (1000, 100, 10)
de lespace total dID et ne peut stocker que 4
entrées
38Cache dans N1000
Distance depuis my ID ( de N)
39Initialisation du cache PNRP
- Pour initialiser le cache PNRP quand un nœud pair
démarre, on peut utiliser lune des méthodes
suivantes - Entrées persistantes dans le cache des entrées
précédentes étaient présentes quand le nœud a été
arrêté et sont chargées depuis le disque - Nœuds damorçage PNRP PNRP permet aux
administrateurs de spécifier des adresses ou des
noms DNS qui contiennent les CPA des participants
au nuage - Simple Service Discovery Protocol les nœuds
PNRP doivent senregistrer eux-mêmes en utilisant
le protocole Universal Plug Play SSDP un nœud
peut utiliser le message SSDP MSearch pour
localiser les nœuds SSDP proches
40Graphe
- Un graphe de pairs est un ensemble de nœuds qui
sont connectés entre eux pour former un réseau de
nœuds couplés dans le but de propager des données
sous la forme denregistrements ou de flux de
données point à point - La construction de ce graphe est fondé sur le
mécanisme dirrigation (flooding) - Ce mécanisme est le processus par lequel les
enregistrements sont propagés à tous les
utilisateurs connectés à un graphe - Le protocole utilisé effectue les opérations
suivantes - Propagation de laddition des nouveaux
enregistrements à tous les nœuds du graphe - Propagation des mises à jours des enregistrements
modifiés à tous les nœuds du graphe - Propagation des suppressions des enregistrements
supprimés à tous les nœuds du graphe - Pour effectuer ces opérations, chaque
enregistrement est identifié par un GUID, a un
numéro de version croissante (ou un numéro de
séquence) et est qualifié par un age ou un statut - Un processus de synchronisation sassure que les
pairs ont tous les mêmes ensembles
denregistrement
41Graphe
- Un graphe a les propriétés suivantes
- Il est connecté il y a un chemin entre
nimporte quelle paire de nœuds - Il a un petit diamètre il y a un nombre
relativement bas de sauts entre les nœuds situés
sur le pourtour du graphe (afin de permettre des
propagations rapides) - Il est robuste le graphe reste connecté même si
certains nœuds ou certaines connexions
disparaissent - Un graphe est construit en se fondant sur la
connexion des nœuds voisins (un voisin est un
nœud sur le graphe qui est à la distance de un
saut, cest-à-dire connecté directement par une
connexion TCP) - Un node ID est un nombre aléatoire quun nœud du
graphe choisit quand il se connecte au graphe - Le node ID doit être unique au travers du graphe
- Un graphe est identifié par une signature du
graphe qui est le plus petit node ID de tous les
nœuds connectés au graphe - Cette signature est utilisée pour détecter les
cassures dans le graphe (partitions)
42La maintenance du graphe
- Le protocole dirrigation définit comment circule
linformation dans le graphe - Le protocole de maintenance du graphe définit
comment le groupe évolue pour maintenir une
connectivité robuste et un diamètre réduit - Un procédure de signature calcule la signature du
groupe si le groupe subit une partition,
chacune des partitions aura une signature
différente - Ceci permet de détecter si deux ou plusieurs
partitions ont besoin dêtre réparées - Des nœuds désignés aléatoirement dans le graphe
(appelés contacts) gardent la trace des
enregistrements de signature - Une procédure de reconnexion permet aux nœuds
détablir les connexions appropriées - Une procédure de déconnexion permet aux nœuds de
quitter le graphe sans y créer un trou
43La maintenance du graphe
- Quand de linformation est envoyée dans le
graphe, un nœud qui a plusieurs connexions
recevra plusieurs copies de cette information - Pour décider quelles connexions garder et
lesquelles supprimer, un nœud évalue
linformation et calcule un index bidirectionnel
qui est utilisé pour indiquer lutilité de
linformation qui est envoyée entre des pairs
connectés donnés - Cet index a une valeur faible quand linformation
envoyée au travers de la connexion a été déjà
reçue et na donc pas dutilité - De manière permanente, en fonction de la valeur
courante de lindex et de linformation qui est
reçue pendant le processus dirrigation, les
nœuds pairs font des ajustements dans la
connexion avec les nœuds voisins - Les connexions sont créées et supprimées afin de
permettre la convergence du graphe vers une
topologie optimale pour le trafic courant
44Exemple de graphe
45Évolution du graphe
- Connexion à un graphe
- Quand il se connecte initialement à un graphe, un
nœud se connecte à un nœud qui est déjà connecté
au graphe - Ce nœud détermine ladresse du nœud déjà connecté
au graphe par lune quelconque des méthodes
permettant de résoudre ladresse IP (DNS, PNRP) - Si le nœud sélectionné pour cette connexion
présente moins que le maximum de connexions à ses
voisins, celui-ci acceptera la connexion - Dans le cas contraire (il a déjà atteint son
maximum de nombre de connexions), il enverra une
réponse de rejet contenant une liste de référence
(la liste des autres nœuds du graphe) - Le nœud qui tente de se connecter et qui reçoit
une réponse de rejet, choisira alors
aléatoirement un autre nœud dans liste et tentera
de sy connecter - Le processus pour choisir un nouveau voisin après
sêtre connecté au graphe est le même (un message
de rejet contient une liste de référence)
46Évolution du graphe
- Déconnection dun graphe
- Quand un nœud se déconnecte dun graphe, il
envoie un message de déconnexion - Ceci peut potentiellement créer une partition du
graphe - Le message de déconnexion contient une liste de
référence contenant tous les voisins excepté le
nœud qui est en cours de déconnexion - Quand un nœud reçoit un message de déconnexion,
il doit essayer de se reconnecter à un pair de la
liste de référence
47Évolution du graphe
- Détection et réparation dune partition du graphe
- Au fur et à mesure des connexions et des
déconnexions du graphe des partitions peuvent
survenir - Pour chaque graphe, il y a une signature et un ou
plusieurs contacts - Le nombre de contacts pour le graphe est
proportionnel à la taille du graphe - Les pairs peuvent appartenir à plusieurs graphes
- Les informations de contact et de signature sont
envoyées à tous les nœuds du graphe et ces
informations sont rafraîchies régulièrement - Si ces informations deviennent obsolètes, une
partition a eu lieu - Dans ce cas, on tente de communiquer avec le nœud
contact en cas de succès, on tente de
reconnecter le graphe
48Évolution du graphe
- La détection du partitionnement du graphe est
fondée sur lexpiration de lenregistrement
signature - La réparation de la partition est fondée sur les
tentatives de correction des inconsistances entre
la signature du graphe de lenregistrement
signature courant et celle contenue dans les
enregistrements contact - De nouvelles connexions sont tentées vers les
contacts qui ont des signatures de graphe
incorrectes dans leurs enregistrements signature - Ces nouvelles connexions et la synchronisation
des enregistrements du graphe assure la
réparation du graphe - Avec le temps, en utilisant ce processus de
maintenance normal, on obtient automatiquement la
topologie optimale
49Exemple de partition et de réparation
Nœud Adresse IP
350 XX0000
800 XX0001
Noeud Adresse IP
350 XX0000
800 XX0001
50Sécurité du graphe
- Les graphes sont intrinsèquement non sécurisés
- Le mécanisme de graphe fournir des moyens
permettant dinstancier de la sécurité - Contrôle qui peut se connecter et qui peut
envoyer des données au graphe (authentification
de connexion, confidentialité, intégrité) - Fournit des moyens de chiffrer le trafic
(confidentialité des enregistrements et des
messages) - Fournit des moyens de valider les données
(intégrité des enregistrements et des messages) - Le SDK est livré avec un Security Provider
- Pour plus dinformation, consulter le chapitre
Adding Security for a Peer Graph
(http//msdn.microsoft.com/)
51Groupement
- Le groupement est la combinaison de PNRP, du
graphe des pairs et du graph security provider
ce dernier permet - La gestion des créances des membres dun groupe
- La publication sécurisée des enregistrements dans
un groupe - Un identifiant unique (le Group ID) identifie
chacun des groupes - Le Group ID est utilisé par les membres des
groupes pour différencier les différents groupes
dont la machine locale est membre ainsi que pour
différencier les groupes entre les différents
pairs - Les groupes utilisent des noms de pairs sécurisés
comme Pair IDs - Pour les groupes sécurisés, la participation est
restreinte à un ensemble dutilisateurs (les
membres du groupe) - Chaque membre dun groupe a une identité et des
créances qui prouvent la propriété de lidentité
du membre du groupe - Chaque membre du groupe a aussi des créances pour
prouver quil est membre dun groupe
52Groupement
- Les informations sous la forme denregistrement
sont envoyés à travers un groupe un
enregistrement contient les informations
suivantes - Lidentité du membre qui publie linformation
- Les données prouvant la validité de
lenregistrement - Une durée de validité
- Les informations de lenregistrement
- La sécurité fournie par la notion de groupement
est la combinaison des éléments suivants - Les noms de pairs
- Les certificats des membres du groupes (GMC
Group Membership Certificates) - Les rôles (membre et administrateur)
- La publication sécurisée
- Les politiques de sécurité
- Les connexions sécurisées
53Groupement noms de pairs
- Les noms de pairs sécurisés sont uniquement
enregistrées par leur propriétaire et sont
protégés par un chiffrement à base de clé
publique - Les noms de pairs non sécurisée peuvent navoir
que 3 caractères - Les noms de pairs sécurisés doivent avoir au
moins 40 caractères - Aucun nom de pair ne peut avoir plus de 191
caractères plus un caractère NULL - Un nom de pair sécurisé est considéré comme la
propriété du pair qui dispose de la clé privée - La propriété peut être prouvée à travers le CPA
qui est signé en utilisant la clé privée - La sécurité dun groupe utilise un nom de pair
pour identifier chacun des membres du groupe - Les noms de pairs sont statistiquement uniques
- Le sécurité du groupe utilise également un nom de
pair pour identifier un groupe - Quand un groupe est créé, une nouvelle paire de
clés privée/publique est créée sur laquelle est
fondée le nom du pair - Le membre qui détient la clé privée correspondant
au nom de pair du groupe est le propriétaire de
ce groupe
54Groupement GMC
- Afin de participer à un groupe, chacun des
membres doit avoir les créances qui sont
utilisées pour prouver lappartenance au groupe
quand il effectue des opérations de groupe telles
que se connecter à un groupe ou publier des
enregistrements dans un groupe - Ces créances sont des certificats X.509 connus
sous le nom de Group Member Certificates (GMC)
dont les caractéristiques sont les suivantes - Le champ Subject est le nom du pair qui identifie
le membre - Pour quun certificat X.509 soit digne de
confiance, la chaîne de certificats, doit amener
à un certificat racine auto-signé dont lautorité
doit être digne de confiance - Pour quun GMC soit validé, il doit être un
certificat fils descendant dune autorité
digne de confiance - Or, un groupe est identifié par le nom de pair du
groupe ce nom de pair du groupe peut donc être
digne de confiance et donc agir comme une
autorité de confiance qui peut émettre des
certificats X.509 - Quand le nom de pair du groupe est utilisé comme
autorité racine, il est facile de vérifier que la
clé utilisée pour auto-signer le certificat
racine est la clé privée du groupe - Donc, toute chaîne de certificat qui conduit au
certificat racine auto-signé du groupe est digne
de confiance
55Groupement GMC
- Un tel certificat racine doit contenir
- Sujet nom de pair du groupe
- Émetteur nom de pair du groupe
- Signature utilisation de la clé privée du
groupe - On appelle un tel certificat un Group Root
Certificate ou GRC - Dans les certificats X.509, lautorité qui émet
les certificats peut être déléguée aux
sous-autorités dignes de confiance - Il est possible de distribuer la charge
démission des GMC des membres à dautres membres
du groupes connus sous le nom dadministrateurs
du groupe - Ces administrateurs peuvent encore déléguer cette
responsabilité si cela est autorisé par la
politique de sécurité du groupe - Comme dans tous les autres certificats X.509, les
GMC ont une période de validité
56Droits et rôles extensibles
- On donne au membres des groupes des rôles avec
des droits - Les droits déterminent ce que les membres peuvent
faire - Inviter les autres à joindre le groupe
- Créer, modifier ou supprimer les données du
groupe - Révoque les accès au groupe des autres personnes
- On peut définir de nouveaux droits et rôles
- La sécurité du groupe est intégrée au sein de
Windows - Membres, groupes et membres de groupes
57Stockage répliqué
- Le stockage répliqué correspond à lensemble des
enregistrements qui sont publiés de manière
sécurisée et synchronisée entre tous les membres
du groupe - Les applications enregistrent un nouveau type
denregistrement - Les nouveaux enregistrements irriguent le
graphe - La communication (et le mécanisme de réplication)
entre les nœuds utilise SSL afin dassurer le
chiffrement et lintégrité des données - Quand un nouveau membre rejoint un groupe,
celui-ci reçoit automatiquement tous les
enregistrements du groupe auquel il sattache - Après la synchronisation initiale, les membres du
groupe synchronisent périodiquement leur stockage
répliqué afin dassurer que tous les membres du
groupe ont une vue cohérente - Après avoir joint le groupe, les applications
peuvent enregistrer de nouveaux types
denregistrement et commencer de publier de
nouveaux types denregistrement en utilisant la
sécurité du groupe - Quand une application publie un nouveau
enregistrement, les mécanismes de sécurité pour
le groupe sont appliquées à lenregistrement et
celui-ci est publié de manière sécurisée - Les applications peuvent aussi enregistrer leur
intérêt pour le fait de recevoir tous les
enregistrements dun type donné (définition de
handlers pour les enregistrements en question) - Lenregistrement est validé et on invoque alors
le handler correspondant afin de notifier
lapplication et lui passer les données
58Recherche distribuée
- Mécanisme pour rechercher les données dans un
groupe - Support de deux modèles de recherche différents
- Recherche locale du stockage qui nenvoie pas de
requête - Recherche distribuée qui envoie des requêtes aux
voisins (ceci nest pas encore supporté dans la
version actuelle) - API commune pour le moteur de recherche
- Support dopérateurs logiques AND, OR, NOT
- Le schéma standard permet la recherche par mot-clé
59- La mise à jour Peer-to-Peer pour Windows XP
60IPv6 et Windows aujourdhui
- IPv6 Developer Edition for Windows XP
- Intégré au sein du système dexploitation,
installation triviale - Destiné aux développeurs dapplications, aux
déploiements pilotes et aux enthousiastes - Windows XP SP1
- Toujours indiquée comme "Developer Preview" car
nous ne voulions pas changer linterface
graphique pour un Service Pack mais la pile IPv6
est prête pour un déploiement et supportée - IPv6 Tech Preview for Windows 2000
- Disponible sur le site Web MSDN depuis mai 2000
- Destiné aux développeurs dapplications et aux
premières expérimentation pas dévolution
prévue
61IPv6 et Windows aujourdhui
- Pile IPv6 Windows CE .NET 4.1 (disponible et
supportée) - .NET Server
- Pile IPv6 utilisable en production
- Testée pour la taille et les besoins de
lentreprise - Pleinement supportée
- Comprend des services et des applications
compatibles IPv6 - Internet Explorer, RPC, telnet, ftp, etc.
- IIS, Windows Media Server, Terminal Server,
- .NET Framework
62Utiliser IPv6 avec Windows XP
- C\gt ipv6 install
- C\gt ipv6 if
- Affiche la liste des interfaces et des adresses
- C\gt ping6 1
- Adresse de bouclage
- http//anyIPv6server.com
- Documentation complète au sein de laide en ligne
- Rechercher ipv6 , voir aussi les livres blancs
- Important voir aussi netsh
63Commande Remarques IPv6
Arp arp a arp s arp -d - netsh interface ipv6 montre les voisins (ou ipv6 nc)- pas déquivalent netsh - netsh interface ipv6 delete neighbor (équivalent à ipv6 ncf dans les bêtas)
dsquery subnet Commande SQL Server. SQL Server nest pas encore IPv6
finger Fonctionne tel quel
ftp Fonctionne tel quel
getmac Fonctionne tel quel (pas spécifique IPv4 ou v6)
ipconfig Utiliser la commande netsh, ipconfig deviendra agnostique IPv6/4 pour .NET Server.
nbtstat Fonctionne tel quel (pas de WINS ou NETBIOS spécial avec IPv6)
netsh dhcp Pas de DHCP avec IPv6
netsh diag Spécifique IPv4, mais il est possible dutiliser simplement des commandes IPv6 telles que ping, telnet, netstat, etc.
netsh interface ip netsh interface ipv6
netsh interface portproxy Est une commande dinteropérabilité IPv6-IPv4 (genproxy avec les bêtas IPv6), fonctionne donc de la même façon
netsh ras RRAS non encore disponible avec IPv6
netsh routing RRAS non encore disponible avec IPv6
netsh wins Nexiste plus pas de WINS avec IPv6
netstat Fonctionne tel quel
nslookup Liste les enregistrement IPv6 AAAA ainsi que les enregistrements IPv4 A, mais DNS nutilise pas encore IPv6 comme transport pour la résolution des noms (disponible avec .NET Server).
ping Fonctionnera avec .NET Server en attendant utiliser ping6
route Utiliser 'netsh interface ipv6 show routes (ou ipv6 rt' dans les bêtas) fonctionnera avec .NET Server
telnet Fonctionne tel quel
tracert Fonctionnera avec .NET Server utiliser tracert6 en attendant
64Liste des fonctionnalités
Fonctionnalité Win2K Tech Preview WinXP WinXP SP1 Win .NET Server
IPv6 transport Oui Oui (caché) Oui (GUI indique "Preview") Oui
Winsock API Oui Oui Oui Oui
Command line Utilities Oui Oui Oui Oui
IE/WinInet (except literals) Oui Oui Oui Oui
FTP Client Oui Oui Oui Oui
6to4 node/router Oui Oui Oui Oui
Teredo Non Non Supprimé temporairement Supprimé temporairement
Persistent netsh config Non Non Oui (caché) Oui
RPC (post-install reboot) Non Oui Oui Oui
DCOM Non ignore IPv6 Non mais IPv4 ok Non mais IPv4 ok Oui
IPHLPAPI Non API de base Oui Oui Oui
DNS AAAA records over IPv4 Oui Oui Oui Oui
DNS AAAA records over IPv6 Non Non Non Oui
Dynamic DNS Oui Oui Oui Oui
Multicast DNS (aka LLMNR) Non Non Non Oui (RC2)
File and Print sharing Non Non Non Oui
HTTP Server Non Non Non Oui
Media Server Non Non Non Oui
FTP Server Non Non Non Oui, à confirmer
E-mail client Non Non Non Non
Terminal Server Non Non Non Non
Active Directory Non Non Non Non
SNMP/v4 MIBs, Netmon Non Oui Oui Oui
.NET Framework Non Non Non Oui (RC2)
65La mise à jour Peer-to-Peer pour Windows XP
- Windows XP SP1 et Windows 2003 Server supportent
IPv6 en standard - Cette mise à jour permet le support du
Peer-to-Peer en apportant les nouvelles
fonctionnalités suivantes - Mise à jour de la pile IPv6
- IPv6 Internet Connection Firewall (ICF)
- Fonctionne automatiquement statefull filtering
- Peut être configuré en utilisant la commande
netsh firewall - Teredo
- Client
- Server
- Relay
- Teredo host-specific relay
- En téléchargement depuis http//msdn.microsoft.com
/library/default.asp?url/downloads/list/winxppeer
.asp
66La mise à jour Peer-to-Peer pour Windows XP
- Les fonctionnalités Peer-to-Peer
- Network Address Translator traversal
- Améliorations de limplémentation dIPv6
permettant au trafic Peer-to-Peer de traverser la
plupart des NAT - Name resolution
- Support du protocole Peer Name Resolution
Protocol (PNRP), un mécanisme de résolution de
nom spécifique au Peer-to-Peer qui ne repose pas
sur le Domain Name System (DNS) - Graphing and grouping
- Le graphing maintient un ensemble de nœuds
connectés et procure un mécanisme dirrigation
(flooding) et de réplication de données à travers
le graphe. Le grouping définit le modèle de
sécurité pour créer et gérer des groupes
Peer-to-Peer persistants - Identity management
- Permet la création et la gestion didentités
Peer-to-Peer
67Résumé
- Microsoft Windows XP Peer-to-Peer SDK
- Solution universelle de NAT traversal
- Mécanisme de résolution de nom sécurisé et
scalable - Graphes permettant lauto-tuning et
lauto-réparation - Notion de security provider afin de permettre la
création de groupes - Stockage fiable et répliqué de messages
- Support dune recherche locale et distribuée
- Ces fonctionnalités Peer-to-Peer seront intégrées
en standard avec la prochaine version de Visual
Studio .NET - Une seule expérience pour les développeurs
68Références
- Windows et IPv6 http//www.microsoft.com/windows
server2003/technologies/ipv6/default.mspx - Introduction au Peer-to-Peer http//www.microsof
t.com/windowsxp/pro/techinfo/administration/p2p/p2
p_intro.doc - IPv6 et mise à jour Windows XP
http//www.microsoft.com/technet/treeview/default.
asp?url/technet/columns/cableguy/cg0403.asp - Téléchargement de la bêta du Peer-to-Peer pour
Windows XP http//www.microsoft.com/windowsxp/p2
p/ et http//msdn.microsoft.com/library/default.as
p?url/downloads/list/winxppeer.asp - Teredo http//www.microsoft.com/windowsxp/pro/te
chinfo/administration/p2p/Teredo_Overview.doc
69Informations complémentaires
- Microsoft IPv6 Technology Preview for Windows
2000 http//msdn.microsoft.com/downloads/sdks/pl
atform/tpipv6.asp - Microsoft Research IPv6 http//research.microsof
t.com/msripv6/ - Windows CE .NET IPv6 http//www.microsoft.com/
windows/Embedded/ce.NET/evaluation/features/ip6sup
port.asp - Microsoft WindowsIPv6 http//www.microsoft.com/
windows.netserver/technologies/ipv6/default.mspx - IPv6 Guide for Windows Sockets Applications
http//msdn.microsoft.com/library/default.asp?url
/library/en-us/winsock/winsock/ipv6_guide_for_wind
ows_sockets_applications_2.asp
70Informations complémentaires
- Microsoft's Objectives for IP version 6
http//www.microsoft.com/windows.netserver/technol
ogies/ipv6/ipv6.mspx - Introduction to IP Version 6 http//www.microsof
t.com/windows.netserver/docs/IPv6.doc - IPv6/IPv4 Coexistence and Migration
http//www.microsoft.com/windows.netserver/docs/IP
v6-IPv4.doc - IPv6 Configurations and Test Lab
http//www.microsoft.com/windows.netserver/docs/IP
v6configs.doc
71 723 degrees
- http//www.threedegrees.com/
733 degrees
743 degrees aperçu de la solution
Mariage de Messenger du Peer-to-Peer
Problème Technologie
Identité Messenger / Passport
Transport multipoint Graphe P2P
Stockage synchronisé Graphe P2P
Système de fichiers groupe Moteur de transfert de fichier
Découverte du groupe PNRP (Peer Name Resolution Protocol)
Présence dans le groupe Flux de type Messenger Presence
Invitations Invitations aux sessions Messenger
Connectivité de bout en bout IPV6/Teredo
Sécurité SSP fondé sur des secrets partagés
753 degrees architecture
76Questions et Réponses