QUIC is an application level transport protocol on top of UDP for improved end-to-end application performance.
QUIC was created at Google with 2 main design goals:
Deployability and evolvability
Low-latency secure communication establishment
In QUIC, once you establish connection between 2 endpoints, you can open multiple independent streams within the connection. This avoids the head-of-line blocking problem observed with TCP.
A QUIC stream is equivalent to a TCP connection.
QUIC headers and payload are encrypted.
quicly - Fastly’s reference implementation of QUIC
Since QUIC packets are encrypted, we cannot use Wireshark. But there are open source tools for QUIC tracing:
In this presentation, Nihal gives us an overview of the code repo and explains the working of #[kernel] annotation with the vecadd example.
To implement GPU kernel in Rust, the code that runs on the GPU (i.e. the device side of the code) is annotated with #[kernel] and the rustc codegen backend transforms that code into CUDA PTX.