Open Bug 1901292 Opened 1 year ago Updated 3 months ago

[meta] Fast UDP for Firefox

Categories

(Core :: Networking, enhancement, P2)

Firefox 126
enhancement

Tracking

()

ASSIGNED
Tracking Status
relnote-firefox --- 140+

People

(Reporter: mail, Assigned: mail)

References

(Depends on 3 open bugs)

Details

(Keywords: meta, Whiteboard: [necko-triaged])

No description provided.
OS: Unspecified → All
Hardware: Unspecified → All

Taken from the corresponding Project Plan - Fast UDP for Firefox:

Goals

  • A Rust crate supporting the fastest current multi-packet UDP I/O path on at least current tier-1 platforms, with a fallback to sendmmsg/recvmmsg or single-packet I/O to support other tier platforms or older OS releases/hardware. Support for sending and receiving ancillary metadata, such as ECN and DSCP codepoints, IP TTL information, received ICMP errors for sent packets, etc. Developed following Rust best practices for test coverage, documentation, etc.
  • Modifications to the neqo QUIC stack to use the new UDP I/O crate, and a comprehensive analysis of the achievable performance improvements, identifying (and ideally fixing) other bottlenecks that limit achieving full performance.
  • A patch to Firefox that replaces current uses of PR_SendTo and PR_RecvFrom with the new Rust crate.
  • Modifications to the QUIC stack for in-place construction/parsing and encryption/decryption of batches of packets, using memory provided by the caller.
  • Optional/Stretch: Drop-in C/C++ replacement bindings for PR_SendTo and PR_RecvFrom that use the new crate, with an API that enables the calling code to easily move to multi-packet I/O.
Depends on: 1901295
Component: Untriaged → Networking
Product: Firefox → Core
Whiteboard: [necko-triaged]
Severity: -- → N/A
Priority: -- → P2
Depends on: 1902065
Depends on: 1902066
Depends on: 1902069
Depends on: 1902070
Depends on: 1902072
Depends on: 1910360

Release Note Request (optional, but appreciated)

[Why is this notable]:

Previously Firefox's QUIC stack has used NSPR to send and receive UDP datagrams, where NSPR only offered a limited, dated and slow set of IO system calls.

This project moves Firefox's QUIC stack to a modern UDP IO library, entirely written in Rust, using operating system specific advanced system calls.

As a result Firefox can now make use of various system specific UDP IO optimizations, improving upload and download speed. It has access to IP meta data, thus enabling Firefox to do ECN. And lastly, given the use of a modern programming language, we can iterate faster and with more confidence.

[Affects Firefox for Android]:

Yes

[Suggested wording]:

Firefox's QUIC stack is moving to a Rust based UDP IO stack, leveraging various operating system specific modern system calls, thus improving HTTP/3 upload and download speed.

[Links (documentation, blog post, etc)]:

None

Status:

relnote-firefox: --- → ?

Note that we have started rolling this feature out to Firefox 140 users (see this Mozilla Experimenter rollout.

Should this new feature be mentioned in the release notes? I filed a request above. Maybe Ryan, can you help here?

Flags: needinfo?(ryanvm)
Assignee: nobody → mail
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Flags: needinfo?(ryanvm) → needinfo?(dmeehan)

Added to the Fx140.0.4 release notes, please allow 30 minutes for the site to update.

Flags: needinfo?(dmeehan)
You need to log in before you can comment on or make changes to this bug.