All Projects → alibaba → xquic

alibaba / xquic

Licence: Apache-2.0 License
XQUIC Library released by Alibaba is a cross-platform implementation of QUIC and HTTP/3 protocol.

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to xquic

Quiche
🥧 Savoury implementation of the QUIC transport protocol and HTTP/3
Stars: ✭ 5,481 (+481.23%)
Mutual labels:  protocol, quic, http3
Algernon
🎩 Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support
Stars: ✭ 1,880 (+99.36%)
Mutual labels:  quic, http3, tls13
Quic Go
A QUIC implementation in pure go
Stars: ✭ 6,085 (+545.28%)
Mutual labels:  protocol, quic, http3
Lsquic
LiteSpeed QUIC and HTTP/3 Library
Stars: ✭ 727 (-22.91%)
Mutual labels:  protocol, quic, tls13
Ngtcp2
ngtcp2 project is an effort to implement IETF QUIC protocol
Stars: ✭ 589 (-37.54%)
Mutual labels:  protocol, quic
Kcp
⚡ KCP - A Fast and Reliable ARQ Protocol
Stars: ✭ 10,473 (+1010.6%)
Mutual labels:  protocol, quic
Pquic
The PQUIC implementation, a framework that enables QUIC clients and servers to dynamically exchange protocol plugins that extend the protocol on a per-connection basis
Stars: ✭ 63 (-93.32%)
Mutual labels:  protocol, quic
gost
GO Simple Tunnel - a simple tunnel written in golang
Stars: ✭ 154 (-83.67%)
Mutual labels:  quic, http3
Base Drafts
Internet-Drafts that make up the base QUIC specification
Stars: ✭ 1,270 (+34.68%)
Mutual labels:  protocol, quic
Msquic
Cross-platform, C implementation of the IETF QUIC protocol.
Stars: ✭ 2,501 (+165.22%)
Mutual labels:  protocol, quic
load-balancers
In-progress version of draft-ietf-quic-load-balancers
Stars: ✭ 31 (-96.71%)
Mutual labels:  ietf, quic
docker-nginx-http3
Docker image for Nginx + HTTP/3 powered by Quiche
Stars: ✭ 19 (-97.99%)
Mutual labels:  quic, http3
datagram
In-progress version of draft-ietf-quic-datagram
Stars: ✭ 25 (-97.35%)
Mutual labels:  ietf, quic
quic-tracker
A test suite for QUIC
Stars: ✭ 59 (-93.74%)
Mutual labels:  ietf, quic
qlog
The IETF I-D documents for the qlog format
Stars: ✭ 36 (-96.18%)
Mutual labels:  ietf, quic
Quinn
Async-friendly QUIC implementation in Rust
Stars: ✭ 1,859 (+97.14%)
Mutual labels:  protocol, quic
Docker Nginx Http3
Alpine Linux image with Nginx 1.19.4 (mainline) with HTTP/3 (QUIC), TLSv1.3, 0-RTT, brotli, NJS support, and 10 MB size. All built on the bleeding edge for max performance. Built on the edge, for the edge.
Stars: ✭ 820 (-13.04%)
Mutual labels:  quic, tls13
Http3 Explained
A document describing the HTTP/3 and QUIC protocols
Stars: ✭ 1,860 (+97.24%)
Mutual labels:  quic, http3
Quic.net
A .NET C# Implementation of QUIC protocol - Google's experimental transport layer.
Stars: ✭ 173 (-81.65%)
Mutual labels:  protocol, quic
doq-proxy
DNS-over-QUIC to UDP Proxy
Stars: ✭ 57 (-93.96%)
Mutual labels:  ietf, quic

XQUIC

xquic logo

GitHub Build CodeQL Codacy Badge Codacy Badge Platforms

简体中文文档 README-zh-CN

Introduction

XQUIC Library released by Alibaba is …

a client and server implementation of QUIC and HTTP/3 as specified by the IETF. Currently supported QUIC versions are v1 and draft-29.

OS and platform agnostic. It currently supports Android, iOS, Linux and macOS. Most of the code is used in our own products, and has been tested at scale on android, iOS apps, as well as servers.

still in active development. Interoperability is regularly tested with other QUIC implementations.

Requirements

To build XQUIC, you need

  • CMake
  • BoringSSL or BabaSSL

To run test cases, you need

  • libevent
  • CUnit

QuickStart Guide

XQUIC supports both BabaSSL and BoringSSL.

Build with BabaSSL

# get XQUIC source code
git clone [email protected]:alibaba/xquic.git
cd xquic

# get and build BabaSSL
git clone [email protected]:BabaSSL/BabaSSL.git ./third_party/babassl
cd ./third_party/babassl/
./config --prefix=/usr/local/babassl
make -j
SSL_TYPE_STR="babassl"
SSL_PATH_STR="${PWD}"
SSL_INC_PATH_STR="${PWD}/include"
SSL_LIB_PATH_STR="${PWD}/libssl.a;${PWD}/libcrypto.a"
cd -

# build XQUIC with BabaSSL
git submodule update --init --recursive
mkdir -p build; cd build
cmake -DGCOV=on -DCMAKE_BUILD_TYPE=Debug -DXQC_ENABLE_TESTING=1 -DXQC_SUPPORT_SENDMMSG_BUILD=1 -DXQC_ENABLE_EVENT_LOG=1 -DXQC_ENABLE_BBR2=1 -DXQC_DISABLE_RENO=0 -DSSL_TYPE=${SSL_TYPE_STR} -DSSL_PATH=${SSL_PATH_STR} -DSSL_INC_PATH=${SSL_INC_PATH_STR} -DSSL_LIB_PATH=${SSL_LIB_PATH_STR} ..
make -j

Build with BoringSSL

# get XQUIC source code
git clone [email protected]:alibaba/xquic.git
cd xquic

# get and build BoringSSL
git clone [email protected]:google/boringssl.git ./third_party/boringssl
cd ./third_party/boringssl
mkdir -p build && cd build
cmake -DBUILD_SHARED_LIBS=0 -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC" ..
make ssl crypto
cd ..
SSL_TYPE_STR="boringssl"
SSL_PATH_STR="${PWD}"
SSL_INC_PATH_STR="${PWD}/include"
SSL_LIB_PATH_STR="${PWD}/build/ssl/libssl.a;${PWD}/build/crypto/libcrypto.a"
cd ../..

# build XQUIC with BoringSSL
git submodule update --init --recursive
mkdir -p build; cd build
cmake -DGCOV=on -DCMAKE_BUILD_TYPE=Debug -DXQC_ENABLE_TESTING=1 -DXQC_SUPPORT_SENDMMSG_BUILD=1 -DXQC_ENABLE_EVENT_LOG=1 -DXQC_ENABLE_BBR2=1 -DXQC_DISABLE_RENO=0 -DSSL_TYPE=${SSL_TYPE_STR} -DSSL_PATH=${SSL_PATH_STR} -DSSL_INC_PATH=${SSL_INC_PATH_STR} -DSSL_LIB_PATH=${SSL_LIB_PATH_STR} ..
make -j

Run testcases

sh ../scripts/xquic_test.sh

Documentation

Contributing

We would love for you to contribute to XQUIC and help make it even better than it is today! All types of contributions are encouraged and valued. Thanks to all contributors. See our Contributing Guidelines for more information.

If you have any questions, please feel free to open a new Discussion topic in our discussion forums.

License

XQUIC is released under the Apache 2.0 License.

Contact Us

Feel free to contact us in the following ways:

  • e-mail: [email protected]

  • Dingtalk group: 34059705

  • slack channel: #xquic in quicdev group

    dingtalk group
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].