...
QUIC Connection/Stream - ATS Client Session/Transaction mapping (Obsolete: Not too inaccurate, but not worth referencing)
I/O between HttpSM and QUICNetVC (Jan/24/2023: Updated, but QUICFrames are handled by Quiche now)
Packetization (Jan/24/2023: Updated, we just don't do QUIC packetization by ourselves)
ToDo
https://github.com/apache/trafficserver/projects/8
Please label issues and pull-requests with "QUIC".
Branching Rules
Branches
Please use 10-Dev or master. Feature branch was merged and removed.
quic-latest : latest branchmaster: draft-29 (currently)
Development Rules
Pull-Requests
Please send Pull-Requests to "quic-latest" branch until it merged into master branch
TDD
Use Catch as Unit Test Framework. The header file is under tests/include.
How to build
(Last update: Jan/24/2023)
You have two ways to enable QUIC on ATS:
- Use Quiche library
- This uses Quiche's QUIC implementation
- Use an SSL library that supports QUIC (i.e. BoringSSL, or OpenSSL from quictls)
- This uses ATS's QUIC implementation
...
Currently ATS is compatible with Quiche 0.1416.0.
Please refer to the official documents for the build step. You need to enable ffi feature at minimum. qlog is also available.
...
https://github.com/akamai/openssl/tree/master-quic-support
Build ATS (
...
10-Dev branch)
Quiche support is only available on quiche branch at the moment.
Code Block |
---|
$ git clone --depth 1 --branch quiche10-Dev https://github.com/apache/trafficserver $ cd trafficserver $ ./configure --prefix=/PATH/TO/ATS --with-quiche=/PATH/TO/QUICHE --enable-debug $ make $ make install |
...
There is a script that builds third-party tools in the repo. It builds h2load and curl with HTTP/3 support. An HTTP/3 client under ngtcp2/example is also useful when you want to check details.
https://github.com/apache/trafficserver/blob/quic10-latestDev/tools/build_h3_tools.sh
traffic_quic
The quic-latest branch has We have client implementation called "traffic_quic" for test. Not actively maintained, and compatibility with Quiche implementation is not confirmed.
Code Block | ||
---|---|---|
| ||
// draft-17 $ traffic_quic -h Usage: traffic_quic [--SWITCH [ARG]] switch__________________type__default___description -a, --addr str 127.0.0.1 Address -o, --output str Write to FILE instead of stdout -p, --port str 4433 Port -P, --path str / Path -T, --debug str quic|vv.. Vertical-bar-separated Debug Tags -c, --close on false Enable connection close excercise -h, --help Print usage information -V, --version Print version string --run-root using TS_RUNROOT as sandbox |
...