FR2960726A1 - Procede de transmission de symboles codes, procede de decodage, produit programme d'ordinateur, moyen de stockage et nœuds correspondants. - Google Patents

Procede de transmission de symboles codes, procede de decodage, produit programme d'ordinateur, moyen de stockage et nœuds correspondants. Download PDF

Info

Publication number
FR2960726A1
FR2960726A1 FR1054145A FR1054145A FR2960726A1 FR 2960726 A1 FR2960726 A1 FR 2960726A1 FR 1054145 A FR1054145 A FR 1054145A FR 1054145 A FR1054145 A FR 1054145A FR 2960726 A1 FR2960726 A1 FR 2960726A1
Authority
FR
France
Prior art keywords
symbol
node
lines
source
symbols
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1054145A
Other languages
English (en)
Other versions
FR2960726B1 (fr
Inventor
Pierre Visa
Falk Tannhauser
Julien Sevin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to FR1054145A priority Critical patent/FR2960726B1/fr
Publication of FR2960726A1 publication Critical patent/FR2960726A1/fr
Application granted granted Critical
Publication of FR2960726B1 publication Critical patent/FR2960726B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/14Relay systems
    • H04B7/15Active relay systems
    • H04B7/155Ground-based stations
    • H04B7/15521Ground-based stations combining by calculations packets received from different stations before transmitting the combined packets as part of network coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/14Relay systems
    • H04B7/15Active relay systems
    • H04B7/155Ground-based stations
    • H04B7/15592Adapting at the relay station communication parameters for supporting cooperative relaying, i.e. transmission of the same data via direct - and relayed path
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0075Transmission of coding parameters to receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0097Relays

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

Il est proposé un procédé de transmission, à un nœud destination, de M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau. La matrice de codage réseau comprend N lignes, avec M<N. M lignes, parmi les N lignes, définissent M symboles codés particuliers. Chacune des M lignes étant attribuée à un nœud relais qui doit générer le symbole codé particulier défini par la ligne. Le nœud relais, s'il est incapable de générer le symbole codé particulier défini par ladite au moins une ligne qui lui est attribuée, effectue des étapes consistant à : sélectionner (712), parmi les N lignes, une ligne définissant un symbole codé que le nœud relais peut générer, en tant que symbole de remplacement ; générer (714) et transmettre (718) au nœud destination le symbole de remplacement, accompagné d'une information de remplacement indiquant quelle ligne de la matrice définit le symbole de remplacement.

Description

Procédé de transmission de symboles codés, procédé de décodage, produit programme d'ordinateur, moyen de stockage et noeuds correspondants. 1. DOMAINE DE L'INVENTION L'invention concerne une technique de codage distribué dans un réseau maillé, permettant de transmettre un mot de code à un ou plusieurs noeuds destination. Le mot de code comprend des symboles codés, chaque symbole codé étant une combinaison linéaire de symbole source. Les symboles source sont transmis par un ou plusieurs noeuds source. Un symbole peut être un bit, un bloc de bits, un paquet regroupant plusieurs blocs de bits. La génération des symboles codés du mot de code est répartie parmi une pluralité de noeuds du réseau maillé, comprenant par exemple le ou les noeuds source (une combinaison linéaire pouvant être limitée à un seul symbole source) et un ou plusieurs noeuds relais (chaque noeud relais pouvant combiner plusieurs symboles source qu'il reçoit). Dans une variante, tous les symboles codés du mot de code sont générés par les noeuds relais.
Cette technique, consistant pour les noeuds relais à émettre un symbole codé qui est une combinaison linéaire des symboles source reçus au lieu de retransmettre un des symboles source qu'ils ont reçus (fonction de routage), est appelée codage réseau (en anglais « network coding »). Elle a été introduite par R. Ahlswede and co. (voir par exemple l'article suivant : R. Ahlswede, N. Cai, S-Y. R. Li, and R. W. Yeung, "Network information flow", IEEE Trans. Inform. Theory, Vol. 46, pp. 1204-1216, July 2000). Très rapidement, de nombreux articles ont démontré l'apport de cette nouvelle technique, notamment en termes de gain en bande passante (augmentation du débit des données) et en termes d'utilisation de la capacité de réseau. Comme détaillé par la suite, elle peut aussi être utilisée pour construire un code correcteur d'erreurs (FEC, pour « Forward Error Correction » en anglais) afin d'optimiser la robustesse du réseau. L'invention s'applique notamment, mais non exclusivement, dans le contexte d'un réseau maillé de type sans fil. 2. ARRIÈRE-PLAN TECHNOLOGIOUE On s'attache plus particulièrement dans la suite de ce document à décrire la problématique existant dans le contexte d'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 domaine particulier d'application, mais présente un intérêt pour toute technique de codage réseau devant faire face à une problématique proche ou similaire. Comme indiqué plus haut, les noeuds relais sont utilisés pour retransmettre aux noeuds destination les symboles source envoyés par le ou les noeuds source, en offrant une diversité spatiale permettant de faire face aux erreurs de transmissions altérant le réseau. Deux types d'erreurs sont envisageables dans un réseau maillé sans fil : - un premier type correspond aux erreurs dues à des masquages causés par un ou plusieurs obstacles, par exemple par un individu traversant le champ de transmission. Ces d'erreurs sont détectables par le noeud destination, par absence de détection de préambule de trame radio ou en analysant par exemple le niveau de signal radio reçu (RSSI, en anglais « Received Signal Strength Indication ») ou le rapport signal sur bruit (SNR, en anglais « Signal-to-Noise Ratio ») ; - un deuxième type correspond à des erreurs aléatoires dues à la transmission radio même, provoquant des altérations aléatoires des symboles transmis à des positions inconnues. Pour faire face aux erreurs dues à des masquages, une première technique connue consiste à réaliser des transmissions multiples d'un même message original à travers des chemins différents par l'intermédiaire des noeuds relais. L'utilisation des noeuds relais permet de créer une diversité spatiale, la probabilité d'avoir un obstacle sur tous les chemins est ainsi fortement réduite. Dans le cas de transmissions multiples, le noeud destination reçoit plusieurs versions du même message original (on parle ainsi de « copies »), qui sont potentiellement entachées d'erreurs différentes dues à la transmission radio. A partir des ces différentes copies, le noeud destination doit récupérer le message original, sans erreurs. Pour cela, une solution est alors d'utiliser un code de répétition. Malheureusement, le code de répétition a des performances très limitées, d'abord en terme de débit car il induit une forte diminution de la bande passante utile, ensuite en termes de pouvoir de correction qui s'avère bien plus faible que celui d'autres codes correcteurs classiques, tels que par exemple les codes BCH (Bose-Chaudhuri-Hocquenghem) ou Reed-Solomon. Une deuxième technique connue, dite de « code correcteur de réseau » (« network error correction » en anglais), consiste à coder le message original en générant des informations de redondance de façon distribuée parmi les noeuds relais, et transmettre en plusieurs parties le message codé (c'est-à-dire le message résultant du codage du message original) par différents chemins (chaque partie étant générée par un noeud relais différent et empruntant un chemin différent), au lieu d'effectuer des transmissions multiples du même message. Le principal avantage de cette deuxième technique connue est qu'elle affecte de façon modérée la bande passante utile. Un autre avantage est que nous avons maintenant la capacité de construire n'importe quels codes correcteurs en blocs linéaires tels que le code Reed-Solomon ou le code BCH, codes correcteurs très puissants, relativement aux codes à répétition. Inspiré du codage réseau, ce concept de « code correcteur de réseau », aussi appelé « code correcteur distribué », a été introduit dans l'article suivant : N. Cai and R. W. Yeung, "Network Coding and error Correction," IEEE Information Theory Workshop, Bangalore, India, Oct 20-25, 2002. Cet article montre que les codes correcteurs appliqués à un réseau peuvent être vus comme une extension des codes correcteurs classiques point à point. Les résultats classiques de la théorie de l'information ont alors été généralisés, et un noeud destination utilise un décodage classique de code correcteur point à point. Ainsi, dans la deuxième technique connue, le « code correcteur de réseau » est un cas particulier de codage réseau (« network coding »). Dans une variante de la deuxième technique connue, le code distribué (c'est-à- dire le code obtenu par les opérations réalisées par les noeuds relais) n'est pas un code correcteur. Dans cette variante (code distribué non correcteur), le décodage consiste à récupérer les symboles sources par combinaisons linéaires de symboles reçus (alors que dans le cas d'un code correcteur distribué, le décodage consiste à récupérer les symboles sources en utilisant le décodeur associé au code correcteur).
On revient maintenant à la deuxième technique de « code correcteur de réseau ». Utilisons la notation classique des codes correcteur en blocs point à point (N, K), où K représente le nombre de symboles source à coder et N le nombre de symboles codés par le code correcteur. Chaque mot de code du code correcteur d'erreurs comprend N premiers symboles codés. Dans un codage distribué avec regroupement de K premiers symboles source (constitués chacun de L seconds symboles source), un ensemble de noeuds relais combinent K premiers symboles sources pour générer et envoyer de manière distribuée un mot de code de N premiers symboles codés (chaque premier symbole codé étant une combinaison linéaire de premiers symboles source, et comprenant L seconds symboles). Le noeud destination reçoit alors tout ou une partie (due aux masquages) du mot de code généré par les noeuds relais, avec éventuellement des erreurs (dues à la transmission radio). Il utilise son décodeur pour récupérer les premiers symboles codés non reçus (appelés aussi effacements) et éventuellement corriger les premiers symboles codés erronés. La taille des premiers symboles source étant de L seconds symboles, l'opération de combinaison est réitérée L fois dans un noeud relais, et l'opération de décodage est réitérée L fois dans un noeud destination. Un nombre L de décodage permet de décoder simultanément K premiers symboles source. Chaque combinaison est le résultat de l'addition de K premier symboles sources après multiplication de chaque premier symbole source par un coefficient prédéfini et fonction de la combinaison choisie. L'ensemble des coefficients multiplicateurs forme la matrice génératrice G du code distribué. La matrice génératrice G possède donc K colonnes et un minimum de N=K+2 lignes si l'on veut pouvoir corriger au moins une erreur. Rappelons que pour un code ayant une capacité de correction de R (R=N-K), si E est le nombre de symboles erronés reçus (erreurs dues à la transmission radio) et F le nombre de symboles effacés (symboles erronés localisés dus aux masquages), alors le décodeur sera capable de retrouver le mot de code d'origine si 2*E+F R. Les noeuds relais ont la charge de créer les combinaisons définies par la matrice génératrice G, chaque noeud relais prend en charge un certain nombre de lignes de G. Un inconvénient de la deuxième technique connue (que le code distribué soit ou non un code correcteur) est qu'elle est sensible aux masquages. En effet, lorsqu'un noeud relais n'a pas reçu tous les premiers symboles source d'un groupe de premiers symboles qu'il doit combiner, alors le noeud relais est dans l'incapacité de réaliser la combinaison prévue. Il ne peut donc transmettre la combinaison de premiers symboles source prévue (c'est-à-dire un des premiers symboles codés du mot de code), même si par ailleurs il a bien reçu certains des premiers symboles source de cette combinaison. Cette situation se produit dès qu'au moins un premier symbole source est manquant, donc chaque fois qu'une condition de masquage entre un noeud source et un noeud relais empêche le noeud relais de recevoir au moins un premier symbole source à combiner. En conséquence, le noeud destination devra positionner un effacement pour chaque combinaison manquante, ce qui diminue la capacité de décodage du code distribué. Ce problème apparaît immanquablement dans un réseau sans fil où les pertes de trames radio sont fréquentes. Cela est d'autant plus critique dans le contexte d'un réseau haut débit utilisant par exemple un canal radio 60GHz. Grâce à une largeur de bande étendue, les systèmes de transmission radio à 60GHz sont particulièrement bien adaptés pour une transmission de données très haut débit, mais une des difficultés de leur mise en oeuvre est le fort taux d'atténuation du signal radio conjugué au faible taux de réflexion sur les obstacles que l'on peut rencontrer dans l'environnement. Ce type de communications radio est donc fortement exposé aux pertes de trames radio. Par ailleurs, certaines applications dites « temps réel », notamment dans le domaine de l'audio et de la vidéo, requièrent un temps de latence très faible n'autorisant pas toujours la mise en place de protocoles de demande de retransmission.
Un autre inconvénient de la deuxième technique connue, lorsque le code distribué est un code correcteur, est qu'elle est sensible aux erreurs aléatoires survenant pendant la transmission de données entre un noeud source et un noeud relais. En effet, lorsqu'un noeud relais reçoit un premier symbole source erroné (c'est-à-dire contenant un nombre de seconds symboles erronés supérieur à un seuil), toutes les combinaisons de premiers symboles source générées par le noeud relais avec ce premier symbole source contiendront des seconds symboles erronés aux mêmes positions que dans le premier symbole source. Dans le noeud destination, chaque tentative de décodage réalisée à ces positions erronées, risque d'échouer de par la présence d'un trop grand nombre de seconds symboles erronés. Si le noeud relais est capable de détecter des erreurs dans les premiers symboles source reçus, il devra donc s'abstenir de transmettre plus d'une combinaison d'un groupe de premiers symboles source si au moins un des premiers symboles source est erroné. Dans cette situation, le noeud relais qui doit générer plusieurs combinaisons d'un même groupe de premiers symboles ne sera pas utilisé de façon optimale. Le document de brevet US 7,380,193 décrit l'utilisation d'un code correcteur distribué dans un réseau maillé sans fil comportant un certain nombre de noeuds source, un certain nombre de noeuds relais, chacun recevant des paquets de données provenant de tous les noeuds source, et un noeud destination recevant les données provenant de tous les noeuds source et de tous les noeuds relais. Pour faire face aux erreurs de transmission, les noeuds relais génèrent de la redondance de façon distribuée, la redondance pouvant être par exemple un code Reed-Solomon. Dans ce document de brevet, il est considéré une connectivité complète entre les noeuds source, relais et destination. Il n'est aucunement question d'apporter des solutions en cas de masquage transitoire ou permanent intervenant en cours de fonctionnement du réseau. 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 distribué dans un réseau maillé, permettant d'optimiser les performances du code distribué face aux obstacles et notamment de diminuer l'impact des masquages sur la capacité de décodage. Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique permettant, lorsque le code distribué est un code correcteur distribué, de limiter l'impact des erreurs aléatoires survenant pendant la transmission de données entre un noeud source et un noeud relais.
Encore un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui n'introduise pas de complexité ni de temps de traitement supplémentaire dans le noeud destination, afin que cette technique soit compatible avec un système de communications avec une contrainte de faible latence (système « temps réel »).
Un objectif complémentaire 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 transmission, à un noeud destination, de M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau. La matrice de codage réseau comprend N lignes, avec M<N. M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée à un noeud relais qui doit générer le symbole codé particulier défini par ladite ligne. Ledit noeud relais, s'il est incapable de générer le symbole codé particulier défini par ladite au moins une ligne qui lui est attribuée, effectue des étapes consistant à : - sélectionner, parmi les N lignes, une ligne définissant un symbole codé que le noeud relais peut générer, en tant que symbole de remplacement ; - générer et transmettre au noeud destination ledit symbole de remplacement, accompagné d'une information de remplacement indiquant quelle ligne de la matrice définit ledit symbole de remplacement. Le principe général de l'invention consiste donc à utiliser une matrice de codage réseau (qui définit un code distribué) comprenant plus de lignes (N) que le nombre (M) de symboles codés du mot de code effectivement transmis vers le noeud destination. En outre, seulement M lignes sont attribuées et réparties de manière prédéterminée parmi le ou les noeuds relais (et éventuellement aussi parmi le ou les noeuds source). Grâce à cette approche tout à fait nouvelle et inventive, l'utilisation d'un noeud relais est toujours optimisée quelle que soit la qualité des transmissions. En effet, un noeud relais n'est plus contraint de générer et de transmettre en permanence le même symbole codé du mot de code. Selon les qualités de transmission (pertes, introduction d'erreurs), un noeud relais a la possibilité de choisir de générer un quelconque symbole codé parmi les N symboles codés constituant le mot de code. En cas de mauvaises conditions de transmissions provoquant des pertes ou des erreurs de réception de certains symboles source, si le noeud relais ne peut pas générer le symbole codé prévu, alors il transmet un autre symbole codé (c'est-à-dire une autre combinaison de symboles source) plutôt que de ne rien transmettre. Ceci permet d'optimiser les performances du code distribué face aux obstacles et notamment de diminuer l'impact des masquages sur la capacité de décodage. En outre, cette technique est compatible avec un système de communications avec une contrainte de faible latence (système « temps réel »). En effet, quelles que soient les combinaisons de symboles sources générées par le ou les noeuds relais, le noeud destination utilise toujours la même matrice de codage réseau, qui n'a donc pas à être recalculée (ce qui introduirait une complexité et un temps de traitement supplémentaire dans le noeud destination). De façon avantageuse, N-M lignes de la matrice, autres que lesdites M lignes, ne sont attribuées à aucun noeud et ne combinent chacune qu'une partie des symboles source. L'étape consistant à sélectionner une ligne définissant un symbole de remplacement, comprend une étape consistant à sélectionner prioritairement une des N-M lignes non attribuées. Ainsi, en utilisant une des N-M lignes non attribuées quand une ligne attribuée n'est pas réalisable par le noeud relais (c'est-à-dire quand le noeud relais ne peut pas générer le symbole codé défini par cette ligne qui lui est attribuée), on cherche à augmenter le nombre total de symboles codés différents transmis vers le noeud destination (ce nombre étant inférieur ou égal à m) et on augmente donc la quantité de symboles source pouvant être retrouvés par le décodage effectué par le noeud destination. Avantageusement, l'étape consistant à sélectionner une ligne définissant un symbole de remplacement prend en compte au moins une autre information de remplacement transmise par un autre noeud relais, de sorte que la ligne sélectionnée par le noeud relais est, si possible, différente de la ligne indiquée par ladite au moins une autre information de remplacement. Ainsi, en cherchant à éviter que deux noeuds relais utilisent une même ligne de remplacement, on cherche à augmenter le nombre total de symboles codés différents transmis vers le noeud destination (ce nombre étant inférieur ou égal à m) et on augmente donc la quantité de symboles source pouvant être retrouvés par le décodage effectué par le noeud destination.
De façon avantageuse, ledit noeud relais est incapable de générer le symbole codé particulier défini par ladite au moins une ligne qui lui est attribuée si au moins une des conditions suivantes : - au moins un symbole source, nécessaire pour générer ledit symbole codé particulier n'a pas été reçu par ledit noeud relais ; - au moins un symbole source, nécessaire pour générer ledit symbole codé particulier a été reçu par ledit noeud relais avec un niveau de qualité inférieur à un seuil prédéterminé. La vérification de la première condition correspond à la détection d'une situation de masquage. La vérification de la deuxième condition correspond à la détection d'erreurs aléatoires survenant pendant la transmission de données entre un noeud source et le noeud relais. Avantageusement, la matrice de codage réseau est une matrice génératrice d'un code correcteur linéaire (N,K), avec K un nombre de symboles source que le noeud destination doit retrouver à partir des symboles codés. Ainsi, on utilise un code réseau particulier qui est un code correcteur distribué, permettant d'optimiser la robustesse du réseau. Ceci garantit également que les lignes de la matrice d'encodage sont indépendantes les unes de autres, ce qui augmente les chances de décodage.
Avantageusement, K = K1 + K2, avec K1 un nombre de symboles source réellement transmis par au moins un noeud source, et K2 un nombre de symboles source virtuels, de valeur nulle et transmis par aucun noeud source, ajoutés pour obtenir un code Maximum Distance Séparable. Ainsi, on obtient un code correcteur distribué MDS, avec une distance minimale de Hamming égale à N-K+1. Les K2 symboles sources virtuels ajoutés ne sont pas réellement émis par un noeud source, ils sont considérés comme émis par un noeud source virtuel. Ils sont de valeur nulle de sorte que ces symboles source virtuels n'interviennent pas dans les combinaisons linéaires effectuées par les noeuds relais. Avantageusement, la matrice génératrice d'un code correcteur linéaire (N,K) est une matrice systématique telle que les K premiers symboles du mot de code sont lesdits K symboles source.
Ainsi, l'opération de décodage est simplifiée puisque les K premiers symboles du mot de code correspondent aux K symboles source émis par le ou les noeuds source. Dans un autre mode de réalisation de l'invention, il est proposé un procédé de décodage, par un noeud destination, de M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau. La matrice de codage réseau comprend N lignes, avec M<N. M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée à un noeud relais qui doit générer le symbole codé particulier défini par ladite ligne. Le noeud destination effectue des étapes consistant à : recevoir M symboles codés, chaque symbole codé reçu étant : soit un symbole codé particulier, généré selon une des M lignes par un noeud auquel la ligne est attribuée, soit un symbole de remplacement, pour lequel une information de remplacement, reçue par le noeud destination en provenance d'un noeud relais ayant généré le symbole de remplacement, indique quelle ligne de la matrice définit ledit symbole de remplacement ; obtenir au moins une partie des symboles source, en fonction des symboles codés reçus et de la matrice. Comme déjà indiqué plus haut, le mécanisme mis en oeuvre dans le ou les noeuds relais permet d'optimiser les performances du code distribué face aux obstacles et notamment de diminuer l'impact des masquages sur la capacité de décodage. On notera que pour chaque symbole de remplacement, le noeud destination est en mesure d'identifier celui-ci grâce à l'information de remplacement également reçue par le noeud destination. Ainsi, le noeud destination est en mesure d'identifier et ordonner tous les symboles codés qu'il reçoit (ceux particuliers (attendus) et ceux de remplacement), pour effectuer le décodage. En outre, quels que soient les symboles codés reçus et quels que soient les symboles codés non reçus (ou reçus mais erronés), le noeud destination n'a pas à recalculer la matrice de codage réseau et la durée du processus de décodage n'est pas impactée (ce qui permet une compatibilité avec les systèmes « temps réel »).
Dans un autre mode de réalisation de l'invention, il est proposé un produit programme d'ordinateur qui 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 de l'invention, il est proposé un moyen de stockage lisible par ordinateur, 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 de l'invention, il est proposé un noeud relais adapté pour participer à la transmission, vers un noeud destination, de M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau. La matrice de codage réseau comprend N lignes, avec M<N. M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée audit noeud relais qui doit générer le symbole codé particulier défini par ladite ligne. Ledit noeud relais comprend les moyens suivants, qui sont activés si ledit noeud relais est incapable de générer le symbole codé particulier défini par ladite au moins une ligne qui lui est attribuée : - des moyens pour sélectionner, parmi les N lignes, une ligne définissant un symbole codé que le noeud relais peut générer, en tant que symbole de remplacement ; - des moyens pour générer et transmettre au noeud destination ledit symbole de remplacement, accompagné d'une information de remplacement indiquant quelle ligne de la matrice définit ledit symbole de remplacement.
Dans un autre mode de réalisation de l'invention, il est proposé un noeud destination, adapté pour décoder M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau. La matrice de codage réseau comprend N lignes, avec M<N. M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée à un noeud relais qui doit générer le symbole codé particulier défini par ladite ligne. Le noeud destination comprend : - des moyens pour recevoir M symboles codés, chaque symbole codé reçu étant : soit un symbole codé particulier, généré selon une des M lignes par un noeud auquel la ligne est attribuée, soit un symbole de remplacement, pour lequel une information de remplacement, reçue par le noeud destination en provenance d'un noeud relais ayant généré le symbole de remplacement, indique quelle ligne de la matrice définit ledit symbole de remplacement ; - des moyens pour obtenir au moins une partie des symboles source, en fonction des symboles codés reçus et de la matrice. 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 présente un exemple de réseau maillé sans fil dans lequel peut être mis en oeuvre la technique selon l'invention ; - la figure 2 illustre un exemple de structure d'une supertrame, d'une trame radio et d'un paquet, dans un mode de réalisation particulier de l'invention ; - la figure 3 illustre sous forme matricielle les opérations de codage réseau effectuées par les noeuds source et relais de la figure 1, dans un mode de réalisation particulier de l'invention ; - la figure 4 présente un schéma bloc fonctionnel d'un dispositif de communication compris dans chacun des noeuds (noeud source, noeuds relais et noeud destination) de la figure 1 ; - la figure 5 présente un exemple de table utilisée pour le suivi des opérations de réception et de décodage des paquets ; - la figure 6 présente un organigramme de l'algorithme exécuté par un noeud relais et un noeud destination, à chaque supertrame, dans un mode de réalisation particulier de l'invention ; - la figure 7 présente un organigramme de l'algorithme exécuté par un noeud source et un noeud relais, à chaque supertrame, dans un mode de réalisation particulier de l'invention. 6. DESCRIPTION DÉTAILLÉE La figure 1 présente un exemple de réseau maillé sans fil dans lequel peut être mis en oeuvre la technique selon l'invention. Dans cet exemple, le réseau maillé sans fil est basé sur un canal RF à 60GHz. Il Le protocole d'accès au medium est un protocole d'accès multiple à répartition dans le temps, dit TDMA (pour « Time Division Multiplexing Access » en anglais), où durant une période fixe, appelée supertrame, chaque noeud du réseau a accès au médium durant un ou des intervalles de temps fixe (« slot» en anglais), aussi appelé « temps de transmission ». Suivant cette technique, chaque noeud est émetteur durant un ou des intervalles de temps précis et récepteur durant tous les autres intervalles de temps. Les séquences d'information envoyées dans le réseau sont dans un contenant de taille fixe appelé paquet, dont la structure est décrite ci-après en relation avec la figure 2. p bits consécutifs d'un paquet constituent un symbole sur le corps Fq avec q=2p. Par exemple, un paquet de 200 octets contient 200 symboles si la taille du corps est 28 ou 100 symboles si la taille du corps est 216. A titre d'exemple, la taille du corps choisi pour la suite de la description est 28, un symbole étant donc un octet. Les opérations d'addition, de multiplication et de division s'effectuent alors symbole par symbole dans GF(28). Selon les débits des applications supportées, un noeud source doit transmettre plusieurs paquets sources à chaque supertrame. Ces paquets sont regroupés pour former une trame radio émise cycliquement à chaque supertrame. Dans cet exemple, la trame radio émise par chaque noeud source ne contient qu'un seul paquet. Le noeud source SRC1 110 envoie un paquet source Sa dans la trame radio 115, le noeud source SRC2 120 envoie un paquet source Sb dans la trame radio 125, et le noeud source SRC3 130 envoie un paquet source Sb dans la trame radio 135. On suppose également que ces trois paquets sources Sa, Sb et Sb contiennent des données à destination du noeud destination DEST 170.
Pour faire face aux pertes de trames radio entre les noeuds source et le noeud destination, les trois noeuds relais 140, 150 et 160 relayent les paquets source Sa, Sb et Sb. est composé de trois noeuds source SRC1, SRC2 et SRC3 (référencés 110, 120, 130 respectivement), de trois noeuds relais REL1, REL2 et REL3 (référencés 140, 150, 160 respectivement) et d'un noeud destination DEST (référencé 170).
Dans les noeuds relais et le noeud destination, les paquets sont reçus avec une certaine qualité dépendant notamment de la puissance radio reçue, celle-ci étant corrélée entre autre à la puissance émise, aux gains d'antenne de transmission et de réception, à l'orientation des antennes, à la distance entre les noeuds émetteur/récepteur, à la présence d'obstacle et aussi à la réflexion des ondes radios dans l'environnement. Pour faire face aux erreurs aléatoires de transmission, un code correcteur d'erreur produit est implémenté. En premier lieu, chaque paquet source est encodé dans un des noeuds source, selon un premier code correcteur, appelé code correcteur source et qui est par exemple un code Reed-Solomon. En second lieu, les noeuds relais combinent entre eux les trois paquets source Sa, Sb et Sc, afin de créer un second code correcteur qui est un code correcteur distribué. Un paquet peut ici être considéré comme un symbole vis-à-vis du code correcteur distribué. Dans l'exemple de la figure 1, chaque noeud relais transmet trois combinaisons linéaires des trois paquets source Sa, Sb et Sc. Les trois combinaisons de paquets émises par le noeud REL1 sont notées r11, r12, r13 et sont transmises dans la trame radio 145. Les trois combinaisons de paquets émises par le noeud REL2 sont notées r21, r22, r23 et sont transmises dans la trame radio 155. Les trois combinaisons de paquets émises par le noeud REL3 sont notées r31, r32, r33 et sont transmises dans la trame radio 165. Comme détaillé à la figure 3, le second code correcteur est dans cet exemple un code Reed-Solomon qui a pour paramètres N=12 et K=3. On verra par la suite que, dans cet exemple de réalisation, la technique proposée consiste à étendre ce second code de façon à proposer des combinaisons alternatives aux noeuds relais. Le regroupement des trois paquets source constitue un groupe de paquets, et plusieurs groupes de paquets peuvent être gérés simultanément dans le réseau. Dans l'exemple de la figure 1, un seul groupe de trois paquets est constitué. De plus, la valeur du paramètre K=3 n'est en aucun cas limitative, toute autre valeur entière peut être choisie. Le noeud destination 170 reçoit les paquets des noeuds source et les paquets combinés provenant des noeuds relais avec une certaine qualité et applique alors un double décodage symbole par symbole. Un premier décodage selon le code correcteur source est effectué sur chaque paquet reçu (paquet source ou combinaison de paquets), puis un second décodage selon le code correcteur distribué est appliqué sur l'ensemble des paquets du groupe. Ces opérations sont effectuées à chaque supertrame, après réception des trames radio venant des noeuds source SRC1, SRC2, SRC3 et des noeuds relais REL1, REL2, et REL3. Lorsque le second décodage est effectué, si un paquet source ou une combinaison de paquets n'a pas été reçu par le noeud destination, alors une position d'effacement est considérée à la position du symbole correspondant au paquet manquant. La figure 2 illustre un exemple de structure d'une supertrame 200, d'une trame radio 205 et d'un paquet de données 210, dans un mode de réalisation particulier de l'invention et pour le réseau de la figure 1. Les noeuds transmettent leur trame radio 205 selon une séquence prédéfinie et répétée à chaque supertrame. Le noeud source SRC1 émet en premier sa trame radio 115, suivie de la trame radio 125 du noeud source SRC2 et de la trame radio 135 du noeud source SRC3, et enfin des trames radio 145, 155, 165 des noeuds relais REL1, REL2 et REL3 respectivement. La durée de la supertrame 200 est par exemple de lms. Le noeud source SRC1 est arbitrairement désigné comme noeud maître, qui impose le cadencement en émettant sa trame radio 115 en première position dans la supertrame. Les autres noeuds, dits noeuds esclaves, asservissent leur intervalle de temps de transmission en se basant sur l'instant de réception de la trame radio 115. En cas de masquage, un noeud esclave peut se référencer sur la réception d'une trame radio émise par un autre noeud esclave. La trame radio (la référence 205 exprime de manière générique l'une quelconque des références 115, 125, 135, 145, 155 et 165) est constituée de trois champs 211, 212, 213. Le premier champ 211 contient un préambule et un en-tête. Le préambule permet à l'électronique de réception radio de détecter un début de trame radio et de se synchroniser. L'en-tête de la trame radio contient des informations protocolaires comme par exemple l'identifiant du noeud émetteur, le rang de transmission de la trame radio dans la supertrame, la taille de la trame radio. Le second champ 212 contient des paquets sources émis par le noeud. Ces paquets contiennent des données issues des applications productrices qui sont connectées au noeud. Le troisième champ 213 contient les combinaisons de paquets relayés. Dans l'exemple de la figure 1, le second champ 212 est vide pour les noeuds relais, et le troisième champ 213 est vide pour les noeuds source. Un paquet 210 est constitué lui aussi de trois champs 221, 222, 223. Le premier champ 221 est un en-tête permettant à un noeud relais d'indiquer la combinaison de paquets effectuée. La donnée utile contenue dans cet en-tête est donc une valeur qui permet au noeud destination d'ordonner les paquets reçus avant d'effectuer le second décodage selon le code correcteur distribué. Cette information devient pertinente lorsque la combinaison effectuée par le noeud relais n'est pas fixée pour toute la durée d'opération du système. Un code correcteur spécifique peut être appliqué à l'en-tête du paquet pour protéger cette information face aux erreurs de transmission. De façon simple, on peut répéter plusieurs fois la donnée utile. Le second champ 222 contient les données applicatives et le troisième champ 223 constitue la redondance produite par le code correcteur source appliqué aux données du second champ 222. A titre d'exemple, la taille totale du paquet, notée L (taille en symbole), sera de 224 octets avec 4 octets pour l'en-tête, 204 octets de données utiles et 16 octets de redondance. Dans l'exemple de la figure 1, on s'aperçoit que les noeuds relais pourraient transmettre les combinaisons de paquets pendant la même supertrame que celle pendant laquelle ont été émis les paquets source. Cependant, si l'on veut apporter de la flexibilité au système et supporter de nombreuses applications, il faut permettre à un noeud du réseau d'être simultanément source, relais et destination. Par conséquent, il est intéressant d'introduire une latence d'une supertrame entre l'émission d'un paquet source et sa retransmission dans un noeud relais. De plus, cela présente l'avantage de donner du temps aux noeuds relais pour corriger des erreurs aléatoires de transmission avant de combiner les paquets sources.
La figure 3 illustre sous forme matricielle les opérations de codage réseau effectuées par les noeuds source et relais de la figure 1, dans un mode de réalisation particulier de l'invention. Les opérations de codage effectuées par les noeuds relais 140, 150, 160 sont décrites respectivement par les équations 301, 302, 303. Chaque noeud relais possède son jeu de neuf coefficients du corps Fq, organisé sous forme de matrice 3*3, et l'opération de codage consiste à multiplier (multiplication et addition dans le corps Fq) cette matrice par la matrice 3*L des paquets source composée des trois lignes de longueur L : Sa, Sb et Sb. Le résultat est une matrice 3*L composée de trois lignes de longueur L. Le noeud relais 140 émet les trois combinaisons r11, r12, r13 (de longueur L) telles que : r11 = allSa+PllSb+l llSc r12 = a12Sa+P12Sb+Y12Sc r13 = a13Sa+P13Sb+/13Sc Le noeud relais 150 émet les trois combinaisons r21, r22, r23 telles que : r21 = a21Sa+P21Sb+/21Sc r22 = a22Sa+P22Sb+Y22Sc r23 - a23Sa+P23Sb+Y23Sc Le noeud relais 160 émet les trois combinaisons r31 , r32, r33 telles que : r31 = a31Sa+P31Sb+'31Sc r32 = a32Sa+P32Sb+y32Sc r33 = a33Sa+P33Sb+Y33Sc Les matrices 3*3 apparaissant respectivement dans les équations 201, 202, 203 seront appelés M1, M2, M3, comme montré dans les équations référencées 311, 312, 313. 20 Dans un mode de réalisation particulier, le code réseau distribué utilisé est un codage systématique : les K=3 premiers symboles du mot de code sont les paquets sources. Ils sont issus des paquets source transmis, sans combinaison, par les noeuds sources, et la matrice 3*3 associée est la matrice identité. L'équation 300 résume l'opération globale du réseau, dans un exemple classique 25 de code réseau. La matrice génératrice G est une matrice 12*3 composée de la matrice identité pour les données source, et de trois sous-matrices 3*3 qui sont attribuées aux trois noeuds relais 140, 150, 160 (ces trois sous-matrices correspondent aux trois matrices M1, M2, M3 discutées plus haut). Cette matrice génératrice G est multipliée par la matrice 30 3*L des paquets source (Sa, Sb et Sb) mentionnée ci-dessus. Le résultat est une matrice 12*L composée des 12 lignes de longueur L : (sl, s2, s3, r11, r12, r13, r21, r22, r23, r31, r32, r33)T, 15 représentant l'intégralité des données transmises par tous les noeuds sources et relais, et reçues (éventuellement avec des erreurs) par le noeud destination 170. Les coefficients de la matrice génératrice G sont choisis de façon qu'elle génère un code Reed-Solomon RS(12,3). Chacune des trois colonnes (1, 0, 0, «Il, a12, a13, a21, a22, a23, a31, a32, a33)T, (0, 1, 0, Nil, P12, P13, P21, P22, P23, P31, P32, P33)T et (0, 0, 1, Y11, Y12, ''13' ''21' Y22, Y23, Y31, Y32, Y33)T sont linéairement indépendantes, et par conséquent, chacune des L colonnes de la matrice (sl, S2, S3 , fil, r12, r13 , r21 , r22, r23, r31 , r32, r33)T constitue elle aussi un mot de code Reed-Solomon RS(12, 3). Un tel code RS(12,3) est capable de corriger E erreurs et F effacements tant que : 2*E+F 9.
Dans un mode particulier de réalisation, les paquets source (de longueur L) Sa, Sb et Sc envoyés par les noeuds source 115, 125 et 135 sont eux-mêmes déjà des mots de code Reed-Solomon RS(L,S) avec L=220 et S=204. Un tel code RS(L,S) est capable de corriger E erreurs et F effacements tant que : 2*E+F 16. La combinaison du code RS(12, 3) (codage correcteur distribué) et de ce code RS(L,S) (code correcteur source) forme un code produit, qui possède un pouvoir de correction particulièrement élevé. On note en particulier que les paquets retransmis par les noeuds relais sont des combinaisons linéaires au-dessus du même corps de Galois des mots de code RS(L, S) envoyés par le noeud source, ils sont donc eux-mêmes des mots de code RS(L, S).
Tout type de code Reed-Solomon peut être utilisé, ce peut être un code tronqué ou un code raccourci. Les N-K dernières lignes de la matrice génératrice G ne contiennent pas de valeur nulle. En effet, d'une part il est intéressant d'augmenter la redondance des paquets en combinant toujours tous les paquets du groupe. D'autre part, pour ne pas diminuer la distance de Hamming minimale entre deux mots de code, le nombre de valeur nulle dans une colonne de la matrice génératrice G doit être strictement inférieur à K. Comme il y a déjà K-1 valeurs nulles dans les K premières lignes de la matrice génératrice G (sous-matrice identité), cela n'autorise aucune valeur nulle dans les N-K lignes restantes.
De retour sur la figure 1, si un obstacle survient entre le noeud relais REL1 140 et le noeud source SRC3 130, alors le noeud relais REL1 140 ne peut plus recevoir le paquet source Sc, et se retrouve dans l'incapacité de produire les combinaisons r11, r12, r13. Le noeud destination DEST 170 positionne des effacements pour les lignes r11, r12, r13. Supposons que le noeud destination soit éloigné des noeuds source et qu'il ne reçoive pas non plus les paquets source Sa, Sb et Sc. On s'aperçoit qu'au total le noeud destination positionne 6 effacements (pour les lignes s1, s2, s3, r11, r12, r13), ce qui ne laisse au code correcteur distribué qu'un pouvoir de correction de 1 erreur (2*1+6 = 8 9 mais 2*2+6 =10>9). Pour améliorer ce pouvoir de correction, et de décodage en général, le principe général de la présente technique consiste à étendre la matrice génératrice G (la matrice génératrice étendue que l'on obtient est notée G') en proposant des combinaisons supplémentaires qui ne nécessitent pas de disposer de tous les paquets source pour réaliser des combinaisons. L'équation 320 résume l'opération globale du réseau, dans un exemple de code réseau selon l'invention. La matrice génératrice étendue G' contient trois lignes supplémentaires r 1,rx2, 1'0 telles que: rx1 = c(,,ISa+P,ÇISb rx2=ax2Sa+1x2Sc rx3 = Px3Sb+Ix3Sc La ligne rxl ne combine que les paquets source Sa et Sb, la ligne rx2 ne combine que les paquets source Sa et Sc, et la ligne rx3 ne combinent que les paquets source Sb et Sc. Ces combinaisons ne sont pas attribuées à un noeud relais en particulier, elles sont choisies lorsqu'un noeud relais n'est pas en mesure de réaliser les combinaisons qu'il doit effectuer par défaut. Le code correcteur distribué devient alors un code Reed-Solomon RS(15,3). Bien entendu, cela suppose ((~~de((~~calculer ((~~de nouveaux coefficients de G : an, a12, a13, a21, a22, a23, a31, a32, a33, P11' P12, P13, P21, P22, P23, P31, P32, P33, Y11' Y12, Y13, Y21, Y22, Y23, Y31, Y32, Y33 deviennent a'11, (1'12, (1'13, a'21, (1'22, (1'23, (1'31, (1'32, (1'33, 11, 12, 13, 21, 22, 13'23, 13'31, 13'32, 13'33, Y'11, Y'12,Y'13,Y'21,Y'22, Y' 23, Y'31,Y'32, Y'33 On remarque que le nombre de valeur nulle dans chaque colonne de la matrice génératrice étendue G' devient égal à 3 alors que le paramètre K du code est également 3. Pour maintenir un code Reed-Solomon, il faudrait un paramètre K égal au moins à 4.
L'astuce consiste alors à considérer un paquet source supplémentaire virtuel tel que tous ses symboles sont de valeur nulle. Le code Reed-Solomon obtenu est un code RS(15,4), sachant que le paquet source virtuel est connu d'avance et n'est jamais transmis sur le réseau. L'équation 320 est toujours valable et le code a une capacité de correction maximale de 4 erreurs : 2*4+3 = 11 15-4. En effet, il y a toujours trois effacements au minimum puisque les noeuds source et relais constituent et transmettent au maximum douze lignes sur les quinze possibles au total. C'est une capacité de correction équivalente au RS(12,3) initial (2*4+0=8 12-3). En revenant à la situation de masquage citée précédemment, si le noeud relais REL1 140 n'a pas reçu le paquet source Sc, alors il choisit de retransmettre les lignes s1, s2, et rx1. En conséquence, le noeud destination DEST 170 positionne 6 effacements pour les lignes s3, r11, r12, r13, rx2 et rx3. Le code correcteur distribué peut donc corriger au plus 2 erreurs (2*2+6=10 11). Cela représente une capacité de correction deux fois plus grande que dans le cas du code RS(12,3).
Tout ceci n'est possible que si le noeud relais peut indiquer au noeud destination les combinaisons qu'il a choisies pour la retransmission. Le moyen utilisé est par exemple un en-tête spécifique pour chaque paquet. Lorsqu'un noeud source émet un paquet source, la valeur de l'en-tête est nulle. Si un noeud relais réalise les combinaisons prévues par défaut, l'en-tête n'est pas modifié et sa valeur reste nulle. Si le noeud relais choisit une combinaison qui n'est pas celle prévue par défaut, il indique alors dans l'en-tête le numéro de la ligne correspondante dans la matrice génératrice étendue G'. Dans l'exemple ci-dessus, le noeud relais REL1 140 émet : - à la place du paquet r11, un paquet avec une valeur d'en-tête égale à 1 (pour indiquer qu'il a été généré selon la Ère ligne de G'), - à la place du paquet r12, un paquet avec une valeur d'en-tête égale à 2 (pour indiquer qu'il a été généré selon la 2ème ligne de G'), et - à la place du paquet r13, un paquet avec une valeur d'en-tête égale à 13 (pour indiquer qu'il a été généré selon la 13ème ligne de G'). Pour compléter la solution, il devient également possible, dans un noeud relais, de ne pas combiner un paquet source qui est reçu mais contient des symboles erronés. Si le noeud relais a le temps de détecter des erreurs dans un paquet reçu, ou même le temps de tenter de les corriger, alors il est en mesure de déterminer si les paquets à combiner sont erronés ou pas. Pour éviter de dupliquer les erreurs, le noeud relais ne réalise pas de combinaison incluant un paquet erroné (c'est-à-dire possédant un niveau de qualité inférieur à un seuil prédéterminé).
Le principal avantage d'étendre la matrice génératrice est d'augmenter la capacité de décodage du code distribué en cas d'erreurs de transmission provoquées par de mauvaises conditions radio (masquages ou erreurs aléatoires). Un autre avantage de cette méthode est qu'elle ne rajoute aucun traitement supplémentaire dans les noeuds source, relais ou destination. La matrice génératrice étendue G' est construite à l'initialisation du système, elle est unique pour tous les noeuds et est utilisée pendant tout le fonctionnement du réseau, quelles que soient les conditions de transmission. La figure 4 présente un dispositif de communication 400 compris dans chacun des noeuds source 110, 120, 130, relais 140, 150, 160 et destination 170 du réseau de la figure 1 (110, 120, 130, 140, 150, 160, 170), dans un mode de réalisation particulier de l'invention. La technique proposée (voir les exemples d'algorithmes décrits ci-après en relation avec les figures 6 et 7) se réalise indifféremment comme un programme exécuté sur une machine de calcul reprogrammable (par exemple un PC, un DSP, ou un microcontrôleur) ou sur une machine de calcul dédiée (par exemple un ensemble de portes logiques comme un FPGA ou un ASIC). On présente maintenant plus en détail la structure et le fonctionnement du dispositif de communication 400. Une unité centrale de calcul (CPU) 410 exécute le code programme implémentant les algorithmes précités, et qui est stocké dans la zone ROM d'une mémoire RAM/ROM (« Read Only Memory » / « Random Access Memory ») 420. Ce code programme permet, quand il est exécuté, de s'interfacer avec un opérateur au travers d'une interface utilisateur 415 pour configurer les différents modules actifs du dispositif 400 : module d'interface applications 405, module encodeur 455, module décodeur 425, module d'interface émetteur radio 430, module d'interface récepteur radio 435. Pour ne pas surcharger la figure, les connections entre ces différents modules et le CPU 410 ne sont pas représentées.
La zone ROM de la mémoire RAM/ROM 420 stocke des variables nécessaires pour l'invention, comme par exemple une matrice génératrice d'encodage prédéterminée (correspondant à la matrice génératrice étendue G' ci-dessus). L'interface utilisateur 415 est utilisée afin que l'utilisateur entre les paramètres nécessaires à l'invention et non présents en mémoire, tels que : la capacité de correction R du code distribué si l'utilisateur désire utiliser une autre matrice que celle mémorisée dans la mémoire 420, ou les paramètres des applications supportées (débit entrant, débit sortant). Ces variables sont stockées dans la zone RAM de la mémoire 420. Selon les paramètres utilisateur, le CPU 410 calcule les différentes variables qui sont utilisées par les différents modules telles que : le nombre de paquets à transmettre, à recevoir, à retransmettre, le nombre de groupe de paquets et la constitution de ces groupes, la séquence TDMA, la taille des trames radio, la nature des paquets contenus dans chaque trame radio. Les informations utiles à chaque module sont fournies par le CPU et sont stockées dans des registres propres aux modules.
Le dispositif 400 est en relation avec les applications par l'intermédiaire du module interface applications 405. Pour chacun des noeuds source (référencés 110, 120 et 130 sur la figure 1), le module interface applications 405 récupère les données provenant des applications productrices connectées au dispositif 400, et les stocke dans une mémoire d'encodage 460 de type RAM. Pour un noeud destination (référencé 170 sur la figure 1), le module interface applications 405 lit les données applicatives reçues qui sont disponibles dans la mémoire de décodage 465 de type RAM, et les transmet aux applications consommatrices connectées au dispositif 400. Le module décodeur 425 est en charge de décoder les paquets reçus sur l'interface récepteur radio 435 et disponibles dans la mémoire de réception de type RAM 470. Lorsqu'un nouveau paquet est reçu, le module décodeur 425 effectue un décodage de l'en-tête du paquet et un décodage des données utiles selon le code correcteur source. Le résultat est stocké en mémoire de réception 470 à la place du paquet reçu, et est également stocké dans la mémoire de retransmission de type RAM 480 s'il s'agit d'un paquet source. Le module décodeur 425 maintient une table de réception dont un exemple est donné à la figure 5 (voir description détaillée ci-dessous). Cette table renseigne sur l'état courant de chaque ligne de chaque groupe : indication de si la ligne (paquet source ou combinaison) a été reçue et si le décodage selon le code correcteur source a été réalisé avec succès (la ligne ne contient plus d'erreur). Cette table de réception est stockée dans la mémoire de retransmission 480 de façon que le module encodeur 455 puisse aussi y avoir accès en lecture. Lorsque tous les paquets d'une supertrame ont été réceptionnés, le module décodeur 425 effectue le décodage des groupes de paquets selon le code correcteur distribué. Cette opération n'est effectuée que pour les groupes de paquets comportant des données à destination des applications consommatrices connectées au noeud. Les paquets sources décodés sont stockés dans la mémoire de décodage 465.
Pour gérer la latence d'une supertrame entre l'émission de paquets sources et leur retransmission, il est nécessaire de doubler certaines mémoires. En effet, la mémoire de décodage 465 doit être doublée avec une utilisation alternée de chaque bloc mémoire. Le premier bloc contient les données issues des paquets sources décodés pendant la supertrame courante, et le second bloc contient les données issues des paquets sources décodés pendant la supertrame précédente. Ces données plus anciennes sont en cours de transfert vers les applications consommatrices et ne doivent pas être écrasées par les nouvelles données. Au début de la supertrame suivante le rôle des blocs s'inverse : le premier bloc contient les données de la supertrame précédente, et le second bloc accueille des données transmises pendant la nouvelle supertrame. De même la mémoire de réception 470 est doublée avec une utilisation alternée de chaque bloc mémoire. Le premier bloc contient les paquets source qui sont reçus pendant la supertrame courante et qui seront décodés selon le code correcteur distribué pendant la supertrame suivante. Le deuxième bloc contient les paquets sources qui ont été reçus pendant la supertrame précédente, et les combinaisons de paquets qui sont reçus pendant la supertrame courante. Les paquets de ce deuxième bloc sont décodés selon le code correcteur distribué pendant la supertrame courante. Enfin, la table de réception doit être également doublée et utilisée de la même façon. Le module encodeur 455 est en charge de construire les paquets à transmettre sur le réseau. En premier lieu, il récupère les données applicatives source contenues dans la mémoire d'encodage 460, il les organise par bloc de taille égale au champ de données utiles 222 d'un paquet (par exemple 204 octets), il encode chaque bloc de données avec le code correcteur source (par exemple RS(220, 204)), il ajoute ensuite un en-tête de valeur nulle, et stocke le tout dans la mémoire de transmission 475. Le nombre de paquets à construire dépend du débit des applications source. En second lieu, le module encodeur 455 construit les combinaisons de paquets à partir des paquets source disponibles dans la mémoire de retransmission 480. Pour cela, il attend la fin de la réception des paquets, consulte la table de réception maintenue par le module décodeur 425, et construit les combinaisons en fonction des informations contenues dans la table de réception. Le résultat est stocké dans la mémoire de transmission 475. Ces opérations ne sont pas très coûteuses en temps de traitement, et peuvent être effectuées durant la supertrame courante. L'interface émetteur radio 430 est chargée de la création des trames, à partir des paquets stockés en mémoire de transmission 475, et de la transmission de ces trames à un dispositif émetteur/récepteur radio 440. Le dispositif émetteur/récepteur radio 440 réalise la modulation du signal qui est émis sur le medium par l'intermédiaire d'une antenne d'émission 445. Pour le côté réception, le signal radio est reçu par l'intermédiaire d'une antenne de réception 450, le signal est démodulé dans le dispositif émetteur/récepteur radio 440 et transmis au module d'interface récepteur radio 435. Ce module 435 est en charge d'extraire les paquets contenus dans les trames et de les stocker en mémoire de réception 470. Chaque réception de paquet est signalée au module décodeur 425 en lui indiquant le groupe et la ligne attendue par défaut. Si le noeud est un noeud esclave, le module interface récepteur radio 435 met également en oeuvre le mécanisme de synchronisation du cycle de supertrame par rapport au noeud maître. La figure 5 présente un exemple de table de réception 500, maintenue par le module décodeur 425 de la figure 4. Comme expliqué précédemment, cette table 500 est divisée en deux blocs 510 et 520 : l'un pour gérer les données de la supertrame courante et l'autre pour gérer les données de la supertrame précédente. Chaque ligne de la table correspond à l'une des lignes d'un groupe de paquets (c'est-à-dire à l'un des symboles codés d'un mot de code du codage distribué). La première ligne de la table correspond à la première ligne du premier groupe, la quinzième ligne correspond à la quinzième ligne du premier groupe. Puisqu'on utilise un code correcteur distribué RS(15,4), les quinze premières lignes correspondent au premier groupe de paquets source, la seizième ligne correspond à la première ligne du second groupe, et ainsi de suite. Pour chaque ligne, on trouve trois champs de renseignement 511, 512, 513 pour le premier bloc, et les trois mêmes champs 521, 522, 523 pour le second bloc. Les champs 511 et 521 représentent un bit de réception, indiquant si le paquet source ou la combinaison de paquets source correspondant à cette ligne a été reçu. Les champs 512 et 522 représentent un bit de décodage, indiquant si le paquet source ou la combinaison de paquets source correspondant à cette ligne a été décodé avec succès selon le code correcteur source. Cette information peut être fournie par le décodeur Reed-Solomon à l'issue de l'opération de décodage. Les champs 513 et 523 représentent plusieurs bits d'adresse (par exemple 16 bits), indiquant l'adresse à laquelle est stocké le paquet source ou la combinaison de paquets source correspondant, en mémoire de réception 470 et en mémoire de retransmission 480. A la fin d'une supertrame, le bloc contenant les données de la supertrame qui se termine est réinitialisé : bit de réception à 0, bit de décodage à 0 et bits d'adresse à 0. La figure 6 décrit l'algorithme exécuté par le module décodeur 425 dans le cas d'un noeud relais ou destination, dans un mode de réalisation particulier de l'invention. Au démarrage, à l'étape 600, le module décodeur 425 est en attente de début de réception de trames radio pour une nouvelle supertrame. A l'étape 602, il procède à une première réception de paquet, selon une indication fournie par le module d'interface récepteur radio 435. Le décodage selon le code correcteur source peut s'effectuer dès cette étape 602, et le paquet décodé (quel que soit le résultat : échec ou succès) est stocké à la même adresse dans la mémoire de réception 470. Dans une étape 604, le module décodeur 425 détermine si le paquet décodé est un paquet source (transmis par un noeud source) ou une combinaison linéaire de paquets sources (c'est-à-dire un paquet résultant d'une combinaison effectuée par un noeud relais). Si le test de l'étape 604 indique un paquet source, alors dans une étape 606 ce paquet est également stocké en mémoire de retransmission 480, et la table de réception correspondante 510 ou 520 est mise à jour.
Si le test de l'étape 604 indique qu'il s'agit d'une combinaison linéaire de paquets sources, il est nécessaire de décoder l'en-tête 221 du paquet à l'étape 610 pour connaître la nature de la combinaison reçue. Le test de l'étape 612 renseigne sur la validité de l'en-tête : si l'en-tête n'est pas décodable, le paquet ne sera pas exploité par la suite et on passe directement à l'étape 616 ; si l'en-tête est correct, on passe à l'étape 614 dans laquelle la table de réception 510 ou 520 est mise à jour pour la ligne indiquée par le contenu de l'en-tête du paquet, puis à l'étape 616. Plus précisément, dans l'étape 614, si la ligne avait déjà été reçue auparavant, le module décodeur 425 regarde si la ligne déjà reçue contient des erreurs (champ 512 ou 522 de la table de réception) : - si la ligne déjà reçue est sans erreur, la nouvelle copie reçue est inutile et la table n'est pas modifiée ; - si la ligne déjà reçue contient des erreurs, et si la nouvelle copie reçue est sans erreur, alors la table de réception est mise à jour en conservant la nouvelle copie. Le champ 512 ou 522 indique que la ligne est décodée et le champ 513 ou 523 indique la nouvelle adresse de stockage en mémoire. La ligne reçue auparavant ne sera pas exploitée par la suite ; - si la ligne déjà reçue contient des erreurs, et si la nouvelle copie reçue en contient également, alors la table n'est pas modifiée, on garde la première copie. Dans l'étape 616, le module décodeur 425 teste si toutes les trames reçues ont été traitées. Si ce n'est pas le cas, on retourne à l'étape 602 pour traiter le paquet suivant. Si toutes les trames reçues ont été traitées, alors : - si le noeud dans lequel il est compris est un noeud relais, le module décodeur 425 passe directement à l'étape 624 (décrite ci-après) puis retourne à l'étape initiale 25 600 ; - si le noeud dans lequel il est compris est un noeud destination, le module décodeur 425 effectue les étapes 618 à 622 (décrites ci-après) afin de procéder au second décodage, selon le code correcteur distribué. Dans l'étape 618, le module décodeur 425 prépare le décodage de chaque groupe 30 contenant des paquets source destinés au noeud destination (dans lequel est compris le module décodeur 425). Cette information a été fournie par le CPU 410 à l'initialisation 20 du noeud destination. Le module décodeur 425 consulte la table de réception 510 ou 520 et compte le nombre de lignes reçues pour chaque groupe. Puis une analyse est effectuée en fonction du nombre et des numéros de lignes reçues afin de déterminer les paquets source qui pourront être décodés, ainsi que l'algorithme à utiliser pour le décodage.
Si pour un groupe de paquets donné, au moins quatre lignes ont été reçues, alors les trois paquets source vont pouvoir être décodés en utilisant le code correcteur distribué. Si au plus trois lignes ont été reçues, il y a trop d'effacements pour utiliser le code distribué. Il faut alors tenter de retrouver le maximum de paquets par combinaison 10 des lignes reçues. En prenant l'exemple du groupe de paquets de la figure 1, on liste ci-dessous tous les cas pouvant se produire : - si trois lignes ont été reçues : - si les lignes sl, s2 et rxl ont été reçues alors les données des paquets sources Sa et Sb seront transférées aux applications sans traitement supplémentaire, les données du paquet source Sc seront manquantes ; - si les lignes sl, s3 et rx2 ont été reçues alors les données des paquets sources Sa et Sc seront transférées aux applications sans traitement supplémentaire, les données du paquet source Sb seront manquantes ; - si les lignes s2, s3 et rx3 ont été reçues alors les données des paquets sources Sb et Sc seront transférées aux applications sans traitement supplémentaire, les données du paquet source Sa seront manquantes ; - dans tous les autres cas, il faut procéder par résolution de 3 équations à 3 inconnues en utilisant si possible la sous-matrice de G' inversée qui contient les coefficients correspondant aux lignes reçues. Les données de tous les paquets sources Sa et Sb et Sc seront transférées aux applications. - si deux lignes ont été reçues : - si deux des trois lignes sl, s2, s3 ont été reçues alors les données des paquets sources correspondants seront transférées aux applications sans traitement supplémentaire ; 15 20 25 - si les lignes sI et rxl ont été reçues alors le paquet source Sb est récupérable, les données des paquets sources Sa et Sb seront transférées aux applications, les données du paquet source Sc seront manquantes ; - si les lignes sI et rx2 ont été reçues alors le paquet source Sc est récupérable, les données des paquets sources Sa et Sc seront transférées aux applications, les données du paquet source Sb seront manquantes ; - si les lignes s2 et rxl ont été reçues alors le paquet source Sa est récupérable, les données des paquets sources Sa et Sb seront transférées aux applications, les données du paquet source Sc seront manquantes ; - si les lignes s2 et rx3 ont été reçues alors le paquet source Sc est récupérable, les données des paquets sources Sb et Sc seront transférées aux applications, les données du paquet source Sa seront manquantes ; - si les lignes s3 et rxz ont été reçues alors le paquet source Sa est récupérable, les données des paquets sources Sa et Sc seront transférées aux applications, les données du paquet source Sb seront manquantes ; - si les lignes s3 et rx3 ont été reçues alors le paquet source Sb est récupérable, les données des paquets sources Sb et Sc seront transférées aux applications, les données du paquet source Sa seront manquantes. - si une ligne seulement a été reçue et qu'il s'agit d'une des trois lignes sl, s2, s3 alors les données du paquet source correspondant seront transférées aux applications sans traitement supplémentaire. Dans l'étape 620, le module décodeur 425 procède au décodage de chaque groupe de paquets en utilisant le résultat de l'analyse de l'étape précédente 618. Dans le cas où au moins 4 lignes ont été reçues et en cas d'échec du décodage du code correcteur distribué (Reed-Solomon dans notre exemple), alors une indication d'erreur sera transférée aux applications pour les données non décodées. Par exemple, si le décodeur du code correcteur distribué a été en échec à la jème colonne d'un groupe de paquets, alors les données du jème symbole des trois paquets sources seront marquées comme erronées. Il est à noter que si la table de réception 510 ou 520 indique qu'un paquet source avait été reçu et était déjà correctement décodé grâce au code correcteur source, alors on pourra transférer aux applications ce paquet source correct sans tenir compte des échecs de décodage avec le code correcteur distribué. Dans le cas où au plus trois lignes ont été reçues, si un paquet source est reconstitué à partir d'autres lignes reçues, et si le jème symbole est erroné dans une des lignes utilisées pour l'opération, alors le jème symbole sera également erroné dans le paquet source reconstitué. Dans tous les cas, le résultat du décodage est stocké en mémoire de décodage 465, dans une étape 622. Dans l'étape 624, le module décodeur 425, réinitialise la table de réception contenant les données de la supertrame courante : bit de réception à 0, bit de décodage à 0 et bits d'adresse à 0. Enfin, le module décodeur 425 retourne à l'étape initiale 600 d'attente de réception de trames dans la prochaine supertrame. La figure 7 décrit l'algorithme exécuté par le module encodeur 455 dans le cas d'un noeud source ou relais, dans un mode de réalisation particulier de l'invention. Au démarrage, à l'étape 700, le module encodeur 455 est en attente de fin de période de transmission de trames dans une nouvelle supertrame. Lorsque le noeud (noeud source ou relais, dans lequel est compris le module encodeur 455) a terminé de transmettre ses trames, le module encodeur 455 peut construire les paquets qui seront transmis à la supertrame suivante. Il procède d'abord, dans l'étape 702, à la construction des paquets source qu'il doit émettre. Pour cela, il effectue des lectures, dans la mémoire d'encodage 460, des données applicatives et alimente un encodeur, par exemple un encodeur Reed-Solomon(220, 204). Après lecture de données suffisantes pour remplir le champ 222 de données utiles du paquet (ici 204 octets), l'encodeur Reed-Solomon fournit les données de redondance (ici 16 octets). Le module encodeur 455 stocke à l'étape 704 le résultat en mémoire de transmission 475, en ajoutant un en-tête (ici 4 octets) de valeur nulle. Il répète l'opération jusqu'à épuisement des données applicatives ou jusqu'à ce que tous les paquets à transmettre soient remplis. Si les applications n'ont pas fourni assez de données pour remplir tous les paquets, alors le noeud transmet un certain nombre des paquets « vides ». Ce caractère « vide » d'un paquet peut être indiqué par une valeur particulière de l'en-tête, par exemple tous les bits à « 1 » et ce paquet pourra être filtré par exemple dans le module d'interface récepteur radio 435. Si le noeud dans lequel il est compris est un noeud source, le module encodeur 455 retourne directement à l'étape initiale 700. Si le noeud dans lequel il est compris est un noeud relais, le module décodeur 425 effectue les étapes 706 à 718 (décrites ci-après) afin de procéder au second encodage, selon le code correcteur distribué (pour chaque ligne qui lui a été attribuée au sein de la matrice génératrice étendue G', le module décodeur 425 va soit réaliser la ligne prévue, soit réaliser une ligne de remplacement). A l'étape 706, le module encodeur 455 est en attente de fin de période de réception de trames dans la supertrame courante. Lorsque le module encodeur 455 a traité toutes les trames reçues, le module encodeur 455 peut construire les combinaisons de paquets qui seront transmises à la supertrame suivante.
Il procède d'abord, dans l'étape 710, à l'analyse de la table de réception 510 ou 520 et repère, pour chaque groupe concerné par une retransmission, les paquets source reçus avec le statut du décodage par le module décodeur 425. Puis il procède, dans l'étape 712, à la détermination de la combinaison à effectuer pour chaque retransmission prévue. En prenant l'exemple du groupe de 20 paquets de la figure 1, on donne ci-dessous une liste de choix de combinaison sachant que d'autres choix sont possibles : - si les trois lignes sl, s2 et s3 ont été reçues et ne contiennent pas d'erreurs, alors les trois combinaisons prévues peuvent être effectuées ; - si les trois lignes ont été reçues, dont une ligne erronée, alors le noeud retransmet les deux lignes reçues non erronées et la combinaison rxl ou rx2 ou rx3 combinant les deux lignes reçues non erronées ; - si les trois lignes ont été reçues avec au moins deux lignes erronées, alors le noeud retransmet les trois lignes sl, s2 et s3 ; - si deux lignes ont été reçues sans erreur et une ligne n'a pas été reçue, alors le noeud retransmet les deux lignes reçues et la combinaison rxl ou rxz ou rx3 combinant les deux lignes reçues ; 25 30 - si deux lignes ont été reçues, dont une ligne erronée, et une ligne n'a pas été reçue, alors le noeud retransmet deux fois la ligne reçue sans erreur et une fois la ligne reçue erronée ; - si deux lignes ont été reçues avec des erreurs et une ligne n'a pas été reçue, alors le noeud retransmet deux fois une des lignes reçues erronées et une fois l'autre ; - si une ligne seulement a été reçue, cette ligne reçue est retransmise trois fois. Une variante pour l'étape 712 consiste à sélectionner plusieurs combinaisons possibles (qui seront construites à l'étape 714) afin de disposer au moment de la transmission d'un choix supplémentaire en fonction des paquets combinés déjà transmis dans la super-trame courante par d'autres noeuds relais. Il s'agira, au préalable d'une transmission de combinaison de paquets, de consulter la table de réception (510 ou 520), et de sélectionner parmi les choix possibles, une combinaison qui n'a pas encore été transmise. Le but est ici de donner au noeud destinataire le plus de chances possibles de recevoir des combinaisons indépendantes les unes des autres.
Selon les décisions de l'étape 712, le module encodeur 455 procède aux combinaisons, dans l'étape 714, en utilisant une sous-matrice de la matrice génératrice étendue G'. Dans l'étape 716, l'en-tête de chaque combinaison réalisée est construit en fonction des décisions de l'étape 712.
Dans l'étape 718, les combinaisons avec leur en-tête sont stockées en mémoire de transmission. L'adresse de stockage correspond par exemple à l'ordre de transmission du paquet par le noeud. Puis on retourne à l'étape initiale 700 d'attente de fin de période de transmission de trames dans la prochaine supertrame.25

Claims (12)

  1. REVENDICATIONS1. Procédé de transmission, à un noeud destination, de M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau, caractérisé en ce que la matrice de codage réseau comprend N lignes, avec M<N, en ce que M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée à un noeud relais qui doit générer le symbole codé particulier défini par ladite ligne, et en ce que ledit noeud relais, s'il est incapable de générer le symbole codé particulier défini par ladite au moins une ligne qui lui est attribuée, effectue des étapes consistant à: - sélectionner (712), parmi les N lignes, une ligne définissant un symbole codé que le noeud relais peut générer, en tant que symbole de remplacement ; - générer (714) et transmettre (718) au noeud destination ledit symbole de remplacement, accompagné d'une information de remplacement indiquant quelle ligne de la matrice définit ledit symbole de remplacement.
  2. 2. Procédé selon la revendication 1, caractérisé en ce que N-M lignes de la matrice, autres que lesdites M lignes, ne sont attribuées à aucun noeud et ne combinent chacune qu'une partie des symboles source, et en ce que l'étape (712) consistant à sélectionner une ligne définissant un symbole de remplacement, comprend une étape consistant à sélectionner prioritairement une des N-M lignes non attribuées.
  3. 3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que l'étape (712) consistant à sélectionner une ligne définissant un symbole de remplacement prend en compte au moins une autre information de remplacement transmise par un autre noeud relais, de sorte que la ligne sélectionnée par le noeud relais est, si possible, différente de la ligne indiquée par ladite au moins une autre information de remplacement.
  4. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ledit noeud relais est incapable de générer le symbole codé particulier défini par ladite au moins une ligne qui lui est attribuée si au moins une des conditions suivantes :- au moins un symbole source, nécessaire pour générer ledit symbole codé particulier n'a pas été reçu par ledit noeud relais ; - au moins un symbole source, nécessaire pour générer ledit symbole codé particulier a été reçu par ledit noeud relais avec un niveau de qualité inférieur à un seuil prédéterminé.
  5. 5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que la matrice de codage réseau est une matrice génératrice d'un code correcteur linéaire (N,K), avec K un nombre de symboles source que le noeud destination doit retrouver à partir des symboles codés.
  6. 6. Procédé selon la revendication 5, caractérisé en ce que : K = K1 + K2, avec K1 un nombre de symboles source réellement transmis par au moins un noeud source, et K2 un nombre de symboles source virtuels, de valeur nulle et transmis par aucun noeud source, ajoutés pour obtenir un code Maximum Distance Séparable.
  7. 7. Procédé selon l'une quelconque des revendications 5 et 6, caractérisé en ce que la matrice génératrice d'un code correcteur linéaire (N,K) est une matrice systématique telle que les K premiers symboles du mot de code sont lesdits K symboles source.
  8. 8. Procédé de décodage, par un noeud destination, de M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau, caractérisé en ce que la matrice de codage réseau comprend N lignes, avec M<N, en ce que M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée à un noeud relais qui doit générer le symbole codé particulier défini par ladite ligne, et en ce que le noeud destination effectue des étapes consistant à : recevoir (602) M symboles codés, chaque symbole codé reçu étant : soit un symbole codé particulier, généré selon une des M lignes par un noeud auquel la ligne est attribuée, soit un symbole de remplacement, pour lequel une information de remplacement, reçue par le noeud destination en provenance d'un noeud relais ayant généré le symbole de remplacement, indique quelle ligne de la matrice définit ledit symbole de remplacement ; 30- obtenir (618, 620) au moins une partie des symboles source, en fonction des symboles codés reçus et de la matrice.
  9. 9. Produit programme d'ordinateur, 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 à 7 et/ou le procédé selon la revendication 8, lorsque ledit programme est exécuté sur un ordinateur.
  10. 10. Moyen de stockage lisible par ordinateur, 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 à 7 et/ou le procédé selon la revendication 8.
  11. 11. Noeud relais adapté pour participer à la transmission, vers un noeud destination, M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau, caractérisé en ce que la matrice de codage réseau comprend N lignes, avec M<N, en ce que M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée audit noeud relais qui doit générer le symbole codé particulier défini par ladite ligne, et en ce que ledit noeud relais comprend les moyens suivants, qui sont activés si ledit noeud relais est incapable de générer le symbole codé particulier défini par ladite au moins une ligne qui lui est attribuée : - des moyens pour sélectionner, parmi les N lignes, une ligne définissant un symbole codé que le noeud relais peut générer, en tant que symbole de remplacement ; - des moyens pour générer et transmettre au noeud destination ledit symbole de remplacement, accompagné d'une information de remplacement indiquant quelle ligne de la matrice définit ledit symbole de remplacement.
  12. 12. Noeud destination, adapté pour décoder M symboles codés d'un mot de code définis chacun, sous la forme d'une combinaison linéaire de symboles source, par une ligne distincte d'une matrice de codage réseau, caractérisé en ce que la matrice de codage réseau comprend N lignes, avec M<N,en ce que M lignes, parmi les N lignes, définissent M symboles codés particuliers, au moins une des M lignes étant attribuée à un noeud relais qui doit générer le symbole codé particulier défini par ladite ligne, et en ce que le noeud destination comprend : - des moyens pour recevoir M symboles codés, chaque symbole codé reçu étant : soit un symbole codé particulier, généré selon une des M lignes par un noeud auquel la ligne est attribuée, soit un symbole de remplacement, pour lequel une information de remplacement, reçue par le noeud destination en provenance d'un noeud relais ayant généré le symbole de remplacement, indique quelle ligne de la matrice définit ledit symbole de remplacement ; - des moyens pour obtenir au moins une partie des symboles source, en fonction des symboles codés reçus et de la matrice.
FR1054145A 2010-05-28 2010-05-28 Procede de transmission de symboles codes, procede de decodage, produit programme d'ordinateur, moyen de stockage et n?uds correspondants. Active FR2960726B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1054145A FR2960726B1 (fr) 2010-05-28 2010-05-28 Procede de transmission de symboles codes, procede de decodage, produit programme d'ordinateur, moyen de stockage et n?uds correspondants.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1054145A FR2960726B1 (fr) 2010-05-28 2010-05-28 Procede de transmission de symboles codes, procede de decodage, produit programme d'ordinateur, moyen de stockage et n?uds correspondants.

Publications (2)

Publication Number Publication Date
FR2960726A1 true FR2960726A1 (fr) 2011-12-02
FR2960726B1 FR2960726B1 (fr) 2013-01-18

Family

ID=43640136

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1054145A Active FR2960726B1 (fr) 2010-05-28 2010-05-28 Procede de transmission de symboles codes, procede de decodage, produit programme d'ordinateur, moyen de stockage et n?uds correspondants.

Country Status (1)

Country Link
FR (1) FR2960726B1 (fr)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JUN ZHANG ET AL: "Multiple-Source Multiple-Relay Cooperation System", COMMUNICATIONS, 2006. ICC '06. IEEE INTERNATIONAL CONFERENCE ON, IEEE, PI, 1 June 2006 (2006-06-01), pages 3735 - 3740, XP031025899, ISBN: 978-1-4244-0354-7 *
XINGKAI BAO ET AL: "A Unified Channel-Network Coding Treatment for User Cooperation in Wireless Ad-Hoc Networks", INFORMATION THEORY, 2006 IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, PI, 1 July 2006 (2006-07-01), pages 202 - 206, XP031032197, ISBN: 978-1-4244-0505-3 *

Also Published As

Publication number Publication date
FR2960726B1 (fr) 2013-01-18

Similar Documents

Publication Publication Date Title
EP1686746B1 (fr) Transmission de données par paquets à travers un canal de transmission partagé par plusieurs utilisateurs
EP2274852B1 (fr) Procédé de décodage d&#39;un signal mettant en oeuvre une construction progressive d&#39;un arbre de décodage, produit programme d&#39;ordinateur et dispositif de décodage correspondants
EP2606583B1 (fr) Procédé et système de relayage sélectif dans un réseau de communication comprenant plusieurs sources, un relais et un dispositif de reception avec détection, au niveau du relais, d&#39;erreurs sur les messages estimés reçus des sources et transmission, du relais vers le dispositif de réception, d&#39;un signal représentatif des seuls messages pour lesquels aucune erreur n&#39;a été détectée.
EP2795826A1 (fr) Procédé de transmission d&#39;un signal numérique pour un système ms-marc semi-orthogonal, produit programme et dispositif relais correspondants
FR2954631A1 (fr) Procede et dispositif de configuration en boucle fermee d&#39;un reseau d&#39;antenne
FR2985150A1 (fr) Procede de transmission d&#39;un signal numerique pour un systeme ms-marc non-orthogonal, produit programme et dispositif relais correspondants
EP3161986A1 (fr) Procede de transmission dynamique et selectif fd-dsdf d&#39;un signal numerique pour un systeme mamrc avec plusieurs relais full-duplex, produit programme et dispositif relais correspondants
FR2952252A1 (fr) Procede et dispositif de decodage, produit programme d&#39;ordinateur, moyen de stockage correspondants et noeud destination correspondants
EP3639427A1 (fr) Procédé et système omamrc de transmission avec adaptation lente de lien
WO2007083066A1 (fr) Procedes d&#39;encodage et de decodage rapides et dispositifs associes
FR2960725A1 (fr) Procede et dispositif de configuration d&#39;un schema d&#39;encodage/decodage global dans un reseau de communication, produit programme d&#39;ordinateur et moyen de stockage correspondants
FR3053193A1 (fr) Procede de transmission dynamique et selectif fd-dsdf d&#39;un signal numerique pour un systeme marc/mamrc avec relais full-duplex et une voie de retour limitee, produit programme et dispositif relais correspondants
EP1989807B1 (fr) Procede et systeme permettant de transmettre un message s&#39; exprimant au moyen d&#39; un polynome
WO2015197990A1 (fr) Procédé de transmission dynamique et sélectif fd-dsdf d&#39;un signal numérique pour un système marc avec un relais full-duplex, produit programme et dispositif relais correspondants
FR3029375A1 (fr) Procede et dispositif de relayage souple et selectif ssdf
FR2960726A1 (fr) Procede de transmission de symboles codes, procede de decodage, produit programme d&#39;ordinateur, moyen de stockage et nœuds correspondants.
FR2918832A1 (fr) Procedes de transmission de donnees par des noeuds relais dans un reseau de communication synchrone, procede de reception, produit programme d&#39;ordinateur, moyen de stockage et noeuds correspondants.
WO2015079168A1 (fr) Codage de paquets de données par codes convolutifs et recouvrement de paquets effacés
WO2018185402A1 (fr) Procédés de codage et de décodage de paquets de données dans un corps de galois
EP3057238B1 (fr) Méthode de décodage itératif de séquences lfsr à faible probabilité de fausse alarme
FR2952255A1 (fr) Procede et dispositif pour repartir, au sein d&#39;un reseau maille, la generation d&#39;un mot de code, produit programme d&#39;ordinateur et moyen de stockage correspondants
FR2922390A1 (fr) Procede de modification d&#39;un paquet code, procede de transmission, procede de reception, produit programme d&#39;ordinateur, dispositif de modification, noeud intermediaire et noeud destinataire correspondants
FR2954873A1 (fr) Procede de decodage correcteur d&#39;erreurs, produit programme d&#39;ordinateur, moyen de stockage et noeud destination correspondants.
FR2957736A1 (fr) Procedes et dispositifs de transmission et de reception d&#39;un flux de donnees, avec gestion de retransmission de donnees de parite, produit programme d&#39;ordinateur et moyen de stockage correspondants
FR2939584A1 (fr) Procede de codage reseau dans un reseau maille, produit programme d&#39;ordinateurs, moyen de stockage et noeuds de communication correspondants.

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

PLFP Fee payment

Year of fee payment: 13

PLFP Fee payment

Year of fee payment: 14

PLFP Fee payment

Year of fee payment: 15