FR 2939584 A1 20100611 FR 0858365 A 20081208 Procédé de codage réseau dans un réseau maillé, produit programme d'ordinateurs, moyen de stockage et noeuds de communication correspondants. 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui des réseaux de communications. Plus précisément, l'invention concerne un procédé permettant de notifier les potentiels changements par rapport à un schéma de codage réseau de référence prédéterminé durant une phase d'initialisation d'un réseau de communication. 2. ARRIÈRE-PLAN TECHNOLOGIQUE 2.1 Contexte et problème On s'attache plus particulièrement dans la suite de ce document à décrire la problématique, existante dans le contexte d'un codage réseau dans un réseau maillé sans fil, à laquelle ont été confrontés les inventeurs de la présente demande de brevet. L'invention ne se limite bien sûr pas à ce contexte particulier d'application, mais présente un intérêt dans tous les cas de codage réseau adapté à la transmission, via des noeuds relais, de paquets de données depuis des noeuds sources vers des noeuds destination, dans un réseau de communication maillé. Les systèmes de communications sans fil de type 60GHz sont particulièrement bien adaptés dans le cadre de transmission de flux de données à très haut débit et à portée limitée. A l'heure de la multiplication des contenus hautes définitions, ce type de transmission sans fil et à haut débit est adéquate, par exemple, comme connexion entre les différents éléments audio d'un cinéma de salon (ou � home theater � en anglais) nécessitant une bande passante très importante et cela à l'échelle d'une pièce. Mais, malgré les débits importants mis en oeuvre par ces types de réseau, la multiplicité des sources nécessite cependant l'augmentation des bandes passantes disponibles afin de pouvoir transmettre le contenu de ces différentes sources par exemple de l'audio et de la vidéo toujours dans un système Home cinema. Afin de pallier à ce problème de capacité du réseau, un nouveau concept a fait son apparition. Ce concept, appelé codage réseau (ou � network coding � en anglais), permet à un noeud non plus seulement de retransmettre un des paquets qu'il a reçu en entrée par une des sources (ou par un noeud relais) mais de créer un paquet résultant qui est une combinaison des paquets reçus en entrée. Le concept de codage réseau a été introduit par R. Ahlswede et al. et amplement décrit dans une publication (R. Ahlswede, N. Cai, S-Y. R. Li, and R. W. Yeung, "Network information flow", IEEE Trans. Inform. Theory, Vol. 46, pp. 1204-1216, July 2000). Très rapidement, de nombreux articles ont démontré l'apport de ce nouveau concept, notamment en termes de gain en bande passante et en termes d'utilisation de la capacité de réseau. De plus, il a été montré que dans un cadre de multidiffusion (ou � multicast � en anglais) où chaque message envoyé par un noeud source est destiné à l'ensemble des noeuds de Dt (Dt étant un ensemble ou l'ensemble des noeuds destinations du réseau), les combinaisons linéaires dans un corps Fq suffisamment grand donnent un résultat optimal (en terme de gain) tel que décrit dans le document "Linear network coding," - S.-Y. R. Li, R. W. Yeung, and N. Cai, IEEE Trans. Information Theory, IT-49(2):371-381, Feb. 2003. Dans la suite de la description, un schéma de codage réseau est défini de la façon suivante : - les noeuds relais combinent les paquets en entrée pour générer un paquet combiné appelé paquet résultant ; et - pour ces noeuds relais, les paquets en entrée à combiner sont choisis parmi l'ensemble des paquets reçus ; et - pour chaque paquet en entrée à combiner est associé un coefficient dans le corps Fq. Les noeuds et les liens participant au codage réseau sont considérés utiles, les autres sont considérés redondants. Les noeuds destinations reçoivent alors une pluralité de paquets (les paquets résultants des noeuds relais) qui sont des combinaisons linéaires des paquets sources envoyés par les noeuds sources. Dans un mode de réalisation de l'invention, le schéma de codage utilisé est un schéma de codage optimisé tel que décrit dans le document de brevet US2005/0010675. Ce codage optimisé permet de réduire le nombre de noeuds et de liens utiles participant au schéma de codage réseau afin de diminuer le nombre d'opérations et donc le temps CPU (pour � Central Processing Unit � en anglais ou � unité de traitement centrale � en français). Ce schéma est déterminé à l'initialisation du système en prenant en compte la topologie du système. Les paquets résultants émis par les noeuds relais sont donc prédéterminés (plus précisément leur combinaison linéaire associée est prédéterminée). Cependant, l'environnement sans fil étant très sensible, la transmission peut être perturbée par de nombreux facteurs comme des interférences, des atténuations ou des masquages provoqués par des objets mobiles traversant le champ d'émission. Ces perturbations du canal de transmission peuvent entraîner des pertes de liens et donc des modifications temporaires de la topologie du réseau. Le schéma de codage réseau prédéterminé étant basé sur la topologie initiale du réseau, une modification de cette topologie peut mener à l'incapacité des noeuds destinataires à décoder l'ensemble des paquets sources du fait que ceux-ci sont tous liés entre eux dans les paquets reçus. 2.2 Prérequis et limites de l'état de la technique 2.2.1 Le corps Fe q=2s L'ensemble des opérations effectuées dans la présente invention est réalisée dans un corps fini noté Fq, constitué de q éléments. Dans le cadre de l'invention, les séquences d'information envoyées dans le réseau sont dans un contenant appelé paquet, qui a une taille fixe, s bits consécutifs d'un paquet constituant un symbole sur le corps Fq avec q=2s. Par exemple, un paquet de 1400 octets contient 1400 symboles si la taille du corps est 28 ou contient 700 symboles si la taille du corps est 216. Les opérations d'addition, de multiplication et de division s'effectuent de la façon suivante : - L'addition � + � s'effectue bit à bit avec la fonction classique OU exclusif (ou � XOR �) - La multiplication � . � s'effectue symbole à symbole. Un symbole de s bits, b0...bs-1, est transformé en polynôme : b0+blX+..bs-lXs-1. Un polynôme irréductible sur Fq est choisi. La multiplication entre deux symboles est alors obtenue par la multiplication classique entre deux polynômes modulo le polynôme irréductible. - La division est calculée à partir d'un algorithme d'Euclide. De ce fait, dans la suite du document, lorsqu'on écrit : Y=ai.Ar =1 avec A1...A1, 1 paquets en entrée et al,.., a1 des coefficients dans Fq, ces opérations s'effectuent en réalité sur tous les symboles du paquet : yk= k a; .ai i=l où yk et ak sont respectivement le k1ème symbole des paquets Y et A. Les opérations � + � et � . � s'effectuent dans Fq. 2.2.2 Codage réseau 2.2.2.1 Introduction Au niveau d'un noeud relais, la combinaison linéaire associée à un paquet résultant peut être vu à deux niveaux distincts, un niveau local et un niveau global. Pour expliquer ces deux niveaux, supposons qu'un schéma de codage réseau est prédéterminé pour l'ensemble des noeuds et situons nous dans un noeud relais combinant. Ce noeud relais Ri doit alors combiner un ensemble de paquets reçus M1, M2,..., M1. Le paquet résultant est alors égal à : yj = la/Mi avec ai ,appartenant au corps fini Fq. =1 Cette combinaison linéaire est la représentation locale du codage, appelée par la suite combinaison locale. Mais les paquets à combiner reçus en entrée peuvent être aussi eux même des paquets résultants provenant d'autres noeuds relais. Notons X1,...XM les paquets sources émis par les noeuds sources. Il est alors clair que chaque paquet circulant dans le réseau est une combinaison linéaire des paquets sources X1,...XM. Le paquet précédemment cité Yi peut aussi être représenté de la manière suivante : yj = g'Xi . i=1 Cette représentation est la représentation globale du codage. Elle prend en compte que chaque paquet reçu Mi est aussi un paquet résultant combinant des paquets sources. Elle est appelée par la suite combinaison globale. Il est clair aussi que les coefficients g3 sont composés d'une combinaison de ai représentant les différentes combinaisons locales des noeuds en amont du noeud recevant ce paquet dans le chemin disjoint (la notion de chemin disjoint est plus amplement décrite par la suite). Il est alors possible d'écrire : g3 = 11a Les produits de a j sont appelés groupe de coefficients. Une autre représentation du paquet résultant est de l'exprimer en fonction des paquets sources X; et des coefficients ai : y; =1(11160X Cette représentation est appelée par la suite combinaison � globale explicitée �. Les paquets ayant des coefficients non nuls dans une combinaison linéaire (locale, globale ou globale explicitée) sont appelés dans ce qui suit des � paquets associés � à cette combinaison. Dans le cadre de l'invention, chaque relais mémorise la représentation globale ainsi que la représentation globale explicitée de chaque paquet reçu en entrée dans une matrice, respectivement appelée matrice relais R=(rij) et matrice relais explicitée Rd. Chaque ligne représente un paquet reçu, chaque colonne un paquet source. Pour la matrice relais R, chaque élément de la matrice rij représente le coefficient du paquet source j de la combinaison linéaire globale du paquet i. Pour la matrice relais explicitée Rd, chaque élément de la matrice correspond à la représentation globale explicitée du coefficient associé au paquet source j contenu dans le paquet i. Le noeud destinataire Dj qui reçoit m' paquets Y1,Y2,...,Ym, mémorise aussi la représentation globale et globale explicitée de chaque paquet utile reçu dans une matrice, respectivement appelée matrice destination D=(dij) et matrice de destination explicitée Dd. Chaque ligne représente un paquet utile reçu et chaque colonne un paquet source. Pour la matrice destination D, chaque élément dij de la matrice représente le coefficient du paquet source j de la combinaison linéaire globale du paquet Yi reçu. Pour la matrice de destination explicitée Dd, chaque élément de la matrice correspond à la représentation globale explicitée du coefficient associé au paquet source j contenu dans le paquet Yi reçu. Le noeud destinataire doit alors résoudre le système linéaire constitué par l'ensemble des combinaisons linéaires globales : M Yi = X; 1=1 j=1...m'. Soit d'un point de vue matriciel, Y=D.X avec D la matrice destination, Y le vecteur colonne des paquets reçus et X le vecteur colonne des paquets sources. Il est à noter que si le rang de D (au sens de l'algèbre linéaire) est égal au nombre de noeuds sources alors tous les paquets sources sont décodables. Sinon, il faut étudier plus précisément la matrice destination pour déterminer le nombre de paquets sources décodables tel que plus amplement décrit en relation avec la figure 10. Il est à noter que l'utilisation des matrices explicitées n'est utile que dans l'un des modes de réalisations de l'invention (mode de notification indirect), dans l'autre mode ces matrices sont inutiles. 2.2.2.2 Construction d'un codage réseau Dans un réseau maillé constitué de M sources et de N noeuds destination, l'étape préliminaire avant de construire un schéma de codage réseau est de s'assurer qu'il existe un schéma de codage réseau adapté à la topologie du réseau. Cette phase se base sur des concepts de théorie des graphes et notamment sur une utilisation de l'algorithme de Ford-Fulkerson plus amplement décrit dans le document "Maximum Flow through a Network" Canadian Journal of Mathematics, L. Ford R.Fulkerson, 8 , pp 399-404, 1956. Le réseau est modélisé par un graphe G=(V, E), V étant un ensemble fini de K noeuds (appelés vertices en anglais), V= {xl, . . . , xK}, et E Ç V x V un ensemble fini d'arêtes qui connectent les noeuds. Dans le cadre de l'invention, l'ensemble E est un ensemble ordonné de couples (xi, xj), avec xi et xj appartenant à v, ces couples étant appelés arêtes connectées, arcs ou liens (appelés edges en anglais). Un noeud de V modélise une entité communicante dans le réseau (ordinateurs, speakers, amplificateur) tandis qu'un arc (xi, xj) indique une communication radio suffisamment � bonne � (c'est-à-dire au dessus d'un certain seuil de puissance radio reçue) entre les deux entités communicantes xi et xj. De plus, un chemin entre un noeud xl et un noeud xp est appelé un ensemble ordonné de noeuds {xl,x2,..,xp} tel que (xi, xi+1) E E pour i = 1, . . . , (pùl). Un chemin peut aussi s'écrire {(xl,x2),..,(xi,xi+1),...,(xp-1,xp)} avec (xk,xk+1) E E pour k = 1, .. . , (pù1). On appelle k chemins disjoints, k ensembles qui n'ont pas deux noeuds consécutifs en commun, soit d'un point de vue � graphique �, deux arcs en commun. Notons T un ensemble de k chemins disjoints. On définit alors : soit (x, y) E E (un lien du graphe), (x, y) E T si et seulement s'il existe un chemin de T qui contient (x,y), soit x EV (un sommet du graphe), x E T si et seulement s'il existe un chemin de T qui contient x. On appelle deux chemins disjoints entre un ensemble S et un noeud d, deux ensembles ordonnés de noeuds {xl,x2,..,xp,d} et {yl,y2,..,yq,d} tels que : - (xi, xi+1) EE pour i = 1, ... , (pû1) et (xp, d) EE ; - (yj, yj+1) EE pour j = 1, ... , (qû1) et (yq, d) EE ; - xl ES, yl ES et xl≠yl ; `di =1..(p -1), `dj =1..(q -1), (xi, xi+1) ~ (yj, yj+1) et (xp, d) ~ (yq,d) ; La définition se généralise très facilement pour un ensemble de k chemins disjoints. A partir de ces notions de la théorie des graphes, l'état de l'art donne la condition suivante : Soit S un ensemble de M noeuds sources. S'il existe M chemins disjoints entre S et chaque noeud destinataire de Dt, alors les M noeuds sont capables d'émettre simultanément en multicast à Dt si les noeuds relais sont autorisés à combiner linéairement leurs paquets entrant sur un corps fini suffisamment grand. Ce résultat est une conséquence directe de l'article de R. Ahlswede and co. "Network information flow". L'invention se place dans le cadre où cette condition est vérifiée au démarrage du système. Par contre, durant la vie de notre système, il se peut que cette condition ne soit plus respectée, à cause de pertes temporaires de liens. Dans ce cas, aucun schéma de codage réseau n'existe afin de permettre de décoder les M paquets sources. Les noeuds destinations ne peuvent donc plus décoder M paquets sources. Leur algorithme de décodage doit gérer alors ce cas et notamment doit permettre de décoder le maximum de paquets sources (strictement inférieur à m). Dans l'état de l'art, il existe principalement deux axes pour la construction d'un schéma de codage réseau en fonction de la connaissance ou non de la topologie initiale du réseau. Pour une topologie connue, un premier schéma déterministe de construction des coefficients basés sur une approche matricielle (appelé schéma de codage déterministe) est donné dans l'article de R. Koetter et M. Médard, "An Algebraic Approach to Network coding" ACM transactions on Networking, Vol 11, Nos, October 2003. Pour une topologie inconnue, une construction à la volée des coefficients tirés aléatoirement (appelé schéma de codage aléatoire) est donnée dans l'article "Randomized distributed network coding" de Michelle Effros, Tracey Ho, David Karger, Ralf Koetter et Muriel Medard. Dans la première approche, les coefficients sont calculés une fois pour toute à l'initialisation du système et donc valable pour la durée de vie du système. Les noeuds destinations et les noeuds relais ont des opérations peu coûteuses à effectuer car ils savent par avance les paquets qu'ils vont recevoir et transmettre. Dans la deuxième approche, les noeuds relais tirent aléatoirement les coefficients du paquet résultant à générer à chaque nouveau paquet à transmettre, ce qui nécessite un temps de traitement supplémentaire. De plus, comme les coefficients sont différents pour chaque nouveau paquet généré, les noeuds relais doivent les transmettre en sus du paquet pour que les noeuds destinations aient connaissance des nouvelles combinaisons linéaires et puissent, dans la mesure du possible, décoder les paquets sources. Or cette signalisation est d'autant plus grande que le corps est grand (chaque coefficient sera codé sur un nombre de bits plus important), et c'est autant de bande passante perdue. Or dans cette deuxième approche, plus le corps est grand plus les chances de réussite du décodage des paquets sources sont grandes. D'où la contradiction. Par contre, dans la première approche, le décodage est sûr de réussir du fait que la construction réalisée à l'initialisation assure un décodage correct. La première approche est donc plus performante que la deuxième en terme de gain en bande passante et en temps de calcul. La deuxième approche possède quelques avantages au niveau de la robustesse à la perte de lien. En effet, comme cette méthode génère un paquet résultant avec une combinaison linéaire différente à chaque envoi, elle ne nécessite pas la connaissance du réseau et la perte de lien est transparente pour elle (bien que ne garantissant pas le décodage). Elle indique un coefficient nul pour le paquet qui devait arriver par ce lien. Dans le cadre de l'invention, il existe un moyen de récupérer la topologie du réseau et donc de construire un schéma de codage réseau avec la première méthode. Cependant, la première approche est fortement touchée par la perte de lien. En effet, cette perte de lien modifie la combinaison linéaire du noeud relais fixé au départ et seul le noeud relais observant cette perte a connaissance de celle-ci. Les autres noeuds et notamment les noeuds destinations ne sont pas au courant de cette modification de la topologie et croient que tout se passe comme d'habitude. Le décodage peut alors être catastrophique et influer sur tous les paquets sources à décoder vu que ceux-ci sont tous liés par les combinaisons linéaires (contrairement à un routage ou seul un paquet source serait atteint). Considérant que les avantages de la première approche sont primordiaux dans des applications hauts débits comme visé par l'invention, le problème technique résolu par la présente invention est de construire un codage réseau prédéterminé et calculé à partir de la topologie initiale, robuste aux liens cassés. Dans la pratique, la méthode de construction du schéma de codage prédéterminé (c'est-à-dire la première approche) couramment utilisée, est celle qui limite le nombre de noeuds et de liens participant au codage réseau en utilisant uniquement les chemins disjoints de la condition d'existence de codage réseau (seul les noeuds et les liens des chemins disjoints sont utiles pour construire le schéma de codage réseau). Ce concept est notamment décrit dans le document de brevet US2005/0010675 de la société Microsoft Corporation. A partir de ce constat, on appelle noeud (resp. lien) utile, un noeud (resp. lien) qui appartient à l'ensemble des chemins disjoints et, on appelle noeud (resp. lien) redondant, un noeud (resp. lien) qui n'appartient pas à l'ensemble des chemins disjoints. Cette version optimisée permet ainsi de limiter le nombre d'opérations. Or dans un réseau local sans-fil, il est fort probable que ces liens redondants soient nombreux, car à chaque fois qu'un noeud émet un paquet, tous les autres noeuds du réseau sont susceptibles de recevoir ce paquet. Ces paquets redondants ne seront pas pris en compte par les noeuds (c'est-à-dire qu'ils ne sont pas stockés). Cette version optimisée de la construction du réseau est utilisée dans le cadre de notre invention. Elle limite fortement les opérations car seul les noeuds et liens considérés utiles sont utilisés. Par exemple, un noeud relais n'a plus besoin de combiner la pluralité des paquets qu'il reçoit mais uniquement un sous-ensemble de paquet. Ceci est également vrai pour le noeud destinataire qui n'a besoin que d'un sous-ensemble des paquets reçus pour décoder les paquets sources. De ce fait l'invention va dans un premier temps construire un schéma de codage réseau qui ne prendre en compte que les noeuds et liens utiles. Les noeuds relais ne stockent et ne combinent donc que les paquets utiles auxquels sont associés un coefficient appartenant au corps Fq. Les paquets générés appelés paquets résultants sont prédéterminés. De la même manière, le noeud destinataire construit une matrice destination D, composée uniquement des paquets utiles (les autres n'étant pas stockés). Afin de décoder les paquets sources, le noeud calcule l'inverse de la matrice de destination pour obtenir le système linéaire suivant : X=D-1Y avec X le vecteur colonne des paquets sources et Y le vecteur colonne des paquets reçus. Remarque : La méthode du pivot de Gauss est également utilisée pour calculer le rang d'une matrice. Pour cela, on effectue une triangulation de la matrice. Ensuite, le rang de la matrice s'obtient facilement en comptabilisant le nombre de lignes non nulles de la matrice. 2.2.3 Limites de l'état de la technique Dans l'état de l'art, la gestion des pertes de paquets dans un schéma de codage réseau est principalement gérée par le schéma de codage aléatoire comme décrit précédemment où les noeuds relais effectuent systématiquement des opérations coûteuses tant au niveau du temps de calcul pour combiner les paquets avec ou sans perte de paquets qu'au niveau de la bande passante utilisée pour transmettre la valeur des coefficients. Ces inconvénients minimisent les avantages recherchés en terme de gain de bande passante avec le codage réseau. Dans le cadre de schéma de codage déterministe présenté dans l'article de R. Koetter, M. Médard, "An Algebraic Approach to Network coding" ACM transactions on Networking, Vol 11, Nos, October 2003 et dans l'article de P. A. Chou, Y. Wu, and K. Jain. "Practical network coding," In Proc. 41stAllerton Conf. Communication, Control and Computing, Monticello, IL, Oct. 2003", l'état de l'art recherche des schémas de codage robustes dès la construction de ceux-ci. Ils essaient de s'assurer que les matrices de destination soient toujours capables de décoder l'ensemble des paquets sources envoyés par les noeuds sources pour un ensemble prédéfini de liens cassés. Un inconvénient de cette technique de l'art antérieur réside dans le fait qu'il n'est pas possible d'utiliser un schéma de codage optimisé. En effet, avec cette technique connue il est obligatoire d'utiliser l'ensemble des paquets reçus, ce qui impose au niveau des relais un temps de calcul important et surtout systématique. Ce qui est également néfaste dans des applications hauts débits dans lesquelles il existe un grand flux de données à traiter. 3. OBJECTIFS DE L'INVENTION L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier les différents inconvénients de l'état de la technique. Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique permettant de réaliser un schéma de codage réseau robuste à une perte de lien et aussi permettant au noeud destinataire (encore appelé noeud destination) d'adapter son schéma de décodage. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique permettant d'optimiser les ressources CPU. Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui soit simple à mettre en oeuvre pour un moindre coût. 4. EXPOSÉ DE L'INVENTION Dans un mode de réalisation particulier de l'invention, il est proposé un procédé de codage réseau dans un réseau maillé comprenant au moins un noeud relais qui, selon un schéma de codage réseau prédéterminé, s'attend à recevoir en entrée une pluralité de paquets de données utiles et doit générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données utiles étant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources. Ledit procédé est mis en oeuvre par au moins un noeud relais donné et comprend des étapes consistant à : - détecter si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ; - dans le cas d'une détection positive, construire un paquet résultant modifié à partir des paquets utiles reçus ; 30 construire une notification de sortie identifiant les différences entre la combinaison linéaire de paquets sources représentative du paquet résultant prédéterminé et la combinaison linéaire de paquets sources représentative du paquet résultant modifié ; et - transmettre le paquet résultant modifié et la notification de sortie. Ainsi, dans ce mode de réalisation particulier, l'invention repose sur une approche tout à fait nouvelle et inventive d'un procédé de codage réseau consistant à notifier les potentiels changements par rapport à un schéma de codage réseau de référence prédéterminé établi durant une phase d'initialisation du réseau de communication par exemple. Pour cela, le noeud relais impacté par une perte de lien envoie un paquet résultant différent du paquet résultant prédéterminé à cause d'un paquet utile manquant, mais notifie cette différence grâce à une notification de sortie. Cette notification de sortie constituera une notification d'entrée pour un noeud relai intermédiaire ou un noeud destination. La notification d'entrée permet au noeud relai intermédiaire de construire à son tour un paquet résultant modifié. Au final, la notification d'entrée permet à un noeud destination de prendre en compte la nouvelle combinaison du paquet afin de modifier son schéma de décodage prédéterminé. Le schéma de codage modifié permet de récupérer au moins les paquets sources qui ne sont pas manquants dans le combinaison de paquets sources reçue et éviter ainsi de corrompre ces paquets par un schéma de décodage inapproprié. De ce fait, la présente invention propose un schéma de codage alternatif et provisoire à la détection d'une perte de lien qui permet de limiter l'impact des variations de la topologie du réseau. On obtient ainsi, de façon simple et efficace, un schéma de codage réseau tolérant aux pertes de liens (modification non désirée du schéma de codage réseau prédéterminé). Avantageusement, la notification d'entrée représente un événement interne au noeud relais lorsqu'elle indique qu'un paquet utile est manquant ; ou une information reçue avec un paquet utile lorsqu'elle indique que ledit paquet utile a été reçu modifié. Une forme de réalisation particulière selon l'invention prévoit que chaque notification d'entrée ou de sortie comprend M champs, avec M le nombre de noeuds sources, chacun des M champs étant associé à l'un des M paquets sources générés par les M noeuds sources, chacun des M champs comprenant : - un premier sous-champ indiquant si un coefficient, associé au paquet source associé audit champ, a été modifié ou non, dans ladite combinaison linéaire de paquets sources représentative dudit paquet résultant modifié, par rapport à ladite combinaison linéaire de paquets sources représentative dudit paquet résultant prédéterminé ; - un deuxième sous-champ donnant une information relative à une valeur du coefficient modifié sur lequel porte le premier sous-champ, si le premier sous-champ indique une modification. Ainsi, à chaque paquet source est associé une notification permettant d'informer si un coefficient de la combinaison linéaire de paquets a été modifié ou non. Cette notification permet ensuite à un noeud destination recevant la notification de modifier son schéma de décodage des paquets sources et à un noeud relais de modifier sa notification de sortie et son paquet résultant modifié. Avantageusement, le deuxième sous-champ est présent seulement si le premier sous-champ indique une modification. Ainsi, le nombre de données à transmettre sur le réseau est réduit. La bande passante est ainsi optimisée. Egalement, l'information comprise dans le deuxième sous-champ comprend explicitement la valeur du coefficient modifié. Ainsi, le nombre d'opérations inhérent au calcul du coefficient pour le noeud recevant une notification est diminué. La taille de la mémoire est également réduite. De façon avantageuse, l'information comprise dans le deuxième sous-champ comprend au moins une indication permettant à un noeud traitant ladite notification d'entrée ou de sortie de retrouver la valeur du coefficient modifié Ainsi, l'invention permet de choisir le mode de notification minimisant la quantité d'information à émettre sur le réseau et donc gain de bande passante. Dans un mode de réalisation particulier de l'invention, il est également proposé un procédé de codage réseau dans un réseau maillé comprenant au moins un noeud destination qui, selon un schéma de codage réseau prédéterminé, s'attend à recevoir en entrée une pluralité de paquets de données utiles et doit générer en sortie une pluralité de paquets sources décodés obtenus chacun selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données utile étant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources. Ledit procédé est mis en oeuvre par au moins un noeud destination donné et comprend des étapes consistant à : - détecter si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ; - dans le cas d'une détection positive, obtenir un schéma de codage réseau modifié, en fonction des combinaisons linéaires de paquets sources formant les paquets utiles reçus ; et - décoder les paquets de données utiles reçus, en fonction dudit schéma de codage réseau modifié, pour obtenir au moins un paquet source décodé. Ainsi, dans ce mode de réalisation particulier, l'invention repose sur une approche tout à fait nouvelle et inventive d'un procédé de codage réseau consistant à notifier au noeud destination de modifier son schéma de décodage prédéterminé afin de prendre en compte les paquets reçus modifiés et ainsi décoder un maximum de paquets sources. Selon une caractéristique avantageuse de l'invention, l'étape consistant à obtenir un schéma de codage réseau modifié comprend des étapes consistant à : - modifier une matrice de destination de référence pour obtenir une matrice de destination modifiée, en fonction de ladite au moins notification d'entrée détectées ; - détecter si le rang de ladite matrice de destination modifiée est égal au nombre total de paquets sources à décoder ; et 20 25 30 - si le rang de ladite matrice de destination modifiée est égal au nombre total de paquets sources à décoder, utiliser ladite matrice de destination modifiée pour générer tous les paquets sources décodés, dans ladite étape consistant à décoder. Ainsi, tous les paquets sources sont décodables par le noeud destination. Selon une autre caractéristique avantageuse de l'invention, si le rang de ladite matrice de destination modifiée n'est pas égal au nombre total de paquets sources à décoder, l'étape consistant à obtenir un schéma de codage réseau modifié comprend des étapes consistant à : - déterminer une sous-matrice de ladite matrice de destination modifiée, dont le rang est différent de zéro ; - utiliser ladite sous-matrice pour générer au moins un paquet source décodé, dans ladite étape consistant à décoder. Ainsi, bien qu'une partie seulement des paquets sources est décodable par le noeud destination, le décodage de ces derniers par le noeud destination reste possible. Suivant une caractéristique particulière intéressante de la présente invention, la notification d'entrée représente un événement interne au noeud relais lorsqu'elle indique qu'un paquet utile est manquant ; ou une information reçue avec un paquet utile lorsqu'elle indique que ledit paquet utile a été reçu modifié. Avantageusement, chaque notification d'entrée comprend M champs, avec M le nombre de noeuds sources, chacun des M champs étant associé à l'un des M paquets sources générés par les M noeuds sources, chacun des M champs comprenant : - un premier sous-champ indiquant si un coefficient du paquet source associé audit champ a été modifié ou non, dans ladite combinaison linéaire de paquets sources représentative d'un paquet utile attendu ; - un deuxième sous-champ donnant une information relative à une valeur du coefficient modifié sur lequel porte le premier sous-champ, si le premier sous-champ indique une modification. Ainsi, à chaque paquet source est associé une notification permettant d'informer si un coefficient de la combinaison linéaire de paquets sources a été modifié ou non. Cette notification permet au noeud destination recevant ladite notification de modifier son schéma de décodage prédéterminé des paquets sources. De manière avantageuse, le deuxième sous-champ est présent seulement si le premier sous-champ indique une modification. Ainsi, le nombre de données à transmettre sur le réseau est réduit. La bande passante est ainsi optimisée. Egalement, l'information comprise dans le deuxième sous-champ comprend explicitement la valeur du coefficient modifié. Ainsi, le nombre d'opérations inhérent au calcul du coefficient pour le noeud destination recevant la notification est diminué. La taille de la mémoire est également réduite. Suivant un autre caractéristique, l'information comprise dans le deuxième sous-champ comprend au moins une indication permettant à un noeud recevant ladite notification d'entrée de retrouver la valeur du coefficient modifié. L'invention permet ainsi de choisir le mode de notification minimisant la quantité d'informations à émettre sur le réseau, ce qui permet d'obtenir un gain de bande passante. Dans un autre mode de réalisation, l'invention concerne un produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur. Ce produit programme d'ordinateur comprend des instructions de code de programme pour la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation), lorsque ledit programme est exécuté sur un ordinateur. Dans un autre mode de réalisation, l'invention concerne un moyen de stockage lisible par ordinateur, éventuellement totalement ou partiellement amovible, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur pour mettre en oeuvre le procédé précité (dans l'un quelconque de ses différents modes de réalisation). L'invention concerne également un noeud relais compris dans un réseau maillé et participant à un procédé de codage réseau dans ledit réseau maillé, ledit noeud relais, selon un schéma de codage réseau prédéterminé, s'attendant à recevoir en entrée une pluralité de paquets de données utiles et devant générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données utiles étant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources. Ledit noeud relais comprend : - des moyens de détection, permettant de détecter si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ; - des premiers moyens de construction, activés dans le cas d'une détection positive, permettant de construire un paquet résultant modifié à partir des paquets utiles reçus ; - des seconds moyens de construction, permettant de construire une notification de sortie identifiant les différences entre la combinaison linéaire de paquets sources représentative du paquet résultant prédéterminé et la combinaison linéaire de paquets sources représentative du paquet résultant modifié ; - des moyens de transmission, permettant de transmettre le paquet résultant modifié et la notification de sortie. L'invention concerne également un noeud destination compris dans un réseau maillé et participant à un procédé de codage réseau dans ledit réseau maillé, ledit noeud destination, selon un schéma de codage réseau prédéterminé, s'attendant à recevoir en entrée une pluralité de paquets de données utiles et devant générer en sortie une pluralité de paquets sources décodés obtenus chacun selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données étant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources. Ledit noeud destination comprend : - des moyens de détection, permettant de détecter si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ; - des moyens d'obtention, activés dans le cas d'une détection positive, permettant d'obtenir un schéma de codage réseau modifié, en fonction des combinaisons linéaires de paquets sources formant les paquets utiles reçus ; - des moyens de décodage, permettant de décoder les paquets de données utiles reçus en fonction dudit schéma de codage réseau modifié, pour obtenir au moins un paquet source décodé. 5. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1 illustre schématiquement, selon un mode de réalisation particulier de l'invention, un exemple de réseau sans fil maillé dont certains noeuds mettent en oeuvre un codage réseau ; - la figure 2 illustre schématiquement l'architecture d'un module de communication selon un mode de réalisation particulier de l'invention ; - la figure 3a illustre schématiquement l'algorithme de construction et de diffusion, par un noeud central, du schéma de codage prédéterminé selon un mode de réalisation particulier de l'invention ; - la figure 3b illustre schématiquement l'algorithme de réception, par un noeud relais, des coefficients du codage prédéterminé selon un mode de réalisation particulier de l'invention ; - la figure 3c illustre schématiquement l'algorithme de réception, par un noeud destination, des coefficients du codage prédéterminé selon un mode de réalisation particulier de l'invention ; - la figure 4 illustre schématiquement la structure d'une notification notifiant une modification du schéma de codage prédéterminé selon un mode de réalisation particulier de l'invention ; - la figure 5 illustre schématiquement l'algorithme principal mis en oeuvre dans un noeud relais selon un mode de réalisation particulier de l'invention ; - la figure 6 illustre schématiquement l'algorithme détaillé de la construction d'un paquet résultant selon un mode de réalisation particulier de l'invention ; La figure 7 illustre schématiquement l'algorithme principal mis en oeuvre dans un noeud destination selon un mode de réalisation particulier de l'invention ; - La figure 8 illustre schématiquement l'algorithme de récupération des coefficients des paquets reçus modifiés par un noeud relais ou un noeud destination, selon un mode de réalisation particulier de l'invention ; - La figure 9 illustre schématiquement l'algorithme détaillé de décodage mis en oeuvre par un noeud destination selon un mode de réalisation particulier de l'invention ; - La figure 10 illustre schématiquement l'algorithme de recherche d'une sous matrice décodable selon un mode de réalisation particulier de l'invention. 6. DESCRIPTION DÉTAILLÉE On présente en relation avec la figure 1 un mode de réalisation préférentiel de l'invention dans le cas d'un système de communication sans fil maillé (de type � Mesh �) composé de plusieurs noeuds appliquant le codage réseau comme représenté 15 sur la figure 1. Le protocole d'accès au medium est un accès temporel de type TDMA (pour � Time Division Multiple Access � en anglais ou � accès multiple à répartition dans le temps � en français) où durant une période fixe, appelée supertrame, chaque noeud du réseau a un accès unique au médium durant un temps de parole fixe (ou � slot � en anglais). Ce réseau est composé de trois noeuds sources (représentés en 20 noir) nommés respectivement NS1, NS2 et NS3 et de six noeuds étant à la fois des noeuds relais et des noeuds destinations (NR/D1,..,NR/D6). Chaque lien de communication est représenté par une flèche indiquant le sens de la transmission. Les liens de communications en trait plein, comme par exemple entre NS1 et NR/D1 représentent des paquets composés uniquement du paquet source provenant justement 25 de NS1. Les liens de communications en petit pointillé comme par exemple entre NS2 et NRID4 représentent des paquets composés uniquement du paquet source provenant de NS2 et les liens de communications en grand pointillé comme par exemple entre NS3 et NRID2 eux représentent des paquets contenant uniquement le paquet source de NS3. Les autres liens de communications (par exemple entre NR/D1 et NRID3) 30 représentent des paquets ayant subi du codage réseau et donc contenant une 10 combinaison linéaire d'au moins deux paquets sources. Les autres liens de communications non représentés sont soit victime de masquages permanents, soit ces liens ne sont pas utilisables du fait du protocole TDMA et des temps de parole successifs accordés à chaque noeud, les noeuds sources émettant en premier dans l'ordre de leur numérotation et ensuite tous les noeuds relais également dans l'ordre de leur numérotation. Chaque paquet se présente sous la forme décrite en relation avec la figure 4. Le paquet se compose de deux parties : Une partie 410 dans laquelle est contenue l'information émise par les noeuds sources. Cette partie est une combinaison linéaire des paquets sources envoyés par les noeuds sources, cette combinaison linéaire étant prédéterminée à l'initialisation du système tel que plus amplement décrit par la suite en relation avec la figure 3. Une partie 405 dite de notification, elle-même composée de M sous parties (M étant le nombre de sources) et chacune de ces M sous parties est composée de deux champs. Le premier champ (415,...,425) est un indicateur permettant de savoir si le coefficient prédéfini de la combinaison linéaire prédéterminée, associé au paquet source a été modifiée ou non. Ce champ est toujours présent et pourrait être composé d'un bit, la valeur 0 correspondant à aucune modification sur le coefficient et la valeur 1 à des modifications sur le coefficient du paquet source associé. Suivant la valeur du champ indicateur (typiquement 1 dans l'exemple précédent), un champ � Info_Coeff � (420,...,430) est présent ou non dans la notification. Ce champ donne les informations suffisantes au noeud recevant ce paquet notifié pour retrouver soit directement soit indirectement la nouvelle valeur du (ou des) coefficient(s) associé(s) au(x) paquet(s) source(s) représenté par le(s) champ(s) de la notification. Le choix entre ces deux modes (direct ou indirect) est plus amplement décrit par la suite. Ce champ peut être soit directement la nouvelle valeur du coefficient (mode direct), soit l'indication des coefficients (de la forme globale explicitée) non pris en compte par le noeud précédent pour calculer le coefficient reçu (mode indirect). Un bit est attribué pour chaque groupe de coefficients (de la forme globale explicitée), la valeur 0 correspondant à une non-utilisation et la valeur 1 à l'utilisation de ce groupe de coefficients (de la forme globale explicitée) dans le calcul de la combinaison reçue. Par exemple, la combinaison g5 = a5.a1 + a5.a3 + a5.a4 est envoyée en lieu et place de la combinaison prédéterminée g5 = a5 .a, + a5.a2 + a5.a3 + a5 .a4 . Le champ Info_Coeff associé prend alors la valeur 1011. Un groupe de coefficient représente le résultat de la multiplication de plusieurs coefficients (dans l'exemple précédent : a5 .a, ,a5 .a2 ,a5.a3 et a5.a4 ). Le coefficient global prédéterminé est donc une somme de groupe de coefficients qui représente la combinaison globale explicitée. 6.1 Dispositif de l'invention Le dispositif selon un mode de réalisation particulier de l'invention est illustré sur la figure 2 par le bloc 210. Une application 230 et un émetteur/récepteur Radio Fréquence 240 correspondent à l'environnement du bloc 210. Une interface Homme/Machine 212 permet à l'utilisateur de donner le graphe représentant le réseau afin de calculer le schéma de codage réseau de référence au moyen d'un algorithme de Ford Fulkerson. Ce schéma de codage réseau sera ensuite partagé entre tous les noeuds du réseau. Une mémoire donnée 216 permet de stocker les différentes copies des données émises par les sources et les différents noeuds relais. Ces données reçues par l'émetteur/récepteur Radio Fréquence 240 transitent par un récepteur de paquets radio 215. Cette mémoire permet également de stocker les matrices des différents noeuds intervenant dans le processus de codage réseau tel que décrit par la suite. Le bloc dispositif 210 comprend également un module 217 de gestion de paquets de codage réseau. Ce module segmenté en quatre sous modules 218, 219, 220 et 221 gère les paquets de codage réseau aussi bien au niveau des noeuds relais que des noeuds destinations. Le sous module 218 est un analyseur de notifications qui permet de savoir si le paquet reçu correspond bien au paquet attendu ou si des coefficients liés au codage réseau ont été modifiés. Le sous module 219 permet la mise à jour des coefficients de codage réseau à utiliser soit pour la retransmission soit pour le décodage en lieu et place des coefficients de référence stockés dans la mémoire de données 216. La mise à jour de ces coefficients s'effectue après l'analyse d'une notification correspondant à un paquet reçu. Le sous module 220 de production de paquet codé est utilisé par les noeuds relais. Il permet de générer le paquet résultant qui doit être envoyé. Ce paquet résultant est fonction (combinaison linéaire) de certains paquets reçus et de leurs coefficients associés. Une fois produit, le paquet résultant est stocké dans la mémoire de données 216 afin d'être émis par le transmetteur de paquet radio 214. Le sous module 221 est utilisé lors de la phase de décodage. Il permet de construire une matrice de décodage en fonction des paquets reçus et de leurs coefficients associés stockés dans la mémoire de données 216 permettant d'extraire de cette matrice les différents paquets sources. Une fois décodés, les paquets sources sont transmis à l'application 230 grâce au CPU 211. 6.2 Initialisation du système Les figures 3a, 3b et 3c décrivent des algorithmes, mis en oeuvre dans un noeud central, un noeud relais et un noeud destination respectivement, de construction d'un schéma de codage réseau prédéterminé, au démarrage du système. Le noeud central, qui est un des noeuds présents de la figure 1 (par exemple un des noeuds sources), a pour fonction de construire le schéma de codage réseau prédéterminé et de le diffuser à l'ensemble des autres noeuds (tel que décrit dans la figure 3a). A la réception de ce schéma de codage réseau par les autres noeuds du réseau, les noeuds relais stockent celui-ci (tel que décrit dans la figure 3b) et les noeuds destinations également (tel que décrit dans la figure 3c). On présente maintenant, en relation avec la figure 3a, l'algorithme mis en oeuvre dans le noeud central. Une première étape 305 correspond à l'initialisation du système. Puis dans une étape 310, le noeud central récupère la topologie du réseau, c'est-à-dire qu'il récupère la qualité des communications entre les noeuds, la liste des noeuds sources et la liste des noeuds destinations. Cette topologie peut être connue des noeuds du réseau par construction si le réseau est fixe et si le nombre de noeuds est constant. Il est aussi certain que ces informations peuvent être introduites par l'utilisateur après l'installation d'un système. Puis dans une étape 315 est construit un graphe de réseau G à partir de la topologie du réseau. Si la qualité d'une transmission entre deux entités est considérée bonne, par exemple si le rapport signal sur bruit (ou � Signal Noise Ratio � en anglais) est supérieur à un seuil donné (dépendant du type de la radio utilisée), la transmission est considérée valide. Sinon, elle est considérée comme non valide. Le graphe de réseau G est alors construit de la manière suivante : chaque entité communicante est modélisée par un noeud du graphe et chaque communication considérée valide entre deux entités est modélisée par un lien entre deux noeuds (et donc chaque communication considérée non valide n'est pas modélisée dans le graphe). Puis une étape 320 détermine le schéma de codage prédéterminé. La méthode est expliquée dans le document de brevet US2005/0010675 de Microsoft Corporation et repris dans de nombreux articles de l'état de l'art. Cette méthode décrite dans le document de brevet US2005/0010675 est citée comme élément pédagogique et aucunement comme étant une étape fondamentale de la présente invention. Les étapes mises en oeuvre dans cette méthode sont les suivantes : - une étape de recherche des chemins disjoints Uj entre l'ensemble S des noeuds sources et chaque noeud destinataire Dj ; - une étape de construction d'un sous-graphe G' de G ne contenant que les sommets et les liens appartenant à au moins un ensemble Uj ; - une étape de détermination des coefficients des combinaisons linéaires de telle manière que l'ensemble des matrices destinations soit de rang égal aux nombres de sources. La taille du corps q est donc implicitement déterminée ainsi que le nombre maximal de groupes de coefficients contenu dans la combinaison linéaire du paquet résultant de chaque noeud relais p. Une étape suivante 325 permet de choisir le mode de notification utilisé dans le champ Info_Coeff (420,...,430) de la notification (figure 4). Deux modes sont envisageables : - un mode direct dans lequel les coefficients sont explicitement décrits dans la notification ; et - un mode indirect dans lequel la notification indique les coefficients impactés, les noeuds relais doivent alors déterminer la nouvelle valeur des coefficients. Le mode retenu est celui qui sera le moins coûteux en terme de bande passante. Le choix entre les deux modes se fait alors en comparant le nombre de bits nécessaires pour coder les coefficients du codage réseau (c'est-à-dire la taille du corps nécessaire pour que les matrices de décodage soient inversibles) avec le nombre maximal de paquets contenant un même paquet source qu'un noeud relais devra combiner (le nombre de coefficients aj maximal, composant la combinaison globale explicitée d'un paquet source donné, contenu dans la combinaison linéaire du paquet résultant de chaque noeud relais),et en prenant celui qui minimisera le nombre de bit nécessaire pour la notification. Ce test peut s'écrire de la façon suivante : Mxq>_Mxp avec M le nombre de sources du réseau, q la taille du corps et p le nombre maximal de groupe de coefficients, composant la combinaison globale explicitée d'un paquet source donné, contenu dans la combinaison linéaire du paquet résultant de chaque noeud relais. Bien que le critère de choix pour la mise en oeuvre de la présente invention cherche à minimiser la taille de la notification transmise, le choix du mode de notification peut également être influencé par le contexte du système. En effet, le mode direct diminue le nombre d'opérations inhérentes au calcul du coefficient pour le noeud recevant la notification (le nouveau coefficient étant déjà calculé). De plus, le mode indirect nécessite que chaque noeud du réseau ait connaissance de sa matrice relais (ou destination) sous sa forme globale explicitée afin de retrouver le nouveau coefficient ce qui nécessite l'utilisation d'une mémoire de taille plus importante en comparaison du mode direct. Puis une étape 330 met en oeuvre un protocole de diffusion des coefficients et du mode de notification. Plusieurs techniques de diffusion sont connues de l'homme de l'art pour diffuser des informations dans un réseau maillé, par exemple de type inondation de données dans un protocole maillé (ou � flooding protocol � en anglais). A la fin de cette étape 330 de diffusion, chaque noeud relais réceptionne dans une étape 340 les coefficients des combinaisons linéaires détaillées de l'ensemble des noeuds du réseau et du mode de notification qui sera utilisé. La figure 3b illustre schématiquement l'algorithme mis en oeuvre dans un noeud relais sur réception du schéma de codage réseau prédéterminé diffusé par le noeud central (figure 3a) . Chaque noeud relais garde en mémoire la combinaison qu'il devra effectuer par la suite, et construit dans une étape 345 une matrice relais et une matrice relais explicitée (la matrice relais explicitée n'est construite que si le mode de notification est le mode indirect). Les matrices relais et relais explicitées contiennent respectivement les combinaisons globales et les combinaisons globales explicitées des paquets résultants des noeuds sources ou noeuds relais ayant eu accès au médium durant la supertrame avant la date d'accès au médium du noeud relais considéré. Les autres paquets, c'est à dire ceux envoyés par des noeuds qui ont eu l'accès au médium après le noeud relais, ne sont pas pris en compte car ils ne sont pas utilisables (du fait de la contrainte que les combinaisons s'effectuent qu'avec des données envoyées durant la supertrame courante). La figure 3c illustre schématiquement l'algorithme mis en oeuvre dans un noeud destination sur réception du schéma de codage réseau prédéterminé diffusé par le noeud central (figure 3a). A la fin de l'étape 330 de diffusion (figure 3a), chaque noeud destination réceptionne dans une étape 350 des coefficients des combinaisons linéaires détaillées de l'ensemble des noeuds du réseau. Chaque noeud destination construit alors, dans une étape 355, une matrice destination D et une matrice destination explicitée (la matrice destination explicitée n'est construite que si le mode de notification est le mode indirect). Dans une étape 360, à partir de la matrice destination et de l'algorithme de Gauss Jordan, est calculé l'inverse de la matrice destination D (D est par définition inversible). Le noeud destination stocke alors l'inverse de la matrice de destination D, matrice appelée matrice de décodage que le noeud destination utilisera directement à la réception des paquets. Les différentes matrices sont plus amplement décrites par la suite. Après cette phase d'initialisation, chaque noeud source débute l'envoi des paquets sources sur le réseau, chaque noeud relais effectue sa combinaison locale et chaque noeud destination décode les paquets sources à partir de sa matrice de décodage. 6.3 Noeud relais La figure 5 décrit un algorithme de réception d'un paquet source par un noeud relais. Dans une première étape 500, le noeud relais est en attente de réception d'un paquet. Dans une étape suivante 505, sur réception d'un paquet, le noeud relais stocke le paquet ainsi que sa notification associée dans une étape 520. Une fois le paquet stocké, le noeud relais vérifie dans une étape 525 si le paquet reçu était le dernier avant son propre temps de parole. Si c'est le cas, le noeud construit dans une étape 530 son paquet résultant à émettre. Cette étape 530 est plus amplement décrite par la suite en relation avec la figure 6. Si ce n'est pas le cas, le noeud relais se remet en attente de réception d'un nouveau paquet (étape 500). Dans le cas où un paquet est attendu mais non reçu, un événement interne permet au noeud relais d'effectuer une étape 510 en lieu et place de l'étape 505. La détection d'une perte de lien est effectuée en faisant une comparaison entre une mesure de RSSI et un seuil. Si le RSSI mesuré est inférieur au seuil alors le paquet est considéré comme non reçu. Dans une étape 515, le noeud relais crée alors une notification � ALL_MISSING � associée au paquet attendu mais non reçu. La notification � ALL_MISSING � signifie que tous les coefficients du paquet attendu mais non reçu sont mis à 0. Le paquet est ensuite sauvegardé avec sa notification dans l'étape 520. Dans le cas des paquets attendus mais non reçus, seule la notification est sauvegardée. Il est à noter que la matrice de relais courante est réinitialisée avec la matrice de relais de référence après chaque cycle d'émission de tous les noeuds. La figure 6 illustre schématiquement, selon un mode de réalisation particulier de l'invention, un algorithme de construction, par un noeud relais, d'un paquet résultant à émettre (étape 530 de la figure 5). La construction du paquet résultant à émettre se décompose en trois parties : - une première partie correspondant à l'analyse des notifications de modification ; - une seconde partie correspondant aux modifications de la matrice relais courante en cas de notification de modification ; et - une troisième partie correspondant à la construction du paquet à émettre. La première partie correspondant à l'analyse des notifications commence dans une étape 600 par la remise à zéro, par le noeud relais, de son indice de paquet à combiner � Indice_ paquet_ Combine � et de sa notification locale � Notif �. Ensuite, dans une étape 605, le noeud teste si l'indice du paquet à combiner est inférieur au nombre de paquets qu'il doit combiner pour créer son paquet résultant à envoyer. Si le test de l'étape 605 est positif, le système vérifie dans une étape 610 la présence de modifications de coefficients dans la notification par analyse des différents champs Indicateur (415,...,425) de la notification du paquet � Indice_ paquet_ Combine �. Si aucune modification n'est présente (tous les champs sont à 0), dans une étape 625, le système incrémente d'une unité la variable � Indice_ paquet_ Combine �. Sinon, la notification locale est mise à 1 dans une étape 615 et le système met à jour dans une étape 620 les coefficients du paquet � Indice_ paquet_ Combine � reçu notifié. Cette étape 620 est plus amplement décrite par la suite en relation avec la figure 8. Si le test de l'étape 605 de la comparaison entre � Indice_ paquet_ Combine � et le nombre de paquets à combiner est négatif, cela signifie que tous les paquets à combiner ont été testés. Le système passe donc au calcul du paquet résultant à émettre. La première étape de calcul commence dans une étape 630 consistant à vérifier la valeur de la notification locale � Notif �. Si le test de l'étape 630 est négatif, le système construit dans une étape 645 le paquet prédéterminé à partir de la combinaison linéaire prédéterminé. Sinon, dans une étape 635, le système construit le paquet en fonction des nouveaux coefficients déterminés dans l'étape 620 (et plus amplement décrite par la suite en relation avec la figure 8) et construit la notification associée (notification de sortie) dans une étape 640 suivante. La construction de la notification lors de l'étape 640 dépend du mode choisi pour celle-ci à l'initialisation du système. Dans les deux modes, le champ � Indicateur � associé à un paquet source est mis à 1 lorsque le coefficient de celui-ci est modifié en comparaison du coefficient de la combinaison linéaire de référence. Dans ce cas, pour le mode direct, la valeur du nouveau coefficient est mise dans le champ � Info_Coeff � alors que pour le mode indirect, le champ � Info_Coeff � est rempli en mettant la valeur 1 aux groupes de coefficients (de la combinaison globale explicitée) utilisés et la valeur 0 aux groupes de coefficients (de la combinaison globale explicitée) non-utilisés pour le calcul du coefficient associé au paquet source. Dans la pratique, le noeud relais réutilise les notifications des paquets reçus. Si le champ � Indicateur � pour le paquet source j du paquet i est à 1, le noeud relais recopie les informations du champ � Info_Coeff � pour le nombre de groupes de coefficients associé au paquet source j sinon, le noeud relais remplit le champ � Info_Coeff � avec des 1 pour le nombre de groupes de coefficients. Par exemple, un noeud relais reçoit deux paquets : Ml et M2. Dans l'exemple, la notification a une taille de 5 bits, défini à l'initialisation comme étant le nombre maximal de groupes de coefficients contenu dans la combinaison linéaire du paquet résultant de chaque noeud relais, p, qui dans notre cas correspond au noeud relais créant le paquet Mrésultant. Pour les messages dont le nombre de groupe de coefficient est inférieur à p, les bits de poids faibles non affectés à un groupe de coefficients sont mis à zéro. Les combinaisons globales explicitées sont respectivement : - Mt = (a5.a1 + a5.a3)Xl + (a5.a2 + a5.a4)X2 - M2 = (a11.a7 + "11'0(8)X1 + ("11.0(9 + a11 alo)X2 Avec X1 et X2 les deux paquets sources. Et les notifications sont respectivement : - MlX1 : 1 - 1000 - M1X2 : 1 - 1000 - M2X1 : 0 - M2X2:0 Les deux bits de poids faible de M1X1 et M1X2 sont mis à zéro car ils ne correspondent à aucun groupe de coefficients. Le noeud relais devait envoyer la combinaison prédéterminé suivante : Mrésul tant_ prédéterminé = a12 ((a5 .a1 + a5 .a3 + a11.a7 + a11.a8 )X1 + (a5 .a2 + a5 .a4 + a11.a9 + a11 .a10 )X2 ) Il enverra : Mresultant = "12(("5."1 + a11.a7 + "11.0(8)X1 + (a5 a2 + a11.a9 + "11'0(10)X2) et la notification associée : MrésultantX1 : 1 - 1011 MrésultantX2 : 1 - 1011 Il est à noter que pour que les informations de � Info_Coeff � soit valables pour tous les noeuds, il faut que l'ordre des groupes de coefficients (de la forme globale explicitée) soit connu par tous les noeuds du réseau. 20 25 La figure 8 illustre schématiquement, selon un mode de réalisation particulier de l'invention, un algorithme de récupération des coefficients du paquet (étape 620 de la figure 6). Cet algorithme met à jour la valeur des coefficients à partir des différentes notifications reçues, permettant d'obtenir ainsi des coefficients modifiés. L'algorithme commence par la mise à zéro d'une variable locale � Indice_ paquet_ Source � dans une étape 800. Dans une étape 805 suivante, cette variable � Indice_ paquet_ Source � est ensuite comparée à la valeur du nombre de source dans le réseau. Ce test permet de savoir si tous les champs de notification associés au paquet source, pour un paquet résultant donné, ont été analysés. Si le test de l'étape 805 est négatif, cela signifie que l'analyse du paquet résultant est terminée. Le système passe alors à une étape 835 notifiant la fin de l'algorithme. Si le test de l'étape 805 est positif, le système analyse dans une étape 810 le champ 415 � Indicateur � (figure 4) de la notification associé au paquet source � Indice_ paquet_ Source �. En fonction de la valeur présente dans le champ 415 � Indicateur �, deux cas se présentent : - soit il n'y a aucune modification de coefficients associés à la combinaison globale explicitée (c'est-à-dire que le champ est à 0) ; - soit au moins un des coefficients associés à la combinaison globale explicitée a été modifié (c'est-à-dire que le champ est à 1). Dans le premier cas, le système incrémente dans une étape 830 la variable � Indice_ paquet_ Source � puis retourne au test de l'étape 805. Dans le second cas, le système analyse le champ 420 � Info_Coeff � (figure 4) de la notification associée au paquet source � Indice_ paquet_ Source � ayant été modifié, c'est-à-dire que le système met à zéro, dans une étape 820, les coefficients de la combinaison globale explicitée non présents (marqué avec un 0 dans le champ � Info_Coeff �). Par exemple, le champ � Info_Coeff � prend la valeur 1011 et la combinaison globale explicitée prédéterminée est : g5 = a5.a, + a5.a2 + a5.a3 + a5.a4. Le noeud recevant le paquet en déduit que le coefficient global prédéterminé g5 = a5.a1 +a5.a2 + a5.a3 + a5.a4 devient g5 = a5.a1 +a5.a3 + a5.a4. Ensuite, le système calcule le nouveau coefficient et stocke sa valeur dans la matrice relais(ou la matrice destination si l'on se place dans un noeud destination) temporaire (étape 825). Puis dans une étape 830, le système incrémente la variable � Indice_ paquet_ Source � puis retourne au test de l'étape 805. La figure 8 décrit l'algorithme de récupération des coefficients plus particulièrement pour le mode de notification indirect. Pour le mode de notification direct, les étapes 820 et 825 sont remplacées par une étape unique de lecture de la valeur du nouveau coefficient contenu dans le champ � Info_Coeff � de la notification et par une étape de stockage de cette valeur dans la matrice (de relais ou de destination) temporaire. 6.4 Noeud destination La figure 7 décrit, selon un mode de réalisation particulier de l'invention, un algorithme de réception d'un paquet source par un noeud destination. Cet algorithme est identique à celui du noeud relais de la figure 5 excepté pour les étapes 725 et 730. L'étape 725 vérifie que le paquet est le dernier à recevoir pour la supertrame courante et l'étape 730 est l'étape de décodage plus amplement décrite en relation avec la figure 9. Il est à noter que la matrice de destination courante est réinitialisée avec la matrice de destination de référence après chaque décodage. La figure 9 illustre schématiquement, selon un mode de réalisation particulier de l'invention, un algorithme de décodage d'un paquet reçu par un noeud destination (étape 730 de la figure 7). Cet algorithme se décompose en quatre parties successives : - une première partie correspondant à l'analyse des notifications ; - une seconde partie correspondant aux modifications de la matrice de destination courante en cas de notification de modification ; - une troisième partie correspondant à la recherche d'une sous matrice inversible de rang maximal ; et - une quatrième partie correspondant au décodage des paquets sources. L'analyse des notifications commence dans une étape 900 par la remise à zéro, par le noeud destination, de son indice de paquet courant � Indice_paquet � et de sa notification locale � Notif �. Ensuite, dans une étape 905, le noeud destination teste si l'indice du paquet courant est inférieur au nombre de paquets utiles au décodage. Si le test de l'étape 905 est positif, le système vérifie les différents champs � Indicateur� (420,...,430) de la notification de chaque paquet � Indice_paquet �. Si aucune notification n'est présente (tous les champs sont à 0), le système incrémente, dans une étape 925, d'une unité la variable � Indice_paquet �. Sinon, la notification locale est mise à 1 dans une étape 915 et le système met à jour les coefficients du paquet � Indice_paquet � reçu notifié dans une étape 920 (plus amplement décrite par la suite en relation avec la figure 8). Si le test de l'étape 905 de la comparaison entre � Indice_paquet� et le nombre de paquets maximal servant pour le décodage est négatif, cela signifie que tous les paquets utiles au décodage ont été testés. Le système vérifie ensuite dans une étape 930 si la matrice de destination courante a subi des modifications par rapport à la matrice de destination de référence. Dans le cas où aucun paquet courant n'a subi de modification, le système utilise l'inverse de la matrice prédéterminée pour le décodage afin de décoder tous les paquets sources dans une étape 970. Puis, dans une étape 985, le système indique que tous les paquets sources sont disponibles. Le système termine ensuite l'algorithme de décodage dans une étape 990. Si le test de l'étape 930 est positif, c'est-à-dire que des paquets courants ont été modifiés, le système effectue, dans une étape 935, le calcul du rang de la matrice de destination courante par la méthode du pivot de Gauss. Ensuite, dans une étape 940, le rang de la matrice est comparé au nombre total de sources à décoder. Si le nombre de sources à décoder est égal au rang de la matrice, cela signifie que la matrice permet de décoder tous les paquets sources. Pour décoder les paquets sources, le système calcule l'inverse de la nouvelle matrice dans une étape 975, par exemple par la méthode de Gauss-Jordan. Le système l'utilise ensuite, ainsi que les paquets reçus, pour décoder tous les paquets sources dans une étape 980. Puis l'étape 985 est exécutée afin que le système indique que tous les paquets sources sont disponibles. L'algorithme se termine ensuite par l'étape 990. Par contre, si le rang de la matrice est différent du nombre de paquets sources à décoder (test négatif lors de l'étape 940), cela signifie que la matrice ne permet pas de décoder tous les paquets sources. Le système doit donc trouver, si possible, une sous-matrice permettant de décoder un nombre inférieur de paquets sources. Cette recherche de sous-matrice est réalisée dans une étape 945 (plus amplement décrite par la suite en relation avec la figure 10). Puis une étape 950 permet de tester combien de paquets sources pourront être décodés par le système. S'il n'existe pas de paquets sources décodables (c'est-à-dire si le rang de la matrice est égal à zéro), cela signifie qu'aucun paquet source ne pourra être décodé.C'est alors l'échec du décodage dans une étape 965. Puis l'étape 985 est exécutée afin que le système notifie cet échec à l'organe effectuant le lien avec l'application, par exemple le CPU. L'algorithme se termine ensuite de nouveau par l'étape 990. Si le test de l'étape 950 est négatif, alors le système calcule l'inverse de la sous-matrice dans une étape 955. Dans une étape 960, le système l'utilise ensuite avec les paquets reçus associés à cette sous-matrice afin de décoder les paquets sources contenus dans les paquets reçus. Ensuite, le système marque les paquets sources décodés comme étant disponible lors de l'étape 985, puis termine l'algorithme par l'étape 990. La figure 10 illustre schématiquement, selon un mode de réalisation particulier de l'invention, un algorithme de sélection de la sous-matrice de destination permettant de décoder le plus de paquets sources possibles (étape 945 de la figure 9). Les paramètres de sortie sont donc la sous-matrice de destination (si elle existe) et, le nombre de paquets sources décodables (rang de la sous-matrice). Le système rentre dans l'algorithme si la matrice courante ne permet pas de décoder tous les paquets sources ; l'algorithme teste les combinaisons en commençant par supprimer un certain nombre de sources jusqu'à l'obtention d'une sous-matrice décodable ou jusqu'à ce que toutes les combinaisons aient été testées sans succès. Une première étape 1000 initialise à la valeur 1 le nombre de paquets sources � Nb Source �. Puis une étape 1005 permet de tester si ce nombre est bien strictement inférieur au nombre total de source. Si le nombre de paquet source à supprimer est égal au nombre de paquet source total, cela signifie qu'aucune sous-matrice permettant le décodage de paquet source n'existe. Le système initialise la variable � Rang � à zéro dans une étape 1065 et termine l'algorithme dans une étape 1070. Si le test de l'étape 1005 est positif, le système passe à l'initialisation de deux variables locales � Nb test � et � Iter � dans une étape 1010. La variable � Iter � est initialisé à la valeur 1, c'est un compteur qui teste à chaque itération un nouvel ensemble � Nb Source � et paquets sources associés à supprimer. La valeur � Nb test � correspond au nombre d'ensemble de paquets sources à supprimer et est égale à la combinaison au sens mathématiques : Nb test = C(NbSource, Nb Source àsupprimer) = NbSource!/( Nb Source à supprimer)!( NbSource - Nb Source à supprimer)! Il est à noter que � ! � correspond à l'opération mathématique factorielle. Après les initialisations, dans une étape 1015, le système choisi un ensemble de sources à supprimer parmi les sources, cet ensemble étant différent pour chaque nouvelle itération de � Iter �. Ensuite, dans une étape 1020, le système détermine une sous-matrice excluant les paquets reçus contenant une des sources de l'ensemble à supprimer. Dans une étape 1025, le système vérifie ensuite si la matrice a encore des lignes, c'est-à-dire qu'il reste des paquets reçus ne contenant pas de sources de l'ensemble à supprimer. S'il ne reste pas de paquets reçus, le système passe à l'étape 1040. Sinon, le système cherche le rang de la sous-matrice par la méthode du pivot de Gauss dans une étape 1030. Ensuite, le rang de la sous-matrice est comparé au nombre de paquet source restant à décoder dans une étape 1035. Si le test est positif, cela signifie que tous les paquets sources présents dans la sous-matrice sont décodables. La sous-matrice est alors stockée dans une étape 1055 puis l'algorithme se termine dans l'étape 1060. Si le test 1035 est négatif, le système teste dans une étape 1040 si la valeur du compteur � Iter � est égale au nombre de tests � Nb test � à effectuer, c'est-à-dire que toutes les combinaisons ont été effectuées pour un nombre donné de paquets sources à supprimer. Si le test de l'étape 1040 est négatif, le compteur � Iter� est incrémenté d'une unité et un nouvel ensemble de sources à supprimer parmi les sources est déterminé dans une étape 1045. Puis l'étape 1020 de construction de la sous-matrice est de nouveau exécutée. Si le test 1040 est positif, alors le système augmente le nombre de source à supprimer dans une étape 1050 puis le test de l'étape 1005 est de nouveau effectué. On notera que l'invention ne se limite pas à une implantation purement matérielle mais qu'elle peut aussi être mise en oeuvre sous la forme d'une séquence d'instructions d'un programme informatique ou toute forme mixant une partie matérielle et une partie logicielle. Dans le cas où l'invention est implantée partiellement ou totalement sous forme logicielle, la séquence d'instructions correspondante pourra être stockée dans un moyen de stockage amovible (tel que par exemple une disquette, un CD-ROM ou un DVD-ROM) ou non, ce moyen de stockage étant lisible partiellement ou totalement par un ordinateur ou un microprocesseur.5 REVENDICATIONS1. Procédé de codage réseau dans un réseau maillé comprenant au moins un noeud relais qui, selon un schéma de codage réseau prédéterminé, s'attend à recevoir en entrée une pluralité de paquets de données utiles et doit générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données utiles étant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources, ledit procédé étant mis en oeuvre par au moins un noeud relais donné et étant caractérisé en ce qu'il comprend des étapes consistant à : - détecter (610, 615, 630) si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ; - dans le cas d'une détection positive, construire (635) un paquet résultant modifié à partir des paquets utiles reçus ; - construire (640) une notification de sortie identifiant les différences entre la combinaison linéaire de paquets sources représentative du paquet résultant prédéterminé et la combinaison linéaire de paquets sources représentative du paquet résultant modifié ; et - transmettre (650) le paquet résultant modifié et la notification de sortie. 2. Procédé selon la revendication 1, caractérisé en ce que la notification d'entrée représente : - un événement interne au noeud relais (510) lorsqu'elle indique qu'un paquet utile est manquant ; ou - une information reçue avec un paquet utile lorsqu'elle indique que ledit paquet utile a été reçu modifié. 20 25 30 3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que chaque notification d'entrée ou de sortie comprend M champs, avec M le nombre de noeuds sources, chacun des M champs étant associé à l'un des M paquets sources générés par les M noeuds sources, chacun des M champs comprenant : - un premier sous-champ (415, 425) indiquant si un coefficient, associé au paquet source associé audit champ, a été modifié ou non, dans ladite combinaison linéaire de paquets sources représentative dudit paquet résultant modifié, par rapport à ladite combinaison linéaire de paquets sources représentative dudit paquet résultant prédéterminé ; - un deuxième sous-champ (420, 430) donnant une information relative à une valeur du coefficient modifié sur lequel porte le premier sous-champ, si le premier sous-champ (415, 425) indique une modification. 4. Procédé selon la revendication 3, caractérisé en ce que le deuxième sous-champ (420, 430) est présent seulement si le premier sous-champ (415, 425) indique une modification. 5. Procédé selon l'une quelconque des revendications 3 et 4, caractérisé en ce que l'information comprise dans le deuxième sous-champ (420, 430) comprend explicitement la valeur du coefficient modifié. 6. Procédé selon l'une quelconque des revendications 3 et 4, caractérisé en ce que l'information comprise dans le deuxième sous-champ (420, 430) comprend au moins une indication permettant à un noeud traitant ladite notification d'entrée ou de sortie de retrouver la valeur du coefficient modifié. 7. Procédé de codage réseau dans un réseau maillé comprenant au moins un noeud destination qui, selon un schéma de codage réseau prédéterminé, s'attend à recevoir en entrée une pluralité de paquets de données utiles et doit générer en sortie une pluralité de paquets sources décodés obtenus chacun selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données utileétant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources, ledit procédé étant mis en oeuvre par au moins un noeud destination donné et étant caractérisé en ce qu'il comprend des étapes consistant à : - détecter (910, 915, 930) si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ; - dans le cas d'une détection positive, obtenir (935, 940, 945, 950, 955, 975) un schéma de codage réseau modifié, en fonction des combinaisons linéaires de paquets sources formant les paquets utiles reçus ; et - décoder les paquets de données utiles reçus (960, 980), en fonction dudit schéma de codage réseau modifié, pour obtenir au moins un paquet source décodé. 15 8. Procédé selon la revendication 7, caractérisé en ce que l'étape consistant à obtenir un schéma de codage réseau modifié comprend des étapes consistant à : - modifier (810, 815, 820 ; 920) une matrice de destination de référence pour obtenir une matrice de destination modifiée, en fonction de ladite au moins notification d'entrée détectée ; - détecter (935, 940) si le rang de ladite matrice de destination modifiée est égal au nombre total de paquets sources à décoder ; et - si le rang de ladite matrice de destination modifiée est égal au nombre total de paquets sources à décoder, utiliser (975, 980) ladite matrice de destination modifiée pour générer tous les paquets sources décodés, dans ladite étape consistant à décoder. 9. Procédé selon la revendication 8, caractérisé en ce que, si le rang de ladite matrice de destination modifiée n'est pas égal au nombre total de paquets sources à décoder, l'étape consistant à obtenir un schéma de codage réseau modifié comprend des 30 étapes consistant à : 10 20 25- déterminer (945, 950) une sous-matrice de ladite matrice de destination modifiée, dont le rang est différent de zéro ; - utiliser (955, 960) ladite sous-matrice pour générer au moins un paquet source décodé, dans ladite étape consistant à décoder. 10. Procédé selon l'une quelconque des revendications 7 à 9, caractérisé en ce que la notification d'entrée représente : - un événement interne au noeud relais lorsqu'elle indique qu'un paquet utile est manquant ; ou - une information reçue avec un paquet utile lorsqu'elle indique que ledit paquet utile a été reçu modifié. 11. Procédé selon l'une quelconque des revendications 7 à 10, caractérisé en ce que chaque notification d'entrée comprend M champs, avec M le nombre de noeuds sources, chacun des M champs étant associé à l'un des M paquets sources générés par les M noeuds sources, chacun des M champs comprenant : - un premier sous-champ (415, 425) indiquant si un coefficient du paquet source associé audit champ a été modifié ou non, dans ladite combinaison linéaire de paquets sources représentative d'un paquet utile attendu ; - un deuxième sous-champ (420, 430) donnant une information relative à une valeur du coefficient modifié sur lequel porte le premier sous-champ, si le premier sous-champ (415, 425) indique une modification. 12. Procédé selon la revendication 11, caractérisé en ce que le deuxième sous-champ (420, 430) est présent seulement si le premier sous-champ (415, 425) indique une modification. 13. Procédé selon l'une quelconque des revendications 11 et 12, caractérisé en ce que l'information comprise dans le deuxième sous-champ (420, 430) comprend 30 explicitement la valeur du coefficient modifié. 14. Procédé selon l'une quelconque des revendications 11 et 12, caractérisé en ce que l'information comprise dans le deuxième sous-champ (420, 430) comprend au moins une indication permettant à un noeud recevant ladite notification d'entrée de retrouver la valeur du coefficient modifié. 15. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé selon au moins une des revendications 1 à 6 et/ou le procédé selon au moins une des revendications 7 à 14, lorsque ledit programme est exécuté sur un ordinateur. 16. Moyen de stockage lisible par ordinateur, éventuellement totalement ou partiellement amovible, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur pour mettre en oeuvre le procédé selon au moins une des revendications 1 à 6 et/ou le procédé selon au moins une des revendications 7 à 14. 17. Noeud relais compris dans un réseau maillé et participant à un procédé de codage réseau dans ledit réseau maillé, ledit noeud relais, selon un schéma de codage réseau prédéterminé, s'attendant à recevoir en entrée une pluralité de paquets de données utiles et devant générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données utiles étant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources, ledit noeud relais étant caractérisé en ce qu'il comprend : des moyens de détection, permettant de détecter si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ;- des premiers moyens de construction, activés dans le cas d'une détection positive, permettant de construire un paquet résultant modifié à partir des paquets utiles reçus ; - des seconds moyens de construction, permettant de construire une notification de sortie identifiant les différences entre la combinaison linéaire de paquets sources représentative du paquet résultant prédéterminé et la combinaison linéaire de paquets sources représentative du paquet résultant modifié ; - des moyens de transmission, permettant de transmettre le paquet résultant modifié et la notification de sortie. 18. Noeud destination compris dans un réseau maillé et participant à un procédé de codage réseau dans ledit réseau maillé, ledit noeud destination, selon un schéma de codage réseau prédéterminé, s'attendant à recevoir en entrée une pluralité de paquets de données utiles et devant générer en sortie une pluralité de paquets sources décodés obtenus chacun selon une combinaison linéaire prédéterminée de ladite pluralité de paquets de données utiles, chacun des paquets de données étant formé, selon ledit schéma de codage réseau prédéterminé, par une combinaison linéaire d'un ou plusieurs paquets sources, les paquets sources étant émis par des noeuds sources, ledit noeud destination étant caractérisé en ce qu'il comprend : - des moyens de détection, permettant de détecter si au moins une notification d'entrée indique qu'un paquet utile est manquant ou qu'il a été reçu modifié de sorte que la combinaison linéaire du ou des paquets sources formant ledit paquet utile modifié ne soit pas conforme au schéma de codage réseau prédéterminé ; - des moyens d'obtention, activés dans le cas d'une détection positive, permettant d'obtenir un schéma de codage réseau modifié, en fonction des combinaisons linéaires de paquets sources formant les paquets utiles reçus ; - des moyens de décodage, permettant de décoder les paquets de données utiles reçus en fonction dudit schéma de codage réseau modifié, pour obtenir au moins un paquet source décodé. 25 30