No description
Find a file
Dmitri Tikhonov 8ecb980d26 Release 2.29.1
- Make it possible to build the library and unit tests without
  libevent.
- Build all command-line utilities in bin/
- Add perf_client and perf_server command-line utilities to test
  performance according to the "perf" protocol.
2021-02-18 10:09:35 -05:00
bin Release 2.29.1 2021-02-18 10:09:35 -05:00
docs Release 2.29.1 2021-02-18 10:09:35 -05:00
include Release 2.29.1 2021-02-18 10:09:35 -05:00
src Release 2.29.0 2021-02-10 08:51:11 -05:00
tests Don't run HTTP/3 framing test on Windows 2021-02-12 09:02:52 -05:00
tools Release 1.21.0 2019-04-12 10:50:45 -04:00
wincompat Release 2.27.1 2021-01-06 09:00:05 -05:00
.cirrus.yml Release 2.29.0 2021-02-10 08:51:11 -05:00
.gitmodules Release 2.13.0 2020-03-12 09:02:56 -04:00
.nojekyll Switch to readthedocs.org for hosting documentation 2020-02-20 16:56:57 -05:00
.travis.yml Release 2.29.0 2021-02-10 08:51:11 -05:00
APIs.txt Release 2.27.1 2021-01-06 09:00:05 -05:00
appveyor-linux.yml Add MacOS image to the Linux AppVeyor YAML file: should be the same 2021-02-12 09:03:44 -05:00
appveyor-windows.yml Add AppVeyor file for Linux build 2021-02-11 17:17:00 -05:00
BUILD-WINDOWS.md Release 2.26.1 2020-12-17 14:39:51 -05:00
CHANGELOG Release 2.29.1 2021-02-18 10:09:35 -05:00
CMakeLists.txt Make libevent optional; move binaries into bin/ 2021-02-11 17:14:27 -05:00
CONTRIBUTORS.txt Release 2.27.6 2021-01-27 10:36:25 -05:00
Dockerfile Release 2.29.0 2021-02-10 08:51:11 -05:00
EXAMPLES.txt Make libevent optional; move binaries into bin/ 2021-02-11 17:14:27 -05:00
LICENSE Release 2.27.2 2021-01-06 17:53:07 -05:00
LICENSE.chrome LSQUIC Client: Initial release 2017-09-22 17:00:03 -04:00
print-glibc-version.sh Latest changes 2018-07-10 11:51:45 -04:00
README.md README: add "docs passing" badge 2021-02-15 08:35:25 -05:00

Linux and MacOS build status Windows build status FreeBSD build status Documentation Status

LiteSpeed QUIC (LSQUIC) Library README

Description

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 v1 (disabled by default until the QUIC RFC is released); Internet-Draft versions 34, 29, and 27; and the older "Google" QUIC versions Q043, Q046, an Q050.

Documentation

Documentation is available at https://lsquic.readthedocs.io/en/latest/.

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

Requirements

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 https://boringssl.googlesource.com/boringssl
cd boringssl

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

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

Remember where BoringSSL sources are:

BORINGSSL=$PWD

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 https://github.com/litespeedtech/lsquic.git
cd lsquic
git submodule init
git submodule update
  1. Compile the library

Statically:

# $BORINGSSL is the top-level BoringSSL directory from the previous step
cmake -DBORINGSSL_DIR=$BORINGSSL .
make

As a dynamic library:

cmake -DLSQUIC_SHARED_LIB=1 -DBORINGSSL_DIR=$BORINGSSL .
make
  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 www.google.com  -p / -o version=Q046
sudo docker run -p 12345:12345/udp -v /path/to/certs:/mnt/certs -it --rm lsquic http_server -c www.example.com,/mnt/certs/chain,/mnt/certs/key

Platforms

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