WO2018185402A1 - Methods for encoding and decoding data packets in a galois field - Google Patents
Methods for encoding and decoding data packets in a galois field Download PDFInfo
- Publication number
- WO2018185402A1 WO2018185402A1 PCT/FR2018/050770 FR2018050770W WO2018185402A1 WO 2018185402 A1 WO2018185402 A1 WO 2018185402A1 FR 2018050770 W FR2018050770 W FR 2018050770W WO 2018185402 A1 WO2018185402 A1 WO 2018185402A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- matrix
- packets
- data packet
- binary
- bits
- 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.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/134—Non-binary linear block codes not provided for otherwise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0076—Distributed coding, e.g. network coding, involving channel coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
Definitions
- the present invention relates to communication or data recording systems in which, in order to improve the fidelity of transmission or storage, the data is subjected to a so-called "network coding" ("Network Coding”). .
- Network Coding Network Coding
- the invention relates more particularly to the transmission of data packets on a channel affected by packet losses.
- a channel On such a channel, some packets are received perfectly (thanks to properly defined modulation and coding at the physical layer); however, other packets are not received, either because these packets are deleted due to congestion in a router, or because they are received in bad conditions (noise, interference) and can not be decoded correctly.
- Such a transmission channel is called “erasing channel”, and lost packets are said to be "erased”.
- Systems for transmitting packets on channels causing erasures include, for example:
- eMBMS evolved Multimedia
- VoLTE Voice over LTE
- WebRTC Web Real-Time Communication
- packets are called "blocks”, but the term “packets” will be used uniformly below.
- the network coding (see for example the article by R. Koetter and M. Medard entitled “/ An algebraic approach to network coding", IEEE / ACM Transactions on Networking, Volume 1 1, No. 5, Oct. 2003, pages 782-795) consists in transmitting information in data packets of such that this information follows several paths in a distributed infrastructure including nodes that serve as relays (or routers).
- the present invention relates more particularly to the case in which the relays can store and retransmit ("store and forward" in English) the useful data packets entering these relays, but can also, as illustrated in FIG. 1, retransmit packets of useful data that result from processing on these input packets, i.e., which constitute a certain function f of these input packets.
- each payload packet consists of L symbols of m bits belonging to a binary extension body GF (2 m ).
- GF binary extension body
- Each relay can transfer the payload packets it receives without modification, or transmit on the output link a linear combination of packets received on the input links, it being understood that, as explained above (erase channel) , some packets sent by other nodes of the network may not have been received (in which case the relay does not try to find the deleted packets).
- the transmission of information packets from a source S to a recipient (or receiver) D via an N network can be described by a graph (see FIG. 2) whose nodes represent relays such as that illustrated in FIG. and branches represent existing links between:
- the source S emits a series of information packets said
- One and the same packet P t may travel on several paths of the network N originating from S.
- the recipient D may therefore receive a number n ⁇ k of useful data packets R t , each of which may be:
- the N network relays perform linear combinations on the packets of the same stream (from the same source S to the same recipient D) with coefficients that can be determined once and for all, or be drawn at each application in the case of the so-called "random" network coding.
- the packets received are in an order which may be different from that of the transmitted packets.
- the topology of the network is not necessarily known to the recipient and / or the issuer. This means that the recipient receives a number n of packets which are each a linear combination of the packets P i emitted by the source S, which can be written as follows:
- the matrix K In order to find these packets P ⁇ from the received packets R t , the matrix K must be known to the recipient, and, when it is known, it must be of rank k. In particular, the recipient must have a number n ⁇ k of received packets R t , otherwise the matrix would be of rank lower than k and the packets P j could not be traced back.
- the present invention thus relates, in a first aspect, to a method of coding data packets in a network (N), comprising the following steps:
- the conventional multiplication table consultation mechanism can be replaced by a set of binary operations carried out in a vectorial manner at the level of the symbols of said data packet P.
- the present invention is therefore particularly advantageous because, if it allows a software implementation of encoding or decoding as state-of-the-art techniques, it also makes it possible to efficiently use an electronic circuit simultaneously with software means, or in their place.
- VNF virtualized network function
- said matrices M (a), for are extracted from a reference matrix T of dimension
- said matrices M (a), for are extracted from a reference matrix T of dimension
- the invention relates to various devices.
- a device for coding data packets comprising means for:
- M (a) is the binary matrix of dimensions mxm whose respective columns contain the binary coordinates of the respective elements ⁇ a, yy, ..., a m_1 a ⁇ , where a is a root of said primitive polynomial, obtaining the rows of said matrix Y by means of binary additions of rows of the matrix X in patterns determined by the rows of the matrix M (a);
- said coding device further comprises means for extracting said matrices M (a), for a reference matrix T of dimension
- the invention also relates, secondly, to a device for decoding data packets, comprising means for:
- Q a P
- Q a P
- M (a) is the binary matrix of dimensions mxm whose respective columns contain the binary coordinates of the respective elements where a is a root of said primitive polynomial, obtaining the rows of said matrix Y by means of binary additions of rows of the matrix X in patterns determined by the rows of the matrix M ⁇ a);
- said coding device further comprises means for extracting said matrices M (a), for a reference matrix T of dimension
- the invention relates to:
- a node referred to as a relay node, of a communication network, comprising a coding device as briefly described above, and
- a node said destination node, of a communication network comprising a decoding device as briefly described above.
- a node of a communication network may comprise both a coding device and a decoding device as briefly described above.
- the invention relates to a communication network, comprising at least one relay node as briefly described above and at least one destination node as briefly described above.
- said relay node and said destination node must, in order to be mutually compatible, use not only the same binary extension body GF (2 m ), ie the same value of m, but in addition the same representation of this body, that is to say, the same primitive polynomial.
- the invention also relates to a computer program downloadable from a communication network and / or stored on a computer readable medium and / or executable by a microprocessor.
- This computer program is notable in that it includes instructions for performing the steps of the data packet coding method succinctly set forth above. above, or the method of decoding data packets succinctly set forth above, when executed on a computer.
- FIG. 1, described above, represents the operation carried out by a relay node in the network coding
- FIG. 2 described above, schematically represents a transmission system T according to the invention
- FIG. 3 schematically represents the structure of a data packet according to one embodiment of the invention
- FIG. 4 represents the relationship between the operation carried out by a relay node R in the network coding, and the structure of the data packet transmitted by this relay node R,
- FIG. 5 represents, at a relay node R, the relationship between the incoming data packets and the transmitted data packet
- FIG. 6 represents, at a relay node R, the relationship between the incoming data packets and the data packet transmitted when an incoming data packet is erased
- FIG. 7 schematically represents a relay node R according to one embodiment of the invention
- FIG. 8 schematically represents a destination node D according to one embodiment of the invention.
- FIG. 9 represents the representation of a vector of L symbols belonging to GF (2 m ) in the form of a binary matrix m ⁇ L.
- the identifier When a relay R of the network N transmits an information packet without modifying it, the identifier is unchanged. When this relay performs a linear combination of information packets P i , the identifier contains the list of coefficients used, some of the coefficients being null, as illustrated.
- each packet of useful data Y i being characterized by a vector of identifiers the identifier vector C of the outgoing data packet contains the linear combinations of the identifiers of the input packets, as illustrated in FIG. 5.
- the operation done on the identifiers during the coefficient linear combination in GF (2 m ) is exactly the same as that performed on the payload packets; the relay R can therefore advantageously perform these two operations in one go.
- the header of a payload packet R i received by the recipient D always correctly indicates the manner in which this payload packet R t was obtained from information packets P i initial. Therefore, after receiving the relevant data packets
- the matrix K mentioned above will be known to the recipient, as required.
- the recipient D proceeds as follows:
- the source S does not wait for acknowledgment for each packet that it transmits
- the recipient D does not send an acknowledgment when he receives an encoded packet
- the recipient D extracts the identifier and has an equation
- the recipient D checks whether the rank of the matrix of the system is equal to k, using any conventional method (for example the Gauss method); the article by C. Studholme and I. Blake entitled “Random matrices and codes for the erasure channel", Algorithmica, vol. 56, No. 4, pages 605 to 620 (2010), demonstrates that, in the case of a randomly filled matrix, the matrix is of rank equal to k with a high probability;
- the recipient D waits for the reception of new packets until the condition of rank equal to k is checked; preferably, a limit n max is set to the number of packets transmitted by the source S, and the recipient D sends a negative acknowledgment (NACK) if he fails to obtain an invertible matrix after the end of the transmission of the n max packets; in this case, the source sends additional coded packets until decoding is possible;
- NACK negative acknowledgment
- FIG. 7 schematically represents a relay node R according to one embodiment of the invention.
- the relay R comprises a reception module 10, an extraction module 11, a module 12 for computing the outgoing user data packet, a memory module 13, a building module 14 and a transmission module 15.
- the input module 10 is adapted to receive incoming data packets from other nodes of the network N, and to transmit these incoming data packets to the extraction module 11.
- the extraction module 11 is adapted to extract from each incoming packet its header (designated "H” in FIG. 7), and to transmit to the calculation module 12 the remainder of the incoming packet, ie say the set formed by a identifier vector C (,) and a payload data packet Y i (referred to as "payload" in FIG. 7).
- the calculation module 12 is adapted to extract from each incoming packet its header (designated "H” in FIG. 7), and to transmit to the calculation module 12 the remainder of the incoming packet, ie say the set formed by a identifier vector C (,) and a payload data packet Y i (referred to as "payload" in FIG. 7).
- this module can be integrated in the relay R as shown in FIG. 7, or constitute an external source that can be accessed by the relay R, and
- the coefficients can be constant for a given relay R, or
- the building module 14 is adapted to receive, on the one hand, the packet header H mentioned above, and on the other hand the set formed by the outgoing identifier vector C and the outgoing user data packet F ', and to build from these elements an outgoing data packet.
- the transmission module 15 is adapted to receive the outgoing data packet from the building module 14, and to transmit this outgoing data packet on the network N.
- FIG. 8 schematically represents a destination node D according to one embodiment of the invention.
- the recipient D comprises a reception module 20, an extraction module 21, a building module 22, a second member module 23, a test module 27, an inversion module 26, a resolution module 24 and a transmission module 25.
- the extraction module 21 is adapted to separate, in each packet received, its header (denoted by "H” in FIG. 8), its identifier vector and its payload packet R i .
- the second member module 23 is adapted to receive from the extraction module 21, as and when receiving packets by the receiving module 20, the useful data packets and to add equal rows to these payload packets R i to the second member vector
- the building module 22 is adapted to receive from the extraction module 21, as and when receiving packets by the receiving module 20, the identifier vectors and to add lines consisting of these identifiers to a matrix used to construct the matrix K.
- test module 27 is adapted to receive, as packets are received by the receiving module 20, said matrix being constructed by the building module 22, and to determine whether the determinant of this module matrix is different from zero, that is to say if this matrix is regular (rank equal to k).
- the reception module 20 is adapted to stop receiving packets
- the inversion module 26 is adapted to calculate the inverse of the matrix K obtained.
- the resolution module 24 is adapted to receive said second member vector from the second member module 23, as well as the inverse of the matrix K from the inversion module 26, and to calculate the product of these elements. two magnitudes by implementing the multiplication method in GF (2 m ) according to the invention, so as to retrieve the initial information packets.
- the transmission module 25 is adapted to receive the information packets initials from the resolution module 24, and to transmit these information packets to the user of the destination node D.
- the coding and decoding considered in the present invention are realized in a binary extension body GF (2 m ), where m> 1.
- GF (2 m ) a binary extension body GF (2 m ), where m> 1.
- a is a root of a predetermined primitive polynomial.
- binary coordinates is the element whose binary coordinates are obtained as follows:
- Y is the column vector containing the m binary coordinates of y
- n 2 m - 1, of dimension mx (2 m + m - 2), previously constructed, whose columns contain the coordinates of a k for k ⁇ 0.
- T which will be called "reference matrix”
- the last (m - 1) columns are a simple copy of the first (m -1) columns.
- M ⁇ a k ) is then the sub-matrix obtained by extracting the columns n (k + 1) to (k + m) from the reference matrix T, which will be noted as follows:
- the invention may be implemented within the nodes, for example a relay node or a destination node of a communication network, by means of software and / or hardware components.
- the present invention also relates to a computer system.
- This computer system conventionally comprises a central processing unit controlling signals by a memory, as well as an input unit and an output unit.
- this computer system may be used to execute a computer program comprising instructions for implementing any of the methods of encoding, or decoding, data packets according to the invention.
- the invention also relates to a downloadable computer program from a communication network comprising instructions for executing the steps of a method of encoding, or decoding, data packets according to the invention, when it is run on a computer.
- This computer program may be stored on a computer readable medium and may be executable by a microprocessor.
- This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any another desirable form.
- the invention also relates to an information carrier, irremovable, or partially or completely removable, readable by a computer, and comprising instructions of a computer program as mentioned above.
- the information carrier may be any entity or device capable of storing the program.
- the medium may comprise storage means, such as a ROM, for example a CD ROM or a ROM of microelectronic circuit, or a magnetic recording means, such as a hard disk, or a USB flash drive ("USB flash drive").
- the information medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means.
- the computer program according to the invention can in particular be downloaded to an Internet type network.
- the information carrier may be an integrated circuit in which the program is embedded, the circuit being adapted to execute or to be used in performing any of the methods of encoding, or decoding, packets data according to the invention.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
PROCEDES DE CODAGE ET DE DECODAGE CODING AND DECODING METHODS
DE PAQUETS DE DONNEES DANS UN CORPS DE GALOIS PACKET DATA IN A BODY OF GALOIS
La présente invention concerne les systèmes de communication ou d'enregistrement de données dans lesquels, afin d'améliorer la fidélité de la transmission ou du stockage, on soumet les données à un codage dit « de réseau » (« Network Coding » en anglais). The present invention relates to communication or data recording systems in which, in order to improve the fidelity of transmission or storage, the data is subjected to a so-called "network coding" ("Network Coding"). .
L'invention concerne plus particulièrement la transmission de paquets de données sur un canal affecté par des pertes de paquets. Sur un tel canal, certains paquets sont reçus parfaitement (grâce à une modulation et un codage convenablement définis au niveau de la couche physique) ; en revanche, d'autres paquets ne sont pas reçus, soit parce que ces paquets sont supprimés en raison d'une congestion dans un routeur, soit parce qu'ils sont reçus dans de mauvaises conditions (bruit, interférences) et ne peuvent être décodés correctement. Un tel canal de transmission est appelé « canal à effacements », et les paquets perdus sont dits « effacés ». Les systèmes de transmission de paquets sur des canaux provoquant des effacements comprennent par exemple : The invention relates more particularly to the transmission of data packets on a channel affected by packet losses. On such a channel, some packets are received perfectly (thanks to properly defined modulation and coding at the physical layer); however, other packets are not received, either because these packets are deleted due to congestion in a router, or because they are received in bad conditions (noise, interference) and can not be decoded correctly. Such a transmission channel is called "erasing channel", and lost packets are said to be "erased". Systems for transmitting packets on channels causing erasures include, for example:
- le stockage de masse, ainsi que le stockage distribué, systèmes dans lesquels les pertes de données sont dues à des pannes de disques durs ou de serveurs ; - mass storage, as well as distributed storage, systems in which data loss is due to failures of hard disks or servers;
- la diffusion en broadcast ou en multicast eMBMS (evolved Multimedia - broadcast or multicast broadcast eMBMS (evolved Multimedia
Broadcast Multicast Services) en LTE (Long Term Evolution), pour la transmission de fichiers ou de programmes audiovisuels en continu (streaming) ; et Broadcast Multicast Services) in LTE (Long Term Evolution), for the transmission of files or audiovisual programs streaming; and
- la transmission en temps réel de la Voix ou de la Vidéo sur des canaux à pertes, tels que VoLTE (Voice over LTE) ou WebRTC (Web Real-Time Communication). - Real-time transmission of voice or video over lossy channels, such as VoLTE (Voice over LTE) or WebRTC (Web Real-Time Communication).
On notera que, dans certains de ces systèmes, les paquets sont appelés « blocs », mais on utilisera uniformément le terme de « paquets » ci-dessous. It should be noted that in some of these systems the packets are called "blocks", but the term "packets" will be used uniformly below.
On rappelle que le codage de réseau (cf. par exemple l'article de R. Koetter et M. Medard intitulé « /An algebraic approach to network coding », IEEE/ACM Transactions on Networking, vol. 1 1 , n ° 5, oct. 2003, pages 782 à 795) consiste à transmettre des informations dans des paquets de données de telle sorte que ces informations suivent plusieurs trajets dans une infrastructure distribuée comprenant des nœuds qui servent de relais (ou de routeurs). It is recalled that the network coding (see for example the article by R. Koetter and M. Medard entitled "/ An algebraic approach to network coding", IEEE / ACM Transactions on Networking, Volume 1 1, No. 5, Oct. 2003, pages 782-795) consists in transmitting information in data packets of such that this information follows several paths in a distributed infrastructure including nodes that serve as relays (or routers).
La présente invention concerne plus particulièrement le cas dans lequel les relais peuvent stocker et retransmettre (« store and forward » en anglais) les paquets de données utiles entrant dans ces relais, mais peuvent aussi, comme illustré sur la figure 1 , retransmettre des paquets de données utiles qui résultent d'un traitement sur ces paquets d'entrée, c'est-à-dire qui constituent une certaine fonction f de ces paquets d'entrée. The present invention relates more particularly to the case in which the relays can store and retransmit ("store and forward" in English) the useful data packets entering these relays, but can also, as illustrated in FIG. 1, retransmit packets of useful data that result from processing on these input packets, i.e., which constitute a certain function f of these input packets.
On supposera que les paquets de données utiles contenus dans tous ces paquets de données ont tous le même nombre de bits. Si ce nombre est un multiple d'un entier m supérieur à 1 , on peut considérer que chaque paquet de données utiles est constitué de L symboles de m bits appartenant à un corps d'extension binaire GF(2m ) . On rappelle à cet égard que l'on appelle corps de Galois (noté GF(q) ) un ensemble de q éléments dont les éléments non-nuls peuvent être identifiés comme étant chacun égal à pour une valeur correspondante de j , où j = 1,..., q - 1 , et où α est une racineIt will be assumed that the useful data packets contained in all these data packets all have the same number of bits. If this number is a multiple of an integer m greater than 1, it can be considered that each payload packet consists of L symbols of m bits belonging to a binary extension body GF (2 m ). We recall in this respect that we call Galois body (denoted GF (q)) a set of q elements whose non-zero elements can be identified as being each equal to for a corresponding value of j, where j = 1, ..., q - 1, and where α is a root
primitive de l'unité dans GF(q) ; lorsque, en particulier, q = 2m , où m > 1 , le corps de Galois est également appelé « corps d'extension binaire ». primitive unity in GF (q); when, in particular, q = 2 m , where m> 1, the Galois body is also called "binary extension body".
Chaque relais peut transférer sans modification les paquets de données utiles qu'il reçoit, ou transmettre sur le lien de sortie une combinaison linéaire de paquets reçus sur les liens d'entrée, étant entendu que, comme expliqué ci- dessus (canal à effacements), certains paquets envoyés par d'autres nœuds du réseau peuvent ne pas avoir être reçus (auxquels cas le relais ne cherche pas à retrouver les paquets effacés). Each relay can transfer the payload packets it receives without modification, or transmit on the output link a linear combination of packets received on the input links, it being understood that, as explained above (erase channel) , some packets sent by other nodes of the network may not have been received (in which case the relay does not try to find the deleted packets).
Lorsque les paquets d'entrée X1, ... , Xn sont tous constitués de L éléments de GF(2m ) , une opération très simple sur ces paquets d'entrée consiste à effectuer une addition bit à bit (on rappelle que l'addition bit à bit est également appelée « OU exclusif », et notée « XOR ») des paquets d'entrée : Une règle de calcul plus complexe du paquet de sortie Y met en œuvre des combinaisons linéaires des paquets d'entrée avec des coefficients When the input packets X 1 , ..., X n all consist of L elements of GF (2 m ), a very simple operation on these input packets consists in performing a bitwise addition (it should be remembered that bitwise addition is also referred to as "exclusive OR", and denoted "XOR") as input packets: A more complex calculation rule of output packet Y implements linear combinations of input packets with coefficients
c'est-à-dire : that is to say :
Cette relation entrée-sortie fait maintenant intervenir des multiplications dans le corps GF(2m ) . Par commodité de notation, nous représenterons ci-après l'opération XOR par le symbole usuel ( + ) de l'addition, de sorte que la relation précédente s'écrit : This input-output relationship now involves multiplications in the GF body (2 m ). For convenience of notation, we will now represent the operation XOR by the usual symbol (+) of the addition, so that the preceding relation is written:
La transmission de paquets d'information d'une source S vers un destinataire (ou récepteur) D via un réseau N peut être décrite par un graphe (voir figure 2) dont les nœuds représentent des relais tels que celui illustré sur la figure 1 , et les branches représentent les liens existants entre : The transmission of information packets from a source S to a recipient (or receiver) D via an N network can be described by a graph (see FIG. 2) whose nodes represent relays such as that illustrated in FIG. and branches represent existing links between:
- la source et un ou plusieurs relais, - the source and one or more relays,
- le destinataire et un ou plusieurs relais, et - the recipient and one or more relays, and
entre les relais eux-mêmes. between the relays themselves.
La source S émet une suite de paquets d'information dits The source S emits a series of information packets said
paquets initiaux. Un même paquet Pt peut circuler sur plusieurs chemins du réseau N issus de S. Le destinataire D peut donc recevoir un nombre n≥k de paquets de données utiles Rt , chacun d'entre eux pouvant être : initial packages. One and the same packet P t may travel on several paths of the network N originating from S. The recipient D may therefore receive a number n≥k of useful data packets R t , each of which may be:
- une copie d'un des paquets s'il a été transmis par des nœuds - a copy of one of the packets if it has been transmitted by nodes
retransmettant sans modification les paquets qu'ils reçoivent, ou retransmitting without modification the packets they receive, or
- une combinaison linéaire de la forme - a linear combination of form
s'il est passé par des relais effectuant des combinaisons linéaires, les coefficients cUj étant pris dans un corps d'extension GF (2m ) ; les relais du réseau N effectuent des combinaisons linéaires sur les paquets d'un même flot (allant de la même source S vers le même destinataire D) avec des coefficients qui peuvent soit être déterminés une fois pour toutes, soit être tirés au sort à chaque application dans le cas du codage de réseau dit « aléatoire ». if it has passed through relays performing linear combinations, the coefficients c Uj being taken in an extension body GF (2 m ); the N network relays perform linear combinations on the packets of the same stream (from the same source S to the same recipient D) with coefficients that can be determined once and for all, or be drawn at each application in the case of the so-called "random" network coding.
Il faut noter que, les différents chemins entre la source S et le destinataire D ayant potentiellement des longueurs différentes (en nombre de branches) et des retards différents, les paquets reçus le sont dans un ordre qui peut être différent de celui des paquets émis. D'autre part la topologie du réseau n'est pas nécessairement connue du destinataire et/ou de l'émetteur. Cela signifie que le destinataire reçoit un nombre n de paquets qui sont chacun une combinaison linéaire des paquets Pi émis par la source S, ce que l'on peut écrire de la façon suivante : It should be noted that since the different paths between the source S and the recipient D have potentially different lengths (in number of branches) and different delays, the packets received are in an order which may be different from that of the transmitted packets. On the other hand the topology of the network is not necessarily known to the recipient and / or the issuer. This means that the recipient receives a number n of packets which are each a linear combination of the packets P i emitted by the source S, which can be written as follows:
Afin de retrouver ces paquets P} à partir des paquets reçus Rt , il faut que la matrice K soit connue du destinataire, et, lorsqu'elle est connue, qu'elle soit de rang k . Il faut en particulier que le destinataire dispose d'un nombre n≥k de paquets reçus Rt , sans quoi la matrice serait de rang inférieur à k et l'on ne pourrait pas remonter aux paquets Pj . In order to find these packets P } from the received packets R t , the matrix K must be known to the recipient, and, when it is known, it must be of rank k. In particular, the recipient must have a number n≥k of received packets R t , otherwise the matrix would be of rank lower than k and the packets P j could not be traced back.
Cette technique du codage de réseau consiste donc en un codage/décodage au moyen d'un code sans rendement prédéfini (« rateless code » en anglais) à cause de la contrainte n≥ k, n pouvant être (théoriquement) infini. En fait il s'agit d'une instance des codes dits « codes fontaine » (« fountain codes » en anglais), avec les différences suivantes : This technique of network coding thus consists of coding / decoding by means of a code with no predefined efficiency ("rateless code" in English) because of the constraint n≥ k, n being (theoretically) infinite. In fact it is an instance of the codes called "fountain codes" ("fountain codes" in English), with the following differences:
• il existe plus d'un chemin entre source et destinataire, et les paquets reçus par un même destinataire peuvent avoir suivi des chemins différents ; • There is more than one path between source and recipient, and packets received by the same recipient may have followed different paths;
• les combinaisons linéaires des paquets d'information Pj ne sont pas effectuées par la source mais par les éléments du réseau (codage distribué) ;• Linear combinations of information packets P j are not performed by the source but by the elements of the network (distributed coding);
• les coefficients de ces combinaisons linéaires peuvent être prédéterminés et fixes dans le temps, ou bien être tirés au sort par les nœuds du réseau ; ce dernier cas (décrit dans l'article de T. Ho, M. Médard, R. Koetter, D.R. Karger, M. Effros, J. Shi, et B. Leong intitulé « A random linear Network Coding approach to multicast », IEEE Trans. Information Theory, vol. 52, n ° 10, oct. 2006, pages 4413 à 4430) est appelé « codage de réseau aléatoire » (« Random Linear Network Coding », ou RLNC, en anglais). • the coefficients of these linear combinations can be predetermined and fixed in time, or be drawn by the nodes of the network; the latter case (described in the article by T. Ho, M. Medard, R. Koetter, DR Karger, M. Effros, J. Shi, and B. Leong entitled "A random linear Network Coding approach to multicast ", IEEE Trans. Information Theory, vol. 52, No. 10, Oct. 2006, pages 4413-4430) is referred to as "Random Linear Network Coding" (or RLNC).
On notera que l'utilisation de codes sans rendement prédéfini pour récupérer les paquets perdus durant des phénomènes de congestion permet d'envisager la possibilité de mettre en œuvre des protocoles de transmission de données par paquets sans faire appel au mécanisme de contention classiquement utilisé pour éviter les collisions, d'où un gain en termes de simplicité de mise en œuvre et de rapidité d'exécution. It will be noted that the use of codes without predefined performance to recover the packets lost during congestion phenomena makes it possible to envisage the possibility of implementing packet data transmission protocols without resorting to the contention mechanism conventionally used to avoid the collisions, resulting in a gain in terms of simplicity of implementation and speed of execution.
Cela étant, de simples considérations d'algèbre linéaire permettent de montrer que la résolution d'un système d'équations dans GF(2m) faisant intervenir des paquets de données peut être ramenée à des additions de paquets et à des multiplications d'un paquet par un même élément de GF(2m) , c'est-à- dire des combinaisons linéaires de paquets avec des coefficients pris dans GF(2m) . Dans le cadre de ces calculs, l'addition bit à bit est simple à mettre en œuvre, mais la multiplication dans GF(2m) repose classiquement sur un mécanisme logiciel de consultation de table de multiplication. However, simple linear algebra considerations show that the resolution of a system of equations in GF (2 m ) involving data packets can be reduced to packet additions and multiplications of one. packet by the same element of GF (2 m ), ie linear combinations of packets with coefficients taken in GF (2 m ). In the context of these calculations, the bitwise addition is simple to implement, but the multiplication in GF (2 m ) relies conventionally on a multiplication table software mechanism.
Or, lorsqu'il faut multiplier tous les éléments d'un vecteur donné However, when it is necessary to multiply all the elements of a given vector
X = (x1; ... , xn) composé d'éléments de GF{2m) par un même élément a de GF{2m) , on ne peut pas consulter ladite table de multiplication de façon vectorielle ; autrement dit, il faut consulter la table pour chaque élément xi du vecteur, ce qui est d'autant plus lent que le vecteur est plus long. X = (x 1; ..., x n ) composed of elements of GF {2 m ) by the same element a of GF {2 m ), it is not possible to consult said multiplication table in vectorial manner; in other words, it is necessary to consult the table for each element x i of the vector, which is even slower than the vector is longer.
La présente invention concerne donc, selon un premier aspect, un procédé de codage de paquets de données dans un réseau (N), comprenant les étapes suivantes : The present invention thus relates, in a first aspect, to a method of coding data packets in a network (N), comprising the following steps:
- réception de r≥ 1 paquets de données utiles Yi constitué chacun par une combinaison linéaire receiving r≥ 1 packets of useful data Y i each consisting of a linear combination
où les coefficients sont pris dans un corps d'extension GF (2m ) défini au where the coefficients are taken in a GF extension body (2 m ) defined in
moyen d'un polynôme primitif choisi, des mêmes k≥1 paquets d'information dits paquets initiaux, chaque paquet d'information contenant L≥ 1 symboles constitués chacun d'une suite de m > l bits ; a selected primitive polynomial, the same k≥1 information packets said initial packets, each packet of information containing L≥ 1 symbols each consisting of a sequence of m> 1 bits;
- calcul d'un paquet de données utiles sortant Y' constitué par une combinaison linéaire computing a outgoing payload packet Y 'consisting of a linear combination
desdits paquets de données utiles Yn où les coefficients «, sont pris dans ledit corps d'extension GF (2m ) ; et said user data packets Y n where the coefficients ", are taken in said extension body GF (2 m ); and
- émission dudit paquet de données utiles sortant Y' . sending said outgoing user data packet Y '.
Ledit procédé de codage est remarquable en ce que ladite étape de calcul du paquet de données utiles sortant y comprend au moins une sous-étape de multiplication Q = a - P de tous les symboles d'un paquet de données Said coding method is remarkable in that said step of computing the outgoing payload packet includes at least one substep of multiplication Q = a-P of all the symbols of a data packet.
P = (x1; ... , xL) dans lequel Xj , pour ; = 1, ... , L, est un symbole composé d'une suite de m bits xy , où i = 0, ... , m - 1, par un même nombre a appartenant à P = (x 1; ..., x L ) in which Xj, for; = 1, ..., L, is a symbol composed of a sequence of m bits x y , where i = 0, ..., m - 1, by the same number a belonging to
GF (2m ) , et en ce que ladite multiplication est effectuée de la manière suivante : a) remplissage d'une matrice binaire X de dimension mx L en plaçant les bits xy composant chaque symbole Xj le long de la j -ième colonne de ladite matrice X ; GF (2 m ), and in that said multiplication is performed as follows: a) filling of a binary matrix X of dimension mx L by placing the bits x y constituting each symbol Xj along the jth column said matrix X;
b) calcul de la matrice binaire b) calculation of the binary matrix
Y = M(a)x X , Y = M (a) x X,
de dimension mx L , où M {a) est la matrice binaire de dimensions mx m dont les colonnes respectives contiennent les coordonnées binaires des éléments respectifs où a est une racine dudit polynôme primitif, en of dimension mx L, where M {a) is the binary matrix of dimensions mx m whose respective columns contain the binary coordinates of the respective elements where a is a root of said primitive polynomial, in
obtenant les lignes de ladite matrice Y au moyen d'additions binaires de lignes de la matrice X selon des motifs déterminés par les lignes de la matrice M {a) ; et c) obtention du paquet de données dans lequel obtaining the rows of said matrix Y by means of binary additions of rows of the matrix X in patterns determined by the rows of the matrix M {a); and c) obtaining the data packet in which
chaque symbole yp pour j = 1,2, ... , L, est composé des m bits où i = 0, ... , m - 1, situés sur la j -ième colonne de ladite matrice Y . each symbol y p for j = 1,2, ..., L, is composed of m bits where i = 0, ..., m - 1, located on the jth column of said matrix Y.
Grâce à ces dispositions, on peut remplacer le mécanisme classique de consultation de table de multiplication par un ensemble d'opérations binaires effectuées de manière vectorielle au niveau des symboles dudit paquet de données P. La présente invention est donc particulièrement avantageuse car, si elle permet une mise en œuvre logicielle du codage ou du décodage comme les techniques de l'état de l'art, elle permet aussi d'utiliser efficacement un circuit électronique simultanément à des moyens logiciels, ou à leur place. Thanks to these provisions, the conventional multiplication table consultation mechanism can be replaced by a set of binary operations carried out in a vectorial manner at the level of the symbols of said data packet P. The present invention is therefore particularly advantageous because, if it allows a software implementation of encoding or decoding as state-of-the-art techniques, it also makes it possible to efficiently use an electronic circuit simultaneously with software means, or in their place.
On notera en particulier que le procédé selon l'invention se prête bien à la virtualisation. On peut en effet supposer que certaines fonctions nécessiteront le recours à des coprocesseurs matériels tels qu'un circuit logique programmable (« Field-Programmable Gâte Array », ou FPGA, en anglais), un processeur graphique (« Graphics Processing Unit », ou GPU, en anglais), ou un processeur de signal numérique (« Digital Signal Processor », ou DSP, en anglais), pour accélérer certains traitements nécessitant une grande puissance de calcul, tels que les traitements de chiffrement, mais aussi ceux introduits par le codage de canal et par le codage de réseau. La présente invention est donc particulièrement avantageuse dans le cadre d'une fonctionnalité de codage de réseau virtualisée (« Virtualized Network Function », ou VNF, en anglais) principalement écrite sous forme logicielle et recourant à un accélérateur matériel mettant en œuvre la multiplication dans GF (2m ) en mode paquet. It will be noted in particular that the method according to the invention lends itself well to virtualization. It can indeed be supposed that certain functions will require the use of hardware coprocessors such as a programmable logic circuit ("Field Programmable Gate Array" or FPGA), a graphics processor unit ("Graphics Processing Unit" or GPU , in English), or a digital signal processor ("DSP"), to speed up some processing requiring high computing power, such as encryption processes, but also those introduced by coding channel and network coding. The present invention is therefore particularly advantageous in the context of a virtualized network function (VNF), mainly written in software form and using a hardware accelerator implementing the multiplication in GF. (2 m ) in packet mode.
Selon des caractéristiques particulières, lesdites matrices M (a) , pour sont extraites d'une matrice de référence T de dimensionAccording to particular features, said matrices M (a), for are extracted from a reference matrix T of dimension
Grâce à ces dispositions, on peut aisément obtenir les matrices M (a) sans aucun calcul, par simple lecture dans une unique matrice T construite et stockée préalablement à la mise en œuvre dudit procédé de codage. Thanks to these provisions, one can easily obtain matrices M (a) without any calculation, by simple reading in a single matrix T built and stored prior to the implementation of said coding method.
Corrélativement, l'invention concerne un procédé de décodage de paquets de données, comprenant les étapes suivantes : - réception de n > 1 paquets de données codés où, pour i = 1, ... , n, chaque paquet de données codé Correlatively, the invention relates to a method for decoding data packets, comprising the following steps: receiving n> 1 packets of coded data where, for i = 1, ..., n, each coded data packet
est une combinaison linéaire des mêmes k≥1 paquets d'information Pj contenant chacun L≥1 symboles constitués d'une suite de m > l bits, et où les coefficients ct j sont pris dans un corps d'extension GF (2m ) défini au moyen d'un polynôme primitif choisi, et is a linear combination of the same k≥1 information packets P j each containing L≥1 symbols consisting of a sequence of m> 1 bits, and where the coefficients c tj are taken in a GF extension body (2 m ) defined by means of a primitive polynomial chosen, and
- résolution du système formé par lesdites combinaisons linéaires, de manière à obtenir lesdits paquets d'information Pj . resolution of the system formed by said linear combinations, so as to obtain said information packets P j .
Ledit procédé de décodage est remarquable en ce que ladite étape de résolution d'un système de combinaisons linéaires comprend au moins une sous-étape de multiplication Q = a - P de tous les symboles d'un paquet de données Said decoding method is remarkable in that said step of solving a system of linear combinations comprises at least one substep of multiplication Q = a - P of all the symbols of a data packet
P = (x1; ... , xL) dans lequel Xj , pour j = 1, ... , L, est un symbole composé d'une suite de m bits xy , où i = 0, ... , m - 1, par un même nombre a appartenant à P = (x 1; ..., x L ) in which Xj, for j = 1, ..., L, is a symbol composed of a sequence of m bits x y , where i = 0, ... , m - 1, by the same number a belonging to
GF (2m ) , et en ce que ladite multiplication est effectuée de la manière suivante : a) remplissage de la matrice binaire X de dimension m x L en plaçant les bits xy composant chaque symbole le long de la j -ième colonne GF (2 m ), and in that said multiplication is performed as follows: a) filling of the binary matrix X of dimension mx L by placing the bits x y constituting each symbol along the jth column
de ladite matrice X ; said matrix X;
b) calcul de la matrice binaire b) calculation of the binary matrix
Y = M(a)x X , Y = M (a) x X,
de dimension mxL , où la matrice M (a) est la matrice binaire de dimensions mxffl dont les colonnes respectives contiennent les coordonnées binaires des éléments respectifs où a est une racine dudit polynôme of dimension mxL, where the matrix M (a) is the binary matrix of dimensions mxffl whose respective columns contain the binary coordinates of the respective elements where a is a root of said polynomial
primitif, en obtenant les lignes de ladite matrice Y au moyen d'additions binaires de lignes de la matrice X selon des motifs déterminés par les lignes de la matrice M (a) ; et c) obtention du paquet de données Q = (y1; ... , yL), dans lequel chaque symbole yp pour j = 1,2, ... , L, est composé des m bits où i = 0, ... , m - 1, situés sur la j -ième colonne de ladite matrice Y . primitive, by obtaining the rows of said matrix Y by means of binary additions of rows of the matrix X in patterns determined by the rows of the matrix M (a); and c) obtaining the data packet Q = (y 1; ..., y L ), in which each symbol y p for j = 1,2, ..., L, is composed of the m bits where i = 0, ..., m - 1, located on the jth column of said matrix Y.
Les avantages offerts par ce procédé de décodage sont essentiellement les mêmes que ceux offerts par le procédé de codage corrélatif succinctement exposé ci-dessus. The advantages offered by this decoding method are essentially the same as those offered by the correlative coding method succinctly set forth above.
Selon des caractéristiques particulières, lesdites matrices M (a) , pour sont extraites d'une matrice de référence T de dimensionAccording to particular features, said matrices M (a), for are extracted from a reference matrix T of dimension
Grâce à ces dispositions, on peut aisément obtenir les matrices M (a) sans aucun calcul, par simple lecture dans une unique matrice T construite et stockée préalablement à la mise en œuvre dudit procédé de décodage. Thanks to these provisions, one can easily obtain matrices M (a) without any calculation, simply by reading in a single matrix T built and stored prior to the implementation of said decoding method.
Selon un deuxième aspect, l'invention concerne divers dispositifs. According to a second aspect, the invention relates to various devices.
Elle concerne ainsi, premièrement, un dispositif de codage de paquets de données, comprenant des moyens pour : It thus relates, firstly, to a device for coding data packets, comprising means for:
- recevoir r≥l paquets de données utiles Yi constitué chacun par une combinaison linéaire ; i - receive r≥l useful data packets Y i each constituted by a linear combination ; i
où les coefficients sont pris dans un corps d'extension GF (2m ) défini au where the coefficients are taken in a GF extension body (2 m ) defined in
moyen d'un polynôme primitif choisi, des mêmes k≥1 paquets d'information dits paquets initiaux, chaque paquet d'information contenant a selected primitive polynomial, the same k≥1 information packets said initial packets, each packet of information containing
L≥ 1 symboles constitués chacun d'une suite de m > l bits ; L≥ 1 symbols each consisting of a sequence of m> 1 bits;
- calculer un paquet de données utiles sortant y constitué par une combinaison linéaire calculate a outgoing payload packet consisting of a linear combination
des paquets de données utiles Z , où les coefficients «, sont pris dans ledit corps d'extension GF (2m ) ; et useful data packets Z, where the coefficients ", are taken in said extension body GF (2 m ); and
- émettre ledit paquet de données utiles sortant y . Ledit dispositif de codage est remarquable en ce qu'il comprend en outre, dans le but d'effectuer au moins une multiplication Q = a P , requise pour le calcul du paquet de données utiles sortant Y\ de tous les symboles d'un paquet de données P = (x1; ... , xL) dans lequel xj t pour j = l, ... , L, est un symbole composé d'une suite de m bits où i = 0, ... , m - 1, par un même nombre a - send said packet of user data out y. Said coding device is remarkable in that it further comprises, for the purpose of performing at least one multiplication Q = a P, required for computing the outgoing user data packet Y \ of all the symbols of a packet of data P = (x 1; ..., x L ) in which x jt for j = l, ..., L, is a symbol composed of a sequence of m bits where i = 0, ..., m - 1, by the same number a
appartenant à GF (2m ) , des moyens pour : belonging to GF (2 m ), means for:
- remplir une matrice binaire X de dimension mx L en plaçant les bits xy composant chaque symbole Xj le long de la j -ième colonne de ladite matrice x ; filling a binary matrix X of dimension mx L by placing the bits x y constituting each symbol Xj along the jth column of said matrix x;
- calculer la matrice binaire - calculate the binary matrix
Y = M(a)x X , Y = M (a) x X,
de dimension mxL , où M (a) est la matrice binaire de dimensions m x m dont les colonnes respectives contiennent les coordonnées binaires des éléments respectifs {a, aa, ... , am_1a}, où a est une racine dudit polynôme primitif, en obtenant les lignes de ladite matrice Y au moyen d'additions binaires de lignes de la matrice X selon des motifs déterminés par les lignes de la matrice M (a) ; et of dimension mxL, where M (a) is the binary matrix of dimensions mxm whose respective columns contain the binary coordinates of the respective elements {a, yy, ..., a m_1 a}, where a is a root of said primitive polynomial, obtaining the rows of said matrix Y by means of binary additions of rows of the matrix X in patterns determined by the rows of the matrix M (a); and
- obtenir le paquet de données , dans lequel chaque - obtain the data packet, in which each
symbole yj t pour j = 1,2, ... , L, est composé des m bits yy , où i = 0, ... , m - 1, situés sur la j' -ième colonne de ladite matrice Y . jt symbol y for j = 1,2, ..., L, is composed of m bits y y, where i = 0, ..., m - 1, located on the j 'th column of said matrix Y.
Selon des caractéristiques particulières, ledit dispositif de codage comprend en outre des moyens pour extraire lesdites matrices M (a) , pour d'une matrice de référence T de dimension According to particular features, said coding device further comprises means for extracting said matrices M (a), for a reference matrix T of dimension
L'invention concerne aussi, deuxièmement, un dispositif de décodage de paquets de données, comprenant des moyens pour : The invention also relates, secondly, to a device for decoding data packets, comprising means for:
- recevoir n > \ paquets de données codés où, pour - receive n> \ coded data packets where, for
i = 1, ... , n, chaque paquet de données codé i = 1, ..., n, each coded data packet
est une combinaison linéaire des mêmes k≥1 paquets d'information Pj contenant chacun L≥1 symboles constitués d'une suite de m > l bits, et où les coefficients sont pris dans un corps d'extension défini au moyen is a linear combination of the same k≥1 information packets P j each containing L≥1 symbols consisting of a sequence of m> 1 bits, and where the coefficients are taken in an extension body defined by means
d'un polynôme primitif choisi ; et a primitive polynomial chosen; and
- résoudre le système formé par lesdites combinaisons linéaires, de manière à obtenir lesdits paquets d'information Pj . solving the system formed by said linear combinations, so as to obtain said information packets P j .
Ledit dispositif de décodage est remarquable en ce qu'il comprend en outre, dans le but d'effectuer au moins une multiplication Q = a P , requise pour la résolution dudit système de combinaisons linéaires, de tous les symboles d'un paquet de données dans lequel pour est un symbole composé d'une suite de m bits xy , où i = 0, ... , m - 1, par un même nombre a appartenant à GF (2m ) , des moyens pour : Said decoding device is remarkable in that it further comprises, for the purpose of performing at least one multiplication Q = a P, required for the resolution of said system of linear combinations, of all the symbols of a data packet. in which for is a symbol consisting of a sequence of m bits x y , where i = 0, ..., m - 1, by the same number a belonging to GF (2 m ), means for:
- remplir une matrice binaire X de dimension mx L en plaçant les bits xy composant chaque symbole Xj le long de la j -ième colonne de ladite matrice X ; - Fill a binary matrix X of dimension mx L by placing the bits x y each component Xj along the jth column of said matrix X;
- calculer la matrice binaire - calculate the binary matrix
de dimension mx L , où M(a) est la matrice binaire de dimensions m x m dont les colonnes respectives contiennent les coordonnées binaires des éléments respectifs où a est une racine dudit polynôme primitif, en obtenant les lignes de ladite matrice Y au moyen d'additions binaires de lignes de la matrice X selon des motifs déterminés par les lignes de la matrice M {a) ; et of dimension mx L, where M (a) is the binary matrix of dimensions mxm whose respective columns contain the binary coordinates of the respective elements where a is a root of said primitive polynomial, obtaining the rows of said matrix Y by means of binary additions of rows of the matrix X in patterns determined by the rows of the matrix M {a); and
- obtenir le paquet de données dans lequel chaque - obtain the data packet in which each
symbole pour j = 1,2, ... , L, est composé des m bits où symbol for j = 1,2, ..., L, is composed of m bits where
i = 0, ... , m - 1, situés sur la j -ième colonne de ladite matrice Y . Selon des caractéristiques particulières, ledit dispositif de codage comprend en outre des moyens pour extraire lesdites matrices M (a) , pour d'une matrice de référence T de dimension i = 0, ..., m - 1, located on the jth column of said matrix Y. According to particular features, said coding device further comprises means for extracting said matrices M (a), for a reference matrix T of dimension
mx(2m + m - 2) . mx (2 m + m - 2).
Selon un troisième aspect, l'invention concerne : According to a third aspect, the invention relates to:
- un nœud, dit nœud relais, d'un réseau de communication, comprenant un dispositif de codage tel qu'exposé succinctement ci-dessus, et a node, referred to as a relay node, of a communication network, comprising a coding device as briefly described above, and
- un nœud, dit nœud destinataire, d'un réseau de communication comprenant un dispositif de décodage tel qu'exposé succinctement ci-dessus. a node, said destination node, of a communication network comprising a decoding device as briefly described above.
Naturellement, un nœud d'un réseau de communication peut comprendre à la fois un dispositif de codage et un dispositif de décodage tels qu'exposés succinctement ci-dessus. Naturally, a node of a communication network may comprise both a coding device and a decoding device as briefly described above.
Les avantages offerts par ces dispositifs et ces nœuds sont essentiellement les mêmes que ceux offerts par les procédés corrélatifs succinctement exposés ci-dessus. The advantages offered by these devices and these nodes are essentially the same as those offered by the correlative methods briefly described above.
On notera qu'il est possible de réaliser ces dispositifs dans le contexte d'instructions logicielles et/ou dans le contexte de circuits électroniques. Note that it is possible to realize these devices in the context of software instructions and / or in the context of electronic circuits.
Selon un quatrième aspect, l'invention concerne un réseau de communication, comprenant au moins un nœud relais tel que décrit succinctement ci-dessus et au moins un nœud destinataire tel que décrit succinctement ci-dessus. According to a fourth aspect, the invention relates to a communication network, comprising at least one relay node as briefly described above and at least one destination node as briefly described above.
On notera que dans un tel réseau de communication, ledit nœud relais et ledit nœud destinataire doivent, pour être mutuellement compatibles, utiliser non seulement le même corps d'extension binaire GF (2m ) , c'est-à-dire la même valeur de m , mais en outre la même représentation de ce corps, c'est-à-dire le même polynôme primitif. Note that in such a communication network, said relay node and said destination node must, in order to be mutually compatible, use not only the same binary extension body GF (2 m ), ie the same value of m, but in addition the same representation of this body, that is to say, the same primitive polynomial.
L'invention vise également un programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur. Ce programme d'ordinateur est remarquable en ce qu'il comprend des instructions pour l'exécution des étapes du procédé de codage de paquets de données succinctement exposé ci- dessus, ou du procédé de décodage de paquets de données succinctement exposé ci-dessus, lorsqu'il est exécuté sur un ordinateur. The invention also relates to a computer program downloadable from a communication network and / or stored on a computer readable medium and / or executable by a microprocessor. This computer program is notable in that it includes instructions for performing the steps of the data packet coding method succinctly set forth above. above, or the method of decoding data packets succinctly set forth above, when executed on a computer.
Les avantages offerts par ce programme d'ordinateur sont essentiellement les mêmes que ceux offerts par lesdits procédés. The advantages offered by this computer program are essentially the same as those offered by said methods.
D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée ci-dessous de modes de réalisation particuliers, donnés à titre d'exemples non limitatifs. La description se réfère aux figures qui l'accompagnent, dans lesquelles : Other aspects and advantages of the invention will appear on reading the detailed description below of particular embodiments, given by way of non-limiting examples. The description refers to the figures that accompany it, in which:
- la figure 1 , décrite ci-dessus, représente l'opération effectuée par un nœud relais dans le codage de réseau, FIG. 1, described above, represents the operation carried out by a relay node in the network coding,
- la figure 2, décrite ci-dessus, représente schématiquement un système de transmission T selon l'invention, FIG. 2, described above, schematically represents a transmission system T according to the invention,
- la figure 3 représente schématiquement la structure d'un paquet de données selon un mode de réalisation de l'invention, FIG. 3 schematically represents the structure of a data packet according to one embodiment of the invention,
- la figure 4 représente la relation entre l'opération effectuée par un nœud relais R dans le codage de réseau, et la structure du paquet de données transmis par ce nœud relais R, FIG. 4 represents the relationship between the operation carried out by a relay node R in the network coding, and the structure of the data packet transmitted by this relay node R,
- la figure 5 représente, au niveau d'un nœud relais R, la relation entre les paquets de données entrants et le paquet de données transmis, FIG. 5 represents, at a relay node R, the relationship between the incoming data packets and the transmitted data packet,
- la figure 6 représente, au niveau d'un nœud relais R, la relation entre les paquets de données entrants et le paquet de données transmis lorsqu'un paquet de données entrant est effacé, FIG. 6 represents, at a relay node R, the relationship between the incoming data packets and the data packet transmitted when an incoming data packet is erased,
- la figure 7 représente schématiquement un nœud relais R selon un mode de réalisation de l'invention, FIG. 7 schematically represents a relay node R according to one embodiment of the invention,
- la figure 8 représente schématiquement un nœud destinataire D selon un mode de réalisation de l'invention, et FIG. 8 schematically represents a destination node D according to one embodiment of the invention, and
- la figure 9 représente la représentation d'un vecteur de L symboles appartenant à GF(2m) sous la forme d'une matrice binaire m x L . FIG. 9 represents the representation of a vector of L symbols belonging to GF (2 m ) in the form of a binary matrix m × L.
On va expliquer pour commencer comment on peut, selon un mode de réalisation de l'invention, transporter dans chaque paquet de données transmis les informations sur la manière dont ce paquet de données transmis a été construit à partir de paquets d'information Pi initiaux (émis par la source S). Pour ce faire, comme illustré sur la figure 3, on insère, par exemple entre l'en-tête (désigné par « header » sur les figures 3, 4, 5 et 6), et la partie utile (désignée par « payload » sur ces mêmes figures) du paquet de données, une suite C de k symboles de m bits égaux aux coefficients dans GF(2m) de la décomposition du paquet de données utiles transmis sur k paquets d'information Pi . We will first explain how one can, according to one embodiment of the invention, carry in each data packet transmitted information on how this transmitted data packet was built from initial information packets P i (emitted by the source S). For this, as illustrated in Figure 3, is inserted, for example between the header (designated "header" in Figures 3, 4, 5 and 6), and the useful part (referred to as "payload" on these same figures) of the data packet, a sequence C of k symbols of m bits equal to the coefficients in GF (2 m ) of the decomposition of the payload data packet transmitted over k information packets P i .
Par conséquent, les identifiants des paquets Pi initiaux sont respectivement égaux à C = (0, ... ,0,1,0, ... ,0), où 1 est le i-ème symbole de m bits, les autres symboles étant nuls. Consequently, the identifiers of the initial packets P i are respectively equal to C = (0, ..., 0,1,0, ..., 0), where 1 is the i-th symbol of m bits, the others symbols being null.
Lorsqu'un relais R du réseau N transmet un paquet d'information sans le modifier, l'identifiant est inchangé. Lorsque ce relais effectue une combinaison linéaire de paquets d'information Pi , l'identifiant contient la liste des coefficients utilisés, certains des coefficients pouvant être nuls, comme illustré When a relay R of the network N transmits an information packet without modifying it, the identifier is unchanged. When this relay performs a linear combination of information packets P i , the identifier contains the list of coefficients used, some of the coefficients being null, as illustrated.
sur la figure 4. in Figure 4.
Lorsqu'un relais R effectue une combinaison linéaire : When a relay R performs a linear combination:
de paquets de données utiles Yi déjà codés par d'autres nœuds du réseau, chaque paquet de données utiles Yi étant caractérisé par un vecteur d'identifiants le vecteur d'identifiants C du paquet de données sortant contient les combinaisons linéaires des identifiants des paquets d'entrée, comme illustré sur la figure 5. useful data packets Y i already coded by other nodes of the network, each packet of useful data Y i being characterized by a vector of identifiers the identifier vector C of the outgoing data packet contains the linear combinations of the identifiers of the input packets, as illustrated in FIG. 5.
Ainsi, l'opération faite sur les identifiants lors de la combinaison linéaire à coefficients dans GF(2m) est exactement la même que celle effectuée sur les paquets de données utiles ; le relais R peut donc avantageusement faire ces deux opérations en une seule fois. Thus, the operation done on the identifiers during the coefficient linear combination in GF (2 m ) is exactly the same as that performed on the payload packets; the relay R can therefore advantageously perform these two operations in one go.
On notera que cette méthode fonctionne même en cas de perte de paquets. Par exemple, si un relais R devait combiner trois paquets de données utiles mais qu'il n'a pas reçu ce dernier pour une raison quelconque, Note that this method works even in case of packet loss. For example, if a relay R had to combine three payload data packets but did not receive it for any reason,
il calcule la combinaison des paquets de données utiles Y1 et Y2 , et indique dans l'en-tête les coefficients résultant de cette combinaison, comme illustré sur la figure 6. Autrement dit, l'en-tête d'un paquet de données utiles Ri reçu par le destinataire D indique toujours correctement la manière dont ce paquet de données utiles Rt a été obtenu à partir de paquets d'information Pi initiaux. Par conséquent, suite à la réception des paquets de données utilesit calculates the combination of the useful data packets Y 1 and Y 2 , and indicates in the header the coefficients resulting from this combination, as illustrated in FIG. FIG. 6. In other words, the header of a payload packet R i received by the recipient D always correctly indicates the manner in which this payload packet R t was obtained from information packets P i initial. Therefore, after receiving the relevant data packets
la matrice K mentionnée ci-dessus sera connue du destinataire, comme requis. the matrix K mentioned above will be known to the recipient, as required.
On notera également que la mise en œuvre de cette méthode ne nécessite pas de connaître la topologie du réseau, puisque l'information sur la manière dont les paquets ont été codés est transportée dans les paquets eux- mêmes. Elle est dite non-cohérente dans la littérature technique. It should also be noted that the implementation of this method does not require knowing the topology of the network, since the information on the way in which the packets have been coded is carried in the packets themselves. It is said to be non-coherent in the technical literature.
Pour retrouver les paquets d'information à partir des To retrieve information packages from
paquets reçus, le destinataire D procède comme suit : received packets, the recipient D proceeds as follows:
- la source S n'attend pas d'acquittement pour chaque paquet qu'elle transmet ; the source S does not wait for acknowledgment for each packet that it transmits;
- le destinataire D n'envoie pas d'acquittement lorsqu'il reçoit un paquet codé ; the recipient D does not send an acknowledgment when he receives an encoded packet;
- pour chaque paquet de données utiles reçu, le destinataire D extrait l'identifiant on dispose ainsi d'une équation - for each packet of useful data received, the recipient D extracts the identifier and has an equation
linéaire :linear:
- dès que le destinataire D dispose de n≥k telles équations, il vérifie si le rang de la matrice du système est égal à k , en utilisant n'importe quelle méthode classique (par exemple la méthode de Gauss) ; l'article de C. Studholme et I. Blake intitulé « Random matrices and codes for the erasure channel », Algorithmica, vol. 56, n ° 4, pages 605 à 620 (2010), démontre que, dans le cas d'une matrice remplie aléatoirement, la matrice est de rang égal à k avec une grande probabilité ; as soon as the recipient D has n≥k such equations, it checks whether the rank of the matrix of the system is equal to k, using any conventional method (for example the Gauss method); the article by C. Studholme and I. Blake entitled "Random matrices and codes for the erasure channel", Algorithmica, vol. 56, No. 4, pages 605 to 620 (2010), demonstrates that, in the case of a randomly filled matrix, the matrix is of rank equal to k with a high probability;
- si le rang est inférieur à k , le destinataire D attend la réception de nouveaux paquets jusqu'à ce que la condition de rang égal à k soit vérifiée ; de préférence, on fixe une limite nmax au nombre de paquets émis par la source S, et le destinataire D envoie un acquittement négatif (NACK) s'il n'arrive pas à obtenir une matrice inversible après la fin de la transmission des nmax paquets ; dans ce cas, la source envoie des paquets codés supplémentaires jusqu'à ce que le décodage soit possible ; if the rank is less than k, the recipient D waits for the reception of new packets until the condition of rank equal to k is checked; preferably, a limit n max is set to the number of packets transmitted by the source S, and the recipient D sends a negative acknowledgment (NACK) if he fails to obtain an invertible matrix after the end of the transmission of the n max packets; in this case, the source sends additional coded packets until decoding is possible;
- une fois que cette condition est vérifiée, on résout le système linéaire suivant : once this condition is verified, the following linear system is solved:
ce qui fait intervenir des opérations d'addition/soustraction, et de multiplication des symboles d'un paquet par un même scalaire a e GF (2M ) , opérations que l'on peut, grâce à l'invention, effectuer par paquets, c'est-à-dire de manière parallélisée. which involves adding / subtracting operations, and multiplying the symbols of a packet by the same scalar ae GF (2 M ), operations that we can, thanks to the invention, perform in packets, c that is to say in a parallel manner.
La figure 7 représente schématiquement un nœud relais R selon un mode de réalisation de l'invention. FIG. 7 schematically represents a relay node R according to one embodiment of the invention.
Le relais R comporte un module de réception 10, un module d'extraction 1 1 , un module 12 de calcul du paquet de données utiles sortant, un module mémoire 13, un module de construction 14 et un module de transmission 15. The relay R comprises a reception module 10, an extraction module 11, a module 12 for computing the outgoing user data packet, a memory module 13, a building module 14 and a transmission module 15.
Le module d'entrée 10 est adapté à recevoir des paquets de données entrants de la part d'autres nœuds du réseau N, et à transmettre ces paquets de données entrants au module d'extraction 1 1 . Le module d'extraction 1 1 est adapté à extraire de chaque paquet entrant son en-tête (désigné par « H » sur la figure 7), et à transmettre au module de calcul 12 le reste du paquet entrant, c'est-à-dire l'ensemble formé par un vecteur d'identifiants C(,) et un paquet de données utiles Yi (désigné par « payload » sur la figure 7). Le module de calculThe input module 10 is adapted to receive incoming data packets from other nodes of the network N, and to transmit these incoming data packets to the extraction module 11. The extraction module 11 is adapted to extract from each incoming packet its header (designated "H" in FIG. 7), and to transmit to the calculation module 12 the remainder of the incoming packet, ie say the set formed by a identifier vector C (,) and a payload data packet Y i (referred to as "payload" in FIG. 7). The calculation module
12 est adapté à puiser les coefficients ai dans le module mémoire 13 pour calculer, en parallèle : 12 is adapted to draw the coefficients a i in the memory module 13 to calculate, in parallel:
- le paquet de données utiles sortant - the outgoing data packet
- le vecteur d'identifiants sortant dont les composantes sont - the outgoing identifier vector whose components are
en mettant en œuvre le procédé de multiplication dans GF(2m) selon l'invention. by implementing the multiplication method in GF (2 m ) according to the invention.
On notera, concernant le module mémoire 13, que : - ce module peut être intégré dans le relais R comme représenté sur la figure 7, ou constituer une source externe consultable par le relais R, et It will be noted, concerning the memory module 13, that: this module can be integrated in the relay R as shown in FIG. 7, or constitute an external source that can be accessed by the relay R, and
- les coefficients peuvent être constants pour un relais R donné, ou the coefficients can be constant for a given relay R, or
varier à chaque nouveau paquet entrant dans le relais R (par exemple au moyen d'un tirage au sort). vary with each new packet entering the relay R (for example by means of a draw).
Le module de construction 14 est adapté à recevoir, d'une part l'en-tête de paquet H mentionné précédemment, et d'autre part l'ensemble formé par le vecteur d'identifiants sortant C et le paquet de données utiles sortant F' , et à construire à partir de ces éléments un paquet de données sortant. The building module 14 is adapted to receive, on the one hand, the packet header H mentioned above, and on the other hand the set formed by the outgoing identifier vector C and the outgoing user data packet F ', and to build from these elements an outgoing data packet.
Enfin, le module de transmission 15 est adapté à recevoir le paquet de données sortant de la part du module de construction 14, et à transmettre ce paquet de données sortant sur le réseau N. Finally, the transmission module 15 is adapted to receive the outgoing data packet from the building module 14, and to transmit this outgoing data packet on the network N.
La figure 8 représente schématiquement un nœud destinataire D selon un mode de réalisation de l'invention. FIG. 8 schematically represents a destination node D according to one embodiment of the invention.
Le destinataire D comporte un module de réception 20, un module d'extraction 21 , un module de construction 22, un module de second membre 23, un module de test 27, un module d'inversion 26, un module de résolution 24 et un module de transmission 25. The recipient D comprises a reception module 20, an extraction module 21, a building module 22, a second member module 23, a test module 27, an inversion module 26, a resolution module 24 and a transmission module 25.
Le module d'extraction 21 est adapté à séparer, dans chaque paquet reçu, son en-tête (désigné par « H » sur la figure 8), son vecteur d'identifiants et son paquet de données utiles Ri .The extraction module 21 is adapted to separate, in each packet received, its header (denoted by "H" in FIG. 8), its identifier vector and its payload packet R i .
Le module de second membre 23 est adapté à recevoir de la part du module d'extraction 21 , au fur et à mesure des réceptions de paquets par le module de réception 20, les paquets de données utiles et à ajouter des lignes égales à ces paquets de données utiles Ri au vecteur de second membre The second member module 23 is adapted to receive from the extraction module 21, as and when receiving packets by the receiving module 20, the useful data packets and to add equal rows to these payload packets R i to the second member vector
De même, le module de construction 22 est adapté à recevoir de la part du module d'extraction 21 , au fur et à mesure des réceptions de paquets par le module de réception 20, les vecteurs d'identifiants et à ajouter des lignes constituées de ces identifiants à une matrice servant à construire la matrice K . Similarly, the building module 22 is adapted to receive from the extraction module 21, as and when receiving packets by the receiving module 20, the identifier vectors and to add lines consisting of these identifiers to a matrix used to construct the matrix K.
De même, le module de test 27 est adapté à recevoir, au fur et à mesure des réceptions de paquets par le module de réception 20, ladite matrice en construction de la part du module de construction 22, et à déterminer si le déterminant de cette matrice est différent de zéro, c'est-à-dire si cette matrice est régulière (rang égal à k ). Similarly, the test module 27 is adapted to receive, as packets are received by the receiving module 20, said matrix being constructed by the building module 22, and to determine whether the determinant of this module matrix is different from zero, that is to say if this matrix is regular (rank equal to k).
Lorsque ce n'est pas le cas, le fonctionnement décrit ci-dessus continue. Lorsque c'est le cas, le module de réception 20 est adapté à arrêter de recevoir des paquets, et le module d'inversion 26 est adapté à calculer l'inverse de la matrice K obtenue. Le module de résolution 24 est adapté à recevoir ledit vecteur de second membre de la part du module de second membre 23, ainsi que l'inverse de la matrice K de la part du module d'inversion 26, et à calculer le produit de ces deux grandeurs en mettant en œuvre le procédé de multiplication dans GF(2m ) selon l'invention, de façon à retrouver les paquets d'information initiaux.When this is not the case, the operation described above continues. When this is the case, the reception module 20 is adapted to stop receiving packets, and the inversion module 26 is adapted to calculate the inverse of the matrix K obtained. The resolution module 24 is adapted to receive said second member vector from the second member module 23, as well as the inverse of the matrix K from the inversion module 26, and to calculate the product of these elements. two magnitudes by implementing the multiplication method in GF (2 m ) according to the invention, so as to retrieve the initial information packets.
Enfin, le module de transmission 25 est adapté à recevoir les paquets d'information initiaux de la part du module de résolution 24, et à transmettre ces paquets d'information à l'utilisateur du nœud destinataire D. Finally, the transmission module 25 is adapted to receive the information packets initials from the resolution module 24, and to transmit these information packets to the user of the destination node D.
Comme expliqué ci-dessus, le codage et le décodage considérés dans la présente invention sont réalisés dans un corps d'extension binaire GF(2m ) , où m > 1 . On entend par là qu'à tout symbole donné composé de m bits xy , où on associe l'élément de GF(2m ) , noté dont les As explained above, the coding and decoding considered in the present invention are realized in a binary extension body GF (2 m ), where m> 1. By this we mean that any given symbol composed of m bits x y , where we associate the element of GF (2 m ), noted whose
coordonnées binaires sur une base canonique choisie sont précisément lesdits bits xy ; autrement dit : binary coordinates on a canonical basis chosen are precisely said bits x y ; in other words :
où a est une racine d'un polynôme primitif prédéterminé. where a is a root of a predetermined primitive polynomial.
On va expliquer à présent comment on peut effectuer la multiplication dans GF(2m ) uniquement au moyen d'additions binaires (XOR). Prenons un exemple dans le corps GF(24 ) construit à partir du polynôme primitif a vérifie l'équation : Le We will now explain how we can perform the multiplication in GF (2 m ) only by means of binary additions (XOR). Let's take an example in the GF (2 4 ) body constructed from the primitive polynomial to verify the equation: The
résultat de la multiplication de l'élément de result of the multiplication of the element of
coordonnées binaires par l'élément de binary coordinates by the element of
coordonnées binaires est l'élément dont les coordonnées binaires sont obtenues comme suit :binary coordinates is the element whose binary coordinates are obtained as follows:
par définition de la matrice M (a) , dont les colonnes successives sont constituées par les coordonnées binaires des éléments a , a a , a2 a et a3 a deby definition of the matrix M (a), whose successive columns are constituted by the binary coordinates of the elements a, aa, a 2 a and a 3 a of
GF(24 ) successivement. Pour calculer ces colonnes, on notera, par exemple, que GF (2 4 ) successively. To calculate these columns, it will be noted, for example, that
On procède de la même façon pour a2 a et a3 a . Le résultat final est : The same procedure is followed for a 2 a and a 3 a. The final result is:
Dans le cas général d'un corps GF(2m) pour m quelconque, on calcule : In the general case of a GF body (2 m ) for any m, we calculate:
où : or :
• X est le vecteur colonne contenant les m coordonnées binaires • X is the column vector containing the m binary coordinates
• Y est le vecteur colonne contenant les m coordonnées binaires de y , et • Y is the column vector containing the m binary coordinates of y, and
• la matrice est la matrice binaire mx m dont les • the matrix is the binary matrix mx m whose
colonnes contiennent les coordonnées binaires des éléments columns contain the binary coordinates of the elements
de GF(2m) , soit GF (2 m ), either
On dira que la matrice M (a) est « l'équivalent binaire » de l'élément a pour la multiplication dans GF(2m) . We will say that the matrix M (a) is the "binary equivalent" of the element a for the multiplication in GF (2 m ).
Comme tous les éléments non-nuls de GF(2m) peuvent être écrits sous la forme pour un certain entier 0 < k≤ 2m - 2 , on peut se contenter de considérer les matrices As all the non-zero elements of GF (2 m ) can be written in the form for a certain integer 0 <k≤ 2 m - 2, we can content ourselves with considering the matrices
associées aux puissances consécutives de a . associated with the consecutive powers of a.
On notera que toutes ces matrices peuvent être obtenues en consultant une « grande » matrice binaire Note that all these matrices can be obtained by consulting a "large" binary matrix
où n = 2m — 1, de dimension mx(2m + m - 2), construite préalablement, dont les colonnes contiennent les coordonnées de ak pour k≥ 0 . Dans cette matrice T , que l'on appellera « matrice de référence », les (m - 1) dernières colonnes sont une simple copie des (m -1) premières colonnes. M{ak ) est alors la sous- matrice obtenue en extrayant les colonnes n ° (k + 1) à (k + m) de la matrice de référence T , ce que l'on notera ainsi : where n = 2 m - 1, of dimension mx (2 m + m - 2), previously constructed, whose columns contain the coordinates of a k for k≥ 0. In this matrix T, which will be called "reference matrix", the last (m - 1) columns are a simple copy of the first (m -1) columns. M {a k ) is then the sub-matrix obtained by extracting the columns n (k + 1) to (k + m) from the reference matrix T, which will be noted as follows:
Par définition, le produit de deux éléments est égal à By definition, the product of two elements is equal to
de sorte que la matrice associée au so that the matrix associated with the
produit , que l'on peut lire directement dans la matrice de référence T ; on peut ainsi obtenir très simplement le produit des matrices par :product, which can be read directly into the matrix of reference T; it is thus possible to obtain very simply the product of the matrices by:
De la même manière, la matrice associée à l'inverse d'un élément est puisque qui est la matrice identité. In the same way, the matrix associated with the inverse of an element is since which is the identity matrix.
Si l'on prend le même exemple sur GF(24) (construit à partir du polynôme primitif la matrice de référence T est donnée If we take the same example on GF (2 4 ) (constructed from the primitive polynomial, the reference matrix T is given
par : by :
de sorte que, par exemple : so that, for example:
On vérifie facilement, par exemple, que le produit des matrices binaires est bien égal à comme prévu. It is easy to check, for example, that the product of the bit matrices is equal to as expected.
En poursuivant le même exemple, on trouve : Following the same example, we find:
de sorte que , ou encore so that, or
Comme autre exemple, la multiplication par dans GF (24 ) est donnée par le produit matriciel : As another example, multiplication by in GF (2 4 ) is given by the matrix product:
On notera que cette expression n'utilise que des XORs des coordonnées binaires de l'élément x . Note that this expression only uses XORs of the binary coordinates of the element x.
On peut ainsi commodément effectuer la multiplication de tout élément x de GF(2m) par tout élément a e GF (2m ) sur la base de l'équation (1 ) ci-dessus et des sous-matrices de la matrice de référence T , ce qui ne fait intervenir que des XORs des coordonnées de x . It is thus convenient to perform the multiplication of any element x of GF (2 m ) by any element ae GF (2 m ) on the basis of equation (1) above and sub-matrices of the reference matrix T , which only involves XORs of the coordinates of x.
On va expliquer à présent comment on peut utiliser cette méthode pour effectuer la multiplication par tout élément a e GF (2M ) au niveau des paquets. We will now explain how this method can be used to perform multiplication by any GF (2 M ) element at the packet level.
Le produit matriciel de l'équation (1 ) peut être aisément parallélisé lorsque chaque xi est un vecteur binaire de longueur L . Par exemple, la multiplication par un élément a dans GF(24 ) devient : The matrix product of equation (1) can easily be parallelized when each x i is a binary vector of length L. For example, the multiplication by an element a in GF (2 4 ) becomes:
où, avantageusement, toutes les opérations sont effectuées dans GF{2) . where, advantageously, all operations are performed in GF {2).
On utilisera ci-après la notation pour dénoter We will use the following notation to denote
la ligne n ° i d'une matrice x de dimension mx L ; le produit matriciel ci-dessus peut alors être commodément vu comme mettant en œuvre des XORs de ces lignes x(i,-). Par exemple, la multiplication par présentée ci-dessus the line n ° i of a matrix x of dimension mx L; the matrix product above can then be conveniently seen as implementing XORs of these lines x (i, -). For example, the multiplication by presented above
peut être commodément écrite sous la forme : can be conveniently written in the form:
Les considérations ci-dessus expliquent comment on peut, au cours du codage ou du décodage dans un corps de Galois GF(2m) , où m > l , défini au moyen d'un polynôme primitif prédéterminé, calculer un paquet Q = a P , où le nombre a appartient à GF(2m) , et P est un paquet de données P = (x1; ... , xL), dans lequel Xj , pour j = 1,2, ... , L„ avec L≥ 1 , est un symbole composé d'une suite de m bits xtj , où i = 0, ... , m - 1. The above considerations explain how one can, during coding or decoding in a Galois body GF (2 m ), where m> l, defined in using a predetermined primitive polynomial, calculate a packet Q = a P, where the number a belongs to GF (2 m ), and P is a data packet P = (x 1; ..., x L ), in where Xj, for j = 1,2, ..., L "with L≥ 1, is a symbol composed of a sequence of m bits x tj , where i = 0, ..., m - 1.
Selon le présent mode de réalisation, on met en œuvre les sous-étapes suivantes. According to the present embodiment, the following substeps are implemented.
a) On remplit une matrice binaire X de dimension mx L en plaçant les bits xtj composant chaque symbole Xj le long de la j -ième colonne, comme illustré schématiquement sur la figure 9. On désigne par la i -ème ligne, où i = 0, ... , m - 1, de cette matrice X . Autrement dit, si l'on regarde le paquet P comme une ligne de bits numérotés de 1 à mx L , la ligne est définie a) We fill a binary matrix X of dimension mx L by placing the bits x tj composing each symbol Xj along the jth column, as illustrated schematically in FIG. the i-th line, where i = 0, ..., m - 1, of this matrix X. In other words, if we look at the packet P as a line of bits numbered from 1 to mx L, the line is defined
par :by :
b) On calcule la matrice binaire Y , de dimension mx L , au moyen du produit matriciel : b) The binary matrix Y, of dimension mx L, is calculated using the matrix product:
où la matrice M (a) est l'équivalent binaire, défini ci-dessus, de l'élément a . Comme expliqué ci-dessus, effectuer ce produit matriciel revient à calculer les lignes de la matrice Y par des XORs de lignes de la matrice X , selon des motifs binaires déterminés par les lignes de la matrice M (a) . On opère ainsi, avantageusement, de manière vectorielle sur les L symboles du paquet P . c) On obtient finalement le paquet dans lequel where the matrix M (a) is the binary equivalent, defined above, of the element a. As explained above, performing this matrix product amounts to calculating the rows of the matrix Y by XORs of rows of the matrix X, in binary patterns determined by the rows of the matrix M (a). This is advantageously done in vector manner on the L symbols of the packet P. c) Finally we get the package in which
chaque symbole yp pour j = 1,2, ... , L, est composé des m bits ytj , où i = 0, ... , m - 1, situés sur la j -ième colonne de la matrice Y obtenue précédemment. Autrement dit, il suffit de lire la matrice Y colonne par colonne. each symbol y p for j = 1,2, ..., L, is composed of the m bits y tj , where i = 0, ..., m - 1, located on the jth column of the matrix Y obtained previously. In other words, it is sufficient to read the matrix Y column by column.
On va, pour terminer, expliquer comment on peut utiliser cette méthode pour effectuer, toujours au niveau des paquets, la multiplication par n'importe quelle matrice A dont les éléments aUj appartiennent àWe will, finally, explain how we can use this method to perform, always at the level of the packets, the multiplication by any matrix A whose elements has Uj belong to
En effet, une telle matrice peut être aisément transformée en une matrice binaire, que l'on appellera « image binaire » de la matrice A , en remplaçant tous ses éléments par leurs équivalents binaires mxm définis ci- Indeed, such a matrix can be easily transformed into a binary matrix, which will be called "binary image" of the matrix A, replacing all its elements by their binary equivalents mxm defined below.
dessus. above.
L'invention peut être mise en œuvre au sein des nœuds, par exemple un nœud relais ou un nœud destinataire d'un réseau de communication, au moyen de composants logiciels et/ou matériels. The invention may be implemented within the nodes, for example a relay node or a destination node of a communication network, by means of software and / or hardware components.
Les composants logiciels pourront être intégrés à un programme d'ordinateur classique de gestion de nœud de réseau. C'est pourquoi, comme indiqué ci-dessus, la présente invention concerne également un système informatique. Ce système informatique comporte de manière classique une unité centrale de traitement commandant par des signaux une mémoire, ainsi qu'une unité d'entrée et une unité de sortie. De plus, ce système informatique peut être utilisé pour exécuter un programme d'ordinateur comportant des instructions pour la mise en œuvre de l'un quelconque des procédés de codage, ou de décodage, de paquets de données selon l'invention. The software components can be integrated into a typical network node management computer program. Therefore, as indicated above, the present invention also relates to a computer system. This computer system conventionally comprises a central processing unit controlling signals by a memory, as well as an input unit and an output unit. In addition, this computer system may be used to execute a computer program comprising instructions for implementing any of the methods of encoding, or decoding, data packets according to the invention.
En effet, l'invention vise aussi un programme d'ordinateur téléchargeable depuis un réseau de communication comprenant des instructions pour l'exécution des étapes d'un procédé de codage, ou de décodage, de paquets de données selon l'invention, lorsqu'il est exécuté sur un ordinateur. Ce programme d'ordinateur peut être stocké sur un support lisible par ordinateur et peut être exécutable par un microprocesseur. Indeed, the invention also relates to a downloadable computer program from a communication network comprising instructions for executing the steps of a method of encoding, or decoding, data packets according to the invention, when it is run on a computer. This computer program may be stored on a computer readable medium and may be executable by a microprocessor.
Ce programme peut utiliser n'importe quel langage de programmation, et se présenter sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any another desirable form.
L'invention vise aussi un support d'informations, inamovible, ou partiellement ou totalement amovible, lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus. The invention also relates to an information carrier, irremovable, or partially or completely removable, readable by a computer, and comprising instructions of a computer program as mentioned above.
Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comprendre un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou un moyen d'enregistrement magnétique, tel qu'un disque dur, ou encore une clé USB (« USB flash drive » en anglais). The information carrier may be any entity or device capable of storing the program. For example, the medium may comprise storage means, such as a ROM, for example a CD ROM or a ROM of microelectronic circuit, or a magnetic recording means, such as a hard disk, or a USB flash drive ("USB flash drive").
D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme d'ordinateur selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. On the other hand, the information medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means. The computer program according to the invention can in particular be downloaded to an Internet type network.
En variante, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution de l'un quelconque des procédés de codage, ou de décodage, de paquets de données selon l'invention. Alternatively, the information carrier may be an integrated circuit in which the program is embedded, the circuit being adapted to execute or to be used in performing any of the methods of encoding, or decoding, packets data according to the invention.
Claims
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR1752861 | 2017-04-03 | ||
| FR1752861A FR3064858B1 (en) | 2017-04-03 | 2017-04-03 | METHODS OF ENCODING AND DECODING DATA PACKETS IN A GALOIS BODY |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2018185402A1 true WO2018185402A1 (en) | 2018-10-11 |
Family
ID=59253681
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/FR2018/050770 Ceased WO2018185402A1 (en) | 2017-04-03 | 2018-03-29 | Methods for encoding and decoding data packets in a galois field |
Country Status (2)
| Country | Link |
|---|---|
| FR (1) | FR3064858B1 (en) |
| WO (1) | WO2018185402A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119210468A (en) * | 2024-09-18 | 2024-12-27 | 北京科技大学 | Data encoding method, device, storage medium and electronic device |
-
2017
- 2017-04-03 FR FR1752861A patent/FR3064858B1/en active Active
-
2018
- 2018-03-29 WO PCT/FR2018/050770 patent/WO2018185402A1/en not_active Ceased
Non-Patent Citations (6)
| Title |
|---|
| AISHWARYA NAGARAJAN ET AL: "Galois field hardware architectures for network coding", ARCHITECTURES FOR NETWORKING AND COMMUNICATIONS SYSTEMS, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 25 October 2010 (2010-10-25), pages 1 - 9, XP058122870, ISBN: 978-1-4503-0379-8, DOI: 10.1145/1872007.1872051 * |
| C. STUDHOLME; I. BLAKE: "Random matrices and codes for the erasure channel", ALGORITHMICA, vol. 56, no. 4, 2010, pages 605 - 620, XP019781960 |
| HAINING FAN ET AL: "A survey of some recent bit-parallel GF(2n) multipliers", FINITE FIELDS AND THEIR APPLICATIONS, vol. 32, no. 32, 1 March 2015 (2015-03-01), US, pages 5 - 43, XP055431227, ISSN: 1071-5797, DOI: 10.1016/j.ffa.2014.10.008 * |
| NICOLA PETRA ET AL: "High speed galois fields GF(2m) multipliers", CIRCUIT THEORY AND DESIGN, 2007. ECCTD 2007. 18TH EUROPEAN CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 27 August 2007 (2007-08-27), pages 468 - 471, XP031257785, ISBN: 978-1-4244-1341-6 * |
| R. KOETTER; M. MEDARD: "An algebraic approach to network coding", IEEE/ACM TRANSACTIONS ON NETWORKING, vol. 11, no. 5, 2003, pages 782 - 795, XP007908088, DOI: doi:10.1109/TNET.2003.818197 |
| T. HO; M. MÉDARD; R. KOETTER; D.R. KARGER; M. EFFROS; J. SHI; B. LEONG: "A random linear Network Coding approach to multicast", IEEE TRANS. INFORMATION THEORY, vol. 52, no. 10, October 2006 (2006-10-01), pages 4413 - 4430 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119210468A (en) * | 2024-09-18 | 2024-12-27 | 北京科技大学 | Data encoding method, device, storage medium and electronic device |
| CN119210468B (en) * | 2024-09-18 | 2025-05-02 | 北京科技大学 | Data encoding method, device, storage medium and electronic device |
Also Published As
| Publication number | Publication date |
|---|---|
| FR3064858A1 (en) | 2018-10-05 |
| FR3064858B1 (en) | 2019-10-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2401177T3 (en) | Procedure and system for transmitting and receiving information using chain reaction codes | |
| TWI485992B (en) | Apparatus and method for accelerating the encoding of raptor codes | |
| EP2606583B1 (en) | Method and system of selective relaying in a communication network comprising a plurality of sources, a relay and a reception device with detection by the relay of errors on the received estimated messages and transmission, from the relay to the reception device, of a signal representative of only the messages for which no errors were detected. | |
| EP1974472B1 (en) | Fast encoding and decoding methods and related devices | |
| FR2849514A1 (en) | CODE OF ALGEBRA GEOMETRY ADAPTED TO RAFALE ERRORS | |
| WO2015197991A1 (en) | Method for dynamic and selective fd-dsdf transmission of a digital signal for a mamrc system with several full-duplex relays, and corresponding program product and relay device | |
| Grospellier | Constant time decoding of quantum expander codes and application to fault-tolerant quantum computation | |
| FR2905209A1 (en) | Information block decoding method for signal receiver of wireless apparatus, involves storing blocks in input memory, and updating current indication for decoding one of blocks based on number of iterations performed to decode current block | |
| FR2952252A1 (en) | METHOD AND DEVICE FOR DECODING, COMPUTER PROGRAM PRODUCT, CORRESPONDING MEANS OF STORAGE AND CORRESPONDING DESTINATION NODE | |
| FR2960725A1 (en) | METHOD AND DEVICE FOR CONFIGURING A GLOBAL ENCODING / DECODING SCHEME IN A COMMUNICATION NETWORK, COMPUTER PROGRAM PRODUCT AND CORRESPONDING STORAGE MEDIUM | |
| WO2018185402A1 (en) | Methods for encoding and decoding data packets in a galois field | |
| FR3009462B1 (en) | IMPROVED METHOD OF DECODING A CORRECTING CODE WITH MESSAGE PASSAGE, ESPECIALLY FOR DECODING LDPC CODES OR TURBO CODES | |
| EP0463598A1 (en) | Convultional code decoding circuit performing the viterbi algorithm step of memorisation and backtracing of the surviving paths | |
| WO2015197990A1 (en) | Method for dynamic and selective fd-dsdf transmission of a digital signal for a marc system with a full-duplex relay, and corresponding program product and relay device | |
| EP1905157B1 (en) | Method and system for encoding a data sequence | |
| WO2018115648A1 (en) | Encoding and decoding data packets in a galois group | |
| FR2922699A1 (en) | ITERATIVE DECODING IN A MESH NETWORK, CORRESPONDING METHOD AND SYSTEM | |
| WO2013054054A1 (en) | Error corrector coding and decoding | |
| FR3060148A1 (en) | MESSAGE TRANSMITTING METHOD, RECEIVING METHOD, TRANSMITTING DEVICE, RECEIVING DEVICE, AND COMMUNICATION SYSTEM THEREOF | |
| FR3013924A1 (en) | METHOD AND DEVICE FOR ENCODING DIGITAL DATA PACKETS, AND METHOD AND DEVICE FOR CORRECTING DEPLETIONS | |
| FR2960726A1 (en) | Code element's coded symbols transmitting method for destination node in wireless meshed network, involves generating and transmitting replacement symbol accompanied with information indicating line of matrix defining symbol to node | |
| Gautam et al. | Accelerating convolution coding & viterbi decodingon gpus using opencl | |
| Huang | A Parallelized Implementation of RaptorQ Using NVIDIA CUDA | |
| EP3057238B1 (en) | Method for iterative decoding of lfsr sequences with low probability of false alarm | |
| FR2957736A1 (en) | Data flow transmission method, involves generating set of parity data from information, and transmitting set of parity data to receiving device using transport protocol in response to received message |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18718884 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 18718884 Country of ref document: EP Kind code of ref document: A1 |