Fountain code
View on WikipediaIn coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only slightly larger than the number of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate.
A fountain code is optimal if the original k source symbols can be recovered from any k successfully received encoding symbols (i.e., excluding those that were erased). Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k source symbols from any k’ of the encoding symbols with high probability, where k’ is just slightly larger than k.
LT codes were the first practical realization of fountain codes. Raptor codes and online codes were subsequently introduced, and achieve linear time encoding and decoding complexity through a pre-coding stage of the input symbols. Triangular network coding achieve linear encoding and decoding using non-linear encoding, and decoding using the back-substitution method.
Applications
[edit]Fountain codes are flexibly applicable at a fixed code rate, or where a fixed code rate cannot be determined a priori, and where efficient encoding and decoding of large amounts of data is required.
One example is that of a data carousel, where some large file is continuously broadcast to a set of receivers.[1] Using a fixed-rate erasure code, a receiver missing a source symbol (due to a transmission error) faces the coupon collector's problem: it must successfully receive an encoding symbol which it does not already have. This problem becomes much more apparent when using a traditional short-length erasure code, as the file must be split into several blocks, each being separately encoded: the receiver must now collect the required number of missing encoding symbols for each block. Using a fountain code, it suffices for a receiver to retrieve any subset of encoding symbols of size slightly larger than the set of source symbols. (In practice, the broadcast is typically scheduled for a fixed period of time by an operator based on characteristics of the network and receivers and desired delivery reliability, and thus the fountain code is used at a code rate that is determined dynamically at the time when the file is scheduled to be broadcast.)
Another application is that of hybrid ARQ in reliable multicast scenarios: parity information that is requested by a receiver can potentially be useful for all receivers in the multicast group.
In standards
[edit]Raptor codes are the most efficient fountain codes at this time,[2] having very efficient linear time encoding and decoding algorithms, and requiring only a small constant number of XOR operations per generated symbol for both encoding and decoding.[3] IETF RFC 5053 specifies in detail a systematic Raptor code, which has been adopted into multiple standards beyond the IETF, such as within the 3GPP MBMS standard for broadcast file delivery and streaming services, the DVB-H IPDC standard for delivering IP services over DVB networks, and DVB-IPTV for delivering commercial TV services over an IP network. This code can be used with up to 8,192 source symbols in a source block, and a total of up to 65,536 encoded symbols generated for a source block. This code has an average relative reception overhead of 0.2% when applied to source blocks with 1,000 source symbols, and has a relative reception overhead of less than 2% with probability 99.9999%.[4] The relative reception overhead is defined as the extra encoding data required beyond the length of the source data to recover the original source data, measured as a percentage of the size of the source data. For example, if the relative reception overhead is 0.2%, then this means that source data of size 1 megabyte can be recovered from 1.002 megabytes of encoding data.
A more advanced Raptor code with greater flexibility and improved reception overhead, called RaptorQ, has been specified in IETF RFC 6330. The specified RaptorQ code can be used with up to 56,403 source symbols in a source block, and a total of up to 16,777,216 encoded symbols generated for a source block. This code is able to recover a source block from any set of encoded symbols equal to the number of source symbols in the source block with high probability, and in rare cases from slightly more than the number of source symbols in the source block. The RaptorQ code is an integral part of the ROUTE instantiation specified in ATSC A-331 (ATSC 3.0)
For data storage
[edit]Erasure codes are used in data storage applications due to massive savings on the number of storage units for a given level of redundancy and reliability. The requirements of erasure code design for data storage, particularly for distributed storage applications, might be quite different relative to communication or data streaming scenarios. One of the requirements of coding for data storage systems is the systematic form, i.e., the original message symbols are part of the coded symbols.[citation needed] Systematic form enables reading off the message symbols without decoding from a storage unit. In addition, since the bandwidth and communication load between storage nodes can be a bottleneck, codes that allow minimum communication are very beneficial particularly when a node fails and a system reconstruction is needed to achieve the initial level of redundancy. In that respect, fountain codes are expected to allow efficient repair process in case of a failure: When a single encoded symbol is lost, it should not require too much communication and computation among other encoded symbols in order to resurrect the lost symbol. In fact, repair latency might sometimes be more important than storage space savings. Repairable fountain codes[5] are projected to address fountain code design objectives for storage systems. A detailed survey about fountain codes and their applications can be found at.[6]
A different approach to distributed storage using fountain codes has been proposed in Liquid Cloud Storage.[7][8] Liquid Cloud Storage is based on using a large erasure code such as the RaptorQ code specified in IETF RFC 6330 (which provides significantly better data protection than other systems), using a background repair process (which significantly reduces the repair bandwidth requirements compared to other systems), and using a stream data organization (which allows fast access to data even when not all encoded symbols are available).
See also
[edit]- Online codes
- Linear network coding
- Secret sharing
- Tornado codes, the precursor to fountain codes
Notes
[edit]- ^ J. Byers, M. Luby, M. Mitzenmacher, A. Rege (1998). "A Digital Fountain Approach to Reliable Distribution of Bulk Data" (PDF).
{{cite web}}: CS1 maint: multiple names: authors list (link) - ^ "Qualcomm Raptor Technology - Forward Error Correction". 2014-05-30. Archived from the original on 2010-12-29. Retrieved 2011-06-07.
- ^ (Shokrollahi 2006)
- ^ T. Stockhammer, A. Shokrollahi, M. Watson, M. Luby, T. Gasiba (March 2008). Furht, B.; Ahson, S. (eds.). "Application Layer Forward Error Correction for Mobile Multimedia Broadcasting". Handbook of Mobile Broadcasting: DVB-H, DMB, ISDB-T and Media FLO. CRC Press.
{{cite journal}}: CS1 maint: multiple names: authors list (link) - ^ Asteris, Megasthenis; Dimakis, Alexandros G. (2012). "Repairable Fountain Codes". IEEE Journal on Selected Areas in Communications. 32 (5): 1037–1047. arXiv:1401.0734. doi:10.1109/JSAC.2014.140522. S2CID 1300984.
- ^ Arslan, Suayb S. (2014). "Incremental Redundancy, Fountain Codes and Advanced Topics". arXiv:1402.6016 [cs.IT].
- ^ Luby, Michael; Padovani, Roberto; Richardson, Thomas J.; Minder, Lorenz; Aggarwal, Pooja (2019). "Liquid Cloud Storage". ACM Transactions on Storage. 15: 1–49. arXiv:1705.07983. doi:10.1145/3281276. S2CID 738764.
- ^ Luby, M.; Padovani, R.; Richardson, T.; Minder, L.; Aggarwal, P. (2017). "Liquid Cloud Storage". arXiv:1705.07983v1 [cs.DC].
References
[edit]- Amin Shokrollahi and Michael Luby (2011). "Raptor Codes". Foundations and Trends in Communications and Information Theory. 6 (3–4). Now Publishers: 213–322. doi:10.1561/0100000060. S2CID 1731099.
- Luby, Michael (2002). "LT codes". The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002. Proceedings. pp. 271–282. doi:10.1109/sfcs.2002.1181950. ISBN 0-7695-1822-2. S2CID 1861068.
- A. Shokrollahi (2006), "Raptor Codes", IEEE Transactions on Information Theory, 52 (6): 2551–2567, Bibcode:2006ITIT...52.2551S, doi:10.1109/tit.2006.874390, S2CID 61814971.
- P. Maymounkov (November 2002). "Online Codes" (PDF). (Technical Report).
- David J. C. MacKay (2003). Information Theory, Inference, and Learning Algorithms. Cambridge University Press. Bibcode:2003itil.book.....M. ISBN 0-521-64298-1.
- M. Luby, A. Shokrollahi, M. Watson, T. Stockhammer (October 2007), Raptor Forward Error Correction Scheme for Object Delivery, RFC 5053
{{citation}}: CS1 maint: multiple names: authors list (link). - M. Luby, A. Shokrollahi, M. Watson, T. Stockhammer, L. Minder (May 2011), RaptorQ Forward Error Correction Scheme for Object Delivery, RFC 6330
{{citation}}: CS1 maint: multiple names: authors list (link).
Fountain code
View on GrokipediaOverview
Definition and Core Properties
Fountain codes are a class of rateless erasure codes designed to transmit a fixed-size source message, divided into source symbols, by generating a potentially infinite stream of encoded symbols, known as droplets, from which the original message can be recovered using any sufficiently large subset of these droplets—typically on the order of symbols, where is a small overhead factor.[5][6] The core properties of fountain codes include their rateless nature, meaning they have no predefined code rate and can produce encoded symbols on demand without requiring feedback from the receiver, making them particularly suitable for communication over lossy channels such as packet-erasure networks.[6] They achieve near-optimal efficiency, with decoding overhead approaching times the source size for arbitrarily small as the message length grows large.[6] A basic example of fountain codes involves encoding a file into droplets, analogous to water droplets from a fountain; receivers collect these droplets over an unreliable channel, and once enough distinct ones are gathered—slightly more than the number needed to fill the original file—they can reconstruct the source data exactly, regardless of which specific droplets were received.[5] Mathematically, fountain codes are primarily non-systematic, though systematic variants exist in principle; the probability of successful recovery approaches 1 as the number of received symbols satisfies .[6]Relation to Erasure Codes
Erasure codes form a subclass of forward error correction (FEC) methods tailored to handle erasures—lost or missing symbols in a transmitted message—rather than substitutions or other errors in symbol values. In this framework, the receiver explicitly knows the positions of erasures, which simplifies decoding compared to general error correction, as it allows direct exploitation of the known gaps for reconstruction. These codes operate over finite fields, generating redundant symbols that enable recovery of the original $ k $ information symbols from a larger set of $ n $ transmitted symbols, where $ n > k $, provided the number of erasures does not exceed the code's correction capability.[1] The primary channel model for erasure codes is the binary erasure channel (BEC), where each input bit is received correctly with probability $ p $ or erased (lost) with probability $ 1 - p $, and erasures are flagged at the receiver. At the packet level, this extends to packet erasure channels, common in network communications, where entire packets are either delivered intact or discarded entirely, with no corruption of received packets. The capacity of the BEC, denoting the highest achievable reliable rate, is $ p $ bits per channel use, serving as a fundamental benchmark for code performance.[1][7] Conventional erasure codes, such as Reed-Solomon codes, are block codes characterized by fixed parameters: block length $ n $, dimension $ k $ (number of information symbols), and minimum distance $ d $, which satisfies the Singleton bound $ d \leq n - k + 1 $. This bound implies that such codes can correct up to $ d - 1 $ erasures within a block, as the minimum distance directly determines erasure resilience—the receiver can recover the message if fewer than $ d $ symbols are missing. However, in variable or high-loss environments, block codes with predetermined redundancy may fail to decode if erasures surpass this threshold, necessitating retransmissions and reducing efficiency. Reed-Solomon codes achieve the Singleton bound, making them maximum distance separable (MDS) and optimal in this regard over large alphabets.[8][8] Fountain codes extend the erasure code paradigm by introducing a rateless structure, producing an unbounded stream of encoded symbols without a fixed code rate or block size, thereby eliminating the need for channel feedback or retransmissions in lossy scenarios. As a type of rateless erasure code, they enable decoding of the original $ k $ symbols from any collection of slightly more than $ k $ linearly independent received symbols, approaching the erasure channel capacity with minimal overhead—typically within a small constant factor of the theoretical limit. This capacity-approaching behavior positions fountain codes as a significant advancement over fixed-rate block erasure codes, particularly for BEC and packet erasure channels where loss rates are unknown or fluctuating.[1][9]History
Invention and Early Development
Fountain codes emerged in the late 1990s as a solution to the challenges of reliable data distribution over lossy networks, particularly in scenarios involving multicast or broadcast where traditional feedback mechanisms proved inefficient. The foundational concept of a "digital fountain" was introduced in 1998 by John Byers, Michael Luby, Michael Mitzenmacher, and Ashutosh Rege in their work on scalable protocols for bulk data transfer to heterogeneous clients without requiring feedback channels.[10] This approach was motivated by the limitations of automatic repeat request (ARQ) protocols in asymmetric networks, such as satellite links with high latency and constrained reverse channels, where retransmissions could not be efficiently managed.[10] A key problem addressed was the "NACK implosion" in lossy multicast environments, where numerous receivers sending negative acknowledgments (NACKs) for lost packets overwhelmed the sender, rendering ARQ unscalable for large receiver groups.[10] The digital fountain metaphor envisioned a sender continuously generating redundant encoding symbols on demand, allowing any receiver to recover the original data from a sufficient subset, much like scooping water from an endless stream regardless of spillage. This idea built on earlier erasure coding research from the 1990s, including Reed-Solomon codes and more efficient variants like Tornado codes developed by Luby, Mitzenmacher, Amin Shokrollahi, Daniel Spielman, and Volker Stemann in 1997, which used irregular bipartite graphs for faster encoding and decoding over erasure channels.[11] Michael Luby's work in 1998 on LT codes marked the invention of the first practical fountain codes, realizing the digital fountain through rateless erasure codes that produce an unlimited number of encoding symbols without predefined rates.[9] These codes were designed for reliable multicast over the internet, enabling efficient data recovery without sender-receiver feedback, and were initially motivated by the need to distribute content scalably in broadcast settings prone to packet losses. Luby formally presented LT codes at the 43rd Annual IEEE Symposium on Foundations of Computer Science in 2002, where he introduced the fountain metaphor explicitly, emphasizing the codes' universality across erasure channels and near-optimal overhead as data lengths increase.[9] The LT framework drew from probabilistic analyses of random graph processes, extending precursor ideas in erasure coding to achieve linear-time operations suitable for real-world networks.[9]Key Advancements and Publications
A significant advancement in fountain code efficiency came with the introduction of Raptor codes by Amin Shokrollahi in 2001 at Digital Fountain, which extended LT codes to achieve linear-time encoding and decoding complexities while approaching channel capacity.[12][13] These codes were patented by Digital Fountain and subsequently commercialized for practical deployment in content delivery systems.[2] Subsequent developments focused on simplifying decoding processes and enhancing performance. In 2002, online codes were proposed as a variant offering simpler decoding through a pipelined approach, reducing computational overhead in streaming applications.[14] Throughout the 2010s, various extensions emerged, including integrations with low-density parity-check (LDPC) codes to boost error correction in noisy channels.[15] Key publications have shaped the field's theoretical and practical foundations. Shokrollahi's seminal 2006 IEEE paper detailed the design and analysis of Raptor codes, establishing their universality across erasure channels.[16] Earlier, Byers et al.'s 2002 work surveyed digital fountain approaches, highlighting their potential for asynchronous multicast and influencing subsequent rateless code designs.[17] More recent efforts post-2020 have explored adaptations for emerging constraints, such as RaptorQ codes in 5G New Radio (NR) Multimedia Broadcast Multicast Service (MBMS) standardized by 3GPP in Release 16 (as of 2020), and applications in DNA data storage systems, though specific quantum-resistant variants remain limited in the literature.[18][4] Milestones underscore the technology's adoption. In 2009, Qualcomm acquired Digital Fountain, integrating Raptor codes into its multimedia frameworks for mobile broadcasting.[19] Open-source implementations like the OpenFEC library, released in the 2010s, facilitated widespread experimentation and deployment of fountain codes in software-defined networks.[20] By 2020, fountain codes, particularly Raptor variants, were incorporated into 5G standards by 3GPP for efficient broadcast and multicast services in multimedia broadcast multicast service (MBMS).[21]Code Construction
Degree Distributions
In fountain codes, the degree of an encoded symbol refers to the number of source symbols from which it is formed by taking a random linear combination, typically via bitwise XOR operations over the finite field GF(2. The degree distribution, denoted Ω(d), specifies the probability that a randomly generated encoded symbol has degree d, where d ranges from 1 to the total number of source symbols k. This probabilistic selection of degrees is fundamental to the rateless nature of fountain codes, enabling the generation of an unbounded stream of encoded symbols while ensuring that a sufficient number can recover the original source symbols with high probability.[9] For LT codes, the seminal implementation of fountain codes, the ideal soliton distribution serves as the baseline degree distribution, designed to optimize decoding efficiency. It is defined mathematically as:Encoding Mechanism
The encoding mechanism in fountain codes transforms a fixed set of k source symbols into an unlimited stream of encoded symbols, each generated independently to enable rateless transmission over erasure channels. The process begins with the input of k source symbols, typically represented as elements from a finite field (often GF(2 for binary symbols, using XOR operations, but extendable to GF(2^s) for larger symbols). For each encoded symbol, a degree d is first sampled from a predefined degree distribution Ω, which determines the number of source symbols involved in the combination. This degree d is chosen such that higher degrees are less probable, ensuring efficient decoding on average.[9] Next, d distinct source symbols, referred to as neighbors, are selected uniformly at random from the k available symbols (or pseudorandomly in practice). The encoded symbol's value is then computed as the linear combination (typically XOR in binary fields) of these d neighbors. To facilitate decoding efficiently, in the basic description the choice is random, but for practical implementations, a pseudorandom function (e.g., based on a cryptographic hash like SHA-1) is used: given the index of the encoded symbol and d, it deterministically selects the neighbors and computes the value. Thus, each transmitted packet includes only the encoded value, the degree d, and the symbol index, keeping overhead constant without sending neighbor indices explicitly. This allows receivers to reconstruct the connections using the same pseudorandom function, without requiring a global codebook or shared state beyond the agreed hash.[9][22] The algorithmic structure can be outlined in pseudocode as follows, where the process loops to generate as many encoded symbols as needed (pseudorandom version):[Algorithm](/page/The_Algorithm) EncodeFountain(k_source_symbols, n_encoded_symbols):
for i = 1 to n_encoded_symbols:
d ← SampleDegree(Ω) // Sample from degree distribution Ω
neighbors ← PseudoRandomSelect(i, d, k) // Deterministic selection via hash on i and d
encoded_value ← XOR(neighbors) // Or linear combination over the field
output (i, d, encoded_value)
This generates a stream of self-describing packets with minimal overhead, permitting unlimited symbol production without maintaining encoder state beyond the original source symbols. The mechanism's stateless nature supports distributed encoding scenarios, such as in multicast networks.[9]
In terms of computational complexity, the encoding for each symbol in LT codes (the foundational fountain code) averages O(\ln k) operations per symbol, primarily due to the expected degree being on the order of \ln k and efficient random (or hash-based) selection of neighbors. Later fountain code variants, such as Raptor codes, further optimize this to achieve linear-time encoding overall relative to the number of source symbols.[9]