Skip to main content

RaptorQ (RFC6330)

Project description

raptorq

Build Status Crates Documentation dependency status

Rust implementation of RaptorQ (RFC6330)

Recovery properties: Reconstruction probability after receiving K + h packets = 1 - 1/256^(h + 1). Where K is the number of packets in the original message, and h is the number of additional packets received. See "RaptorQ Technical Overview" by Qualcomm

Examples

See the examples/ directory for usage.

Benchmarks

The following were run on an Intel Core i5-6600K @ 3.50GHz

Symbol size: 1280 bytes (without pre-built plan)
symbol count = 10, encoded 127 MB in 0.532secs, throughput: 1924.7Mbit/s
symbol count = 100, encoded 127 MB in 0.590secs, throughput: 1734.6Mbit/s
symbol count = 250, encoded 127 MB in 0.572secs, throughput: 1788.4Mbit/s
symbol count = 500, encoded 127 MB in 0.549secs, throughput: 1858.8Mbit/s
symbol count = 1000, encoded 126 MB in 0.599secs, throughput: 1695.5Mbit/s
symbol count = 2000, encoded 126 MB in 0.673secs, throughput: 1509.1Mbit/s
symbol count = 5000, encoded 122 MB in 0.758secs, throughput: 1288.3Mbit/s
symbol count = 10000, encoded 122 MB in 0.953secs, throughput: 1024.7Mbit/s
symbol count = 20000, encoded 122 MB in 1.383secs, throughput: 706.1Mbit/s
symbol count = 50000, encoded 122 MB in 2.041secs, throughput: 478.5Mbit/s

Symbol size: 1280 bytes (with pre-built plan)
symbol count = 10, encoded 127 MB in 0.241secs, throughput: 4248.7Mbit/s
symbol count = 100, encoded 127 MB in 0.160secs, throughput: 6396.5Mbit/s
symbol count = 250, encoded 127 MB in 0.173secs, throughput: 5913.0Mbit/s
symbol count = 500, encoded 127 MB in 0.176secs, throughput: 5798.3Mbit/s
symbol count = 1000, encoded 126 MB in 0.200secs, throughput: 5078.1Mbit/s
symbol count = 2000, encoded 126 MB in 0.208secs, throughput: 4882.8Mbit/s
symbol count = 5000, encoded 122 MB in 0.280secs, throughput: 3487.7Mbit/s
symbol count = 10000, encoded 122 MB in 0.400secs, throughput: 2441.4Mbit/s
symbol count = 20000, encoded 122 MB in 0.494secs, throughput: 1976.8Mbit/s
symbol count = 50000, encoded 122 MB in 0.656secs, throughput: 1488.7Mbit/s

Symbol size: 1280 bytes
symbol count = 10, decoded 127 MB in 0.723secs using 0.0% overhead, throughput: 1416.2Mbit/s
symbol count = 100, decoded 127 MB in 0.701secs using 0.0% overhead, throughput: 1460.0Mbit/s
symbol count = 250, decoded 127 MB in 0.650secs using 0.0% overhead, throughput: 1573.8Mbit/s
symbol count = 500, decoded 127 MB in 0.638secs using 0.0% overhead, throughput: 1599.5Mbit/s
symbol count = 1000, decoded 126 MB in 0.676secs using 0.0% overhead, throughput: 1502.4Mbit/s
symbol count = 2000, decoded 126 MB in 0.764secs using 0.0% overhead, throughput: 1329.4Mbit/s
symbol count = 5000, decoded 122 MB in 0.896secs using 0.0% overhead, throughput: 1089.9Mbit/s
symbol count = 10000, decoded 122 MB in 1.176secs using 0.0% overhead, throughput: 830.4Mbit/s
symbol count = 20000, decoded 122 MB in 1.489secs using 0.0% overhead, throughput: 655.9Mbit/s
symbol count = 50000, decoded 122 MB in 2.633secs using 0.0% overhead, throughput: 370.9Mbit/s

symbol count = 10, decoded 127 MB in 0.713secs using 5.0% overhead, throughput: 1436.1Mbit/s
symbol count = 100, decoded 127 MB in 0.702secs using 5.0% overhead, throughput: 1457.9Mbit/s
symbol count = 250, decoded 127 MB in 0.637secs using 5.0% overhead, throughput: 1605.9Mbit/s
symbol count = 500, decoded 127 MB in 0.613secs using 5.0% overhead, throughput: 1664.8Mbit/s
symbol count = 1000, decoded 126 MB in 0.643secs using 5.0% overhead, throughput: 1579.5Mbit/s
symbol count = 2000, decoded 126 MB in 0.701secs using 5.0% overhead, throughput: 1448.8Mbit/s
symbol count = 5000, decoded 122 MB in 0.826secs using 5.0% overhead, throughput: 1182.3Mbit/s
symbol count = 10000, decoded 122 MB in 1.061secs using 5.0% overhead, throughput: 920.4Mbit/s
symbol count = 20000, decoded 122 MB in 1.380secs using 5.0% overhead, throughput: 707.7Mbit/s
symbol count = 50000, decoded 122 MB in 2.341secs using 5.0% overhead, throughput: 417.2Mbit/s

Public API

Note that the additional classes exported by the benchmarking feature flag are not considered part of this crate's public API. Breaking changes to those classes may occur without warning. The flag is only provided so that internal classes can be used in this crate's benchmarks.

Python bindings

The Python bindings are generated using pyo3. Rust 1.37.0-nightly or higher is required for building pyo3 projects.

$ rustup install nightly
$ rustup override set nightly

Some operating systems require additional packages to be installed.

$ sudo apt install python3-dev

maturin is recommended for building the Python bindings in this crate.

$ pip install maturin
$ maturin build --cargo-extra-args="--features python"

Alternatively, refer to the Building and Distribution section in the pyo3 user guide. Note, you must pass the --cargo-extra-args="--features python" argument to Maturin when building this crate to enable the Python binding features.

License

Licensed under

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raptorq-1.3.1_post2.tar.gz (81.3 kB view details)

Uploaded Source

Built Distributions

raptorq-1.3.1_post2-cp38-cp38-manylinux1_x86_64.whl (288.9 kB view details)

Uploaded CPython 3.8

raptorq-1.3.1_post2-cp37-cp37m-manylinux1_x86_64.whl (288.9 kB view details)

Uploaded CPython 3.7m

raptorq-1.3.1_post2-cp36-cp36m-manylinux1_x86_64.whl (289.2 kB view details)

Uploaded CPython 3.6m

raptorq-1.3.1_post2-cp35-cp35m-manylinux1_x86_64.whl (289.0 kB view details)

Uploaded CPython 3.5m

File details

Details for the file raptorq-1.3.1_post2.tar.gz.

File metadata

  • Download URL: raptorq-1.3.1_post2.tar.gz
  • Upload date:
  • Size: 81.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.7.9

File hashes

Hashes for raptorq-1.3.1_post2.tar.gz
Algorithm Hash digest
SHA256 d4525a79094bb1e1eb7ff5a9e8465cb3540571cd6fa47ddb7673c1631a4d22a2
MD5 2b3d08065dfccb4d0e8eea099cb4ac91
BLAKE2b-256 84e33f88f23a096483f1ee9ad0d298d4ebfd82263de3aca02b46fdcea0daa7b9

See more details on using hashes here.

File details

Details for the file raptorq-1.3.1_post2-cp38-cp38-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for raptorq-1.3.1_post2-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 553cd4cc1eeff3e89649701308b5875b9f2f697c627ad8002d0ee440dfae923a
MD5 5ca1b173fdc345cea08b9e79c1c86e5d
BLAKE2b-256 f14e3094fe050a7319bf69184d521c9bc0653babb22d2a958e6ca7628b3b4d2f

See more details on using hashes here.

File details

Details for the file raptorq-1.3.1_post2-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for raptorq-1.3.1_post2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8b4e47e5f94aa710a33bcb7c72842bf3be3943d58e11fb68c2557576e7aee532
MD5 113798c110ee908af85e76104c1d7773
BLAKE2b-256 bf5b5900a37c7e9b1a3db8fcaba6436e768ffe29cc34ace9b7e2180b1455cf59

See more details on using hashes here.

File details

Details for the file raptorq-1.3.1_post2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for raptorq-1.3.1_post2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e518a847d2da41d33879c3b6dc641e09e0c79e25df38c6ce280e7f08ac1abdcf
MD5 d9b7b24386fc66fdb1bde0cb05cd7d9d
BLAKE2b-256 0bbfe5c83d9b42c727c03f3a936252c57c117ce3e70e7a5966287619dc2d5c32

See more details on using hashes here.

File details

Details for the file raptorq-1.3.1_post2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for raptorq-1.3.1_post2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f6449517170026e1f5c923559a6d32fd8a4fa409e9ae0383612007aef3761d51
MD5 d8f138e08006d69816d5ce34effd3dff
BLAKE2b-256 62b191e227ecb3e98cb0c1d567e49f895bc4e190114a5166d1b9e7907fedd683

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page