• Stars
    star
    1,279
  • Rank 36,807 (Top 0.8 %)
  • Language
    C
  • License
    MIT License
  • Created about 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LiteSpeed QUIC and HTTP/3 Library

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, v2, Internet-Draft versions 29, and 27; and the older "Google" QUIC versions Q043, Q046, an Q050.

Standard Compliance

LiteSpeed QUIC is mostly compliant to the follow RFCs:

QUIC protocol extensions

The following QUIC protocol extensions are implemented:

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 31bad2514d21f6207f3925ba56754611c462a873

Or, just try the latest master branch.

  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=h3
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
  • iOS
    • ARM
  • 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

More Repositories

1

openlitespeed

Our high-performance, lightweight, open source HTTP server
C++
957
star
2

ols-docker-env

OpenLiteSpeed Docker Environment
Shell
194
star
3

lscache_wp

LiteSpeed Cache for WordPress
PHP
180
star
4

ols1clk

One click installation of Open LiteSpeed
Shell
142
star
5

ls-qpack

QPACK compression library for use with HTTP/3
C
75
star
6

ols-dockerfiles

Shell
46
star
7

lscache-laravel

LSCache for Laravel framework
PHP
46
star
8

ls-hpack

LiteSpeed HPACK (RFC7541) Library
C
42
star
9

lsmcd

LiteSpeed Memcache Compatible Persistent HA replication Cache Server
C++
39
star
10

ls-cloud-image

Shell
36
star
11

lsws-docker-env

LiteSpeed Enterprise Docker Environment
Shell
30
star
12

lscache-joomla

LSCache plugin for Joomla
PHP
30
star
13

magento2-LiteSpeed_LiteMage

LiteMage Cache Extension for Magento 2
PHP
29
star
14

lscache_prestashop

LiteSpeed Cache Plugin for Prestashop
PHP
26
star
15

lscache-opencart

PHP
26
star
16

lsws-dockerfiles

LiteSpeed Docker Files
Shell
17
star
17

lscache-drupal

LSCache Plugin for Drupal
PHP
14
star
18

lscache-xf2

LSCache Plugin for XenForo 2
PHP
8
star
19

gdoc

Documentation and tool tips for LiteSpeed Web Server, Web ADC, and OpenLiteSpeed.
PHP
8
star
20

ls-sfparser

Structured fields (formerly structured headers) parser, see RFC 8941.
C
7
star
21

lsws-magento-docker-env

Shell
7
star
22

litespeed-prometheus-exporter

Go
7
star
23

qmin

QMIN is a compression mechanism for QUIC headers
C
6
star
24

helm-chart

helm-chart
Mustache
5
star
25

third-party

Third party libraries used by some of our software
Shell
4
star
26

lsmcd_cpanel_plugin

User CPanel plugin for lsmcd
CSS
4
star
27

benchmarks

Various benchmarks
C
4
star
28

openlitespeed-doc

Documentation for OpenLiteSpeed
SCSS
3
star
29

wp-dashboard-notifier

Dashboard notifier for WordPress
PHP
3
star
30

lscache_mediawiki

PHP
3
star
31

packages

Downloadable packages
2
star
32

ngx2ols

PHP
2
star
33

lscache_xf

LiteSpeed Cache for XenForo
PHP
2
star
34

experiment

C
1
star