FR 2939586 A1 20100611 FR 0858367 A 20081208 Procédé de codage réseau rapide et robuste à des pertes de transmission dans un réseau maillé, noeud relais, noeud destination, produit programme d'ordinateur et moyen de stockage correspondants. 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui des réseaux de communication maillés. Plus précisément, l'invention concerne une technique de codage réseau (� network coding � en anglais) adaptée à la transmission de paquets de données, dans un réseau de communication maillé, depuis des noeuds sources vers des noeuds destinations, via des noeuds relais retransmettant des paquets de données issus des noeuds sources et destinés aux noeuds destinations. Conformément au principe général du codage réseau, les messages retransmis par les noeuds relais sont des combinaisons linéaires des messages reçus en entrée par ces noeuds relais, ce qui permet d'augmenter le débit des données et d'utiliser au mieux la capacité du réseau. L'invention s'applique notamment, mais non exclusivement, dans le contexte d'un réseau maillé sans fil. 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 existant 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é. Un réseau de communication sans fil maillé est constitué d'un ensemble S de M noeuds sources et d'un ensemble Dt de N noeuds destinations. Les transmissions considérées sont dites � multicast � (le terme � multidiffusion � est parfois aussi utilisé), c'est-à-dire que chaque paquet de données envoyé par un noeud source est destiné à l'ensemble des noeuds destinations de Dt. Les autres noeuds étant des noeuds relais, utilisés pour retransmettre les paquets sources envoyés par les noeuds sources. La topologie du réseau est supposée connue, c'est-à-dire l'ensemble des qualités radio (telle la puissance radio reçue) entre deux noeuds communicants est connu. Les noeuds relais ont classiquement comme fonction de retransmettre un des paquets qu'ils ont reçus en entrée (fonction de routage). Dans le cadre d'un codage réseau, ces noeuds relais ont une nouvelle fonctionnalité : ils ont la capacité d'émettre 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 and co. (voir l'article : R. Ahlswede, N. Cai, S.-Y. R. Li and R.W. Yeung "Network Information Flow" I.E.E.E. Transactions on Information Theory Vol 46, No 4, pp 1204-1216, July 2000) et 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 terme d'utilisation de la capacité de réseau. De plus, il a été montré que dans un cadre multicast (chaque message envoyé par un noeud source est destiné à l'ensemble des noeuds destinations de Dt), les combinaisons linéaires dans un corps Fq suffisamment grand donnent un résultat optimal (en terme de gain). Dans la suite de la présente description, on appelle schéma de codage réseau : • les noeuds relais combinant les paquets en entrée pour générer un paquet combiné appelé paquet résultant ; • pour ces noeuds relais, les paquets en entrée à combiner parmi l'ensemble des paquets reçus ; • à chaque paquet en entrée à combiner est associé un coefficient dans Fq. Ces noeuds relais et ces paquets (correspondants à des 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 une combinaison linéaire des paquets sources (paquets envoyés par les noeuds sources). Ils calculent à partir de ces paquets reçus une matrice de décodage qui permettra de décoder les paquets sources (c'est-à-dire de construire des paquets sources reconstitués à partir des paquets reçus). Dans le cadre de l'invention, le schéma de codage utilisé est un schéma de codage optimisé (décrit par exemple dans la demande de brevet US2005/0010675) réduisant le nombre de noeuds relais et de paquets utiles participant au schéma de codage réseau afin de diminuer le nombre d'opérations et donc le temps CPU. 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). Mais le réseau sans-fil est sensible à des masquages causés par exemple par un être vivant traversant le champ de transmission. Les pertes de liens occasionnées par ces masquages peuvent modifier temporairement la topologie du réseau initiale, topologie sur laquelle le schéma de codage réseau prédéterminé a été calculé. Celui-ci n'est alors plus valide durant cette période, ce qui peut mener à l'incapacité des noeuds destinations à décoder l'ensemble des paquets sources du fait que ceux-ci sont tous liés entre eux dans les paquets reçus. Il convient donc d'augmenter la robustesse du schéma de codage réseau face à ces pertes de liens (mesurées en nombre de paquets sources décodables par les noeuds destinations). En outre, dans le cadre de l'invention, le protocole d'accès au médium est basé sur un protocole d'accès multiple à répartition dans le temps (TDMA, pour � Time Division Multiple Access � en anglais) où chaque noeud du réseau a accès au médium cycliquement de manière déterministe durant une période fixe prédéterminée. Une supertrame est alors définie, comme étant une période durant laquelle chaque noeud du réseau a accès au médium une unique fois durant un temps déterminé. Il est à noter que les noeuds relais ont par exemple l'autorisation de combiner uniquement des données émises par les noeuds sources durant la supertrame courante afin d'optimiser la latence des applications considérées (vidéo par exemple). 2.2 Prérequis et limites de l'état de la technique 2.2.1 Le corps F3, 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 constituent 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 alors symbole par symbole : > L'addition � +� s'effectue bit à bit avec la fonction classique XOR - Pour la multiplication � . � , un symbole de s bits, b0...bs_1, est transformé en polynôme : bo+b1X+..bs_1Xs_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 de l'algorithme d'Euclide. Des implémentations sont données par exemple dans le document � N.R. Wagner. The laws of Cryptography with Java Code �, disponible sur Internet à l'adresse : � http://www.cs.utsa.edu/ùwagner/laws/FFM.html �. De ce fait, dans la suite de la présente description, lorsqu'on écrit Y = avec A1...A1, 1 paquets en entrée et al,.., a, des coefficients dans Fq, ces i=1 opérations s'effectuent en réalité sur tous les symboles du paquet : yk = .a;` où yk et i=1 ak sont respectivement le kième symbole des paquets Y et A et les opérations � + � et � . � s'effectuent dans Fq. Dans le cadre d'un fonctionnement en temps-réel, dans un environnement TDMA (cadre de l'invention), il est à noter que ces opérations ont un coût non négligeable et que la construction d'un paquet entier, notamment au niveau du noeud relais qui doit réagir rapidement, pose problème. Dans un environnement TDMA (cadre de l'invention), la construction d'un paquet résultant par un noeud relais peut s'effectuer au fil de l'eau. A chaque paquet reçu utile, on effectue la multiplication avec son coefficient associé et on ajoute le résultat avec le résultat des autres paquets reçus. Par exemple, si le paquet résultant prédéterminé est alAl + a2A2, à la réception de Al, le noeud relais effectue la multiplication alAl et mémorise le résultat Res. Puis à la réception de A2, le noeud relais effectue l'opération a2A2 puis somme le résultat avec Res et stocke le nouveau résultat dans Res. 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 vue à deux niveaux, un niveau local et un niveau global. Pour expliquer ces deux notions, 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 utile (appelé aussi combinant). Ce noeud relais Ri doit combiner alors un ensemble de paquets reçus Mi, M2,..., M, parmi les paquets reçus. Le paquet résultant est alors égal à y, = l a~ M; avec 1=1 appartenant au corps fini Fq. Cette combinaison linéaire y, = l î M; est la représentation locale du codage réseau, 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'autre relais. Notons X~,...XM les paquets sources émis par les M noeuds sources. Il est alors clair que chaque paquet circulant dans le réseau est une combinaison linéaire des paquets X~,...XM . Le paquet précédemment cité y peut être m aussi ainsi représenté de la manière suivante : y, = g; X; . Cette représentation est la représentation globale du codage réseau. Elle prend en compte que chaque paquet reçu M; est aussi un paquet résultant combinant des paquets sources. Elle est appelée par la suite combinaison globale. Il est clair que les coefficients g3 se déduisent récursivement des coefficients de o* Notation : les paquets reçus intervenant dans une combinaison locale sont appelés par la suite les � paquets associés � à la combinaison locale. Les paquets sources qui ont un coefficient non nul dans une combinaison globale sont appelés par la suite les � paquets associés � à la combinaison globale. Remarque : on peut associer une seule combinaison globale à une combinaison locale donnée mais pas l'inverse. En effet, à une combinaison globale, on peut associer plusieurs combinaisons locales en jouant sur le choix des paquets reçus M; à combiner. Dans le cadre de l'invention, chaque noeud relais mémorise la représentation globale de chaque paquet reçu en entrée dans une matrice, appelée matrice relais R=(r,,). al , (12-1,-41 >,...,a Chaque ligne représente un paquet reçu, chaque colonne un paquet source, et chaque élément de la matrice r,i représente alors le coefficient du paquet source j de la combinaison linéaire globale du paquet reçu i. Le noeud destination di qui reçoit les paquets Y1,Y2,...,Y1' mémorise aussi la représentation globale de chaque paquet en entrée reçu dans une matrice, appelée matrice destination D=(d,i). Chaque ligne représente un paquet reçu et chaque colonne un paquet source, et chaque élément de la matrice d,i représente le coefficient du paquet source j de la combinaison linéaire globale du paquet reçu Y;. Le noeud destination doit alors résoudre le système linéaire constitué par l'ensemble des combinaisons linéaires m globales : Y~ =X; j=1...1', 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. La résolution de ce système linéaire est expliquée dans la partie suivante. Il est à noter que si le rang de D (au sens de l'algèbre linéaire) est égal au nombre de noeuds sources M alors les M 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. 2.2.2.2 Construction d'un codage réseau Dans un réseau maillé constitué de M sources et de N noeuds destinations, 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 vu 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 (se reporter à l'article "Maximum Flow through a Network" Canadian Journal of Mathematics, 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= {xi, . . . , xK}, et E c 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, xi), avec x; et xi 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, hauts-parleurs, amplificateur) tandis qu'un arc (xi, xi) indique par exemple 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 x; et xi. De plus, on appelle chemin entre un noeud x1 et un noeud xp un ensemble ordonné de noeuds {x1,x2,..,xp} tel que (xi, xi+1) E E pour i = 1, . . . , (pùl). Un chemin peut aussi s'écrire {(x1,x2),..,(x1,x1+1),...,(xp_1,xp)} avec (xk,xk+1) 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 : 1. 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) 2. Soit x E V (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 {x1,x2,..,xp,d} et {y1,y2,..,yq,d} tels que : > (xi, xi+1) E E pour i = 1, ... , (pù1) et (xp, d) E E - (y, y+1) E E pour j = 1, ... , (qù1) et (yq, d) E E - i E S, Y1 E S et x1≠Y1 - Vi =1..(p -1), Vj =1..(q -1), (xi, x1+1) ~ (y;' y;+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 destination de D1, alors les M noeuds sources sont capables d'émettre en multicast à D1 si les noeuds relais sont autorisés à combiner linéairement leurs paquets entrants sur un corps fini suffisamment grand �. Ce résultat est une conséquence directe de l'article précité de R. Ahlswede and co. 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 du 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 permettant de décoder les M paquets sources. Les noeuds destinations ne peuvent donc plus décoder M paquets sources. Dans l'état de la technique, il existe principalement deux approches pour la construction d'un schéma de codage réseau en fonction de la connaissance ou pas 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 est donné dans l'article suivant : � R. Koetter, M. Médard, "An Algebraic Approach to Network coding" ACM transactions on Networking, Vol 11, Nos, October 2003". Le schéma de codage réseau obtenu selon cette première approche est appelé � schéma de codage déterministe � ; - Pour une topologie inconnue, une construction à la volée des coefficients tirés aléatoirement est donnée dans l'article suivant : "Randomized distributed network coding" - Michelle Effros, Tracey Ho, David Karger, Ralf Koetter, Muriel Medard 20050152391. Le schéma de codage réseau obtenu selon cette seconde approche est appelé � schéma de codage aléatoire �. Dans la première approche, les coefficients sont calculés une fois pour toutes au départ du système et donc durant la vie du système. Les noeuds destinations et les noeuds relais ont des opérations peu coûteuses car ils savent exactement ce qu'ils vont 20 recevoir et transmettre. Dans la deuxième approche, les noeuds relais tirent aléatoirement les coefficients du paquet résultant à générer, ce qui nécessite un temps de traitement supplémentaire. De plus, ils sont dans l'obligation d'envoyer les coefficients tirés aléatoirement dans le paquet résultant afin que les autres noeuds, et plus spécialement les noeuds destinations, 25 connaissent les combinaisons linéaires pour décoder. 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. 15 Dans la première approche, le décodage est sûr de réussir car la construction réalisée à l'initialisation s'assure que c'est le cas. La première approche est donc plus performante que la deuxième en terme de gain en bande passante et en temps de calcul. Par contre, la deuxième approche est plus performante que la première sur les points suivants : • elle ne nécessite pas la connaissance de la topologie du réseau. Dans le cadre de la présente invention, on suppose que l'on dispose d'un moyen de récupérer la topologie du réseau, donc cet inconvénient de la première approche n'est pas pris en compte ; • elle est robuste aux pertes de lien contrairement à la première approche. En effet, vu qu'elle génère un paquet résultant avec une combinaison linéaire différente à chaque envoi, 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. La première approche est en revanche fortement touchée par les pertes de lien car chaque perte de lien modifie la combinaison linéaire du noeud relais (combinaison fixée 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 être alors catastrophique et influe sur tous les paquets sources à décoder vu que ceux-ci sont tous liés par les combinaisons linéaires (contrairement à un routage où seul un paquet source serait atteint). Considérant notamment que les avantages de la première approche sont primordiaux dans des applications hauts débits comme visé par l'invention, on suppose dans la suite de la description que c'est la première approche qui est utilisée pour construire un schéma de codage réseau en fonction de la connaissance de la topologie initiale du réseau. Dans la pratique, la méthode de construction du schéma de codage réseau prédéterminé (selon la première approche) couramment utilisée (appelée ci-après version optimisé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 : seuls les noeuds et les liens des chemins disjoints sont utiles pour construire le schéma de codage réseau. Cette version optimisée est notamment décrite dans la demande de brevet US2005/0010675 précitée. A partir de ce constat, on appelle noeud (respectivement lien) utile, un noeud (respectivement lien) qui appartient à l'ensemble des chemins disjoints et, on appelle noeud (respectivement lien) redondant, un noeud (respectivement 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. Cette version optimisée de la construction du codage réseau est par exemple utilisée dans le cadre de la présente invention. Elle limite fortement les opérations car seuls les noeuds et liens considérés utiles sont utilisés, ce qui diminue le nombre d'opérations dans le corps au niveau du noeud relais et du noeud destination. 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 paquets. Idem pour le noeud destination qui n'a besoin que d'un sous-ensemble des paquets reçus pour décoder les paquets sources. Avec cette version optimisée, dans un premier temps on construit un schéma de codage réseau qui ne prend en compte que les noeuds relais et liens utiles, selon les définitions suivantes : - les noeuds relais combinant les paquets en entrée sont les noeuds relais utiles ; - pour ces noeuds relais utiles, les paquets en entrée à combiner parmi l'ensemble des paquets reçus sont les paquets utiles ; - à chaque paquet en entrée à combiner est associé un coefficient dans Fq. Les paquets résultants sont ainsi prédéterminés. De la même manière, le noeud destination construit alors une sous-matrice de la matrice destination D, appelée la matrice codante (ou encore matrice destination) et notée C, qui ne prend en compte que les paquets utiles (des lignes sont donc supprimées de D). A partir de C, une sous-matrice carrée de dimension (M,M) (le schéma optimisé assure cette propriété), le noeud destination calcule l'inverse de celle-ci (qui existe par construction du schéma), appelée matrice de décodage et notée Cl, et décode ainsi les paquets sources : X=C-1Y, avec X le vecteur colonne des paquets sources et Y le vecteur colonne des paquets reçus. Dans le cadre d'un accès TDMA au médium, le décodage peut s'effectuer au fil de l'eau (même concept que celui expliqué dans le paragraphe 2.2.1 ci-dessus, pour les noeuds relais). Pour chaque paquet reçu utile, on effectue la multiplication entre le paquet reçu et ses coefficients associés dans la matrice C-1 et on ajoute le résultat avec le résultat obtenu pour les autres paquets reçus. Par exemple, supposons que deux paquets sources X et Y aient été envoyés et qu'un noeud destination ait la matrice C-1 suivante : C11 C12 ~C21 C22 A la réception du premier paquet utile M1, le noeud destination effectue déjà les opérations suivantes (symboles par symboles) et les stockent dans Xtemp et Ytemp : Xtemp = c11 M1 et Ytemp = c21 Ml. Puis, à la réception du second paquet utile M2, le noeud destination effectue les opérations suivantes : Xtemp = Xtemp + c12 M2 et Ytemp = Ytemp + c22 M2 Le deuxième paquet étant le dernier, Xtemp et Ytemp sont égaux à x et Y. Ce décodage s'appelle décodage au fil de l'eau dans la suite de la description. 2.2.3 Résolution d'un système linéaire Soit un système linéaire de n équations à p inconnues dans Fq : ialipi + +a1pNp ù bl an1N1 + +anplp = bn Avec [(31,... (3p] les p inconnues du système, a1i, i=1..n,j=1..p les coefficients du système et [b1,...bn] les constantes du système. Pour résoudre ce système, on utilise par exemple la méthode du pivot de Gauss, aussi appelée � élimination de Gauss-Jordan �, qui est connue de l'homme du métier. D'autres résolutions matricielles sont possibles pour résoudre le système d'équation : décomposition LU, décomposition QR, Méthode de Cholesky. Elles sont directement applicables à la présente invention. Pour appliquer la méthode de Gauss, on associe au système la matrice suivante de dimension (n,p+1) : ail a,p .b1 a b np n Sur cette matrice, l'algorithme de Gauss-Jordan réalise des opérations 5 élémentaires ligne par ligne afin d'obtenir une matrice de la forme : 01 0 00000 1 a 1(r+1) a1p b1 ar(r+1) arp br 0 0 br+1 0 0 bn Le système est dit compatible s'il admet au moins une solution. La compatibilité dépend de la valeur de r par rapport aux valeurs de n et de p : 1. Dans le cas où r est strictement inférieur à n et à p, deux cas se présentent : 10 - Les coefficients br+1,..., bn sont nuls. Dans ce cas, le système est compatible et il existe une infinité de solution pour les [(31,... 13p]. Les Ut... 13r] sont les inconnues principales, les autres [(3r+l,... (3p] sont les inconnues secondaires. Pour résoudre le système, on fixe alors les [(3r+1,... (3p] qui deviennent des paramètres et on détermine les inconnues principales 15 en résolvant le système linéaire en commençant par 13r puis Rr-i' • • • RI > Il existe des coefficients br+1 ,..., bn non nuls. Le système est incompatible. 2. Dans le cas où r est égal à n et strictement inférieur à p, il existe une infinité de solution pour les [jt... 13p]. Les [(3I,... Rn] sont les inconnues principales, les autres [(3n+l,... (3p] sont les inconnues secondaires. 3. Dans le cas où r est égal à p et strictement inférieur à n, deux cas se présentent : > Les coefficients br+1,..., bn sont nuls. Le système admet une solution 131= 6, ,..,13p= bp . > Sinon le système est incompatible. 4. Si r est égal à p et à n, le système admet une unique solution : ,..,(3p= bp 2.2.4 Limites de l'état de la technique Dans l'état de la technique, 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 (deuxième approche décrite ci-dessus), du fait que celui-ci (contrairement au schéma de codage déterministe selon la première approche) est robuste aux pertes de lien (comme détaillé auparavant). En effet, avec le schéma de codage aléatoire, les noeuds relais effectuent systématiquement des opérations coûteuses pour combiner les paquets avec ou sans perte de paquets. Mais, considérant que les avantages de la première approche décrite ci-dessus (en terme de gain en bande passante et en temps de calcul) sont primordiaux dans des applications hauts débits (comme détaillé auparavant), la présente invention se place dans le cadre où c'est cette première approche qui est utilisée (schéma de codage réseau en fonction de la connaissance de la topologie initiale du réseau). Or, dans le cas où la première approche est utilisée, la gestion des pertes de paquets consiste à rechercher des schémas de codage réseau robustes dès la construction de ceux-ci. On essaie ainsi de s'assurer que les matrices de destination sont 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. Mais les noeuds relais sont obligés d'utiliser l'ensemble des paquets qu'ils reçoivent, ce qui impose au niveau des noeuds relais un temps de calcul important et surtout systématique. Pour résoudre le problème de la gestion des pertes de paquets, dans le cas où la première approche précitée (schéma de codage déterministe) est utilisée, il n'a jamais été proposé de technique consistant, pour les noeuds relais et les noeuds destinations, à modifier localement et provisoirement le schéma de codage réseau prédéterminé, en prenant en compte des paquets redondants. A fortiori, il n'a jamais été proposé de technique visant à optimiser la latence introduite, dans un noeud relais ou un noeud destination, par le temps de traitement nécessaire à ce noeud pour modifier (localement et provisoirement) le schéma de codage prédéterminé (temps de traitement pour reconstituer un paquet résultant reconstitué différent du paquet résultant prédéterminé, dans le cas d'un noeud relais, ou bien temps de traitement pour modifier la matrice de décodage, dans le cas d'un noeud destination). Or, une telle optimisation de la latence introduite par ce temps de traitement est importante dans le contexte précité où le protocole d'accès au médium est basé sur un protocole TDMA. En effet, cette latence doit être minimisée, notamment si le système doit fonctionner en temps-réel : • côté noeud relais, dans le cas d'un système temps-réel, se pose la question du moment où la reconstitution d'un paquet résultant reconstitué doit être déclenchée. Si cette reconstitution débute dès la détection du lien cassé, il se peut que très peu de paquets redondants soient déjà reçus, ce qui diminue les chances de succès d'une reconstitution transparente. Si le noeud relais attend la réception de l'ensemble des paquets redondants, la reconstitution s'effectue trop tardivement pour réaliser toutes les opérations d'une reconstitution transparente et pour construire ensuite le paquet résultant (surtout si cette reconstitution transparente échoue et qu'une reconstitution non transparente, avec une notification, est nécessaire). Il existe donc un problème d'optimisation du temps de traitement nécessaire pour la modification du schéma de codage, que cette invention propose de résoudre ; • côté noeud destination, à la détection d'un paquet utile non reçu ou d'un paquet utile notifié modifié, le noeud destination est alors dans l'obligation de recalculer sa matrice de décodage qui n'est plus valide. Un problème de même nature que pour le noeud relais se pose : soit le recalcul de la matrice de décodage s'effectue dès la détection, au risque d'échouer (c'est-à-dire de ne pas trouver de matrice décodant tous les paquets sources), soit ce recalcul s'effectue à la réception de tous les paquets reçus (fin de la supertrame) ce qui augmente fortement la latence introduite par le décodage. 3. OBJECTIFS DE L'INVENTION L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier ces 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 de codage réseau adaptée à la transmission de paquets de données dans un réseau de communication maillé, cette technique permettant d'optimiser la gestion des pertes de paquets (c'est-à-dire des pertes de liens) dans le cas où on utilise un schéma de codage réseau déterministe (obtenu selon la première approche précitée), tout en minimisant le temps de traitement (permettant par exemple un traitement en temps-réel) lié à la gestion des pertes de paquets dans un environnement TDMA. Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui, s'appuyant sur une solution nouvelle et inventive consistant pour un noeud donné (relais ou destination) à modifier localement et provisoirement le schéma de codage réseau prédéterminé, vise à optimiser la latence introduite par le temps de traitement nécessaire à ce noeud pour effectuer cette modification. Au moins un mode de réalisation de l'invention a également pour objectif de fournir une telle technique qui soit transparente pour les noeuds sources. 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 et peu coûteuse. 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 et doit générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé. Le procédé est mis en oeuvre par au moins un noeud relais donné et comprend des étapes consistant à : I) détecter un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; II) s'il est détecté un paquet utile altéré, déterminer, avant la fin de la réception de ladite pluralité de paquets de données, une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les paquets associés à ladite nouvelle combinaison linéaire étant dits paquets momentanément utiles ; III) avec la nouvelle combinaison linéaire de paquets attendus en entrée, construire, avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins une partie dudit paquet résultant reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus. Ainsi, au niveau d'un noeud relais, ce mode de réalisation particulier de l'invention repose sur une approche tout à fait nouvelle et inventive permettant, dès la détection d'un paquet utile altéré, de lancer au moins un algorithme de récupération afin de déterminer un paquet résultant reconstitué (résultant d'une modification locale et provisoire du schéma de codage réseau prédéterminé) impliquant de nouveaux paquets utiles (déjà reçus ou à recevoir), qualifiés de momentanément utiles du fait qu'ils sont utiles uniquement durant une supertrame courante. Ainsi, la construction de ce paquet résultant reconstitué peut débuter avec les paquets momentanément utiles déjà reçus. Cette avance permet par la suite au noeud relais, dès son accès au médium, de disposer du paquet résultant reconstitué, sous réserve que la construction de ce dernier ait pu aboutir (ce qui dépend de la bonne réception de tous les paquets momentanément utiles). De façon avantageuse, ladite étape II) comprend une étape IL1) consistant à déterminer, si elle existe, une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué identique au paquet résultant prédéterminé. En d'autres termes, si c'est possible, la valeur des coefficients associés aux paquets momentanément utiles est choisie de telle manière que le paquet résultant reconstitué soit identique au paquet résultant prédéterminé. De cette façon, l'opération effectuée dans le noeud relais donné (construction du paquet résultant reconstitué au lieu du paquet résultant prédéterminé) est transparente pour tous les autres noeuds relais situés en aval, ainsi que pour les noeuds destinations. En outre, dès la détection d'un paquet utile altéré, le noeud relais peut savoir si le paquet résultant prédéterminé peut être reconstruit avec les paquets déjà reçus et surtout les paquets à recevoir. Dans le cas positif, la construction du paquet résultant reconstitué débute avec les paquets momentanément utiles déjà reçus. Dans le cas négatif, il n'est pas très judicieux d'attendre les paquets à recevoir et, comme détaillé ci-après, il vaut mieux lancer un nouvel algorithme de récupération moins contraignant (qui n'essaie pas de reconstruire exactement le paquet résultant prédéterminé). Avantageusement, ladite étape IL1) comprend une étape consistant à tester si ledit paquet utile altéré peut être remplacé par un paquet redondant reçu ou à recevoir par ledit noeud relais donné. Ainsi, l'opération transparente de reconstitution du paquet résultant reconstitué est rapide et peu coûteuse. Selon une caractéristique avantageuse, ladite étape IL1) comprend une exécution d'un mécanisme de récupération complet, comprenant des étapes consistant à : - déterminer une combinaison linéaire prédéterminée de paquets sources, associée à ladite combinaison linéaire prédéterminée de paquets attendus en entrée, et permettant d'obtenir ledit paquet résultant prédéterminé ; - construire un système linéaire A(3 = g, où 13 est un vecteur colonne des coefficients de ladite nouvelle combinaison linéaire de paquets attendus en entrée à déterminer, où g est un vecteur colonne des coefficients de ladite combinaison linéaire prédéterminée de paquets sources, et où A est une matrice de dimension (M,S), avec M le nombre de paquets sources et S le nombre de paquets attendus en entrée par ledit noeud relais donné, la matrice A étant définie de la manière suivante : * chaque ligne de la matrice A est associée à un paquet source, 30 5 10 15 20 2530 * chaque colonne de la matrice A est associée à un paquet attendu en entrée, * chaque élément a;i de la matrice A représente : - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) réelle du paquet attendu j, si le paquet attendu j a déjà été reçu, - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) attendue du paquet attendu j, si le paquet attendu j n'a pas encore été reçu, - résoudre ledit système linéaire par une méthode de résolution prédéterminée, en mémorisant, à chaque itération k de ladite méthode de résolution prédéterminée, des opérations et une matrice temporaire A(k) ; - si le système linéaire admet une solution, déterminer ladite nouvelle combinaison linéaire de paquets attendus en entrée, en fonction du vecteur colonne 13 de ladite solution. Ainsi, l'opération transparente de reconstitution du paquet résultant reconstitué est optimisée et permet d'aboutir de manière systématique si le système linéaire considéré admet une solution. De façon avantageuse, à chaque réception d'un desdits paquets momentanément utiles, le procédé comprend des étapes consistant à : - détecter un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - s'il est détecté un paquet momentanément utile altéré, exécuter un mécanisme de récupération partiel, comprenant des étapes consistant à : * déterminer le ou les paquet(s) attendu(s) altéré(s), y compris ledit paquet momentanément utile altéré, reçu(s) depuis une dernière exécution du mécanisme de récupération partiel ou depuis une exécution du mécanisme de récupération complet, un paquet attendu altéré étant défini comme un paquet attendu qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; * dans la matrice temporaire A(11- 1) mémorisée à une (tl û 1)ème itération de ladite méthode de résolution prédéterminée, modifier la ou les colonnes altérée(s) correspondant au(x) paquet(s) attendu(s) altéré(s), où tl est le rang du premier du ou des paquet(s) attendu(s) altéré(s) dans une séquence prédéterminée définissant l'ordre dans lequel ladite pluralité de paquets de données attendus en entrée sont attendus, ainsi que l'ordre dans lequel les colonnes de ladite matrice A sont classées, la ou les colonne(s) altérée(s) étant modifiées par les opérations mémorisées lors des (tl û 1) premières itérations de ladite méthode de résolution prédéterminée ; * reprendre la résolution dudit système linéaire à la tlème itération de ladite méthode de résolution prédéterminée, en mémorisant, à chaque itération k de ladite méthode de résolution prédéterminée, des opérations et une matrice temporaire A) ; * si le système linéaire admet une solution, déterminer ladite deuxième combinaison linéaire de paquets attendus en entrée, en fonction du vecteur colonne 13 de ladite solution. Ainsi, si un paquet momentanément utile est reçu sous une forme altérée (réception non correcte ou avec une composition modifiée en paquets sources), il n'est pas nécessaire de mettre en oeuvre à nouveau la totalité du mécanisme de récupération complet. Un mécanisme de récupération partiel, correspondant à une partie seulement de celui-ci, peut être mis en oeuvre. Ceci nécessite moins d'opérations puisqu'une partie des opérations effectuées durant le mécanisme de récupération complet restent valides et donc ces opérations ne sont pas effectuées à nouveau. Ainsi, même si les paquets à recevoir ne sont pas ceux attendus, le mécanisme de récupération complet n'a pas été vain, son exécution antérieure a permis d'alléger les opérations du mécanisme de récupération partiel et d'optimiser la date de fin de la récupération. Avantageusement, en cas d'échec de ladite étape IL1), ladite étape II) comprend une étape IL2), consistant à déterminer une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué le plus proche, selon au moins un critère déterminé, du paquet résultant prédéterminé. De cette façon, dès que le noeud relais sait que, même avec les paquets à recevoir, le paquet résultant prédéterminé ne pourra pas être reconstruit à l'identique, le noeud relais lance un algorithme pour déterminer les paquets momentanément utiles (reçus ou à recevoir) qui permettront d'envoyer le meilleur paquet résultant reconstitué, c'est-à-dire celui qui impactera le moins possible le réseau. Le fait d'exécuter cet algorithme avant que tous les paquets ne soient reçus est très avantageux du fait que celui-ci est un algorithme exhaustif qui teste l'ensemble des paquets résultants reconstitués possibles. Cette exécution anticipée permet donc de tester plus de possibilités et donc d'augmenter la robustesse du réseau (augmentation du nombre de paquets sources décodables par l'ensemble des noeuds destinations). De façon avantageuse, à chaque réception d'un desdits paquets momentanément utiles, le procédé comprend des étapes consistant à : - détecter un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - s'il est détecté un paquet momentanément utile altéré, réitérer les étapes IL2) et III). Ainsi, si un paquet momentanément utile est reçu sous une forme altérée (réception non correcte ou avec une composition modifiée en paquets sources), le noeud relais peut relancer immédiatement l'algorithme précité permettant de déterminer les paquets momentanément utiles (reçus ou à recevoir) qui permettront d'envoyer le meilleur paquet résultant reconstitué. Avantageusement, ladite étape IL2) comprend des étapes consistant à : a) déterminer une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué contenant des paquets sources non contenus dans le paquet résultant prédéterminé ; b) obtenir une information relative, pour au moins un autre noeud participant au schéma de codage réseau prédéterminé, à un schéma de codage réseau modifié qui résulterait de l'envoi du paquet résultant reconstitué mentionné à l'étape a) ; c) en fonction de l'information obtenue à l'étape b), sélectionner la nouvelle combinaison linéaire déterminée à l'étape a) ou réitérer l'étape a) pour déterminer une autre nouvelle combinaison linéaire. De cette façon, l'opération effectuée dans le noeud relais donné (envoi du paquet résultant reconstitué au lieu du paquet résultant prédéterminé) n'est pas transparente (pour tous les autres noeuds relais situés en aval, ainsi que pour les noeuds destinations), mais elle n'a pas d'impact sur la capacité du réseau (c'est-à-dire le nombre de paquets sources décodables par l'ensemble des noeuds destinations). En d'autres termes, si une reconstitution transparente n'est pas réalisable, le noeud relais essaie de reconstituer un paquet résultant qui n'a pas d'influence sur le réseau, c'est-à-dire qui ne diminue pas le nombre de paquets sources que peuvent décoder les noeuds destinations. Cette reconstitution se base aussi sur l'utilisation des paquets redondants. Par contre, dans ce cas, le noeud relais doit notifier aux autres noeuds que le paquet résultant qu'il envoie ne se base pas sur la combinaison linéaire prédéterminée. De façon avantageuse, l'étape a) comprend des étapes consistant à : i) déterminer une combinaison linéaire prédéterminée de paquets sources, permettant d'obtenir ledit paquet résultant reconstitué contenant des paquets sources non contenus dans le paquet résultant prédéterminé ; ii) construire un système linéaire A(3 = g, où 13 est un vecteur colonne des coefficients de ladite nouvelle combinaison linéaire de paquets attendus en entrée à déterminer, où g est un vecteur colonne des coefficients de ladite combinaison linéaire prédéterminée de paquets sources, et où A est une matrice de dimension (M,S), avec M le nombre de paquets sources et S le nombre de paquets attendus en entrée par ledit noeud relais donné, la matrice A étant définie de la manière suivante : * chaque ligne de la matrice A est associée à un paquet source, * chaque colonne de la matrice A est associée à un paquet attendu en entrée, * chaque élément a;i de la matrice A représente : - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) réelle du paquet attendu j, si le paquet attendu j a déjà été reçu, - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) attendue du paquet attendu j, si le paquet attendu j n'a pas encore été reçu, iii) résoudre ledit système linéaire par une méthode de résolution prédéterminée ; iv) si le système linéaire admet une solution, déterminer ladite nouvelle combinaison linéaire de paquets attendus en entrée, en fonction du vecteur colonne 13 de ladite solution, sinon réitération de l'étape i) avec une autre combinaison linéaire prédéterminée de paquets sources. Ainsi, l'opération (non transparente mais sans impact) de reconstitution du paquet résultant reconstitué permet d'aboutir de manière systématique si l'un des systèmes linéaires, considérés lors d'itérations successives, admet une solution. Avantageusement, dans l'étape b), ladite information relative au schéma de codage réseau modifié, qui résulterait de l'envoi du paquet résultant reconstitué mentionné à l'étape a), est la somme du nombre de paquets sources décodables par l'ensemble des noeuds destinations du réseau si le paquet résultant reconstitué mentionné à l'étape a) est supposé envoyé. Dans l'étape c), la nouvelle combinaison linéaire déterminée à l'étape a) est sélectionnée si ladite information relative au schéma de codage réseau modifié est égale au nombre de noeuds sources dans le réseau multiplié par le nombre de noeuds destinations dans le réseau. Ainsi, le test sur l'information (relative au schéma de codage réseau modifié) permet d'assurer que l'opération (non transparente) est sans impact sur la capacité du réseau (c'est-à-dire le nombre de paquets sources décodables par l'ensemble des noeuds destinations). Avantageusement, en cas d'échec des étapes a), b) et c), ladite étape IL2) comprend en outre des étapes consistant à : - déterminer une première nouvelle combinaison linéaire de paquets attendus en entrée, permettant de construire un premier paquet résultant reconstitué différent du paquet résultant prédéterminé mais contenant uniquement des paquets sources inclus dans le paquet résultant prédéterminé ; - obtenir une première information relative, pour au moins un autre noeud participant au schéma de codage réseau prédéterminé, à un schéma de codage réseau modifié qui résulterait de l'envoi du premier paquet résultant reconstitué, la première nouvelle combinaison linéaire étant associée à ladite première information sur le schéma de codage réseau modifié ; - parmi la ou les nouvelle(s) combinaison(s) linéaire(s) non sélectionnée(s) à l'étape c), sélectionner une deuxième nouvelle combinaison linéaire de paquets attendus en entrée, en fonction de ladite information, obtenue à l'étape b) pour chaque nouvelle combinaison linéaire non sélectionnée à l'étape c), sur le schéma de codage réseau modifié, la deuxième nouvelle combinaison linéaire étant associée à une deuxième information relative au schéma de codage réseau modifié ; - sélectionner entre les première et deuxième nouvelles combinaisons linéaires, en fonction des première et deuxième informations relatives au schéma de codage réseau modifié. De cette façon, l'opération effectuée dans le noeud relais donné (envoi du paquet résultant reconstitué au lieu du paquet résultant prédéterminé) n'est pas transparente et a un impact sur la capacité du réseau, mais cet impact est minimisé. En d'autres termes, si aucune reconstitution, qui n'ait pas d'impact sur le réseau, n'est possible, le noeud relais reconstitue le paquet qui a le moins d'impact sur le réseau, c'est-à-dire celui qui dégrade le moins le réseau (toujours en nombre de paquets sources décodables pour l'ensemble des noeuds destination). Dans ce cas, le noeud relais doit aussi notifier aux autres noeuds que le paquet résultant qu'il envoie ne se base pas sur la combinaison linéaire prédéterminée. De façon avantageuse, ladite étape IL2) comprend une étape consistant à déterminer une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué différent du paquet résultant prédéterminé mais contenant uniquement des paquets sources inclus dans le paquet résultant prédéterminé. Dans cette variante, si une opération transparente n'est pas possible, le noeud relais donné effectue directement une opération qui a un impact sur la capacité du réseau, mais cet impact est minimisé. Dans ce cas, le noeud relais doit aussi notifier aux autres noeuds que le paquet résultant qu'il envoie ne se base pas sur la combinaison linéaire prédéterminée. Dans un autre mode de réalisation, l'invention concerne 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 et doit générer en sortie au moins un paquet source prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé. Le procédé est mis en oeuvre par au moins un noeud destination donné et comprend des étapes consistant à : I) détecter un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; II) s'il est détecté un paquet utile altéré, déterminer, avant la fin de la réception de ladite pluralité de paquets de données, au moins une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire au moins un paquet source reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les paquets associés à ladite au moins une nouvelle combinaison linéaire étant dits paquets momentanément utiles ; III) avec ladite au moins une nouvelle combinaison linéaire de paquets attendus en entrée, construire, avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins une partie dudit au moins un paquet source reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus. Ainsi, au niveau d'un noeud destination, ce mode de réalisation particulier de l'invention repose sur une approche tout à fait nouvelle et inventive permettant, dès la détection d'un paquet utile altéré, de lancer au moins un algorithme (de modification de la matrice de décodage) permettant de décoder au moins un paquet source, c'est-à-dire de déterminer au moins un paquet source reconstitué (résultant d'une modification locale et provisoire du schéma de codage réseau prédéterminé) impliquant de nouveaux paquets utiles (déjà reçus ou à recevoir), qualifiés de momentanément utiles du fait qu'ils sont utiles uniquement durant une supertrame courante. Ainsi, le décodage des paquets sources peut débuter avec les paquets momentanément utiles déjà reçus. Cette avance permet par la suite au noeud relais de finir plus tôt le décodage et les paquets sources sont donc envoyés plus tôt à l'application, sous réserve que le décodage de ces derniers ait pu aboutir (ce qui dépend de la bonne réception de tous les paquets momentanément utiles). Avantageusement, ladite étape II) comprend une étape IL1) consistant à déterminer, si elle existe, une nouvelle matrice de décodage identique à une matrice de décodage prédéterminée, permettant de construire un ensemble de paquets sources reconstitués identique à un ensemble de tous les paquets sources prédéterminés, chaque ligne de ladite nouvelle matrice de décodage définissant une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet source reconstitué identique à l'un des paquets sources prédéterminés. En d'autres termes, si c'est possible, on construit une nouvelle matrice de décodage permettant de décoder tous les paquets sources. Dès la détection d'un paquet utile altéré, le noeud destination peut savoir si ceci est possible ou non, avec les paquets déjà reçus et les paquets à recevoir. Dans le cas positif, la construction de la nouvelle matrice de décodage débute avec les paquets momentanément utiles déjà reçus. Dans le cas négatif, il n'est pas très judicieux d'attendre les paquets à recevoir et, comme détaillé ci-après, il vaut mieux lancer un nouvel algorithme de détermination moins contraignant (qui essaie d'obtenir une nouvelle matrice de décodage ne permettant pas de décoder tous les paquets sources). De façon avantageuse, ladite étape IL1) comprend une exécution d'un mécanisme de récupération complet, comprenant des étapes consistant à : construire une matrice D' de dimension (S, M), avec S le nombre de paquets attendus en entrée par ledit noeud destination donné et M le nombre de paquets sources, la matrice D' étant définie de la manière suivante : * chaque ligne de la matrice D' est associée à un paquet attendu en entrée, * chaque colonne de la matrice D' est associée à un paquet source, * chaque élément d,i de la matrice D' représente : - soit le coefficient du paquet source j dans une composition en paquet(s) source(s) réelle du paquet attendu i, si le paquet attendu i a déjà été reçu, - soit le coefficient du paquet source j dans une composition en paquet(s) source(s) attendue du paquet attendu i, si le paquet attendu i n'a pas encore été reçu, - construction d'une matrice résultante T à partir de la matrice D', par une méthode de triangulation prédéterminée prenant en compte les lignes les unes après les autres, en mémorisant, à chaque itération k de ladite méthode de triangulation prédéterminée, des opérations et une matrice temporaire A(k) ; - si la matrice résultante T a M lignes non nulles, construction de ladite nouvelle matrice de décodage à partir de la matrice résultante T. Ainsi, avec ce mécanisme de récupération complet, la détermination de la nouvelle matrice de décodage est optimisée et permet d'aboutir de manière systématique. Avantageusement, à chaque réception d'un desdits paquets momentanément 20 utiles, le procédé comprend des étapes consistant à : - détecter un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - s'il est détecté un paquet momentanément utile altéré, exécuter un mécanisme de récupération partiel, comprenant des étapes consistant à : * déterminer le ou les paquet(s) attendu(s) altéré(s), y compris ledit paquet momentanément utile altéré, reçu(s) depuis une dernière exécution du mécanisme de récupération partiel ou depuis une exécution du mécanisme de récupération complet, un paquet attendu altéré étant défini comme un paquet attendu qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; 10 15 25 30 * dans la matrice temporaire A(tl - " mémorisée à une (tl û 1)ème itération de ladite méthode de résolution prédéterminée, modifier la ou les colonnes altérée(s) correspondant au(x) paquet(s) attendu(s) altéré(s), où tl est le rang du premier du ou des paquet(s) attendu(s) altéré(s) dans une séquence prédéterminée définissant l'ordre dans lequel ladite pluralité de paquets de données attendus en entrée sont attendus, ainsi que l'ordre dans lequel les lignes de ladite matrice D' sont classées, la ou les ligne(s) altérée(s) étant modifiées par les opérations mémorisées lors des (tl û 1) premières itérations de ladite méthode de triangulation prédéterminée ; * reprendre la construction de la matrice résultante T à la tlème itération de ladite méthode de triangulation prédéterminée, en mémorisant, à chaque itération k de ladite méthode de triangulation prédéterminée, des opérations et une matrice temporaire Au� ; * si la matrice résultante T a M lignes non nulles, construction de ladite nouvelle matrice de décodage à partir de la matrice résultante T. Ainsi, si un paquet momentanément utile est reçu sous une forme altérée (réception non correcte ou avec une composition modifiée en paquets sources), il n'est pas nécessaire de mettre en oeuvre à nouveau la totalité du mécanisme de récupération complet. Un mécanisme de récupération partiel, correspondant à une partie seulement de celui-ci, peut être mis en oeuvre. Ceci nécessite moins d'opérations puisqu'une partie des opérations effectuées durant le mécanisme de récupération complet restent valides et donc ces opérations ne sont pas effectuées à nouveau. Ainsi, même si les paquets à recevoir ne sont pas ceux attendus, le mécanisme de récupération complet n'a pas été vain, son exécution antérieure a permis d'alléger les opérations du mécanisme de récupération partiel et d'optimiser la date de fin de la récupération. Avantageusement, en cas d'échec de ladite étape IL1), ladite étape II) comprend une étape IL2) consistant à déterminer une nouvelle matrice de décodage différente d'une matrice de décodage prédéterminée, mais permettant de construire un nombre maximal de paquets sources reconstitués identiques à des paquets sources prédéterminés, chaque ligne de ladite nouvelle matrice de décodage définissant une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet source reconstitué identique à l'un des paquets sources prédéterminés. De cette façon, dès que le noeud destination sait que, même avec les paquets à recevoir, il ne pourra pas décoder tous les paquets sources, le noeud destination lance un algorithme pour déterminer une nouvelle matrice de décodage permettant de décoder le plus grand nombre de paquets sources. Le fait d'exécuter cet algorithme avant que tous les paquets ne soient reçus est très avantageux du fait que celui-ci est un algorithme exhaustif qui teste un ensemble de nouvelles matrices de décodage. Cette exécution anticipée permet donc de diminuer fortement la latence du décodeur. De façon avantageuse, à chaque réception d'un desdits paquets momentanément utiles, ledit procédé comprend des étapes consistant à : détecter un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - s'il est détecté un paquet momentanément utile altéré, réitérer les étapes IL2) et III). Ainsi, si un paquet momentanément utile est reçu sous une forme altérée (réception non correcte ou avec une composition modifiée en paquets sources), le noeud destination peut relancer immédiatement l'algorithme précité permettant de déterminer une nouvelle matrice de décodage permettant de décoder le plus grand nombre de paquets sources. 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). Dans un autre mode de réalisation, l'invention concerne 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 et devant générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé. Ledit noeud relais donné comprend : - des moyens de détection, permettant de détecter un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - des moyens de détermination, activés s'il est détecté un paquet utile altéré, permettant de déterminer, avant la fin de la réception de ladite pluralité de paquets de données, une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les paquets associés à ladite nouvelle combinaison linéaire étant dits paquets momentanément utiles ; - des moyens de construction, permettant de construire, avec la nouvelle 25 combinaison linéaire de paquets attendus en entrée, et avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins une partie dudit paquet résultant reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus. Dans un autre mode de réalisation, l'invention concerne un noeud destination 30 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é, 20 s'attendant à recevoir en entrée une pluralité de paquets de données et devant générer en sortie au moins un paquet source prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé. Ledit noeud destination donné comprend : - des moyens de détection, permettant de détecter un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - des moyens de détermination, activés s'il est détecté un paquet utile altéré, déterminer, permettant de déterminer, avant la fin de la réception de ladite pluralité de paquets de données, au moins une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire au moins un paquet source reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les paquets associés à ladite au moins une nouvelle combinaison linéaire étant dits paquets momentanément utiles ; - des moyens de construction, permettant de construire, avec ladite au moins une nouvelle combinaison linéaire de paquets attendus en entrée, et avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins une partie dudit au moins un paquet source reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus. Plus généralement, le noeud relais et le noeud destination selon l'invention comprennent des moyens de mise en oeuvre des procédés tels que décrits précédemment (dans l'un quelconque de leurs différents modes de réalisation). 5. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : - la figure 1 représente un exemple de réseau maillé sans fil dans lequel peut être mise en oeuvre la technique de codage réseau de l'invention ; - la figure 2 représente l'architecture d'un dispositif (noeud relais ou noeud destination) selon un mode de réalisation particulier de l'invention ; - la figure 3 décrit la structure d'un paquet notifiant une modification du schéma de codage prédéterminé, selon un mode de réalisation particulier de l'invention ; - les figures 4a, 4b et 4c 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 ; - la figure 5 présente un algorithme principal de traitement d'un paquet reçu, mis en oeuvre par un noeud relais dans un mode de réalisation particulier d'un procédé de codage réseau selon l'invention ; - la figure 6 décrit un algorithme de reconstitution d'une combinaison locale (d'un noeud relais affecté par une perte de lien), correspondant à l'étape 565 de la figure 5 ; - la figure 7 décrit un algorithme de détermination d'une nouvelle combinaison locale à partir d'une combinaison globale, correspondant à l'étape 625 de la figure 6 ; - la figure 8 décrit un algorithme de sélection de la combinaison linéaire globale qui a le moins d'impact sur le réseau, correspondant à l'étape 555 de la figure 5 et à l'étape 1145 de la figure 11 ; - la figure 9 décrit un algorithme de reconstitution d'une combinaison locale associée à une combinaison globale proche de la combinaison globale prédéterminée qui a le moins d'impact sur le réseau, correspondant à l'étape 815 de la figure 8 ; - la figure 10 décrit un algorithme de résolution d'un système linéaire basé sur l'algorithme de Gauss-Jordan pour déterminer une nouvelle combinaison locale à partir d'une combinaison globale, correspondant à l'étape 715 de la figure 7 et à l'étape 915 de la figure 9 ; - la figure 11 décrit un algorithme de reprise de la reconstitution d'une combinaison locale (d'un noeud relais affecté par une perte de lien), correspondant à l'étape 570 de la figure 5 ; - la figure 12 décrit un algorithme de reprise de la résolution du système linéaire lié à l'algorithme de reprise de la reconstitution d'une combinaison locale, correspondant à l'étape 1115 de la figure 11 ; - la figure 13 décrit un algorithme d'attribution d'un indice de confiance à une combinaison linéaire locale, correspondant à l'étape 930 de la figure 9 ; - la figure 14 décrit un algorithme de sélection de la combinaison linéaire globale qui a le moins d'impact sur le réseau, correspondant à l'étape 965 de la figure 9 ; - la figure 15 décrit un algorithme de reconstitution d'une combinaison locale associée à une combinaison globale la plus proche d'une autre combinaison globale, correspondant à l'étape 820 de la figure 8 ; - la figure 16 présente un algorithme principal de traitement d'un paquet reçu, mis en oeuvre par un noeud destination dans un mode de réalisation particulier d'un procédé de codage réseau selon l'invention ; - la figure 17 décrit un algorithme de modification de la matrice de décodage, correspondant à l'étape 1655 de la figure 16 ; - la figure 18 décrit un algorithme de reprise de la modification de la matrice de décodage, correspondant à l'étape 1660 de la figure 16 ; - la figure 19 décrit un algorithme de détermination du nombre de paquets sources décodables, et par suite de détermination de la matrice de décodage associée, correspondant à l'étape 1715 de la figure 17 et à l'étape 1645 de la figure 16. 6. DESCRIPTION DÉTAILLÉE 25 Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique. La figure 1 représente un exemple de réseau maillé sans fil dans lequel peut être mise en oeuvre la technique de codage réseau de l'invention. Le protocole d'accès au médium est de type TDMA (pour � Time Division 30 Multiple Access � en anglais, ou � accès multiple par répartition dans le temps � en français), où durant une période fixe, appelée � supertrame �, chaque noeud du réseau a 10 15 20 un accès unique au médium durant un temps de parole fixe appelée � intervalle de temps � (ou � slot � en anglais). Ce réseau est composé de trois noeuds sources, nommés respectivement NS 1, NS2 et NS3, et six noeuds qui sont à la fois des noeuds relais et des noeuds destinations, nommés NR/D1,..,NR/D6. Chaque lien de communication est représenté par une flèche indiquant le sens de la transmission. Les quatre liens de communications en trait plein (comme par exemple entre les noeuds NS1 et NR/D1) représentent des paquets composés uniquement d'un paquet source provenant du noeud NS 1. Les trois liens de communications en petit pointillé (comme par exemple entre les noeuds NS2 et NR/D4) représentent des paquets composés uniquement d'un paquet source provenant du noeud NS2. Les deux liens de communications en grand pointillé (comme par exemple entre les noeuds NS3 et NR/D2) représentent des paquets composés uniquement d'un paquet source provenant du noeud NS3. Les cinq autres liens de communications (par exemple entre les noeuds NR/D1 et NR/D3) représentent des paquets ayant subi du codage réseau et donc contenant une combinaison linéaire d'au moins deux paquets sources. Ne sont pas représentés des liens de communications qui sont soit victimes de masquages permanents, soit non 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. La figure 2 représente l'architecture d'un dispositif (noeud relais ou noeud destination) selon un mode de réalisation particulier de l'invention. Ce dispositif est représenté par le bloc 210, les blocs 230 (application) et 240 (émetteur/récepteur Radio Fréquence) correspondant à l'environnement de ce dispositif. L'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 avec l'algorithme de Ford-Fulkerson. Ce schéma de codage réseau sera ensuite partagé entre tous les noeuds du réseau. La mémoire de données 216 permet de stocker les différentes copies des données émises par les noeuds sources et les différents noeuds relais. Ces données sont reçues par l'émetteur/récepteur Radio Fréquence 240 et transitent par le récepteur de paquets radio 215. Cette mémoire 216 permet également de stocker les matrices des différents noeuds intervenant dans le processus de codage réseau. Le module de gestion de paquets de codage réseau, référencé 217, qui est segmenté en quatre sous modules, gère, aussi bien au niveau des noeuds relais que des noeuds destinations, les paquets de codage réseau. Le premier sous module 218 est un analyseur de notification permettant 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 second sous module 219 permet lui 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 troisième 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é en mémoire de données afin d'être émis par le transmetteur de paquet radio 214. Le quatrième 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ée), et d'extraire de cette matrice les différents paquets sources. Une fois décodés, les paquets sources sont transmis à l'application 230 par le CPU 213. La figure 3 décrit la structure d'un paquet notifiant une modification du schéma de codage réseau prédéterminé. Dans un régime stable où aucune perte de paquet n'est détectée, un paquet est constitué uniquement d'une partie � donnée � 310, partie dans laquelle l'information transmise par les noeuds sources ou par les noeuds relais est contenue. Dans le cadre de la présente invention, cette partie � donnée � 310 est une combinaison linéaire des paquets sources envoyés par les noeuds sources, combinaison linéaire prédéterminée à l'initialisation du système. Si la partie � données � 310 ne contient pas cette combinaison linéaire prédéterminée de paquets sources (à cause d'une perte de lien), une partie � notification � 305 est ajoutée pour indiquer les coefficients de la combinaison linéaire qui ont été modifiés. Il est donc à noter que cette partie � notification � 305 n'est pas systématiquement présente dans le paquet. Pour chaque coefficient modifié, une information est introduite dans la partie � notification � 305. Cette information contient un identifiant 315 (respectivement 325) du paquet source associé au coefficient, ainsi que la nouvelle valeur du coefficient 320 (respectivement 330). Dans le cas particulier où un paquet source manque, la valeur du coefficient est mise à zéro. Les figures 4a, 4b et 4c 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 4a). 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 4b) et les noeuds destinations également (tel que décrit dans la figure 4c). On présente maintenant, en relation avec la figure 4a, l'algorithme mis en oeuvre dans le noeud central. A l'initialisation du système (étape 405), le noeud central récupère (étape 410) la topologie du réseau (c'est-à-dire 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 l'étape 415, le noeud central construit le 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 (en anglais � Signal Noise Ratio �) ou la puissance du signal reçu (en anglais � Radio Signal Strength Indication �) est supérieur à un seuil donné (dépendant du type de la radio utilisée), la transmission est considérée valide, sinon non valide. Le graphe 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, dans l'étape 420, le noeud central détermine le schéma de codage réseau prédéterminé. La méthode est expliquée dans la demande de brevet US2005/0010675 et reprise dans de nombreux articles de l'état de la technique. Les étapes sont les suivantes : > Rechercher les chemins disjoints Uj entre l'ensemble S des noeuds sources et chaque noeud destination Dj ; - Construction du sous-graphe G' de G ne contenant que les sommets et les liens appartenant à au moins un ensemble Uj ; - Déterminer les coefficients des combinaisons linéaires de telle manière que l'ensemble des matrices destinations soit de rang égal aux nombre de noeuds sources. Puis, dans l'étape 425, le noeud central diffuse les coefficients selon un protocole de diffusion prédéterminé. Plusieurs techniques de diffusion sont connues de l'homme du métier pour diffuser des informations dans un réseau maillé (par exemple de type � inondation de données � dans un protocole maillé, en anglais � flooding protocol �). Pour un noeud relais (figure 4b), à la fin de l'étape de diffusion (425) par le noeud central, c'est-à-dire à la réception (étape 430) par le noeud relais des coefficients des combinaisons linéaires de l'ensemble des noeuds du réseau, le noeud relais garde en mémoire sa combinaison locale cmb_loc_pred, qu'il devra utiliser par la suite pour construire un paquet résultant prédéterminé, et construit une matrice relais et une matrice destination (étape 435). La matrice relais contient les combinaisons globales 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 considéré, ne sont pas pris en compte car ils ne sont pas utilisables (à cause de la contrainte que les combinaisons ne s'effectuent qu'avec des données envoyées durant la supertrame courante). De plus, les lignes correspondant aux paquets intervenants dans la combinaison cmb_loc_pred, c'est-à-dire les paquets utiles, sont marquées et sont considérées utiles. La matrice destination contient l'ensemble des combinaisons globales des paquets résultants reçus par les noeuds destinations. Ces deux matrices sont expliquées ci-dessus dans le paragraphe intitulé � Codage réseau �. Pour un noeud destination (figure 4c), à la fin de l'étape de diffusion (425) par le noeud central, c'est-à-dire à la réception (étape 440) par le noeud destination des coefficients des combinaisons linéaires de l'ensemble des noeuds du réseau, le noeud destination construit une matrice destination (étape 445). A partir de cette matrice destination et de l'algorithme de Gauss Jordan, le noeud destination définit (étape 450) une sous-matrice carrée de dimension (M,M) de D, notée C, inversible, de telle manière qu'on ait : Y' = C X, avec Y' un sous-vecteur du vecteur colonne Y des paquets reçus et X le vecteur des paquets sources, le sous-vecteur Y' incorporant uniquement les paquets reçus pris en compte dans C (les paquets utiles). De cette équation, on en déduit : X = C_' Y'. Le noeud destination garde en mémoire l'inverse de C, matrice appelée matrice de décodage qu'il utilisera directement à la réception des paquets. 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. La figure 5 décrit l'algorithme principal de traitement d'un paquet reçu, mis en oeuvre par un noeud relais dans un mode de réalisation particulier d'un procédé de codage réseau selon l'invention. Les paramètres d'entrée sont les suivants : • un paquet p attendu, à recevoir ; • la combinaison locale prédéterminée du noeud relais, noté cmb_loc_pred (combinaison d'un sous-ensemble prédéterminé de paquets parmi la pluralité de paquets à recevoir) ; • la matrice relais R, contenant des combinaisons globales des paquets reçus avant l'accès au médium de ce noeud relais. Cet algorithme se lance pour chaque paquet p attendu (étape 510). A l'étape 515, on vérifie si le paquet p attendu est disponible. Ce moyen se base par exemple sur des informations radio, tel le rapport signal sur bruit (SNR, pour � Signal Noise Ratio � en anglais) ou la puissance du signal reçu (RSSI, pour � Radio Signal Strength Indication � en anglais). Si ces variables dépassent un seuil prédéfini, le paquet est considéré disponible et on passe à l'étape 520, sinon le paquet est considéré indisponible et on passe à l'étape 525. A l'étape 520, on vérifie si le paquet p reçu est bien constitué de la combinaison linéaire prédéterminée de paquets sources. Pour cela, on détecte si le paquet p reçu comprend une notification ou pas (voir figure 3). Si oui, on passe à l'étape 525, sinon à l'étape 530. A l'étape 525, on mémorise la nouvelle combinaison du paquet reçu. Pour cela, on utilise une matrice relais temporaire R' = r',i, valide uniquement pour l'exécution de cet algorithme dans la supertrame courante. Si c'est la première détection de modification d'un paquet lors de la supertrame courante, la matrice R' est créée sinon elle est remise à jour. La création de la matrice R' est caractérisée par les étapes suivantes : - Initialisation de la valeur des coefficients r',i de la matrice R' à la valeur des coefficients r,i de la matrice relais prédéterminée ; - Si le paquet reçu est indisponible (test de l'étape 515), la ligne correspondant à ce paquet devient une ligne nulle (tous les coefficients de la ligne sont mis à zéro) ; - Si le paquet reçu n'est pas constitué de la combinaison linéaire prédéterminée (test de l'étape 520), la ligne correspondant à ce paquet est modifiée et prend en compte les modifications de la notification : un élément r',i modifié signifie que le paquet associé à cette ligne a été modifié. Le paquet i a donc été reçu avec une notification. La colonne j correspond à l'identifiant (315) du paquet source indiqué dans la notification. La nouvelle valeur de r',i correspond au coefficient indiqué dans la notification (320). A l'étape 525, on mémorise aussi la position du noeud relais dans la supertrame qui a envoyé le paquet p, information qui peut être utile si l'algorithme de récupération est repris (étape 570, figure 12). Puis, à l'étape 530, on vérifie si p est un paquet considéré utile (momentanément ou pas). Si oui, on passe à l'étape 540, sinon fin de l'algorithme (étape 535). A l'étape 540, on vérifie de nouveau si p avait une notification ou pas (test de l'étape 520) ou bien si p est indisponible (test de l'étape 515). Si oui, on passe à l'étape 550, sinon à l'étape 545. A l'étape 545, on concatène le paquet reçu avec les autres paquets reçus utiles (momentanément ou pas) pour constituer une partie du paquet résultant. La concaténation est expliquée dans le paragraphe 2.2.1 ci-dessus. A l'étape 550, on vérifie si l'algorithme de récupération finale a déjà été lancé ou pas durant la supertrame courante. Si oui, on passe à l'étape 555, étape où est lancé de nouveau cet algorithme, car un paquet momentanément utile a subi des modifications. L'algorithme de récupération finale est décrit dans la figure 8. Si non, l'étape suivante est l'étape de test 560. A l'étape de test 560, on vérifie si l'algorithme de récupération intermédiaire est en cours durant la supertrame courante. L'algorithme est en cours quand celui-ci a été lancé et que le dernier paquet momentanément utile nécessaire n'a pas encore été reçu. Si oui, on passe à l'étape 570, sinon à l'étape 565. A l'étape 565, on lance l'algorithme de récupération intermédiaire. Cet algorithme est décrit dans la figure 6. A l'étape 570, on relance l'algorithme de récupération intermédiaire. Cet algorithme est décrit dans la figure 11. Il est à noter que si p constitue le dernier paquet momentanément utile à combiner pour construire le paquet résultant, ou que p a déclenché une récupération (transparente ou pas) de telle manière que tous les paquets momentanément utiles ont été reçus, une notification, décrite par la figure 3, est alors construite (si nécessaire) notifiant les différences entre la combinaison prédéterminée et la combinaison envoyée, indiquées par l'algorithme de récupération. Le paquet résultant construit avec la notification est alors mis dans le registre tampon (buffer) d'envoi, prêt à être envoyé au prochain accès au médium du noeud relais. A noter aussi que si la combinaison locale cmb_loc_nouv est la combinaison nulle, le noeud relais n'envoie pas de paquet résultant. La figure 6 décrit un algorithme de reconstitution d'une combinaison locale (d'un noeud relais affecté par une perte de lien), correspondant à l'étape 565 de la figure 5. Les paramètres d'entrée sont les suivants : > La combinaison locale prédéterminée du noeud relais, notée cmb_loc_pred ; - La matrice relais temporaire R', contenant des combinaisons globales des paquets reçus avant l'accès au médium de ce noeud relais. Le paramètre de sortie est la nouvelle combinaison cmb_loc_nouv, et les paquets reçus associés (appelés paquets momentanément utiles). Comme précisé dans le paragraphe 2.2.1 ci-dessus, à une combinaison locale (liée aux paquets reçus) est associée une seule combinaison globale (liée aux paquets sources). Notons cmb_glob_pred la combinaison globale prédéterminée associée à la combinaison locale prédéterminée cmb_loc_pred. Au contraire, à une combinaison globale il est possible d'associer plusieurs combinaisons locales. Le but de l'algorithme de la figure 6 est alors de trouver une nouvelle combinaison locale cmb_loc_nouv correspondant à cmb_glob_pred (du fait que cmb_loc_pred n'est plus disponible). On peut résumer le concept de la manière suivante : d'une combinaison locale cmb_loc_pred, on détermine sa combinaison globale cmb_glob_pred et à partir de celle- ci, on détermine une nouvelle combinaison locale cmb_loc_nouv. La détermination de cmb_loc_nouv se base à la fois sur les paquets déjà reçus et sur les paquets à recevoir. En effet, les paquets à recevoir sont logiquement constitués d'une combinaison linéaire de paquets sources qui est prédéterminée à la création du schéma de codage réseau, lors de l'initialisation du système (figure 4). Si cette hypothèse est fausse, l'algorithme de la figure 5 ne relancera non pas de nouveau l'algorithme décrit dans cette figure 6 mais un algorithme de reprise décrit figure 11, beaucoup plus léger en opérations du fait qu'il utilise les calculs effectués par cet algorithme de la figure 6. A l'étape 605, on vérifie si chaque paquet source de cmb_glob_pred est au moins dans un paquet reçu ou à recevoir, condition nécessaire pour espérer reconstruire la combinaison globale cmb_glob_pred avec les paquets reçus. Pour cela, on vérifie qu'aucune colonne de la matrice relais temporaire R' (cf étape 525, figure 5) correspondant à un paquet source de cmb_glob_pred n'est nulle (tous ses coefficients nuls). Si le test est positif (test de l'étape 610), on passe à l'étape 620 sinon à l'étape 615. A l'étape 620, on vérifie si une reconstitution rapide de cmb_glob_pred est possible par une nouvelle combinaison locale. Pour cela, cette étape détermine si la ligne modifiée de R (changement entre R et R', lors de l'étape 525) est présente dans R' à une autre position de ligne. Si oui la nouvelle ligne est appelée ligne remplaçante. La nouvelle combinaison locale attribuée, cmb_loc_nouv, est construite de la manière suivante : les valeurs des coefficients ne sont pas modifiées mais les coefficients ne sont plus attribués aux mêmes paquets reçus. Le paquet associé à la ligne remplaçante est maintenant marqué momentanément utile. Il est à noter que ce paquet momentanément utile peut être un paquet à recevoir. Si le test de l'étape 620 est négatif, on passe à l'étape 625, s'il est positif on passe à l'étape 640.. L'étape 625 est l'étape de la reconstitution d'une combinaison locale cmb_loc_nouv. A l'étape 625, on tente de trouver dans un premier temps une combinaison locale correspondant à la combinaison globale prédéterminée. Cet algorithme est expliqué figure 7. Si la tentative est réussie (résultat positif du test de l'étape 630), la reconstitution est locale et est transparente pour les autres noeuds du réseau et on passe à l'étape 640. Sinon (résultat négatif du test de l'étape 630), on passe à l'étape 615. A l'étape 640, on mémorise la nouvelle combinaison locale cmb_loc_nouv, on met à jour les paquets momentanément utiles et on notifie la différence pour la construction de la notification (si nécessaire). A l'étape 645, on concatène tous les paquets momentanément utiles déjà reçus pour constituer une partie du paquet résultant. Ce qui nous permet de débuter en avance la construction du nouveau paquet résultant à envoyer (aussi appelé paquet résultant reconstitué). Si on arrive à l'étape 615, ceci signifie que même avec les paquets à recevoir on n'arrivera pas à déterminer une nouvelle combinaison locale cmb_loc_nouv associée à la combinaison globale cmb_glob_pred. L'algorithme de récupération final expliqué figure 8 est alors lancé pour trouver une nouvelle combinaison locale cmb_loc_nouv associée à une combinaison globale proche de cmb_glob_pred. Plus celui-ci est exécuté tôt, mieux c'est car étant basé sur des tests exhaustifs, il est très coûteux en temps de calcul. La figure 7 décrit un algorithme de détermination d'une nouvelle combinaison locale cmb_loc_nouv à partir d'une combinaison globale, correspondant à l'étape 625 de la figure 6. Les paramètres d'entrée sont les suivants: > La combinaison locale prédéterminée cmb_loc_pred du noeud relais et la combinaison globale prédéterminée cmb_glob_pred associée, donnée par le schéma de codage réseau à l'initialisation ; - La matrice relais temporaire R', contenant des combinaisons globales des paquets reçus avant l'accès au médium de ce noeud relais. A l'étape 710, on construit à partir des paquets reçus et à recevoir un système linéaire afin de déterminer les coefficients à attribuer à ces paquets. Notons (31,.., (3s ces coefficients avec S le nombre de paquets reçus et à recevoir. Dans un premier temps, on essaie de construire une nouvelle combinaison locale cmb loc nouv associée à cmb_glob_pred. Pour chaque paquet source X;, il faut que le coefficient associé à celui-ci dans cmb_glob_pred g; se retrouve dans la somme des paquets reçus de s cmb_loc_nouv, c'est-à-dire qu'on doit avoir la relation 1 Ri r'i; = g i pour chaque paquet i=1 source, avec S le nombre de paquets reçus et à recevoir. On a donc un système linéaire : A(3 = g, avec 13 le vecteur colonne des [(31,.., 13s], g=[gi,..,gM] le vecteur colonne de cmb_glob_pred et A une matrice de dimension (M,S) dont chaque coefficient aii est égal à r'i,. Rappelons que, par définition, g; est nul (respectivement non nul) si le paquet source associé n'est pas (respectivement est) dans cmb_glob_pred. A l'étape 715, on résout le système linéaire créé à l'étape 710. Cet algorithme est expliqué dans la figure 10. Puis à l'étape de test 720, on vérifie que le système est compatible ou pas (c'est-à-dire admet une solution ou pas) (voir le paragraphe 2.2.3 ci-dessus). Si oui, on passe à l'étape 730, sinon à l'étape 725 (échec et fin de l'algorithme). A l'étape 730, on attribue alors les valeurs de [3,,.., (3s] données par l'algorithme du Gauss-Jordan. Si le système admet une infinité de solutions, la valeur des coefficients 13i qui sont des inconnues secondaires est attribuée à zéro, ce qui revient à dire que les paquets associés sont considérés redondants. Puis le succès de l'algorithme est mémorisé et fin de l'algorithme (étape 735). La figure 8 décrit un algorithme de sélection de la combinaison linéaire globale qui a le moins d'impact sur le réseau, correspondant à l'étape 555 de la figure 5 et à l'étape 1145 de la figure 11 Les paramètres d'entrée sont : > La combinaison globale prédéterminée cmb_glob pred donnée par le schéma de codage réseau à l'initialisation ; - La matrice relais temporaire R', contenant des combinaisons globales des paquets reçus avant l'accès au médium de ce noeud relais. A l'étape 805, on vérifie si chaque paquet source de cmb_glob_pred est au moins dans un paquet reçu ou à recevoir (condition nécessaire pour espérer reconstruire la combinaison globale cmb_glob_pred avec les paquets reçus). Pour cela, on vérifie qu'aucune colonne de la matrice R' correspondant à un paquet source de cmb_glob_pred n'est nulle (tous ses coefficients nuls). Si le test de l'étape 810 est positif, on passe à l'étape 815 sinon à l'étape 820. A l'étape 815, on détermine une nouvelle combinaison locale cmb_loc_nouv associée à une combinaison globale la plus proche (selon une première définition) de cmb_glob_pred. Cet algorithme est décrit dans la figure 9. Puis, on passe à l'étape 835, dans laquelle on crée une notification qui indique les paquets sources manquants ou modifiés par rapport à cmb_glob_pred. Puis, on passe à l'étape 840, dans laquelle on concatène tous les paquets momentanément utiles déjà reçus pour constituer une partie du paquet résultant. A l'étape 820, on détermine une nouvelle combinaison locale cmb_loc_nouv associée à une combinaison globale la plus proche (selon une seconde finition) de cmb_glob_pred. Cet algorithme est décrit dans la figure 15. Puis, on passe à l'étape 825, dans laquelle on crée une notification qui indique les paquets sources manquants ou modifiés par rapport à cmb_glob_pred. Puis, on passe à l'étape 840, dans laquelle on concatène tous les paquets momentanément utiles déjà reçus pour constituer une partie du paquet résultant. Il est à noter la différence entre les étapes 815 et 820 sur la notion de � la plus proche �. Dans l'étape 820, on entend par � combinaison globale la plus proche de cmb_glob_pred � la combinaison globale contenant le plus de paquets sources contenus dans cmb_glob_pred, en interdisant les paquets sources non contenus dans cmb_glob_pred. Dans l'étape 815, on n'a pas cette contrainte, des paquets non associés à cmb_glob_pred peuvent être présents dans cmb_loc_nouv (plus précisément, dans sa combinaison globale associée). Mais dans ce cas, il faut que tous les paquets associés de cmb_glob_pred soient présents dans cmb_loc_nouv. Dans ce cas, on entend par � combinaison globale la plus proche de cmb_glob_pred � la combinaison globale qui a le moins d'impact sur le réseau. La figure 9 décrit un algorithme de reconstitution d'une nouvelle combinaison locale cmb_loc_nouv associée à une combinaison globale cmb_glob_nouv proche de la combinaison globale prédéterminée cmb_glob_pred qui a le moins d'impact sur le réseau. Cet algorithme correspond à l'étape 815 de la figure 8. Les paramètres d'entrée sont les suivants : > La combinaison globale prédéterminée cmb_glob pred donnée par le schéma de codage réseau à l'initialisation ; - La matrice relais temporaire R', contenant des combinaisons globales des paquets reçus avant l'accès au médium de ce noeud relais. A 1"étape 910, on construit à partir des paquets reçus et à recevoir un système linéaire afin de déterminer les coefficients à attribuer à ces paquets. Notons (31,.., (3s ces coefficients avec S le nombre de paquets reçus ou à recevoir. On sait qu'on ne peut pas reconstruire une combinaison locale cmb_loc_nouv associée à cmb_glob_pred. On va donc tenter de déterminer une combinaison locale associée à une combinaison globale autre que cmb_glob_pred. On attribue alors une nouvelle valeur pour les g; correspondant aux paquets sources non associés à cmb_glob_pred. Pour les paquets associés, on garde les coefficients de la combinaison linéaire globale. On a alors, comme à l'étape 710, un système linéaire : A(3 = g, avec 13 le vecteur colonne des inconnues [(31,.., (3s], A une matrice de dimension (M,S) dont chaque coefficient a;i est égal à r'i, (coefficients de la matrice R') et g=[gi,..,gM] le vecteur colonne représentant une combinaison globale proche de cmb_glob_pred, contenant au moins celle-ci. L'attribution d'une valeur à ce vecteur g consiste à attribuer au moins une valeur non nulle à un coefficient g; correspondant aux T paquets sources non associés à cmb_glob_pred (qui ont une valeur nulle dans celle-ci). Plusieurs implémentations sont possibles : > Aléatoire : On tire aléatoirement la valeur des T coefficients g; correspondants aux T paquets non associés sur le corps Fq en vérifiant qu'on tire au moins une valeur non nulle. Un générateur pseudo-aléatoire est donc implémenté dans ce cas ; - Déterministe : une valeur initiale déterministe est attribuée aux T coefficients. L'attribution des valeurs de g sera expliquée plus en détail dans l'étape 955. Puis on passe à l'étape 915. A l'étape 915, on résout le système linéaire créé à l'étape 910. L'algorithme de Gauss-Jordan est utilisé. Celui-ci est décrit par la figure 10 mais dans le cas de la reconstitution finale, on n'a pas besoin de mémoriser les opérations et les matrices. A l'étape 920, on vérifie que le système est compatible ou pas (c'est-à-dire admet une solution ou pas) (voir le paragraphe 2.2.3 ci-dessus). Si oui, on passe à l'étape 925, sinon à l'étape 960. A l'étape 925, on attribue alors les valeurs de g,.., (3s] données par l'algorithme de Gauss-Jordan. Si le système admet une infinité de solutions, la valeur des coefficients 13i qui sont des inconnues secondaires est attribuée à zéro. Puis, à l'étape 930, on vérifie que les paquets sources ajoutés dans la nouvelle combinaison locale qui ne sont pas dans cmb_glob_pred (le système linéaire 920 n'a pas été résolu à la première itération) ont un impact ou pas sur le réseau. Ce test est décrit précisément dans la figure 13. Si cet ajout n'a aucun impact, on passe à l'étape 935 sinon à l'étape 950. A l'étape 935, on notifie les coefficients des paquets sources différents entre le vecteur g et la combinaison globale cmb_glob_pred, puis on passe à l'étape 940. A l'étape 940, on garde en mémoire la nouvelle combinaison locale cmb_loc_nouv donnée par définition par les valeurs de [(3~,.., (31] et on marque l'utilité ou non des paquets reçus ou à recevoir (les paquets associés aux coefficients g; non nuls sont marqués momentanément utiles, les autres sont marqués redondants). A l'étape 950, on mémorise, dans une liste appelée Scand, la combinaison locale testée (mémorisation des [(3~,.., (3s]) et la combinaison linéaire globale (mémorisation des [g1,.., gM]) associée, ainsi que l'indice de confiance lié à cette combinaison donnée par le test de l'étape 930. Puis, on passe à l'étape 955. A l'étape 955, on attribue des nouvelles valeurs pour les g; correspondant aux paquets sources non associés à cmb_glob_pred. Cette étape est associée à l'étape 960 qui détermine si la recherche de combinaisons globales n'impactant pas le réseau doit être arrêtée ou pas, et bien sur à l'étape 910 qui a donné une première valeur au vecteur g. Pour déterminer une nouvelle valeur pour le vecteur g : • soit on tire de nouveau aléatoirement la valeur des T coefficients g; correspondant aux T paquets non associés sur le corps Fq en vérifiant qu'on tire au moins une valeur non nulle ; • soit de manière déterministe, on choisit une nouvelle valeur de g prédéterminée. La condition d'arrêt pour l'étape 960 est basée soit sur un nombre d'essais maximal, soit sur un instant d'arrêt. Cet instant d'arrêt peut être par exemple l'instant de début d'une période prédéterminée avant la date d'accès au médium par le noeud relais. On considère qu'après cet instant d'arrêt, la recherche de combinaisons globales n'impactant pas le réseau a assez duré et qu'il faut maintenant conclure et trouver au moins un paquet résultant impactant le moins possible le réseau. Donc à l'étape 960, si le nombre d'essais maximal ou si l'instant d'arrêt sont atteints, le test est négatif et on passe à l'étape 965, sinon le test est positif et on retourne à l'étape 955. Il est à noter que le nombre de valeurs testées pour le vecteur g est fortement optimisé. En effet, le fait de déclencher l'algorithme avant la réception de tous les paquets permet de tester beaucoup plus de combinaisons pour g (c'est-à-dire permet d'augmenter le nombre d'essais maximal ou, par définition, d'augmenter la période de test entre la date de déclenchement et l'instant d'arrêt) et donc d'augmenter la robustesse du réseau du fait qu'on a plus de chance de trouver une combinaison globale n'impactant pas le réseau. A l'étape 965, on sélectionne une combinaison locale par défaut, associée à une combinaison globale qui impactera le moins possible le réseau. Cet algorithme est décrit précisément dans la figure 14. Puis, on passe à l'étape 975, dans laquelle on crée une notification qui indique les paquets sources manquants ou modifiés par rapport à cmb_glob_pred. A l'étape 970, la nouvelle combinaison locale est mémorisée dans la variable cmb_loc_nouv. Cette étape 970 correspond à la fin de cet algorithme. La figure 10 décrit un algorithme de résolution d'un système linéaire basé sur l'algorithme de Gauss-Jordan pour déterminer une nouvelle combinaison locale à partir d'une combinaison globale, correspondant à l'étape 715 de la figure 7 et à l'étape 915 de la figure 9. Le point clé de cette figure est la mémorisation, à chaque itération de l'algorithme, des opérations dans les étapes 1025, 1030, 1045 et des matrices temporaires dans l'étape 1075. Cette mémorisation permettra ainsi de reprendre les calculs à des itérations sélectionnées et non pas de relancer entièrement la récupération à une nouvelle perte d'un paquet utile dans la supertrame courante. Le paramètre d'entrée est le système linéaire à résoudre : A(3 = g, avec : - 13 le vecteur colonne des inconnues [(31,.., 13s], S le nombre total de paquets reçus et à recevoir durant la supertrame ; - g=[gl,..,gM] le vecteur colonne représentant la combinaison globale cmb_glob_pred ; - A la matrice de dimension (M,S) dont chaque coefficient aii est égal à r'i,. A l'étape 1005, on construit une matrice A" = [A g] de dimension (M,S+1), c'est-à-dire que A" est constitué de A avec une colonne supplémentaire située en dernière position constituée du vecteur g. Le bloc 1010 initialise la variable k à 1, k représentant l'itération en cours de l'algorithme de résolution. L'étape 1015 recherche une ligne i de A-') telle que i soit supérieur à k et que un élément a.k(k-') soit différent de zéro. Si le test (étape 1020) est négatif, on passe à l'étape 1060 sinon à l'étape 1025. A l'étape 1060, on initialise toutes les matrices de A(k) à A(mm(Ms� à la matrice A(k-l) et garde en mémoire toutes ces matrices. Une autre alternative de mémorisation est d'indiquer l'itération (ici k) à partir de laquelle les matrices sont toutes égales à A(k-l) Puis fin de l'algorithme (étape 1080). A l'étape 1025, on permute les lignes li et lk' cette opération est mémorisée. Puis on passe à l'étape 1030. A l'étape 1030, on effectue alors l'opération suivante pour chaque élément de la ligne k de la matrice notée A(k) : lk(k)=(1/akk(k-1))lk(k-1)• L'opération est mémorisée. Puis, à l'étape 1035, on initialise la variable i à 1. Puis, à l'étape 1040, on vérifie si i est différent de k. Si oui, on passe à l'étape 1045, sinon à l'étape 1050. A l'étape 1045, on met à jour la lignes i de A(k) de la manière suivante : li(k)=li(k-1)-aik(k-1) .lk(k). L'opération est mémorisée. Puis on passe à l'étape 1050 dans laquelle la variable i est alors incrémentée. Puis on passe à l'étape 1055. A l'étape de test 1055, on vérifie si i est strictement supérieur à m, c'est-à-dire si toutes les lignes de la matrices ont été testées. Si oui, on passe à l'étape 1075, sinon on retourne à l'étape 1040. A l'étape 1075, on mémorise la matrice temporaire A(k). Puis on passe à l'étape 1070. A l'étape 1070, on vérifie si k est égal à M ou S, S étant le nombre de paquets reçus et à recevoir dans la supertrame. Si oui, l'algorithme est terminé (étape 1080), sinon on passe à l'étape 1065 dans laquelle on incrémente k (c'est-à-dire passage à l'itération suivante) puis on retourne à l'étape 1015. La figure 11 décrit un algorithme de reprise de la reconstitution d'une combinaison locale (d'un noeud relais affecté par une perte de lien), correspondant à l'étape 570 de la figure 5. Cet algorithme est pratiquement identique à l'algorithme de lancement de reconstitution d'une combinaison locale d'un noeud relais affecté par une perte de lien (figure 6). L'étape clé différente est l'étape 1115 qui, au lieu de relancer la résolution du système linéaire, reprend la résolution du système linéaire. Les paramètres d'entrée sont les suivants : > La combinaison globale du paquet reçu p, notée cmb_glob_rec ; - La matrice relais temporaire R', contenant mise à jour à l'étape 525. A l'étape 1105, on vérifie si chaque paquet source de cmb_glob_pred est au moins dans un paquet reçu ou à recevoir (condition nécessaire pour espérer reconstruire la combinaison globale cmb_glob_pred avec les paquets reçus). Pour cela, on vérifie qu'aucune colonne de la matrice R' correspondant à un paquet source de cmb_glob_pred n'est nulle (tous ses coefficients nuls). Si le test (étape 1110) est positif, on passe à l'étape 1115 sinon à l'étape 1145. L'étape 1115 permet la reconstitution d'une combinaison locale cmb_loc_nouv. L'étape 1115 est la reprise de l'algorithme de résolution du système linéaire. Cet algorithme est décrit dans la figure 12. Si la tentative (étape 1120) est réussie, la reconstitution est locale et est transparente pour les autres noeuds du réseau, et on passe à l'étape 1125. Sinon on passe à l'étape 1145. A l'étape 1125, on mémorise la nouvelle combinaison locale cmb_loc_nouv, on met à jour les paquets momentanément utiles, puis on passe à l'étape 1140. A l'étape 1140, on concatène les paquets momentanément utiles reçus pour constituer une partie du paquet résultant. Si on arrive à l'étape 1145, ceci signifie que même avec les paquets à recevoir on n'arrivera pas à déterminer une nouvelle combinaison locale cmb_loc_nouv associée à la combinaison globale cmb_glob_pred. L'algorithme de récupération final expliqué figure 8 est alors lancé pour trouver une combinaison locale cmb_loc_nouv associée à une combinaison globale proche de cmb_glob_pred. Plus celui-ci est exécuté tôt, mieux c'est car étant basé sur des tests exhaustifs, il est très coûteux en temps de calcul. La figure 12 décrit un algorithme de reprise de la résolution du système linéaire lié à l'algorithme de reprise de la reconstitution d'une combinaison locale, correspondant à l'étape 1115 de la figure 11. Cet algorithme correspond à une remise en cause des paquets précédemment marqués momentanément utiles, lors du lancement de l'algorithme de récupération (étape 565) ou lors d'une reprise antérieure de cet algorithme de récupération (étape 570). Le paquet p reçu, marqué momentanément utile par l'étape 565 ou 570, et qui n'était pas encore reçu à l'exécution de l'algorithme de récupération ne contient pas la combinaison attendue, c'est-à-dire celle prédéterminée lors de la construction du schéma de codage réseau à l'initialisation (figure 4). Or l'algorithme de modification s'est basé sur cette hypothèse donc ses résultats sont remis en question. Mais au lieu de réactiver l'algorithme de l'étape 565, on utilise les résultats de celui-ci pour le reprendre à une itération sélectionnée, ce qui permet d'effectuer moins d'opérations. Les paramètres d'entrée sont : > La matrice relais temporaire R', mise à jour notamment avec la combinaison globale du paquet reçu p noté cmb_glob rec ; - Le système linéaire construit à l'étape 710 lors du lancement de l'algorithme de récupération intermédiaire ; - Les opérations et les matrices temporaires mémorisées lors de chaque itération, durant l'algorithme de résolution de ce système (figure 10). A l'étape 1205, on récupère les positions, dans la supertrame, des noeuds relais qui ont envoyé des paquets non attendus (c'est-à-dire des paquets non disponibles ou contenant des paquets sources non attendus) p1,..,pK entre la date présente et le dernier appel de l'algorithme de récupération (lancement à l'étape 565 ou reprise à l'étape 570) lors de la supertrame courante. Notons T cette période entre deux appels successifs de l'algorithme de récupération et t1,...tK les positions de ces noeuds relais (notation basée sur un classement chronologique). Ces positions représentent aussi les positions des lignes correspondant à ces paquets non attendus dans la matrice R' mais indiquent surtout les positions des colonnes associées à ces paquets dans la matrice A du système linéaire créé dans l'étape 715. Notons cl,..ck les colonnes associées aux positions t1,...tK qui représentent les combinaisons globales des paquets reçus. Remarque : la récupération uniquement de la position du paquet p peut ne pas être suffisante car il se peut que des paquets redondants non attendus aient été reçus durant cette période. Or, si on ne relance pas les algorithmes de récupération avec ces paquets redondants non attendus, pour limiter le nombre d'opérations, la nouvelle combinaison de ces paquets doit être prise en compte. Mais la situation la plus probable est que durant T, tous les paquets redondants sont bien ceux attendus et dans ce cas tl est l'unique position et correspond à la position de p. Puis, à l'étape 1210, on modifie les colonnes ci,..cK de la matrice A(u-u mémorisée durant l'algorithme de résolution du système. L'algorithme de Gauss- Jordan est repris à t1ième itération car toutes les opérations effectuées sur les paquets précédents, c'est-à-dire toutes les colonnes positionnées avant t1, restent valides, la modification n'ayant aucun impact sur ces colonnes. Pour modifier ces colonnes, nous partons des combinaisons globales cmb_glob_rec de chaque paquet. La combinaison globale du paquet p; peut être représentée par un vecteur colonne v(i)=[vi(i),...vM(i)]. Nous appliquons à ce vecteur colonne la liste successive des opérations linéaires des (t1-1) premières itérations mémorisées (voir figure 10). Notons v'(i) ce nouveau vecteur. Et nous remplaçons alors la colonne associée c; de A(u-u par v'(i). Puis on passe à l'étape 1215. A l'étape 1215, on reprend alors, à l'étape t1, l'algorithme de Gauss-Jordan décrit figure 10. Puis, à l'étape 1220, on vérifie que le système est compatible ou pas (c'est-à-dire admet une solution ou pas) (voir le paragraphe 2.2.3 ci-dessus). Si oui, on passe à l'étape 1230, sinon à l'étape 1225 (échec et fin de l'algorithme). A l'étape 1230, on attribue alors les valeurs de [(31,.., 13s] données par l'algorithme du Gauss-Jordan. Si le système admet une infinité de solutions, la valeur des coefficients 13i qui sont des inconnues secondaires est attribuée à zéro. Puis succès et fin de l'algorithme (étape 1235). La figure 13 décrit un algorithme d'attribution d'un indice de confiance à une combinaison linéaire locale, correspondant à l'étape 930 de la figure 9. L'indice de confiance mesure l'impact de la nouvelle combinaison locale, à envoyer sur le réseau. A l'initialisation du système, le schéma de codage réseau a été calculé de telle manière que tous les paquets sources envoyés dans le réseau peuvent être décodés par tous les noeuds destinations (on considère que la topologie du réseau n'est pas une contrainte ; elle est même surdimensionnée, dans le cas d'un réseau sans- fil, ce qui crée des paquets reçus redondants). Donc, si le nombre de noeuds sources (donc de paquets sources) est égal à m et si le nombre de noeuds destinations est N, le nombre de paquets sources décodés dans le réseau est égal à m X N. Cette variable (nombre de paquets sources décodés par le réseau) est l'indice de confiance de la nouvelle combinaison locale. Pour le mesurer, chaque noeud relais a besoin de l'ensemble des matrices de destination D; de tous les noeuds destinations du réseau. L'autre paramètre d'entrée est bien sûr la combinaison linéaire locale testée, appelée cmb_loc_test, mais plus spécifiquement la combinaison linéaire globale associée, notée cmb_glob_test, qui est différente de cmb_glob_pred. Le paramètre de sortie est l'indice de confiance de cmb_loc_test et par conséquent le fait de savoir si cmb_glob_test a un impact ou pas sur le réseau. A l'étape 1305, on modifie les coefficients des matrices de destination qui sont impactées par la combinaison cmb_glob_test, c'est-à-dire on modifie les éléments de chaque matrice destination faisant intervenir les nouveaux coefficients de cmb_glob_test (modification de la ligne correspondant au paquet résultant que doit envoyer le noeud relais). A l'étape 1310, on calcule l'indice de confiance de cmb_glob_test, c'est-à-dire le nombre de paquets sources décodables par l'ensemble des noeuds destinations. Le nombre de paquets sources décodables par un noeud destination D;, noté Nb_src_pkt_dec(Di), est déterminé par l'algorithme décrit dans la figure 19. L'indice de confiance de cmb_loc_test, noté ind_conf(cmb_loc_test), est alors égal à : Ind_conf (cmb_glob_test) = ENb_src_pkt_dec(Di), i=1..N Il est mémorisé à l'étape 1315. A l'étape 1320, on vérifie si l'indice de confiance de cmb_loc_test est égal à m X N. Si oui, cmb_loc_test n'a pas d'impact sur le réseau (sortie de l'algorithme par l'étape 1325) sinon elle a un impact (sortie de l'algorithme par l'étape 1330) (au moins un noeud destination ne pourra pas décoder au moins un paquet source). La figure 14 décrit un algorithme de sélection de la combinaison linéaire globale qui a le moins d'impact sur le réseau, correspondant à l'étape 965 de la figure 9. Les paramètres d'entrée sont : > La combinaison globale prédéterminée cmb_glob pred ; - L'ensemble Scand des combinaisons locales et globales testées durant l'algorithme de la figure 9 et rejetées par le test de l'étape 930. Le paramètre de sortie est la combinaison linéaire locale associée à la combinaison globale qui a le moins d'impact sur le réseau. Vu que cet algorithme est appliqué lorsqu'aucune combinaison globale n'ayant aucun impact sur le réseau n'a été trouvée dans l'algorithme de la figure 9, la combinaison a forcément un impact. A l'étape 1405, on recherche donc dans un premier temps une combinaison locale cmb_loc_candl associée à une combinaison globale cmb_glob_candl la plus proche de cmb_glob_pred. Par � plus proche �, on entend contenant le plus de paquets sources associés de cmb_glob_pred en interdisant des paquets sources non contenus dans cmb_glob_pred. Cet algorithme est décrit dans la figure 15. A l'étape 1410, on détermine l'indice de confiance de cmb_glob_candl en utilisant l'algorithme décrit à la figure 13. A l'étape 1415, on sélectionne parmi l'ensemble Scand construit durant l'algorithme de la figure 9 (à l'étape 950), la combinaison globale cmb_glob_cand2 qui a le plus grand indice de confiance (un tri classique est effectué). A l'étape 1420, on compare les deux indices de confiance de cmb_glob_candl et cmb_glob_cand2. Si l'indice de confiance de globale cmb_glob_cand2 est plus grand que celui de cmb_glob_candl, alors on passe à l'étape 1430 sinon à l'étape 1425. A l'étape 1425, on sélectionne la combinaison linéaire locale cmb_loc_candl. A l'étape 1430, on sélectionne la combinaison locale associée à cmb_glob_cand2, combinaison locale qui avait été stockée dans Scand. La figure 15 décrit un algorithme de reconstitution d'une combinaison locale associée à une combinaison globale la plus proche d'une autre combinaison globale, correspondant à l'étape 820 de la figure 8. On entend par � plus proche � le fait de contenir le plus de paquets sources associés à cmb_glob_pred en interdisant les paquets sources non contenus dans cmb_glob_pred. Les paramètres d'entrée sont : - la combinaison globale prédéterminée cmb_glob pred. Elle est constituée de P paquets sources associés (ce qui correspond à p coefficients non nuls parmi les M coefficients associés aux paquets sources) ; - La matrice relais temporaire R', contenant des combinaisons globales des paquets reçus avant l'accès au médium de ce noeud relais. Le paramètre de sortie est une combinaison locale cmb_loc_cand et une combinaison globale associée cmb_glob_cand, combinaison globale la plus proche de cmb_glob_pred. A l'étape 1510, on initialise à 1 la variable nb_src_pkt_to_del correspondant au nombre de paquets sources associés à retirer de cmb_glob_pred. A l'étape 1515, on détermine le nombre de combinaisons globales différentes en supprimant nb_src_pkt_to_del paquets sources. Cette valeur nb_test est égale à la combinaison au sens mathématiques : C(P, nb_src_pkt_to_del) = P!/( nb_src_pkt_to_del)!( P - nb_src_pkt_to_del) ! avec ! correspondant à l'opération factorielle. A l'étape 1520, on initialise la variable iter à 1, compteur qui teste à chaque itération un nouvel ensemble de paquets sources associés à supprimer S_pkt(iter). Soit cmb_glob_cand la combinaison globale égale à cmb_glob_pred exceptée pour les paquets sources de S_pkt(iter) où les coefficients sont mis à zéro. Notons g'=[g'l,..,g'M] le vecteur colonne représentant cette combinaison globale cmb_glob_cand. Le but maintenant est de déterminer une combinaison locale cmb_loc_cand associée à cmb_glob_cand. A l'étape 1525, on construit alors à partir de la matrice relais temporaire R' un système linéaire afin de déterminer les coefficients à attribuer à cmb_loc_cand. Notons 131 ces coefficients, avec S le nombre de paquets reçus. Pour chaque paquet source X;, il faut que le coefficient g'; associé à celui-ci dans cmb_glob_cand se retrouve dans la somme des paquets reçus de cmb_loc_cand, c'est-à-dire qu'on doit avoir la R relation =g';pour chaque paquet source. On a donc un système linéaire : A(3 = g i=1 avec 13 le vecteur colonne des inconnues [(31,.., (31], g'=[g'l,..,g'M] le vecteur colonne de cmb_glob_cand et A une matrice de dimension (M,1) dont chaque coefficient aii est égal à r'j;. A l'étape 1530, on résout le système linéaire créé dans l'étape 1525 par la méthode de Gauss-Jordan. Puis à l'étape de test 1535, on vérifie la compatibilité du système (c'est-à-dire si le système admet ou non une solution). Si oui, on passe à l'étape 1540, sinon à l'étape 1550. A l'étape 1550, on vérifie si la variable iter est égale à Nb test, c'est-à-dire si toutes les combinaisons globales ont été testées avec un nombre de paquets sources associés supprimés égal à nb_src_pkt. Si non, on passe à l'étape 1565, dans laquelle on incrémente la variable iter et on sélectionne un nouvel ensemble de paquets sources associés à supprimer S_pkt(iter), puis on retourne à l'étape 1525. Si oui, on passe à l'étape 1555. A l'étape 1555, on vérifie si la variable nb_src_pkt_to_del est égale à p, le nombre de paquets sources associés dans cmb_glob_pred. Si oui, on passe à l'étape 1570, ceci correspond au fait qu'il n'y a plus de paquets sources disponibles à supprimer. A l'étape 1570, on renvoie alors les combinaisons locales et globales nulles. Si le test de l'étape 1555 est négatif, alors la variable nb_src_pkt_to_del est incrémentée (étape 1560) et on retourne à l'étape 1515. A l'étape 1540, on attribue alors les valeurs de [(31,.., (3,] données par l'algorithme du Gauss-Jordan. Si le système admet une infinité de solutions, la valeur des coefficients 13i associés aux inconnues secondaires est mise à zéro. A l'étape 1545, on mémorise la combinaison locale cmb_loc_cand associée au vecteur colonne [(31,.., (31] et la combinaison globale cmb_cand_glob associée au vecteur colonne g'M]. La figure 16 présente un algorithme principal de traitement d'un paquet reçu, mis en oeuvre par un noeud destination dans un mode de réalisation particulier d'un procédé de codage réseau selon l'invention Les paramètres d'entrée sont les suivants : > Un paquet p attendu, à recevoir ; - La matrice destination D, contenant des combinaisons globales prédéterminées des paquets à recevoir durant la supertrame. Cet algorithme est donc lancé cycliquement à chaque réception attendue d'un paquet (étape 1605). A l'étape 1610, on vérifie si le paquet p est disponible. Ce moyen se base par exemple sur des informations radio, tel le rapport signal sur bruit (SNR) ou la puissance du signal reçu (RSSI). Si ces variables dépassent un seuil prédéfini, le paquet est considéré disponible et on passe à l'étape 1615, sinon le paquet est considéré indisponible et on passe à l'étape 1620. A l'étape 1615, on vérifie si le paquet reçu est bien constitué de la combinaison linéaire prédéterminée des paquets sources. Pour cela, on détecte si le paquet comprend une notification ou pas. Si oui, on passe à l'étape 1620 sinon à l'étape 1625. A l'étape 1620, on mémorise la nouvelle combinaison du paquet reçu. Pour cela, on utilise une matrice destination temporaire D' = (d',i), valide uniquement pour l'exécution de cet algorithme dans la supertrame courante. Si c'est la première détection de modification d'un paquet lors de la supertrame, la matrice D' est créée sinon elle est remise à jour. La création est caractérisée par les étapes suivantes : - Initialisation de la valeur des coefficients d',i de la matrice destination temporaire à la valeur des coefficients d,i de la matrice destination prédéterminée ; - Si le paquet reçu est indisponible (test de l'étape 1610), la ligne correspondante à ce paquet devient une ligne nulle (tous les coefficients de la ligne sont mis à zéro) ; - Si le paquet reçu n'est pas constitué de la combinaison linéaire prédéterminée (test de l'étape 1615), la ligne correspondant à ce paquet est modifiée et prend en compte les modifications de la notification : un élément d',i modifié signifie que le paquet associé à cette ligne a été modifié. Le paquet i a donc été reçu avec une notification. La colonne j correspond à l'identifiant (315) du paquet source indiqué dans la notification. La nouvelle valeur de d',i correspond au coefficient indiqué dans la notification (320). Puis, à l'étape 1625, on vérifie si p est un paquet considéré utile. Si oui, on passe à l'étape 1630 sinon l'algorithme est terminé (étape 1665). A l'étape 1630, on vérifie de nouveau si p a une notification. Si oui, on passe à l'étape 1645, sinon à l'étape 1635. 25 30 A l'étape 1635, on introduit le paquet dans l'algorithme de décodage au fil de l'eau décrit dans le paragraphe 2.2.2 ci-dessus. Il est clair que dès que l'algorithme de décodage a reçu tous les paquets utiles (pour décoder tous ou une partie des paquets sources) de la supertrame courante et qu'ainsi les paquets sources sont décodés, ceux-ci sont envoyés directement à l'application (module 230, figure 2). A l'étape 1640, on vérifie si le décodage final a été déjà lancé ou pas durant la supertrame courante. Si oui, on passe à l'étape 1645, dans laquelle est lancé de nouveau cet algorithme car un nouveau paquet utile a subi des modifications. L'algorithme final est décrit dans la figure 19. Sinon, on passe à l'étape de test 1650. A l'étape de test 1650, on vérifie si l'algorithme de modification de la matrice de décodage est en cours durant la supertrame courante. L'algorithme est en cours quand celui-ci a été lancé et que le dernier paquet momentanément utile nécessaire n'a pas encore été reçu. Si oui on passe à l'étape 1660, sinon à l'étape 1655. A l'étape 1655, on lance l'algorithme de modification de la matrice de décodage. Cet algorithme est décrit dans la figure 17. A l'étape 1660, on met à jour l'algorithme de modification de la matrice de décodage. Cet algorithme est décrit dans la figure 18. La figure 17 décrit un algorithme de modification de la matrice de décodage, correspondant à l'étape 1655 de la figure 16. Les paramètres d'entrée sont : - Le paquet p reçu, constitué non pas de la combinaison globale prédéterminée cmb_glob_pred mais de la combinaison cmb_glob_rec ; - La matrice destination du noeud destination D, contenant des combinaisons globales des paquets reçus et à recevoir. A l'étape 1705, on effectue une triangulation de la matrice D' par la méthode Gauss-Jordan, appelée � au fil de l'eau �. Celle méthode est quasiment identique à celle décrite à la figure 10. L'étape 1005 n'est pas utilisée du fait qu'on ne résout pas un système linéaire. A la fin de chaque itération, chaque matrice temporaire est stockée. On note A(k) la matrice temporaire à la fin de la k1ème itération. La différenciation majeure (qui justifie l'appellation � au fil de l'eau �) se situe dans les matrices temporaires. A l'initialisation, A(°) est réduit à la première ligne de D'. A la fin de la première itération, une nouvelle matrice (dans ce cas, une nouvelle ligne) A(1) est déterminée et mémorisée. Au passage à l'itération suivante (entre les étapes 1070 et 1015, figure 10), la deuxième ligne de D' est introduite dans A(1) à la dernière position. L'opération se répète à chaque itération : à la fin de la k1ème itération, la matrice A(k) est mémorisée et la ligne (k+l) de D' est ajoutée à Au� à la dernière position. Soit T la matrice finale obtenue à la fin de l'étape 1705. Puis, à l'étape 1710, on vérifie si T a M lignes non nulles. Si oui, on passe à l'étape 1720, sinon à l'étape 1715. L'étape 1715 est lancée à l'échec du test de l'étape 1710. Ce qui signifie que même avec les paquets à recevoir, on n'arrivera pas à avoir une matrice qui décode l'ensemble des M paquets sources. Le décodage final expliqué figure 19 est alors lancé. Celui-ci détermine le nombre de paquets sources décodables, la matrice de décodage associée et les paquets momentanément utiles associés. Plus celui-ci est exécuté tôt, mieux c'est car étant basé sur des tests exhaustifs, il est très coûteux en temps de calcul. Puis, à l'étape 1725, l'ensemble des paquets momentanément utiles déjà reçus sont introduits dans l'algorithme de décodage au fil de l'eau. Le passage à l'étape 1720 indique que les M paquets sources sont décodables avec les paquets reçus et à recevoir. Une matrice de décodage temporaire C-'prou est construite. Cette matrice de décodage temporaire, uniquement valable durant la période de la supertrame courante, est construite à partir de T. Les paquets associés à la matrice de décodage temporaire sont marqués momentanément utiles. Puis, à l'étape 1725, l'ensemble des paquets momentanément utiles déjà reçus sont introduits dans l'algorithme de décodage au fil de l'eau. La figure 18 décrit un algorithme de reprise de la modification de la matrice de décodage, correspondant à l'étape 1660 de la figure 16. Cet algorithme correspond à une remise en cause des paquets précédemment marqués momentanément utiles, lors du lancement de l'algorithme de modification de la matrice de décodage (étape 1655) ou lors d'une reprise antérieure de cet algorithme de reprise (étape 1660). Le paquet p reçu marqué momentanément utile lors de l'étape 1655 ou 1660, et qui n'était pas encore reçu à l'exécution de l'algorithme de modification, ne contient pas la combinaison attendue, c'est-à-dire celle prédéterminée lors de la construction du schéma de codage réseau à l'initialisation (figure 4). Or l'algorithme de modification s'est basé sur cette hypothèse donc ses résultats sont remis en question. Mais au lieu de réactiver l'algorithme de l'étape 1655, on utilise les résultats de celui-ci pour le reprendre à une itération sélectionnée. Ceci permet d'effectuer moins d'opérations. Les paramètres d'entrée sont : - La matrice destination du noeud destination D' (voir figure 17) ; - Les matrices temporaires A(k) stockées lors de la première exécution de l'algorithme de Gauss-Jordan. A l'étape 1805, on détermine l'itération de reprise, c'est-à-dire à quelle itération va être repris l'algorithme de Gauss-Jordan. Pour cela, l'algorithme récupère les positions, dans la supertrame, des noeud relais qui ont envoyé des paquets non attendus (c'est-à-dire des paquets non disponibles ou contenant des paquets sources non attendus) p1,..,pK entre la date présente et le dernier appel de l'algorithme de modification de la matrice de décodage (lancement à l'étape 1655 ou reprise à l'étape 1660) lors de la supertrame courante. Notons T cette période entre deux appels successifs d'un algorithme de récupération et t1,...tK les positions de ces noeuds relais (notation basée sur un classement chronologique). L'itération de reprise est tl. Remarque : la récupération uniquement de la position du paquet p peut ne pas être pas suffisante car il se peut que des paquets redondants non attendus aient été reçus durant cette période. Or, si on ne relance pas les algorithmes de modification avec ces paquets redondants non attendus pour limiter le nombre d'opérations, la nouvelle combinaison de ces paquets doit être prise en compte. Mais la situation la plus probable est que durant T, tous les paquets redondants sont bien ceux attendus et dans ce cas tl est l'unique position et correspond à la position de p. A l'étape 1810, on récupère la matrice A(t'-u matrice temporaire stockée à la fin de (t1-1)1ème itération de la méthode de Gauss-Jordan. A cette matrice, la nouvelle ti'ème ligne ajoutée n'est pas la combinaison globale prédéterminée du paquet pl mais la nouvelle combinaison globale reçue de pl contenue à la thème ligne de D'. En effet, toutes les opérations effectuées avant la tl'ème itération restent valides, donc il ne sert à rien de relancer tout le processus de modification décrit figure 17. Cette réduction du nombre d'opérations permet au décodeur de reconstruire au plus vite un paquet résultant. A l'étape 1815, on relance, à la t1ième itération, l'algorithme de Gauss-Jordan décrit figure 17. A la fin de l'algorithme de Gauss-Jordan, le test de l'étape 1820 vérifie si T a M lignes non nulles. Si oui, on passe à l'étape 1830, sinon à l'étape 1825. L'étape 1825 est lancée à l'échec du test de l'étape 1820. Ceci signifie que même avec les paquets à recevoir, on n'arrivera pas à avoir une matrice qui décode l'ensemble des M paquets sources. Le décodage final expliqué figure 19 est alors lancé. Celui-ci détermine le nombre maximal de paquets sources décodables, la matrice de décodage associée et les paquets utiles associés (marqués momentanément utiles). Puis, on passe à l'étape 1835, dans laquelle l'ensemble des paquets notifiés utiles déjà reçus sont introduits dans l'algorithme de décodage au fil de l'eau. Le passage à l'étape 1830 indique que les M paquets sources sont décodables avec les paquets reçus et à recevoir. Les paquets, utilisés dans le décodage, sont marqués momentanément utiles. Une nouvelle matrice de décodage temporaire C-'prou est construite. Cette matrice de décodage temporaire, uniquement valable durant la période de la supertrame courante, est construite à partir de T. Puis, on passe à l'étape 1835, dans laquelle l'ensemble des paquets momentanément utiles déjà reçus sont introduits dans l'algorithme de décodage au fil de l'eau. La figure 19 décrit un algorithme de détermination du nombre de paquets sources décodables, et par suite de détermination de la matrice de décodage associée, correspondant à l'étape 1715 de la figure 17 et à l'étape 1645 de la figure 16. Cet algorithme est appelé : > soit au niveau d'un noeud relais R; (voir étape 1310, figure 13), pour déterminer l'impact sur les noeuds destinations de l'envoi d'une nouvelle combinaison globale par le noeud relais ; - Et bien sûr au niveau d'un noeud destination D; (voir étapes 1645, 1715 et 1825, sur les figures 16, 17 et 18 respectivement), quand celui-ci doit modifier sa matrice de décodage. Il est donc à noter que l'étape 1960 n'est pas implémentée dans les noeuds relais. Le paramètre de sortie est donc, au niveau des noeuds relais, le nombre de paquets décodables, nb_src_pkt_to_del, et au niveau des noeuds destinations, la matrice de décodage temporaire C-'prou. Pour déterminer le nombre maximal de paquets sources décodables, l'algorithme teste si les M paquets sources sont décodables. Si oui, l'algorithme est fini, sinon on teste si (M-1) paquets sources sont décodables, et ainsi de suite. A l'étape 1910, on initialise le nombre de paquets sources à supprimer, nb_src_pkt_to_del, à zéro. A l'étape de test 1915, on vérifie si ce nombre est bien strictement inférieur à M. Si oui, on passe à l'étape 1920, sinon à l'étape 1935. Dans ce dernier cas, ceci signifie qu'aucun paquet source n'est décodable, la variable nb_src_pkt_dec est initialisée à zéro et bien sûr il n'y a pas de matrice de décodage (étape 1980, de fin de l'algorithme). A l'étape 1920, on détermine le nombre d'ensemble de paquets sources à supprimer. Cette valeur nb_test est égale à la combinaison au sens mathématiques : C(M, nb_src_pkt_to_del) = M ! /(nb_src_pkt_to_del)!( M - nb_src_pkt_to_del) ! avec ! correspondant à l'opération factorielle. A l'étape 1920, on initialise aussi la variable iter à 1, compteur qui teste à chaque itération un nouvel ensemble de nb_src_pkt_to_del paquets sources associés à supprimer. A l'étape 1925, on détermine un ensemble de nb_src_pkt_to_del paquets sources à supprimer, ensemble différent pour chaque itération iter. A l'étape 1930, on détermine une matrice destination temporaire D';, sous- matrice de la matrice destination D;. Les paquets résultants contenant les paquets sources à supprimer, déterminés à l'étape 1920, ne sont pas pris en compte. Donc D'; correspond à la matrice destination D;, moins les colonnes correspondant aux paquets sources à supprimer, et moins les lignes qui avaient un coefficient non nul au niveau des colonnes correspondant aux paquets sources à supprimer. Puis, à l'étape 1940, on vérifie s'il reste des paquets sources, c'est-à-dire si la matrice D'; a encore des lignes. Si oui, on passe à l'étape 1945, sinon à l'étape 1965. A l'étape 1945, on recherche le rang de la matrice D';, noté rand Di. Pour cela, la méthode de Gauss-Jordan est encore utilisée en effectuant une triangulation de la matrice D';. Notons T la matrice triangulée. Le rang est le nombre de lignes non nulles de T. Stockons en mémoire la matrice T' (constitué uniquement des lignes non nulles de T) et les paquets résultants associés aux lignes de T'. A l'étape 1950, on vérifie si la valeur de rang Di est égale à (M-nb_src_pkt_to_ del). Si oui, tous les paquets sources présents dans la matrice D'; sont décodable, on passe à l'étape 1955. Sinon la matrice T' est supprimée et on passe à l'étape 1965. A l'étape 1955, on met à jour nb_src_pkt_dec(D;) à rand Di. Puis si le noeud est un noeud relais, l'algorithme est terminé (étape 1980). En revanche, si le noeud est un noeud destination, on passe à l'étape 1960 puis à l'étape 1985 avant la fin de l'algorithme (étape 1980). A l'étape 1960, on récupère la matrice T', on effectue une inversion de celle-ci (T' est une matrice carrée de dimension (M-nb_src_pkt_to_del,M-nb_src_pkt_to_del)) et on stocke la matrice inverse C-'prou de T', C-'prou étant la matrice de décodage temporaire (valide pour la supertrame courante). De plus, les paquets mémorisés à l'étape 1945 sont marqués comme les paquets momentanément utiles. A l'étape 1985, l'ensemble des paquets momentanément utiles déjà reçus sont introduits dans l'algorithme de décodage au fil de l'eau. A l'étape 1965, on vérifie si tous les ensembles de nb_src_pkt_to_del ont été testés, c'est-à-dire si la variable iter est égale à Nb test. Si oui, on passe à l'étape 1975, sinon à l'étape 1970. A l'étape 1970, on incrémente la variable iter et on détermine un nouvel ensemble de nb_src_pkt_to_del paquets sources à supprimer. Puis, on retourne à l'étape 1930. A l'étape 1975, on incrémente le nombre de paquets sources à supprimer nb_src_pkt_to_del, puis on revient à l'étape de test 1915. 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 et doit générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé, 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 à : I) détecter (510 à 530) un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; II) s'il est détecté un paquet utile altéré, déterminer (555, 565, 570), avant la fin de la réception de ladite pluralité de paquets de données, une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les paquets associés à ladite nouvelle combinaison linéaire étant dits paquets momentanément utiles ; III) avec la nouvelle combinaison linéaire de paquets attendus en entrée, construire (645, 840, 830, 1140), avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins une partie dudit paquet résultant reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape II) comprend une étape IL1) (620, 625, 630, 640, 1115, 1120, 1125) consistant à déterminer, si elle existe, une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué identique au paquet résultant prédéterminé. 3. Procédé selon la revendication 2, caractérisé en ce que ladite étape IL1) comprend une étape (620) consistant à tester si ledit paquet utile altéré peut être remplacé par un paquet redondant reçu ou à recevoir par ledit noeud relais donné. 4. Procédé selon la revendication 2, caractérisé en ce que ladite étape IL1) comprend une exécution d'un mécanisme de récupération complet, comprenant des étapes consistant à (625, 710 à 735) : - déterminer une combinaison linéaire prédéterminée de paquets sources, associée à ladite combinaison linéaire prédéterminée de paquets attendus en entrée, et permettant d'obtenir ledit paquet résultant prédéterminé ; - construire un système linéaire A(3 = g, où 13 est un vecteur colonne des coefficients de ladite nouvelle combinaison linéaire de paquets attendus en entrée à déterminer, où g est un vecteur colonne des coefficients de ladite combinaison linéaire prédéterminée de paquets sources, et où A est une matrice de dimension (M,S), avec M le nombre de paquets sources et S le nombre de paquets attendus en entrée par ledit noeud relais donné, la matrice A étant définie de la manière suivante : * chaque ligne de la matrice A est associée à un paquet source, * chaque colonne de la matrice A est associée à un paquet attendu en entrée, * chaque élément aii de la matrice A représente : - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) réelle du paquet attendu j, si le paquet attendu j a déjà été reçu, - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) attendue du paquet attendu j, si le paquet attendu j n'a pas encore été reçu, - résoudre ledit système linéaire par une méthode de résolution prédéterminée, en mémorisant, à chaque itération k de ladite méthode de résolution prédéterminée, des opérations et une matrice temporaire A(k) ; - si le système linéaire admet une solution, déterminer ladite nouvelle 30 combinaison linéaire de paquets attendus en entrée, en fonction du vecteur colonne 13 de ladite solution. 15 20 25 5. Procédé selon la revendication 4, caractérisé en ce que, à chaque réception d'un desdits paquets momentanément utiles, il comprend des étapes consistant à (figure 12) : - détecter (510 à 530) un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - s'il est détecté un paquet momentanément utile altéré, exécuter un mécanisme de récupération partiel, comprenant des étapes consistant à (1205 à 1235) : * déterminer le ou les paquet(s) attendu(s) altéré(s), y compris ledit paquet momentanément utile altéré, reçu(s) depuis une dernière exécution du mécanisme de récupération partiel ou depuis une exécution du mécanisme de récupération complet, un paquet attendu altéré étant défini comme un paquet attendu qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; * dans la matrice temporaire A(11- 1) mémorisée à une (t1 ù 1)ème itération de ladite méthode de résolution prédéterminée, modifier la ou les colonnes altérée(s) correspondant au(x) paquet(s) attendu(s) altéré(s), où tl est le rang du premier du ou des paquet(s) attendu(s) altéré(s) dans une séquence prédéterminée définissant l'ordre dans lequel ladite pluralité de paquets de données attendus en entrée sont attendus, ainsi que l'ordre dans lequel les colonnes de ladite matrice A sont classées, la ou les colonne(s) altérée(s) étant modifiées par les opérations mémorisées lors des (tl ù 1) premières itérations de ladite méthode de résolution prédéterminée ; * reprendre la résolution dudit système linéaire à la tlème itération de ladite méthode de résolution prédéterminée, en mémorisant, à chaque itération k de ladite méthode de résolution prédéterminée, des opérations et une matrice temporaire A) ; * si le système linéaire admet une solution, déterminer ladite deuxième combinaison linéaire de paquets attendus en entrée, en fonction du vecteur colonne 13 de ladite solution. 30 6. Procédé selon l'une quelconque des revendications 2 à 5, caractérisé en ce que, en cas d'échec de ladite étape IL1), ladite étape II) comprend une étape IL2) (555, 615, 10 15 20 25 15 20 25 30805 à 835, 1145), consistant à déterminer une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué le plus proche, selon au moins un critère déterminé, du paquet résultant prédéterminé (figure 8). 7. Procédé selon la revendication 6, caractérisé en ce que, à chaque réception d'un desdits paquets momentanément utiles, il comprend des étapes consistant à : - détecter (510 à 530) un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - s'il est détecté un paquet momentanément utile altéré, réitérer les étapes IL2) et III). 8. Procédé selon l'une quelconque des revendications 6 et 7, caractérisé en ce que ladite étape IL2) comprend des étapes consistant à (910 à 975) : a) déterminer une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué contenant des paquets sources non contenus dans le paquet résultant prédéterminé ; b) obtenir une information relative, pour au moins un autre noeud participant au schéma de codage réseau prédéterminé, à un schéma de codage réseau modifié qui résulterait de l'envoi du paquet résultant reconstitué mentionné à l'étape a) ; c) en fonction de l'information obtenue à l'étape b), sélectionner la nouvelle combinaison linéaire déterminée à l'étape a) ou réitérer l'étape a) pour déterminer une autre nouvelle combinaison linéaire. 9. Procédé selon la revendication 8, caractérisé en ce que l'étape a) comprend des étapes consistant à : i) déterminer une combinaison linéaire prédéterminée de paquets sources, permettant d'obtenir ledit paquet résultant reconstitué contenant des paquets sources non contenus dans le paquet résultant prédéterminé ; ii) construire un système linéaire A(3 = g, où 13 est un vecteur colonne des coefficients de ladite nouvelle combinaison linéaire de paquets attendus en entrée à déterminer, où g est un vecteur colonne des coefficients de ladite combinaison linéaire prédéterminée de paquets sources, et où A est une matrice de dimension (M,S), avec M le nombre de paquets sources et S le nombre depaquets attendus en entrée par ledit noeud relais donné, la matrice A étant définie de la manière suivante : * chaque ligne de la matrice A est associée à un paquet source, * chaque colonne de la matrice A est associée à un paquet attendu en entrée, * chaque élément aii de la matrice A représente : - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) réelle du paquet attendu j, si le paquet attendu j a déjà été reçu, - soit le coefficient du paquet source i dans une composition en paquet(s) source(s) attendue du paquet attendu j, si le paquet attendu j n'a pas encore été reçu, iii) résoudre ledit système linéaire par une méthode de résolution prédéterminée ; iv) si le système linéaire admet une solution, déterminer ladite nouvelle combinaison linéaire de paquets attendus en entrée, en fonction du vecteur colonne 13 de ladite solution, sinon réitération de l'étape i) avec une autre combinaison linéaire prédéterminée de paquets sources. 10. Procédé selon l'une quelconque des revendications 8 et 9, caractérisé en ce que, dans l'étape b), ladite information relative au schéma de codage réseau modifié, qui résulterait de l'envoi du paquet résultant reconstitué mentionné à l'étape a), est la 20 somme du nombre de paquets sources décodables par l'ensemble des noeuds destinations du réseau si le paquet résultant reconstitué mentionné à l'étape a) est supposé envoyé, et en ce que, dans l'étape c), la nouvelle combinaison linéaire déterminée à l'étape a) est sélectionnée si ladite information relative au schéma de codage réseau modifié est égale 25 au nombre de noeuds sources dans le réseau multiplié par le nombre de noeuds destinations dans le réseau. 11. Procédé selon l'une quelconque des revendications 8 à 10, caractérisé en ce que, en cas d'échec des étapes a), b) et c), ladite étape IL2) comprend en outre des étapes consistant à (1405 à 1430) : 30 - déterminer une première nouvelle combinaison linéaire de paquets attendus en entrée, permettant de construire un premier paquet résultant reconstitué différent 10 15du paquet résultant prédéterminé mais contenant uniquement des paquets sources inclus dans le paquet résultant prédéterminé ; - obtenir une première information relative, pour au moins un autre noeud participant au schéma de codage réseau prédéterminé, à un schéma de codage réseau modifié qui résulterait de l'envoi du premier paquet résultant reconstitué, la première nouvelle combinaison linéaire étant associée à ladite première information sur le schéma de codage réseau modifié ; - parmi la ou les nouvelle(s) combinaison(s) linéaire(s) non sélectionnée(s) à l'étape c), sélectionner une deuxième nouvelle combinaison linéaire de paquets attendus en entrée, en fonction de ladite information, obtenue à l'étape b) pour chaque nouvelle combinaison linéaire non sélectionnée à l'étape c), sur le schéma de codage réseau modifié, la deuxième nouvelle combinaison linéaire étant associée à une deuxième information relative au schéma de codage réseau modifié ; - sélectionner entre les première et deuxième nouvelles combinaisons linéaires, en fonction des première et deuxième informations relatives au schéma de codage réseau modifié. 12. Procédé selon l'une quelconque des revendications 6 et 7, caractérisé en ce que ladite étape IL2) comprend une étape consistant à : - déterminer une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué différent du paquet résultant prédéterminé mais contenant uniquement des paquets sources inclus dans le paquet résultant prédéterminé. 13. Procédé de codage réseau dans un réseau maillé comprenant au moins un noeud 25 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 et doit générer en sortie au moins un paquet source prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données 30 n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de 10 15 20données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé, 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 à : I) détecter (1605 à 1630) un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; II) s'il est détecté un paquet utile altéré, déterminer (1645, 1655, 1660), avant la fin de la réception de ladite pluralité de paquets de données, au moins une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire au moins un paquet source reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les paquets associés à ladite au moins une nouvelle combinaison linéaire étant dits paquets momentanément utiles ; III) avec ladite au moins une nouvelle combinaison linéaire de paquets attendus en entrée, construire (1725, 1835, 1985), avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins une partie dudit au moins un paquet source reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus. 14. Procédé selon la revendication 13, caractérisé en ce que ladite étape II) comprend une étape IL1) (1705, 1710, 1720) consistant à déterminer, si elle existe, une nouvelle matrice de décodage identique à une matrice de décodage prédéterminée, permettant de construire un ensemble de paquets sources reconstitués identique à un ensemble de tous les paquets sources prédéterminés, chaque ligne de ladite nouvelle matrice de décodage définissant une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet source reconstitué identique à l'un des paquets sources prédéterminés. 15. Procédé selon la revendication 14, caractérisé en ce que ladite étape IL1) comprend une exécution d'un mécanisme de récupération complet, comprenant des étapes consistant à (1705, 1710, 1720) :- construire une matrice D' de dimension (S, M), avec S le nombre de paquets attendus en entrée par ledit noeud destination donné et M le nombre de paquets sources, la matrice D' étant définie de la manière suivante : * chaque ligne de la matrice D' est associée à un paquet attendu en entrée, * chaque colonne de la matrice D' est associée à un paquet source, * chaque élément d,i de la matrice D' représente : - soit le coefficient du paquet source j dans une composition en paquet(s) source(s) réelle du paquet attendu i, si le paquet attendu i a déjà été reçu, - soit le coefficient du paquet source j dans une composition en paquet(s) source(s) attendue du paquet attendu i, si le paquet attendu i n'a pas encore été reçu, - construction d'une matrice résultante T à partir de la matrice D', par une méthode de triangulation prédéterminée prenant en compte les lignes les unes après les autres, en mémorisant, à chaque itération k de ladite méthode de triangulation prédéterminée, des opérations et une matrice temporaire A(k) ; - si la matrice résultante T a M lignes non nulles, construction de ladite nouvelle matrice de décodage à partir de la matrice résultante T. 16. Procédé selon la revendication 15, caractérisé en ce que, à chaque réception d'un desdits paquets momentanément utiles, il comprend des étapes consistant à : - détecter (1605 à 1630) un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - s'il est détecté un paquet momentanément utile altéré, exécuter un mécanisme de récupération partiel, comprenant des étapes consistant à (1805, 1810, 1815, 1820, 1830) : * déterminer le ou les paquet(s) attendu(s) altéré(s), y compris ledit paquet momentanément utile altéré, reçu(s) depuis une dernière exécution du mécanisme de récupération partiel ou depuis une exécution du mécanisme de récupération complet, un paquet attendu altéré étant défini comme un 30paquet attendu qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; * dans la matrice temporaire A(tl - u mémorisée à une (tl û 1)ème itération de ladite méthode de résolution prédéterminée, modifier la ou les colonnes altérée(s) correspondant au(x) paquet(s) attendu(s) altéré(s), où tl est le rang du premier du ou des paquet(s) attendu(s) altéré(s) dans une séquence prédéterminée définissant l'ordre dans lequel ladite pluralité de paquets de données attendus en entrée sont attendus, ainsi que l'ordre dans lequel les lignes de ladite matrice D' sont classées, la ou les ligne(s) altérée(s) étant modifiées par les opérations mémorisées lors des (tl û 1) premières itérations de ladite méthode de triangulation prédéterminée ; * reprendre la construction de la matrice résultante T à la tlème itération de ladite méthode de triangulation prédéterminée, en mémorisant, à chaque itération k de ladite méthode de triangulation prédéterminée, des opérations et une matrice temporaire Au� ; * si la matrice résultante T a M lignes non nulles, construction de ladite nouvelle matrice de décodage à partir de la matrice résultante T. 17. Procédé selon l'une quelconque des revendications 14 à 16, caractérisé en ce que, en cas d'échec de ladite étape IL1), ladite étape II) comprend une étape IL2) (1825) 20 consistant à déterminer une nouvelle matrice de décodage différente d'une matrice de décodage prédéterminée, mais permettant de construire un nombre maximal de paquets sources reconstitués identiques à des paquets sources prédéterminés, chaque ligne de ladite nouvelle matrice de décodage définissant une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet source reconstitué 25 identique à l'un des paquets sources prédéterminés. 18. Procédé selon la revendication 17, caractérisé en ce que, à chaque réception d'un desdits paquets momentanément utiles, il comprend des étapes consistant à : - détecter (1605 à 1630) un paquet momentanément utile altéré, défini comme un paquet momentanément utile qui n'est pas correctement reçu ou est correctement 30 reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; 10 15- s'il est détecté un paquet momentanément utile altéré, réitérer les étapes IL2) et III). 19. 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 à 12 et/ou le procédé selon au moins une des revendications 13 à 18, lorsque ledit programme est exécuté sur un ordinateur. 20. 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 à 12 et/ou le procédé selon au moins une des revendications 13 à 18. 21. 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 et devant générer en sortie un paquet résultant prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé, ledit noeud relais donné étant caractérisé en ce qu'il comprend : - des moyens de détection, permettant de détecter un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - des moyens de détermination, activés s'il est détecté un paquet utile altéré, permettant de déterminer, avant la fin de la réception de ladite pluralité de paquets de données, une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire un paquet résultant reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les 30paquets associés à ladite nouvelle combinaison linéaire étant dits paquets momentanément utiles ; - des moyens de construction, permettant de construire, avec la nouvelle combinaison linéaire de paquets attendus en entrée, et avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins une partie dudit paquet résultant reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus. 22. 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 et devant générer en sortie au moins un paquet source prédéterminé obtenu selon une combinaison linéaire prédéterminée d'une partie de ladite pluralité de paquets de données attendus en entrée, les paquets de données appartenant à ladite partie étant dits paquets utiles et les paquets de données n'appartenant pas à ladite partie étant dits paquet redondants, chacun des paquets de données attendus en entrée possédant une composition en paquet(s) source(s) attendue, conforme audit schéma de codage réseau prédéterminé, ledit noeud destination donné étant caractérisé en ce qu'il comprend : - des moyens de détection, permettant de détecter un paquet utile altéré, défini comme un paquet utile qui n'est pas correctement reçu ou est correctement reçu mais ne possède pas une composition en paquet(s) source(s) attendue ; - des moyens de détermination, activés s'il est détecté un paquet utile altéré, déterminer, permettant de déterminer, avant la fin de la réception de ladite pluralité de paquets de données, au moins une nouvelle combinaison linéaire de paquets attendus en entrée permettant de construire au moins un paquet source reconstitué en utilisant, selon un schéma de codage réseau modifié, tout ou partie des paquets redondants, les paquets associés à ladite au moins une nouvelle combinaison linéaire étant dits paquets momentanément utiles ; - des moyens de construction, permettant de construire, avec ladite au moins une nouvelle combinaison linéaire de paquets attendus en entrée, et avant la fin de la réception de ladite pluralité de paquets de données attendus en entrée, au moins 25 30une partie dudit au moins un paquet source reconstitué, en utilisant les paquets momentanément utiles déjà correctement reçus.