BaroqueW

BaroqueW

and his sidekick nikkitaa

BaroqueW RSS Feed
 
 
 
 

Posts tagged réseau

Algorithmes de Cache dans les Réseaux Ad-Hoc

Voici l’introduction d’un rapport que j’ai rédigé pour un projet concernant la définition et l’implémentation d’un algorithme de cache dans les réseaux ad-hoc.

Ce document constitue une étude bibliographique comparative d’une petite dizaine de travaux plus ou moins récents sur le sujet, en essayant de faire ressortir les points clés, avantages et défauts de chaque algorithme.

Le document est également disponible sur Scribd en différent formats.

Document : Algorithmes de Cache dans les Réseaux Ad-Hoc

Category: Articles en français, Tech >> Computer | Leave a comment

Narada Brokering

Creative Commons License
Creative Commons License

Cette création est mise à disposition sous un contrat Creative Commons.

  1. Pair-à-pair et grillesAu cours des dernières années, on a assisté au développement de deux systèmes d’applications réparties : le système pair-à-pair et le système de type grille. Ces deux systèmes ont des avantages complémentaires.Les systèmes pair-à-pair ont une architecture très flexible reliant des pairs volontaires se trouvant à la bordure des réseaux. Les pairs sont alors reliés dans des réseaux correspondant plutôt à des réseaux ad hoc, c’est-à-dire tolérant aux déconnexions et aussi aux fautes. Ces systèmes sont davantage orientés vers le partage de fichiers et permettent aux pairs de rejoindre des groupes, émettre des requêtes, découvrir des ressources et signaler leurs intérêts particuliers pour certaines ressources.Les systèmes de grille sont eux davantage orientés vers le partage de temps de travail. Ces réseaux sont en général robustes car fixes. Ils passent donc plutôt bien à l’échelle. En outre ces réseaux sont généralement soumis à de fortes contraintes de sécurité puisqu’ils travaillent souvent pour de projets industriels et/ou sensibles. En revanche le modéle de grille, même s’il est tolérant aux fautes, s’appuie davantage sur une certaine stabilité du réseau, une absence de noeuds opportunistes (leechers) et plus généralement, on peut dire que dans ce modèle, la volonté des noeuds et leur singularité ne sont pas vraiment des éléments clé.
  2. Principe du NaradaBrokeringLa grande idée du NaradaBrokering va donc être de réunir les avantages de ces deux systèmes pour offrir aux utilisateurs un réseau de grande qualité. Pour intégrer le meilleur de ces deux modèles, le NaradaBrokering utilise des techniques tirées des objets distribués, des services web et, ce qui nous intéresse tout particuliérement ici, des intergiciels orientés message.L’architecture utilisée ici est une architecture de réseaux locaux de pairs organisés à grande échelle par un réseau coeur. Pour l’accès aux services on introduit alors des “brokers”. C’est sur cette partie du réseau que vont principalement être utilisés les intergiciels orientés message. Ces brokers sont envisagés comme étant le plus petit élément de ce réseau. Ils ont pour mission de traiter et router intelligemment les messages. Plus particulièrement, voici les points clés de leur rôle :
    • Ils doivent mettre en place un réseau qui puisse passer à l’échelle facilement, que l’on rajoute des noeuds ou des brokers.
    • Ils doivent fournir un routage intelligent, notamment répartir la charge et minimiser le trafic tout en étant réactif aux déconnexions de certains noeuds, aux pannes réseaux etc. Il faut aussi que le système sache s’affranchir des NAT, DHCP et autres pare-feu qui compliquent souvent la tâche aux applications orientées réseau.
    • Ils doivent fournir de la fiabilité lors des envois, ce qui n’est pas toujours le cas pour les systèmes de pair-à-pair.
    • Les brokers doivent tolérer les protocoles de pair-à-pair qui ont souvent déjà leurs propres méthodes d’accès aux services (requêtes, etc.).
    • Il faut également que ce réseau soit compatible avec le large panel de systèmes orientés messages déjà en place (des systèmes de type publish/suscribe tels que JMS et JXTA mais aussi MSMQ et MQSeries) ainsi qu’avec les différents protocoles réseau qui pourraient être utilisés en pair-à-pair (TCP/IP, UDP, RTP, RMI, XML/SOAP). La compatibilité désirée pousse aussi le réseau à devoir s’adapter à des communications asynchrones mais aussi synchrones. Enfin, le système du NaradaBrokering doit pouvoir être utilisé sur un grand nombre de plates-formes différentes (du noeud mobile à la station de travail fixe).
    • Enfin, ce réseau devra être sécurisé et pouvoir surveiller les performances du réseau, l’activité des différents noeuds afin de pouvoir maintenir un certain niveau de qualité de service dans le réseau.
  3. Topologie du réseau utiliséLe réseau lié au NaradaBrokering est considéré comme étant constitué de brokers coopérants les un avec les autres, que ceux-ci soient situés sur des machines qui sont aussi de simples clients ou non.Pour éviter d’avoir un réseau de brokers disparate et mal connecté, NaradaBrokering intégre un protocole de communication entre brokers chargé de gérer les liaisons entre brokers et de gérer l’ajout (ou le retrait) de brokers au réseau. L’organisation de ce réseau est faite de façon hiérarchique, chaque broker faisant partie d’un sous-ensemble, regroupé avec d’autres sous-ensembles en un autre ensemble, etc. Ces premiers sous-ensembles possédent des brokers fortement interconnectés avec les autres sous-ensembles afin de garantir une liaison même en cas de panne. On a ainsi de petits réseaux connectés les uns aux autres. Ceci fait que lorsqu’on augmente la taille du réseau, le trafic augment de façon logarithmique et non exponentielle comme dans le cas des réseaux mal organisés ou désorganisés.NaradaBrokering introduit d’ailleurs des Brokers Network Maps (BNM) permettant d’assurer le routage intelligent évoqué plus haut.La figure 1 montre un exemple de réseau utilisant NaradaBrokering. Les SC-i sont des exemples de sous-ensembles (super cluster) et SSC-A est un ensemble regroupant ces sous-ensembles (super-super-cluster). Chacun des SC-i a d’ailleurs des sous-sous-ensembles a regroupant plusieurs brokers et services auxquels sont connectés plusieurs clients. On voit également les échanges de message entre brokers et services ainsi que les messages entre brokers pour pouvoir constamment répondre au mieux attentes du client connecté au broker 12.
    Exemple de réseau NaradaBrokering
    Exemple de réseau NaradaBrokering
  4. Interaction avec JXTAJXTA est un projet Open Source dont le but est de proposer un ensemble de protocoles standards pour le modèle de communication pair-à-pair.Le NaradaBrokering supporte les interactions avec le pair-à-pair, en fixant deux contraintes principales :
    • Aucune modification n’est faite au niveau du noyau JXTA, et des protocoles associés. L’intégration se fera au niveau de la couche “rendez-vous”.
    • Du point de vue des pairs, aucun changement n’est visible en ce qui concerne les interactions qu’ils pourraient avoir.

    L’intégration de JXTA repose sur un modèle de proxy, ce dernier pouvant être vu comme une passerelle entre le système NaradaBrokering et JXTA, jouant en même temps le rôle d’un pair rendez-vous (sorte de super-pair), et un client NaradaBrokering.

    Du point de vue JXTA, NaradaBrokering peut être considéré comme un service, dont la découverte est automatique, grâce à l’intégration dans la couche rendez-vous.

    Du point de vue des pairs, l’interaction avec un proxy Narada-JXTA ou un pair rendez-vous est totalement invisible.

    Le modèle d’interaction gravite donc autour de la couche rendez-vous : celle-ci traite les interactions placées en queue. Dans le cas de requêtes de recherche/découverte, ou de communication au sein d’un groupe de pairs, les interactions seront traitées à la fois par les pairs de rendez-vous JXTA, et les proxies Narada-JXTA.

    Lors de son initialisation en tant que client Narada, chaque proxy se voit assigner un identifiant unique. Il souscrit ensuite à un sujet l’identifiant comme proxy Narada-JXTA, ce qui permet au système de connaître tous les différents proxies présents.

    D’autre part, en tant que pair rendez-vous, le proxy récupère certaines informations des interactions JXTA, telles que par exemple :

    • les annonces des groupes de pairs
    • les demandes d’intégration à ces groupes, et leurs réponses
    • les messages envoyés à un groupePuis un événement correspondant aux informations récupérées est créé, ciblant des sujets spécifiques, pour un routage plus efficace.
  5. Sécurité et développements possibles
    1. SécuritéEtant donné que les messages au sein d’un système NaradaBrokering peuvent traverser des noeuds plus ou moins sécurisés, il est nécessaire de mettre en place une infrastructure reposant sur des niveaux de sécurité pour les messages. La gestion de la sécurité dans NaradaBrokering a pour intention de garantir ou permettre :
      • l’authentification des utilisateurs
      • leur autorisation
      • la gestion de signatures digitales, et le partage de clés
      • l’intégrité des données
      • l’indépendance vis-à-vis du protocole de communication utilisé
    2. Développements possiblesAinsi, NaradaBrokering est une infrastructure reposant sur l’échange de messages, qui paraît appropriée aux Grilles pair-à-pair. Comme il existe de plus de nombreux matching engines, cela favorise les interactions possibles, et enrichit les mécanismes de découvertes. C’est notamment le cas avec un moteur supportant le XML.L’objectif est également à terme de supporter les bases de données Native XML (Xindice et eXist).Un travail en collaboration avec Gnutella est également en cours, dans le cadre d’une fédération de systèmes pair-à-pair, et de standardisation des mécanismes de recherche, requêtes, et réponses.
  6. Bibliographie
    1. le site officiel du projet
    2. Towards Enabling Peer-to-Peer Grids : Journal of Concurrency and Computation : Practice & Experience. ACM JavaGrande ISCOPE Special Issue.Volume 17, Issue 7-8 , Pages 1109 - 1131. Geoffrey Fox, Shrideep Pallickara and Xi Rao.
    3. NaradaBrokering : A Middleware Framework and Architecture for Enabling Durable Peer-to-Peer Grids. Proceedings of ACM/IFIP/USENIX International Middleware Conference Middleware-2003. pp 41-61. Shrideep Pallickara and Geoffrey Fox
    4. Support for Peer-to-Peer Interactions in Web Brokering Systems. ACM Ubiquity. Volume3 Issue 15. May 2002. Geoffrey Fox and Shrideep Pallickara
    5. NaradaBrokering : Towards P2P Grids. Talk given to Beihang University Multimedia Group, Beijing. Shrideep Pallickara.
    6. NaradaBrokering : A Middleware Framework and Architecture for Enabling Durable Peer-to-Peer Grids. ACM/IFIP/USENIX International Middleware Conference Middleware-2003. Shrideep Pallickara and Geoffrey Fox

