Implement processing of receive timestamps in ACK frames.

Per TBD IETF receive timestamp proposal:
https://github.com/wcsmith/draft-quic-receive-ts

ACK Frame {
     ACK Frame 0x02 (..),  // normal fields from 0x02.
     Timestamp Range Count (i),
     Timestamp Range (..) ...,
   }

// Timestamp ranges represent contiguous packets for which we'd like to report
receive timestamps. Like ACKs, the timestamps are reported in descending order
by packet number.
Timestamp Range {
     // Gap from largest acked (first range) or smallest packet in the previous range (for subsequent ranges).
     Gap (i),
     Timestamp Delta Count (i),
     // Delta from framer creation time (first delta of the ack), or delta from the previous reported timestamp.
     Timestamp Delta (i) ...,
   }

PiperOrigin-RevId: 400303996
4 files changed
tree: 1f91deb55a516e011a05df4aaa5ad0778997e73b
  1. common/
  2. epoll_server/
  3. http2/
  4. quic/
  5. spdy/
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
README.md

QUICHE

QUICHE stands for QUIC, Http/2, Etc. It is Google‘s production-ready implementation of QUIC, HTTP/2, HTTP/3, and related protocols and tools. It powers Google’s servers, Chromium, Envoy, and other projects. It is actively developed and maintained.

There are two public QUICHE repositories. Either one may be used by embedders, as they are automatically kept in sync:

To embed QUICHE in your project, platform APIs need to be implemented and build files need to be created. Note that it is on the QUICHE team's roadmap to include default implementation for all platform APIs and to open-source build files. In the meanwhile, take a look at open source embedders like Chromium and Envoy to get started:

To contribute to QUICHE, follow instructions at CONTRIBUTING.md.

QUICHE is only supported on little-endian platforms.