LiteSpeed QUIC (LSQUIC) 库是服务器和客户端的 QUIC 和 HTTP/3 功能的开源实现。该发行版中的大部分代码都用在我们自己的产品中:LiteSpeed Web Server、LiteSpeed ADC 和 OpenLiteSpeed。
目前支持的 QUIC 版本有 v1、v2、Internet-Draft 版本 29 和 27;以及较旧的“Google”QUIC 版本 Q043、Q046 和 Q050。
LiteSpeed QUIC 主要符合以下 RFC:
实现了以下 QUIC 协议扩展:
文档可在 https://lsquic.readthedocs.io/en/latest/ 获取。
此外,请参阅示例程序了解 API 使用情况,并参阅 Examples.txt 了解一些编译和运行时选项。
要构建 LSQUIC,您需要 CMake、zlib 和 BoringSSL。示例程序使用 libevent 提供事件循环。
BoringSSL 未打包;你必须自己构建它。这个过程很简单。您需要go
。
git clone https://boringssl.googlesource.com/boringssl
cd boringssl
您可能需要安装 zlib 和 libevent 等先决条件。
git checkout 9fc1c33e9c21439ce5f87855a6591a9324e569fd
或者,尝试最新的主分支。
cmake . && make
记住 BoringSSL 来源在哪里:
BORINGSSL=$PWD
如果您想打开优化,请执行以下操作
cmake -DCMAKE_BUILD_TYPE=Release . && make
如果您想构建为库(需要将 lsquic 本身构建为共享库),请执行以下操作:
cmake -DBUILD_SHARED_LIBS=1 . && make
LSQUIC 的http_client
、 http_server
和测试静态链接 BoringSSL 库。按照上一节的内容,您可以按如下方式构建 LSQUIC:
git clone https://github.com/litespeedtech/lsquic.git
cd lsquic
git submodule update --init
静态地:
# $BORINGSSL is the top-level BoringSSL directory from the previous step
cmake -DBORINGSSL_DIR=$BORINGSSL .
make
作为动态库:
cmake -DLSQUIC_SHARED_LIB=1 -DBORINGSSL_DIR=$BORINGSSL .
make
make test
该库以及示例客户端和服务器可以使用 Docker 构建。
初始化 Git 子模块:
cd lsquic
git submodule update --init
构建 Docker 镜像:
docker build -t lsquic .
然后您可以从命令行使用示例。例如:
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
该库已在以下平台上进行了测试:
请随时向我们报告错误。更好的是,请向我们发送修复和改进!
玩得开心,
LiteSpeed QUIC 团队。
版权所有 (c) 2017 - 2021 LiteSpeed Technologies Inc