mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-08 09:42:06 +03:00
Do not accept very small cwnd in Quic
Summary: it's a crime Reviewed By: mjoras Differential Revision: D21104571 fbshipit-source-id: 122460f4f29c6abe30dd279fb050d1a263eb67a0
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b84e647cf8
commit
8db6fc263f
@@ -2420,6 +2420,17 @@ void QuicTransportBase::setTransportSettings(
|
|||||||
}
|
}
|
||||||
conn_->transportSettings = std::move(transportSettings);
|
conn_->transportSettings = std::move(transportSettings);
|
||||||
conn_->streamManager->refreshTransportSettings(conn_->transportSettings);
|
conn_->streamManager->refreshTransportSettings(conn_->transportSettings);
|
||||||
|
// A few values cannot be overridden to be lower than default:
|
||||||
|
if (conn_->transportSettings.defaultCongestionController !=
|
||||||
|
CongestionControlType::None) {
|
||||||
|
conn_->transportSettings.initCwndInMss =
|
||||||
|
std::max(conn_->transportSettings.initCwndInMss, kInitCwndInMss);
|
||||||
|
conn_->transportSettings.minCwndInMss =
|
||||||
|
std::max(conn_->transportSettings.initCwndInMss, kMinCwndInMss);
|
||||||
|
conn_->transportSettings.initCwndInMss = std::max(
|
||||||
|
conn_->transportSettings.minCwndInMss,
|
||||||
|
conn_->transportSettings.initCwndInMss);
|
||||||
|
}
|
||||||
setCongestionControl(transportSettings.defaultCongestionController);
|
setCongestionControl(transportSettings.defaultCongestionController);
|
||||||
if (conn_->transportSettings.pacingEnabled) {
|
if (conn_->transportSettings.pacingEnabled) {
|
||||||
conn_->pacer = std::make_unique<DefaultPacer>(
|
conn_->pacer = std::make_unique<DefaultPacer>(
|
||||||
|
@@ -2567,5 +2567,19 @@ TEST_F(QuicTransportTest, NoScheduleIfNoNewData) {
|
|||||||
EXPECT_FALSE(transport_->isPacingScheduled());
|
EXPECT_FALSE(transport_->isPacingScheduled());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(QuicTransportTest, SaneCwndSettings) {
|
||||||
|
TransportSettings transportSettings;
|
||||||
|
transportSettings.minCwndInMss = 1;
|
||||||
|
transportSettings.initCwndInMss = 0;
|
||||||
|
transportSettings.defaultCongestionController = CongestionControlType::BBR;
|
||||||
|
auto ccFactory = std::make_shared<DefaultCongestionControllerFactory>();
|
||||||
|
transport_->setCongestionControllerFactory(ccFactory);
|
||||||
|
transport_->setTransportSettings(transportSettings);
|
||||||
|
auto& conn = transport_->getConnectionState();
|
||||||
|
EXPECT_EQ(
|
||||||
|
conn.udpSendPacketLen * kInitCwndInMss,
|
||||||
|
conn.congestionController->getCongestionWindow());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace test
|
} // namespace test
|
||||||
} // namespace quic
|
} // namespace quic
|
||||||
|
Reference in New Issue
Block a user