mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
b1a7c3f944
- [FEATURE] QUIC and HTTP/3 Internet Draft 30 support. - [FEATURE] Unreliable Datagram Extension support. - [FEATURE] Adaptive congestion controller. - [BUGFIX] Do not send MAX_STREAM_DATA frames on crypto streams. - [BUGFIX] Fail with CRYPTO_BUFFER_EXCEEDED when too much CRYPTO data comes in. - [BUFFIX] Spin bit is now strictly per path; value is reset on DCID change. - [BUGFIX] Check that max value of max_streams_uni and max_streams_bidi TPs is 2^60. - [BUGFIX] Close IETF mini conn immediately if crypto session cannot be initialized. - Deprecate ID-28 (no browser uses it): it's no longer in the default versions list. - New programs duck_server and duck_client that implement the experimental siduck-00 protocol. They quack! - IETF crypto streams: don't limit ourselves from sending. - Command-line programs: turn off QL loss bits if -G is used, as Wireshark cannot decrypt QUIC packets when this extension is used. - Turn all h3 framing unit tests back on. - Fix malo initialization when compiled in no-pool mode.
73 lines
2.6 KiB
ReStructuredText
73 lines
2.6 KiB
ReStructuredText
LSQUIC Documentation
|
|
====================
|
|
|
|
This is the documentation for LSQUIC_ |release|, last updated |today|.
|
|
|
|
LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC
|
|
and HTTP/3 functionality for servers and clients. LSQUIC is:
|
|
|
|
- fast;
|
|
|
|
- flexible; and
|
|
|
|
- production-ready.
|
|
|
|
Most of the code in this distribution has been used in our own products
|
|
-- `LiteSpeed Web Server`_, `LiteSpeed Web ADC`_, and OpenLiteSpeed_ --
|
|
since 2017.
|
|
|
|
Currently supported QUIC versions are Q043, Q046, Q050, ID-27, ID-28,
|
|
ID-29, and ID-30.
|
|
Support for newer versions will be added soon after they are released.
|
|
|
|
LSQUIC is licensed under the `MIT License`_; see LICENSE in the source
|
|
distribution for details.
|
|
|
|
Features
|
|
--------
|
|
|
|
LSQUIC supports nearly all QUIC and HTTP/3 features, including
|
|
|
|
- DPLPMTUD
|
|
- ECN
|
|
- Spin bits (allowing network observer to calculate a connection's RTT)
|
|
- Path migration
|
|
- NAT rebinding
|
|
- Push promises
|
|
- TLS Key updates
|
|
- Extensions:
|
|
|
|
- :ref:`apiref-datagrams`
|
|
- Loss bits extension (allowing network observer to locate source of packet loss)
|
|
- Timestamps extension (allowing for one-way delay calculation, improving performance of some congestion controllers)
|
|
- Delayed ACKs (this reduces number of ACK frames sent and processed, improving throughput)
|
|
- QUIC grease bit to reduce ossification opportunities
|
|
|
|
Architecture
|
|
------------
|
|
|
|
The LSQUIC library does not use sockets to receive and send packets; that is handled by the user-supplied callbacks. The library also does not mandate the use of any particular event loop. Instead, it has functions to help the user schedule events. (Thus, using an event loop is not even strictly necessary.) The various callbacks and settings are supplied to the engine constructor.
|
|
LSQUIC keeps QUIC connections in several data structures in order to process them efficiently. Connections that need processing are kept in two priority queues: one holds connections that are ready to be processed (or "ticked") and the other orders connections by their next timer value. As a result, no connection is processed needlessly.
|
|
|
|
.. _LSQUIC: https://github.com/litespeedtech/lsquic
|
|
.. _`MIT License`: http://www.opensource.org/licenses/mit-license.php
|
|
.. _`LiteSpeed Web Server`: https://www.litespeedtech.com/products/litespeed-web-server/
|
|
.. _`LiteSpeed Web ADC`: https://www.litespeedtech.com/products/litespeed-web-adc/
|
|
.. _OpenLiteSpeed: https://openlitespeed.org/
|
|
|
|
Contents
|
|
--------
|
|
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
|
|
gettingstarted
|
|
tutorial
|
|
apiref
|
|
internals
|
|
|
|
Indices and tables
|
|
==================
|
|
|
|
* :ref:`genindex`
|
|
* :ref:`search`
|