A biblioteca LiteSpeed QUIC (LSQUIC) é uma implementação de código aberto da funcionalidade QUIC e HTTP/3 para servidores e clientes. A maior parte do código desta distribuição é usada em nossos próprios produtos: LiteSpeed Web Server, LiteSpeed ADC e OpenLiteSpeed.
As versões QUIC atualmente suportadas são v1, v2, Internet-Draft versões 29 e 27; e as versões QUIC mais antigas do "Google" Q043, Q046 e Q050.
LiteSpeed QUIC é principalmente compatível com os seguintes RFCs:
As seguintes extensões de protocolo QUIC são implementadas:
A documentação está disponível em https://lsquic.readthedocs.io/en/latest/.
Além disso, veja exemplos de programas para uso de API e EXAMPLES.txt para algumas opções de compilação e tempo de execução.
Para construir LSQUIC, você precisa de CMake, zlib e BoringSSL. O programa de exemplo usa libevent para fornecer o loop de eventos.
BoringSSL não é empacotado; você tem que construí-lo sozinho. O processo é simples. Você precisará go
.
git clone https://boringssl.googlesource.com/boringssl
cd boringssl
Pode ser necessário instalar pré-requisitos como zlib e libevent.
git checkout 9fc1c33e9c21439ce5f87855a6591a9324e569fd
Ou apenas experimente o branch master mais recente.
cmake . && make
Lembre-se de onde estão as fontes do BoringSSL:
BORINGSSL=$PWD
Se você quiser ativar as otimizações, faça
cmake -DCMAKE_BUILD_TYPE=Release . && make
Se você deseja construir como uma biblioteca (necessário para construir o próprio lsquic como uma biblioteca compartilhada), faça:
cmake -DBUILD_SHARED_LIBS=1 . && make
http_client
, http_server
e os testes do LSQUIC vinculam as bibliotecas BoringSSL estaticamente. Seguindo a seção anterior, você pode construir LSQUIC da seguinte forma:
git clone https://github.com/litespeedtech/lsquic.git
cd lsquic
git submodule update --init
Estaticamente:
# $BORINGSSL is the top-level BoringSSL directory from the previous step
cmake -DBORINGSSL_DIR=$BORINGSSL .
make
Como uma biblioteca dinâmica:
cmake -DLSQUIC_SHARED_LIB=1 -DBORINGSSL_DIR=$BORINGSSL .
make
make test
A biblioteca e o cliente e servidor de exemplo podem ser construídos com Docker.
Inicialize os submódulos do Git:
cd lsquic
git submodule update --init
Construa a imagem do Docker:
docker build -t lsquic .
Então você pode usar os exemplos da linha de comando. Por exemplo:
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
A biblioteca foi testada nas seguintes plataformas:
Não hesite em relatar bugs para nós. Melhor ainda, envie-nos correções e melhorias!
Divirta-se,
Equipe LiteSpeed QUIC.
Direitos autorais (c) 2017 - 2021 LiteSpeed Technologies Inc.