pub struct AckFrequencyConfig { /* private fields */ }展开描述
用于控制对端确认(ACK)频率的参数
本配置中提供的参数会在连接开始时发送给对端,以便其在发送确认时将这些参数考虑在内(每个参数的具体描述中说明了其如何影响确认频率)。
Quinn 的实现遵循第四版
QUIC Acknowledgement Frequency extension 草案。
默认值所表现出的行为与不启用此扩展时略有不同,因为它们改变了乱序数据包的处理方式(详见
AckFrequencyConfig::reordering_threshold)。
实现§
源代码§impl AckFrequencyConfig
impl AckFrequencyConfig
源代码pub fn ack_eliciting_threshold(
&mut self,
value: VarInt,
) -> &mut AckFrequencyConfig
pub fn ack_eliciting_threshold( &mut self, value: VarInt, ) -> &mut AckFrequencyConfig
我们将请求对端使用的“可触发 ACK”阈值
该阈值表示一个端点在不立即发送 ACK 的情况下,最多可接收的“可触发 ACK”包数量。
对端在收到的“可触发 ACK”包数量超过该阈值时,至少应发送一个 ACK 帧。值为 0 时,接收方会对每一个“可触发 ACK”包立即确认。
默认为 1,表示每隔一个“可触发 ACK”包发送 ACK 帧。
源代码pub fn max_ack_delay(
&mut self,
value: Option<Duration>,
) -> &mut AckFrequencyConfig
pub fn max_ack_delay( &mut self, value: Option<Duration>, ) -> &mut AckFrequencyConfig
我们将请求对端使用的 max_ack_delay
该参数表示当“可触发 ACK”阈值尚未达到时,端点在发送 ACK 之前最多等待的时间。
实际生效的 max_ack_delay 会被裁剪:下限为对端的 min_ack_delay 传输参数,上限为当前路径 RTT 与 25ms 中的较大者。
默认为 None,此时将使用对端传输参数中所声明的原始 max_ack_delay。
源代码pub fn reordering_threshold(&mut self, value: VarInt) -> &mut AckFrequencyConfig
pub fn reordering_threshold(&mut self, value: VarInt) -> &mut AckFrequencyConfig
我们将请求对端使用的乱序阈值
该阈值表示在不等待 ack_eliciting_threshold 达到上限或 max_ack_delay 超时的情况下,触发端点立即发送 ACK 的乱序包数量。
值为 0 表示乱序包不会触发立即 ACK;值为 1 则对每一个乱序到达的包立即确认(这也是禁用此扩展时的行为)。
建议将该值设置为 TransportConfig::packet_threshold 减一。由于 TransportConfig::packet_threshold 的默认值为 3,因此该值默认为 2。
trait 实现§
源代码§impl Clone for AckFrequencyConfig
impl Clone for AckFrequencyConfig
源代码§fn clone(&self) -> AckFrequencyConfig
fn clone(&self) -> AckFrequencyConfig
1.0.0 · 源代码§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. 更多信息