Reviving HEv3 & HTTPS-RR in Chromium

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

This post is a work in progress -- it will be updated as CLs land and the project evolves.

Taking matters into my own hands to pursue RFC 9460 support in Chrome.

The Beginning: HTTPS Resource Records

It all started with a simple goal: I wanted to implement full support for HTTPS Resource Records (HTTPS-RR) in Chromium, specifically RFC 9460. This includes proper handling of AliasMode and ServiceMode with different target namesโ€”features crucial for the modern web's evolution towards more flexible and secure service discovery.

I picked up Issue 40257146 and went to work. I put together a CL that successfully implemented the logic. It worked! I was ready to land it.

The Block: "Wait for HEv3"

But then, the code review feedback came in. It wasn't about the correctness of my specific logic, but about the architecture. The Chromium team was in the middle of a major network stack refactor known as Happy Eyeballs v3 (HEv3).

My approach was flagged as conflicting with this new direction:

"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."

It made sense. HEv3 is designed to allow connection attempts to race without waiting for all DNS resultsโ€”a huge performance win. My implementation, based on the legacy path, might have blocked this optimization. So, I parked the CL and waited.

The Twist: "We might not do HEv3"

Time passed. HEv3 development dragged on. Then came the update that flipped everything:

"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."

So, the shiny new architecture I was waiting forโ€”the one that blocked my featureโ€”was potentially being abandoned? And we might go back to a non-HEv3 implementation anyway?

The Revival

That was my "WTF" moment. Instead of waiting for a compromise or abandoning the architectural improvements of HEv3, I decided to revive the effort myself. If HEv3 was stalled, I would help unblock it to get my HTTPS-RR features landed properly.

I dove deep into the HEv3 design docs and the codebase. I mapped out a detailed plan and started working through a 70+ step checklist to:

  1. Become a regular contributor to the HEv3 codepath (net/dns, net/http).
  2. Implement HTTPS-RR follow-ups (AliasMode/ServiceMode) within the HEv3 model.
  3. Ensure no performance regressions (the whole point of HEv3!).
  4. Ship it.

Current Status

I've already landed several preparatory CLs and have a stack of 63 changes in flight to completely overhaul the HEv3 codepath for HTTPS-RR support. The core functionality is now working end-to-end!

View all 63 CLs (Progress: 2 Merged, 61 In Review) โ†’

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):

It's a deep dive into Chromium's networking internalsโ€”HostResolver, HttpStreamPool, DnsTaskResultsManagerโ€”but we're getting there. The goal remains: Full RFC 9460 support in Chrome, backed by the performance of Happy Eyeballs v3.

Stay tuned for updates as I work through the checklist.

A Note on Reality

Will this work? I don't know yet. I'm one contributor with a vision, navigating a codebase shaped by many hands over many years. There will be tough reviews, architectural debates, and probably surprises I haven't anticipated. That's the nature of working in a project as complex as Chromium.

But here's what I do know: the best way to make something happen is to start. Every merged CL is one step closer. Every review comment is an opportunity to learn. And even if the path changes--even if we discover the way forward looks different than what I've mapped out--the effort itself moves the needle.

If there's a will, there's a way. We just might not know the way today.

"Only those who will risk going too far can possibly find out how far one can go."
โ€” T.S. Eliot