Awesome Open Source
Awesome Open Source

Build Status Build Status Build status

LiteSpeed QUIC (LSQUIC) Library README


LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC and HTTP/3 functionality for servers and clients. Most of the code in this distribution is used in our own products: LiteSpeed Web Server, LiteSpeed ADC, and OpenLiteSpeed.

Currently supported QUIC versions are Q043, Q046, Q050, ID-27, ID-28, ID-29, and ID-32. Support for newer versions is added soon after they are released.


Documentation is available at

In addition, see example programs for API usage and EXAMPLES.txt for some compilation and run-time options.


To build LSQUIC, you need CMake, zlib, and BoringSSL. The example program uses libevent to provide the event loop.

Building BoringSSL

BoringSSL is not packaged; you have to build it yourself. The process is straightforward. You will need go installed.

  1. Clone BoringSSL by issuing the following command:
git clone
cd boringssl

You may need to install pre-requisites like zlib and libevent.

  1. Use specific BoringSSL version
git checkout b117a3a0b7bd11fe6ebd503ec6b45d6b910b41a1
  1. Compile the library
cmake . &&  make

Remember where BoringSSL sources are:


If you want to turn on optimizations, do

cmake -DCMAKE_BUILD_TYPE=Release . && make

If you want to build as a library, (necessary to build lsquic itself as as shared library) do:

cmake -DBUILD_SHARED_LIBS=1 . && make

Building LSQUIC Library

LSQUIC's http_client, http_server, and the tests link BoringSSL libraries statically. Following previous section, you can build LSQUIC as follows:

  1. Get the source code
git clone
cd lsquic
git submodule init
git submodule update
  1. Compile the library


# $BORINGSSL is the top-level BoringSSL directory from the previous step

As a dynamic library:

  1. Run tests
make test

Building with Docker

The library and the example client and server can be built with Docker.

Initialize Git submodules:

cd lsquic
git submodule init
git submodule update

Build the Docker image:

docker build -t lsquic .

Then you can use the examples from the command line. For example:

sudo docker run -it --rm lsquic http_client -s  -p / -o version=Q046
sudo docker run -p 12345:12345/udp -v /path/to/certs:/mnt/certs -it --rm lsquic http_server -c,/mnt/certs/chain,/mnt/certs/key


The library has been tested on the following platforms:

  • Linux
    • i386
    • x86_64
    • ARM (Raspberry Pi 3)
  • FreeBSD
    • i386
  • MacOS
    • x86_64
  • Android
    • ARM
  • Windows
    • x86_64

Get Involved

Do not hesitate to report bugs back to us. Even better, send us fixes and improvements!

Have fun,

LiteSpeed QUIC Team.

Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
c (14,390
protocol (182
udp (151
quic (38
tls13 (16

Find Open Source By Browsing 7,000 Topics Across 59 Categories