FR 2955004 A1 20110708 FR 1050002 A 20100104 Redémarrage autonome des noeuds d'un réseau pair-à-pair La présente invention concerne les réseaux pair-à-pair. Ces réseaux sont constitués d'un ensemble de noeuds inter connectés qui s'autogère. 5 Ces réseaux pair-à-pair peuvent être utilisés pour différentes applications, notamment de télécommunication. Pour certaines de ces applications, les noeuds doivent mémorisées des données. Ces données peuvent être des données relatives à une session de communication et doivent 0 être alors retrouvées pour tout nouvel événement appartenant à la même session. Un réseau pair-à-pair peut être utilisé comme mémoire distribuée, et chaque noeud mémorise une partie des données qui sont accessibles via une table de hachage distribuée. 15 Certaines applications nécessitent une forte tolérance aux pannes. Aussi, afin d'éviter que la défaillance d'un noeud du réseau ne détruise irrémédiablement la part des données qu'il mémorisait, celles-ci peuvent être dupliquées sur un autre noeud. Ce mécanisme classique de redondance (dit « buddy replication » permet au système d'être tolérant à la plupart des fautes 20 impactant le réseau pair-à-pair. Une implémentation d'un réseau pair-à-pair est davantage expliquée dans l'article "Chord: A scalable peer-to-peer Lookup Service for Internet Applications" de lan Stoica, Robert Morris, David Karger, M. Frans Kaashoek 25 et Hari Balakrishanan, ACP SIGCOMM 2001, San Diego, CA, Août 2001; pp. 149-160 Il existe des articles qui exposent des méthodes pour améliorer la tolérance aux fautes dans un réseau "Chord". Par exemple, l'article "Availabiliy multi-obiect operations" de Haifeng Yu, Philip B. Gibbons et Suman Nath propose de s'intéresser à la façon dupliquer les données dans un tel réseau. Chacun des noeuds du réseau contient des modules logiciels permettant au système de fonctionner. Ces modules logiciels permettent aux noeuds de communiquer selon un protocole prédéfinis, de traiter les requêtes venant d'autres noeuds ou de systèmes extérieurs au réseau pair-à-pair, de gérer la duplication des données, etc. 0 Épisodiquement, ces modules logiciels peuvent nécessiter d'être changés ou mis à jour. Les mécanismes de mise-à-jour logiciels requièrent l'arrêt temporaire des noeuds, même s'il ne s'agit que d'installer une nouvelle version ne corrigeant qu'un problème mineur ou apportant une fonctionnalité nouvelle mais secondaire. Toutefois, dans le cas d'un réseau pair-à-pair, ce redémarrage pose deux problèmes. D'une part, les noeuds mémorisant des données, celles-ci doivent être 20 sauvegardées pendant la phase de redémarrage. D'autre part, pour certaines applications comme les applications de télécommunication, il est primordial d'assurer une continuité de service du réseau pair-à-pair. Autrement dit, pendant le redémarrage des noeuds, le réseau pair-à-pair doit continuer à fonctionner et à fournir le service applicatif 25 prévu de façon transparente pour les dispositifs utilisateurs de ce service. La présente invention a pour but de résoudre ces deux problèmes. Pour ce faire, elle consiste en un procédé de redémarrage d'un réseau 30 pair-à-pair formé d'un ensemble de noeuds. Ce procédé est novateur en ce qu'il comporte une étape de détermination d'un premier noeud à redémarrer et d'un ensemble de noeuds connus dudit noeud à redémarrer; chaque noeud à redémarrer mettant en oeuvre avant de redémarrer : une étape d'élection d'un noeud suivant parmi les noeuds connus, une étape de transmission d'un message par le noeud à redémarrer vers les noeuds connus, contenant un identifiant du noeud suivant (élu dans l'étape précédente) ; et en ce qu'à la réception du message, chaque noeud met en oeuvre: • une étape de sauvegarde des sessions dupliquées, consistant à 10 déterminer les sessions dupliquées entre ce noeud et le noeud à redémarrer, et à les dupliquer à nouveau, • une étape de vérification si ce noeud est le noeud suivant en fonction du contenu du message, et dans ce cas considérer le noeud en question comme un noeud à redémarrer. 15 Selon un mode de réalisation de l'invention, l'étape de sauvegarde consiste à attendre le redémarrage du noeud à redémarrer puis à dupliquer les sessions dupliquées sur celui-ci. Le message peut en outre contenir un identifiant du noeud suivant et 20 l'étape de sauvegarde consiste alors à dupliquer les sessions dupliquées sur un noeud quelconque des noeuds connus sauf sur le noeud suivant et le noeud à redémarrer. L'étape d'élection peut consister à déterminer un noeud suivant parmi les noeuds déployés sur un dispositif de traitement différent de celui sur lequel 25 le noeud à redémarrer est déployé. L'invention a également pour objet un réseau pair-à-pair comportant une pluralité de noeuds, certains au moins de ces noeuds mettant en oeuvre le procédé précédemment décrit. 30 Ainsi, l'invention propose un mécanisme de redémarrage séquentiel des noeuds couplés avec une stratégie de redéploiement dynamique des données dupliqués au sein du réseau. A chaque instant, les noeuds n'étant pas en redémarrage suffisent pour fournir le service applicatif. En outre, le mécanisme ne nécessite pas d'intervention humaine chaque noeud détermine automatiquement un noeud suivant à redémarrer. De plus, les noeuds peuvent mettre en oeuvre ce mécanisme de façon autonome. Il ne nécessite pas de dispositifs centralisés ou extérieurs. 10 L'invention et ses avantages apparaîtront de façon plus claire dans la description qui va suivre en liaison avec la figure annexée qui représente schématiquement un réseau pair-à-pair. Le réseau pair-à-pair R représenté sur la figure 1 est composés de noeuds Ni, N2, N3, N4, N5. Chaque donnée mémorisée dans un noeud est dupliquée dans un autre noeud distinct. Ainsi, les données D mémorisée dans le noeud Ni sont dupliquées dans le noeud N3. Ainsi, en cas de défaillance du noeud N1, ces données D seront toujours disponibles au sein du réseau 20 pair-à-pair R. Outre ces données, les noeuds disposent de modules logiciels. Ces modules logiciels permettent de mettre en oeuvre les mécanismes et algorithmes particuliers gérant le réseau pair-à-pair. Ces mécanismes et 25 algorithmes particuliers peuvent par exemple être ceux conformes au document « Chord » précédemment cité. Selon l'invention, dispose en plus de modules logiciels prévus pour la mise à jour des modules logiciels précédemment évoqués.5 Comme nous le verront, ces modules logiciels comportent deux fonctions : une déclenchée à la réception d'un message de redémarrage, l'autre au moment du redémarrage. On suppose que l'ensemble des noeuds disposent des mêmes modules logiciels. Cette hypothèse permet de simplifier la présentation de l'invention, mais celle-ci peut être adaptée pour s'appliquer à un réseau comportant des noeuds différenciés. 10 Le procédé de l'invention comporte une première étape de détermination d'un premier noeud à démarrer. Cette initialisation du procédé se fait par l'émission d'un message par un dispositif extérieur vers le noeud déterminé. Ce dispositif extérieur peut être 15 une console de contrôle du réseau pair-à-pair, par laquelle le programmateur peut déclencher la mise à jour ou le remplacement des modules logiciels embarqués sur les noeuds. Ce message est reçu par le noeud déterminé et provoque le 20 déclenchement d'une fonction de redémarrage. Cette fonction de redémarrage comporte une étape d'élection d'un noeud suivant parmi les noeuds connus du noeud déterminé. Cet ensemble des noeuds connus est au démarrage égal à l'ensemble 25 des noeuds. Toutefois, au fil des redémarrages, les deux ensembles vont diverger. En effet, lorsqu'un noeud redémarre, il porte une nouvelle identité et bien qu'étant la même machine, il s'agit fonctionnellement d'un noeud différent. Par conséquent, au long de procédé selon l'invention, il y aura de moins en moins de noeuds appartenant à cet ensemble de noeuds connus 30 initia Au sein de cet ensemble de noeuds connus (initial), il doit élire le noeud qui va redémarrer après lui. Ce choix peut être fait selon différents critères. Un critère efficace est d'élire un noeud déployé sur un dispositif de traitement distinct du sien. En effet, dans un réseau pair-à-pair, les noeuds sont déployés sur un ensemble de machines ou dispositifs de traitement qui sont généralement en nombre inférieur à celui des noeuds. De fait, plusieurs noeuds sont habituellement déployés sur une même machine. Afin d'éviter des 0 déséquilibres en charge du réseau N lors du processus de redémarrage, il est intéressant de répartir le redémarrage des noeuds dans le temps selon les dispositifs de traitement. Cette façon de faire évite qu'à un moment donné certaines machines possèdent beaucoup plus de noeuds que d'autres, provoquant ainsi une perte en performance du système. 15 Une autre mise en oeuvre peut consister à suivre l'anneau d'une table de hachage distribuée (DHT) déployée sur le réseau pair-à-pair. Ces deux mises en oeuvre peuvent également être combinées. 20 D'autres façons de faire sont bien évidemment également possibles mais il est important de noter que la détermination du noeud suivant est effectuée par les noeuds du réseau pair-à-pair eux-mêmes, sans l'intervention d'un dispositif extérieur et centralisé. Un des avantages de l'invention est de fournir un processus entièrement autonome et géré par le réseau pair-à-pair. 2 Une deuxième étape de la fonction de redémarrage est une étape de transmission d'un message M vers le sous-ensemble des noeuds connus. Ce message contient un identifiant du noeud suivant. Il peut également contenir un identifiant du noeud déterminé (émetteur du message) et un identifiant des 30 noeuds du sous-ensemble des noeuds connus. Une fois que l'ensemble des messages M a été correctement transmis, le noeud peut redémarrer. Ainsi qu'il est connu de l'homme du métier, un redémarrage peut comporter quelques prétraitements comme la terminaison 5 des canaux de communication (« sockets » ouverts avec les autres noeuds etc. onction de redémarrage peut correspondre à une section critique durant laquelle le noeud arrête de créer de nouvelles sessions. 10 Le procédé selon l'invention comporte également une fonction de réception, déclenchée par la réception d'un message tel que précédemment décrit. Cette fonction de réception comporte une étape de sauvegarde des sessions dupliquées. Cette étape consiste à d'abord déterminer les sessions impactées, c'est-à-dire qui sont dupliquées entre le noeud ayant reçu le message et le noeud l'ayant émis. Il importe peu de savoir lequel des deux noeuds possède la version « primaire » et qui possède la copie ; il est juste important de déterminer les sessions qui sont dupliquées entre ces deux noeuds. 20 Le noeud émetteur devant redémarrer, une des deux copies est amené à disparaître du réseau pair-à-pair et l'enjeu est de maintenir la redondance des informations même pendant cette phase de redémarrage du réseau N. 25 Pour ce faire, plusieurs mises en oeuvre sont possibles. Dans une première mise en oeuvre, le noeud attend que le noeud émetteur ait redémarré. Lorsque celui-ci devient actif à nouveau, il déclenche une étape de duplication des données de sessions précédemment déterminées sur le noeud émetteur. 30 Dans une deuxième mise en oeuvre, noeud déclenche la détermination d'un noeud sûr et duplique les données de session sur ce noeud sûr. Ce noeud sûr peut être n'importe quel noeud du sous-ensemble des 5 noeuds connus, sauf le noeud émetteur, et le noeud suivant à redémarrer (qui peut être transmis comme paramètre du message). La fonction de réception comporte également une étape de vérification si le noeud récepteur est le noeud suivant déterminé par le noeud 10 émetteur. Pour ce faire, l'identifiant du noeud suivant doit être inclus dans le message. Dans ce cas, le noeud récepteur doit être considéré comme un noeud à redémarrer et par conséquent, la fonction de redémarrage est automatique déclenchée. 15 Le processus se termine lorsque tous les noeuds ont redémarré. C'est-à-dire lorsqu'il n'existe plus un seul noeud appartenant à l'ensemble initial des noeuds connus (tous on redémarré et changé d'identité.) trace au procédé de l'invention, les données de session sont 20 conservés et disponibles tout au long du processus et le réseau pair-à-pair demeure opérationnel. En outre, les données de session restent dupliquées et réseau pair-à-pair continue de respecter les exigences en termes de tolérance aux fautes.