Библиотека LiteSpeed QUIC (LSQUIC) — это реализация функций QUIC и HTTP/3 с открытым исходным кодом для серверов и клиентов. Большая часть кода в этом дистрибутиве используется в наших собственных продуктах: LiteSpeed Web Server, LiteSpeed ADC и OpenLiteSpeed.
В настоящее время поддерживаются версии QUIC: v1, v2, Internet-Draft версии 29 и 27; и более старые версии QUIC «Google» 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
Или просто попробуйте последнюю ветку master.
cmake . && make
Помните, где находятся исходники BoringSSL:
BORINGSSL=$PWD
Если вы хотите включить оптимизацию, сделайте
cmake -DCMAKE_BUILD_TYPE=Release . && make
Если вы хотите собрать как библиотеку (необходимо собрать сам lsquic как общую библиотеку), выполните:
cmake -DBUILD_SHARED_LIBS=1 . && make
http_client
, http_server
и тесты LSQUIC статически связывают библиотеки 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.