An Abandoned HEv3 and HTTPS-RR Prototype

โšก Chromium ๐Ÿ”ง C++ / DNS / Networking ๐Ÿ‘ค Helmut Januschka

Status: โŒ Rejected

What the first RFC 9460 implementation attempted, why its scope grew, and why it was not accepted.

Update: this effort was rejected.

The networking team is taking a different direction with ongoing refactoring work, so these CLs will not land in their current form. The write-up stays up as a record of the investigation and the patches that came out of it.

Initial HTTPS-RR Change

Issue 40257146 tracks gaps in Chromium's RFC 9460 support, including AliasMode and ServiceMode records with different target names.

The first CL implemented that behavior on Chromium's legacy resolver path. Its functional tests passed, but code review identified an architectural conflict with the Happy Eyeballs v3 (HEv3) network-stack work.

The Block: "Wait for HEv3"

The Chromium networking team was in the middle of the Happy Eyeballs v3 (HEv3) refactor. The review recommendation was to wait and integrate with that architecture:

"My preference would be 'Wait until HEv3 lands and then revisit with proper integration.' At this point I don't have concrete ideas about how we should implement aliases and different target names so I'm not sure we keep or abandon this CL. I think marking this as work in progress... is a reasonable action for now."

HEv3 allows connection attempts to race without waiting for every DNS result. A legacy-path implementation risked duplicating or constraining that work, so the CL was parked.

HEv3 Became Uncertain

Later, the project reported that HEv3's completion date was uncertain:

"The HEv3 development has been prolonged and it's difficult to predict when it will be completed. The team are moving towards not implementing HEv3 (that's unfortunate). We may consider supporting HTTPS RR aliases and different target names without HEv3, nothing has been decided yet."

That uncertainty prompted a broader prototype combining HEv3 plumbing with the missing HTTPS-RR behavior. Its scope included DNS result normalization, target-name follow-ups, connection-attempt representation, fallback behavior, metrics, and integration tests.

Outcome

Two preparatory fixes landed, but the larger prototype stack was not accepted in its current form. Most entries below were experiments used to understand subsystem boundaries; many were abandoned without formal review.

Prototype CL inventory

Landed / Merged:

In Review (DNS & Normalization):

In Review (Followups & ServiceMode):

In Review (Connection Layer & Plumbing):

In Review (HTTPS-RR Core - The Key Gate!):

In Review (Metrics & Flag Flip):

The prototype showed that combining resolver changes, connection-layer refactoring, and RFC 9460 behavior in one stack was too broad for useful review. The later HTTPS-RR take-two keeps the work inside the resolver path and separates it into smaller changes.

What This Attempt Established

Even though the stack was rejected, it identified the relevant ownership boundaries: DnsResponseResultExtractor, HostResolverDnsTask, DnsTaskResultsManager, and the connection-attempt layer. It also made clear that RFC 9460 behavior should be reviewed separately from unrelated HEv3 architecture changes.