mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-11-24 04:01:07 +03:00
Implement basic ACK_FREQUENCY support.
Summary: As in title. This doesn't actually send any frames, but implements basic support for the transport parameter and responding to the frames. Reviewed By: yangchi Differential Revision: D26134787 fbshipit-source-id: 2c48e01084034317c8f36f89c69d172e3cb42278
This commit is contained in:
committed by
Facebook GitHub Bot
parent
4f320d8e7b
commit
21f190220e
@@ -55,6 +55,7 @@ folly::Optional<QuicSimpleFrame> updateSimpleFrameOnPacketClone(
|
||||
case QuicSimpleFrame::Type::MaxStreamsFrame:
|
||||
case QuicSimpleFrame::Type::HandshakeDoneFrame:
|
||||
case QuicSimpleFrame::Type::KnobFrame:
|
||||
case QuicSimpleFrame::Type::AckFrequencyFrame:
|
||||
case QuicSimpleFrame::Type::RetireConnectionIdFrame:
|
||||
// TODO junqiw
|
||||
return QuicSimpleFrame(frame);
|
||||
@@ -133,6 +134,7 @@ void updateSimpleFrameOnPacketLoss(
|
||||
case QuicSimpleFrame::Type::MaxStreamsFrame:
|
||||
case QuicSimpleFrame::Type::RetireConnectionIdFrame:
|
||||
case QuicSimpleFrame::Type::KnobFrame:
|
||||
case QuicSimpleFrame::Type::AckFrequencyFrame:
|
||||
conn.pendingEvents.frames.push_back(frame);
|
||||
break;
|
||||
}
|
||||
@@ -294,6 +296,24 @@ bool updateSimpleFrameOnPacketReceived(
|
||||
knobFrame.knobSpace, knobFrame.id, knobFrame.blob->clone());
|
||||
return true;
|
||||
}
|
||||
case QuicSimpleFrame::Type::AckFrequencyFrame: {
|
||||
if (!conn.transportSettings.minAckDelay.hasValue()) {
|
||||
return true;
|
||||
}
|
||||
const auto ackFrequencyFrame = frame.asAckFrequencyFrame();
|
||||
auto& ackState = conn.ackStates.appDataAckState;
|
||||
if (!ackState.ackFrequencySequenceNumber ||
|
||||
ackFrequencyFrame->sequenceNumber >
|
||||
ackState.ackFrequencySequenceNumber.value()) {
|
||||
ackState.tolerance = ackFrequencyFrame->packetTolerance;
|
||||
ackState.ignoreReorder = ackFrequencyFrame->ignoreOrder;
|
||||
conn.ackStates.maxAckDelay =
|
||||
std::chrono::microseconds(std::max<uint64_t>(
|
||||
conn.transportSettings.minAckDelay->count(),
|
||||
ackFrequencyFrame->updateMaxAckDelay));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
folly::assume_unreachable();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user