Réalisé conjointement avec Thibault Devedeux. Article également disponible sur http://fr.wikipedia.org/wiki/NaradaBrokering

Présentation disponible sur Scribd en différents formats.

Category: Articles en français, Tech >> Computer | Leave a comment

Nat et uPnP

  1. Le NAT
    1. Pourquoi le NAT ?
      Pour communiquer, deux machines doivent avoir une adresse IP bien définie. Avec l’explosion des réseaux privés et le gaspillage des ressources, on est vite limité, d’autant plus que tous les foyers ne peuvent pas se payer des adresses IP distinctes et leurs FAI ne peuvent pas leur en offrir. On a donc recours à l’adressage privé et au NAT (avant l’arrivée de l’IPv6).
    2. Un peu de terminologie
      Le domaine local (LAN) s’appelle le stub. Il a un adressage privé le plus souvent et les ordinateurs du stub communiquent via cet adressage. Ces adresses ne peuvent pas sortir de leur stub sous peine de générer beaucoup de conflits. Adresses privées :

      • 10.0.0.0 - 10.255.255.255 (classe A)
      • 172.16.0.0 - 172.31.255.255 (classe B)
      • 192.168.0.0 - 192.168.255.255 (classe C)
    3. Comment il fonctionne ?
      Un périphérique (pare-feu, routeur, ordinateur) NAT agit comme une sorte de réceptionniste qui ne laisserait passer que les gens dont vous attendez la venue. Le NAT associe une communication entre un réseau extérieur et lui à une connexion entre lui et une machine du réseau interne et ce, grâce à un identifiant. On a du NAT statique : une adresse IP en entrée correspond à une IP en sortie (ne résout pas le problème du nombre d’adresses disponibles) et ce de façon permanente. On a aussi du NAT dynamique : même idée que ci-dessus mais les couples IP entrée / IP sortie ne sont pas fixés. Et du NAT à overloading ? : à un couple TCP/IP (Port/adresse) en entrée correspond un couple TCP/IP en sortie (entrée = extérieur => NAT, sortie = NAT => interne). On le voit donc, au niveau du NAT, une traduction est faite, car les machines extérieures pensent ne parler qu’à un seul ordinateur (dont l’ip est celle du périphérique gérant le NAT). Cela suppose que le NAT garde des tables de correspondance pour qu’au retour, il transmette le paquet au bon ordinateur.
    4. Petit scénario
      • 192.168.0.1 et 228.9.12.78 -> routeur nat
      • 192.18.0.2 -> ordinateur A
      • www.google.fr -> site quelconque
        L’ordinateur A veut naviguer sur google : il demande à ouvrir une connexion avec l’IP de google (port 80) depuis son IP sur le port 5124 (par exemple). Le routeur intercepte le message, change IP source en 228.9.12.78 et port source en 1001 (par exemple) et il enregistre dans sa table le rapport IP/port. Quand google répond au routeur sur ce port, le routeur change IP destination en 192.168.0.2 et le port destination en 5124. Si jamais une autre machine envoie un paquet à l’IP externe du routeur sur le port 1001, il ira lui aussi vers l’ordinateur A. Si un ordinateur B veut ouvrir une connexion avec google lui aussi, entre son port 5124 (ou un autre) et le port 80, il sera enregistré dans la table avec le port associé 1002 par exemple et ainsi on pourra établir les deux connexions sans problème.
    5. Avantages
      • En effet, seules les connexions initialisées par le stub sont acceptées en entrée
      • Les machines extérieures pensent que le stub n’est constitué que d’une seule machine
      • Gain en nombre et en cohérence au niveau des adresses IP
      • Protection du stub
    6. Inconvénients
      • Impossibilité dans le cas où les données sont chiffrées
      • Pour rendre le routeur NAT et le logiciel local “aware” l’un de l’autre, on utilise l’IGD du protocole uPnP
      • On peut surveiller les connexions TCP pour savoir quand elles sont fermées, mais pas les UDP
      • On peut mettre un timeout
      • Le routeur NAT doit modifier l’en-tête des paquets TCP/UDP en entrée comme en sortie pour garder la cohérence du trafic (et recalculer les checksums)
      • Certains protocoles écrivent les adresses à l’intérieur de leurs données transmises (FTP, jeux vidéos, p2p) il faut donc savoir modifier ces champs (facile pour FTP mais dur pour les jeux ou le p2p qui sont moins standardisés)
      • Il ne faut pas engorger les tables de correspondance du NAT et donc nettoyer les tables
  2. uPnP
    1. Idée de base
      uPnP est un standard Microsoft qui étend le pnp (périphérique standard) au cas des réseaux. Il offre aux différents périphériques une sorte d’intelligence leur permettant de se reconnaître les uns les autres et d’agir en conséquence. uPnP offre du contrôle. On peut trouver de l’upnp dans des logiciels (MSN, P2P, jeux) ou dans des périphériques : routeurs, passerelles, imprimantes … (ça sera également utile pour communiquer dans le cadre de la maison intelligente)
    2. Implémentation
      Protocole indépendant de l’OS, du medium physique et du périphérique ainsi que du langage utilisé pour la programmation. Les technologies mises en œuvre sont : IP, TCP et UDP pour la communication, HTML pour que l’utilisateur puisse accéder au logiciel du périphérique uPnP permet toutefois d’utiliser normalement des applications clients pour le contrôle du réseau. Les périphériques compatibles uPnP doivent avoir un client DHCP et pouvoir s’attribuer une adresse ou un nom conforme au nom de domaine fourni par le DNS le cas échéant. Les différents aspects du protocole sont :

      • Discovery : une fois qu’il a une IP, le périphérique annonce ses services en broadcast sur le réseau et s’enquière des services qui peuvent l’intéresser
      • Description : une fois un service identifié, il y a échange d’informations plus précises (en XML)
      • Control : pour effectuer une action sur un service du réseau
      • Event notification : indique quand une action a été effectuée ou quand une mise à jour quelconque est survenue
      • Presentation : permet (via interface web le plus souvent) à l’utilisateur de contrôle manuellement le périphérique et ses options
    3. IGD et rapport au NAT
      On l’a vu, il arrive que les logiciels ne soient pas “aware” du NATtage que leurs paquets subissent. L’uPnP résout ce problème en faisant communiquer intelligemment le périphérique NAT et les logiciels. Ainsi ils peuvent modifier directement leurs paquets avec les bonnes IP (notamment dans la partie données dans le cas des protocoles exotiques (jeux)) et ils peuvent prévenir explicitement le service NAT d’oublier la ligne qui leur correspond dans sa table de correspondance une fois la connexion terminée. L’IGD, Internet Gateway Device est intégré aux routeurs (à certains) pour permettre aux logiciels d’utiliser le NAT en symbiose avec le routeur et non plus de façon transparente. Ainsi, grâce à IGD, un logiciel peut apprendre l’IP publique du routeur, connaître l’état de la table de correspondance des ports, ajouter ou enlever des lignes à cette table et assigner un temps de survie à une connexion qu’ils ont demandée avec l’extérieur.
    4. Inconvénients de l’uPnP
      Aucune méthode d’identification donc souvent l’uPnP est désactivé.
  3. Complément
    Il y a d’autres méthodes, comme le STUN (Simple Transversal of UDP over NAT) pour rendre le NAT plus amical.
Category: Articles en français, Tech >> Computer | Leave a comment