Files
noq/pr/708/docs/noq_udp/index.html
T

22 lines
5.9 KiB
HTML

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Uniform interface to send and receive UDP packets with advanced features useful for QUIC"><title>noq_udp - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="noq_udp" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Crate noq_udp</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../noq_udp/index.html">noq_udp</a><span class="version">1.0.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section id="rustdoc-toc"><h3><a href="#structs">Crate Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#constants" title="Constants">Constants</a></li></ul></section><div id="rustdoc-modnav"></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><h1>Crate <span>noq_udp</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/noq_udp/lib.rs.html#1-302">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Uniform interface to send and receive UDP packets with advanced features useful for QUIC</p>
<p>This crate exposes kernel UDP stack features available on most modern systems which are required
for an efficient and conformant QUIC implementation. As of this writing, these are not available
in std or major async runtimes, and their niche character and complexity are a barrier to adding
them. Hence, a dedicated crate.</p>
<p>Exposed features include:</p>
<ul>
<li>Segmentation offload for bulk send and receive operations, reducing CPU load.</li>
<li>Reporting the exact destination address of received packets and specifying explicit source
addresses for sent packets, allowing responses to be sent from the address that the peer
expects when there are multiple possibilities. This is common when bound to a wildcard address
in IPv6 due to <a href="https://www.rfc-editor.org/rfc/rfc8981.html">RFC 8981</a> temporary addresses.</li>
<li><a href="https://www.rfc-editor.org/rfc/rfc3168.html">Explicit Congestion Notification</a>, which is required by QUIC to prevent packet loss and reduce
latency on congested links when supported by the network path.</li>
<li>Disabled IP-layer fragmentation, which allows the true physical MTU to be detected and reduces
risk of QUIC packet loss.</li>
</ul>
<p>Some features are unavailable in some environments. This can be due to an outdated operating
system or drivers. Some operating systems may not implement desired features at all, or may not
yet be supported by the crate. When support is unavailable, functionality will gracefully
degrade.</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.RecvMeta.html" title="struct noq_udp::RecvMeta">Recv<wbr>Meta</a></dt><dd>Metadata for a single buffer filled with bytes received from the network</dd><dt><a class="struct" href="struct.Transmit.html" title="struct noq_udp::Transmit">Transmit</a></dt><dd>An outgoing packet</dd><dt><a class="struct" href="struct.UdpSockRef.html" title="struct noq_udp::UdpSockRef">UdpSock<wbr>Ref</a></dt><dd>A borrowed UDP socket</dd><dt><a class="struct" href="struct.UdpSocketState.html" title="struct noq_udp::UdpSocketState">UdpSocket<wbr>State</a></dt><dd>Tokio-compatible UDP socket with some useful specializations.</dd></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.EcnCodepoint.html" title="enum noq_udp::EcnCodepoint">EcnCodepoint</a></dt><dd>Explicit congestion notification codepoint</dd></dl><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><dl class="item-table"><dt><a class="constant" href="constant.BATCH_SIZE.html" title="constant noq_udp::BATCH_SIZE">BATCH_<wbr>SIZE</a></dt><dd>Number of UDP packets to send/receive at a time</dd></dl></section></div></main></body></html>