{"id":13847850,"url":"https://github.com/NTAP/quant","last_synced_at":"2025-07-12T11:32:19.956Z","repository":{"id":50093015,"uuid":"75819176","full_name":"NTAP/quant","owner":"NTAP","description":"QUIC implementation for POSIX and IoT platforms","archived":false,"fork":false,"pushed_at":"2023-08-08T13:57:35.000Z","size":7014,"stargazers_count":288,"open_issues_count":5,"forks_count":35,"subscribers_count":33,"default_branch":"main","last_synced_at":"2024-08-05T19:34:59.391Z","etag":null,"topics":["ietf","netapp-public","netmap","posix","quic","riot-os"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NTAP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-12-07T09:12:31.000Z","updated_at":"2024-08-01T02:54:09.000Z","dependencies_parsed_at":"2024-01-07T06:23:20.632Z","dependency_job_id":"a0e16a77-93dc-4ab4-b61e-fb64b75a3ea8","html_url":"https://github.com/NTAP/quant","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTAP%2Fquant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTAP%2Fquant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTAP%2Fquant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTAP%2Fquant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NTAP","download_url":"https://codeload.github.com/NTAP/quant/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225820303,"owners_count":17529138,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ietf","netapp-public","netmap","posix","quic","riot-os"],"created_at":"2024-08-04T19:00:33.712Z","updated_at":"2024-11-21T23:30:40.984Z","avatar_url":"https://github.com/NTAP.png","language":"C","readme":"# Quant\n\n[![Build Status](https://travis-ci.com/NTAP/quant.svg?branch=master)](https://travis-ci.com/github/NTAP/quant)\n[![Total alerts](https://img.shields.io/lgtm/alerts/g/NTAP/quant.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/NTAP/quant/alerts/)\n[![Coverity Badge](https://scan.coverity.com/projects/13161/badge.svg)](https://scan.coverity.com/projects/ntap-quant)\n[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/NTAP/quant.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/NTAP/quant/context:cpp)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/b01870db4e774aa2b17fc0955cf374b3)](https://www.codacy.com/manual/larseggert/quant?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=NTAP/quant\u0026amp;utm_campaign=Badge_Grade)\n\nQuant is a BSD-licensed C11 implementation of the emerging IETF\n[QUIC](https://quicwg.github.io/) standard for a new transport protocol over\nUDP, intending to support the new HTTP/3 standard and other application\nprotocols.\n\nQuant uses the [warpcore](https://github.com/NTAP/warpcore) zero-copy userspace\nUDP/IP stack, which in addition to running on on top of the standard **Socket\nAPI** has support for the **[netmap](http://info.iet.unipi.it/~luigi/netmap/)**\nfast packet I/O framework, as well as the\n**[Particle](https://github.com/particle-iot/device-os)** and\n**[RIOT](http://riot-os.org/)** IoT stacks. Quant hence supports traditional\nPOSIX platforms (Linux, MacOS, FreeBSD, etc.) as well as embedded systems.\n\nThe quant repository is [on GitHub](https://github.com/NTAP/quant).\n\n**NOTE:** Quant implements the QUIC transport layer, but does **NOT** implement\nan HTTP/3 binding.\n\n**NOTE:** Quant is a research effort and not meant for production use.\n\n## Prerequisites\n\nQuant uses [picotls](https://github.com/h2o/picotls) for its [TLS\n1.3](https://datatracker.ietf.org/doc/draft-ietf-tls-tls13/) implementation. and\n[klib](https://github.com/attractivechaos/klib) and\n[timeout](http://25thandclement.com/~william/projects/timeout.c.html) for some\ndata structures and functions. These dependencies will be built automatically.\n\nThe example HTTP/0.9 client and server use\n[http-parser](https://github.com/nodejs/http-parser).\n\nSo you need to install some dependencies. On the Mac, the easiest way is via\n[Homebrew](http://brew.sh/), so install that first. Then, do\n\n    brew install cmake http-parser pkg-config\n\nOn Debian-based Linux systems, do\n\n    apt install libssl-dev libhttp-parser-dev libbsd-dev pkgconf g++\n\nOn Darwin, you **must** also install the Xcode command line tools first:\n\n    xcode-select --install\n\nQuant uses the [cmake](https://cmake.org/) build system and\n[Doxygen](http://www.doxygen.nl/) to generate the documentation. If doxygen is\navailable, th documentation can be locally built vi the `doc` target.\n\n\n\n## Building\nTo do an out-of-source build of quant (best practice with `cmake`), do the\nfollowing to build with `make` as a generator:\n\n    git submodule update --init --recursive\n    mkdir Debug\n    cd Debug\n    cmake ..\n    make\n\nThe default build (per above) is without optimizations and with extensive debug\nlogging enabled. In order to build an optimized build, do this:\n\n    git submodule update --init --recursive\n    mkdir Release\n    cd Release\n    cmake -DCMAKE_BUILD_TYPE=Release ..\n    make\n\n(I really recommend [Ninja](https://ninja-build.org/) over `make`.)\n\n\n## Building for RIOT or Particle\n\nPlease see `README.md` in the `riot` and `particle` subdirectories.\n\n\n## Docker container\n\nInstead of building quant for yourself, you can also obtain a [pre-built Docker\ncontainer](https://cloud.docker.com/u/ntap/repository/docker/ntap/quant/). For\nexample,\n\n    docker pull ntap/quant:latest\n\nshould download the latest build on the `master` branch. The docker container by\ndefault exposes a QUIC server on port 4433 that can serve `/index.html` and\npossibly other resources.\n\nTo map the UDP port, run the docker container with\n\n    docker run -p4433:4433/udp ntap/quant\n\n\n## Testing and interop\n\nThe `libquant` library will be in `lib`. There are `client` and `server`\nexamples in `bin`. They explain their usage when called with a `-h` argument.\n\nThe current interop status of quant against [other\nstacks](https://github.com/quicwg/base-drafts/wiki/Implementations) is captured\nin [this\nspreadsheet](https://docs.google.com/spreadsheets/d/1D0tW89vOoaScs3IY9RGC0UesWGAwE6xyLk0l4JtvTVg/edit#gid=1510984897).\n\n\n## Development and contributing\n\nAt the moment, development happens in `master`, and branches numbered according\nto the [IETF Internet Drafts](https://quicwg.github.io/) they implement serve as\narchives.\n\nI'm happy to merge contributions that fix\n[bugs](https://github.com/NTAP/quant/issues?q=is%3Aopen+is%3Aissue+label%3Abug)\nor add\n[features](https://github.com/NTAP/quant/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement).\nPlease send pull requests.\n\n(Contributions to the underlying [warpcore](https://github.com/NTAP/warpcore)\nstack are also very welcome.)\n\n\n## Copyright\n\nCopyright (c) 2016-2022, NetApp, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n## Acknowledgment\n\nThis software has received past funding from the European Union's Horizon 2020\nresearch and innovation program 2014-2018 under grant agreement 644866\n([\"SSICLOPS\"](https://ssiclops.eu/)). The European Commission is not responsible\nfor any use that may be made of this software.\n\n\n[//]: # (@example client.c)\n[//]: # (@example server.c)\n","funding_links":[],"categories":["框架和开源实现","Implementations"],"sub_categories":["C/C++"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNTAP%2Fquant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNTAP%2Fquant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNTAP%2Fquant/lists"}