Add unused QuicSession interfaces to initiating IETF connection migration: MigratePath(), ValidatePath(). These new interfaces are used by toy client in e2e tests.

Add QuicPathValidator into QuicConnection to do IETF path validation.

Behavior changes:
Cancel path validation if there is any during connection close;

Don't handle socket write error if sending PATH_CHALLENGE on the alternative socket or if the package sent to the alternative peer address exceeds path MTU;

Propagate PATH_RESPONSE to path validator to complete path validation.

Added and modified end-to-end tests to demonstrate connection migration with path validation works on client side.

Protected by quic_reloadable_flag_quic_pass_path_response_to_validator.

PiperOrigin-RevId: 343304329
Change-Id: I53dc52e82fbb9c69f5d2e90e5c90e1be45bb7bb6
14 files changed
tree: 34a92a48a2eb219ea2474a051db978f9c16d08ab
  1. common/
  2. epoll_server/
  3. http2/
  4. quic/
  5. spdy/
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
README.md

QUICHE

QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects. QUICHE is only supported on little-endian platforms.

Code can be viewed in CodeSearch in Quiche and is imported into Chromium.