-
Notifications
You must be signed in to change notification settings - Fork 124
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Explore multi-packet I/O (aka. fast UDP I/O) #1693
Comments
This was referenced Feb 28, 2024
This was referenced Mar 10, 2024
This was referenced Apr 4, 2024
mxinden
added a commit
to mxinden/neqo
that referenced
this issue
May 13, 2024
`neqo-bin` has been importing `quinn-udp` as a git reference, in order to include quinn-rs/quinn#1765. The quinn project has since released `quinn-udp` `v0.5.0`. This commit upgrades `neqo-bin` to use `quinn-udp` `v0.5.0`. `quinn-udp` has dropped `sendmmsg` support in the `v0.5.0` release (quinn-rs/quinn@ee08826). `neqo-bin` does not (yet) use `sendmmsg`. This might change in the future (mozilla#1693).
mxinden
added a commit
to mxinden/neqo
that referenced
this issue
May 13, 2024
`neqo-bin` has been importing `quinn-udp` as a git reference, in order to include quinn-rs/quinn#1765. The quinn project has since released `quinn-udp` `v0.5.0`. This commit upgrades `neqo-bin` to use `quinn-udp` `v0.5.0`. `quinn-udp` now takes a data reference (`&[u8]`) instead of owned data (`bytes::Bytes`) on its send path, thus no longer requiring `neqo-bin` to convert, but simply pass a reference. See quinn-rs/quinn#1729 (comment) for details. `quinn-udp` has dropped `sendmmsg` support in the `v0.5.0` release (quinn-rs/quinn@ee08826). `neqo-bin` does not (yet) use `sendmmsg`. This might change in the future (mozilla#1693).
github-merge-queue bot
pushed a commit
that referenced
this issue
May 13, 2024
* feat(bin): use quinn-udp crates.io release instead of git ref `neqo-bin` has been importing `quinn-udp` as a git reference, in order to include quinn-rs/quinn#1765. The quinn project has since released `quinn-udp` `v0.5.0`. This commit upgrades `neqo-bin` to use `quinn-udp` `v0.5.0`. `quinn-udp` now takes a data reference (`&[u8]`) instead of owned data (`bytes::Bytes`) on its send path, thus no longer requiring `neqo-bin` to convert, but simply pass a reference. See quinn-rs/quinn#1729 (comment) for details. `quinn-udp` has dropped `sendmmsg` support in the `v0.5.0` release (quinn-rs/quinn@ee08826). `neqo-bin` does not (yet) use `sendmmsg`. This might change in the future (#1693). * remove impl From<Datagram> for Vec<u8>
mxinden
changed the title
Explore multi-packet I/O
Explore multi-packet I/O (aka. fast UDP I/O)
Jun 5, 2024
mxinden
added a commit
to mxinden/neqo
that referenced
this issue
Aug 27, 2024
Previously `neqo-udp` would have one long-lived receive buffer, but after reading into the buffer from the socket, it would allocate a new `Vec` for each UDP segment. This commit does not allocate each UDP segment in a new `Vec`, but instead passes the single re-used receive buffer to `neqo_transport::Connection::process_input` directly. Part of mozilla#1693.
This was referenced Sep 29, 2024
Draft
This was referenced Oct 17, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Summary
Explore multi-packet at (a) the I/O layer (
sendmmsg
,recvmmsg
, GSO, GRO) and (b) within the Neqo state machines.Very early draft
Have a fixed sized send and fixed sized receive buffer.
Have
fn process
take a set of inputDatagram
's and a set of to-be-written-to outputDatagrams
.input
Datagram
s are a view into theread
buffer andoutput
Datagram
s are a view into thewrite
buffer thus no allocationHave
Socket::send
andSocket::recv
takewrite
andread
buffer respectively.Have
Datagram
carry asegment_size
(taken fromquinn-udp
).process
call can write one or more (same size) datagrams for a single destination into a singleDatagram
Next steps
quinn-udp
s multi-packet APIs throughneqo_common::udp
neqo-http3
/neqo-transport
process
method.process_multiple_input
is easy, taking actual advantage of accessing the whole batch at once is hardPast discussions
The text was updated successfully, but these errors were encountered: