1
0
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:
Yang Chi
2020-04-18 10:43:13 -07:00
committed by Facebook GitHub Bot
parent b84e647cf8
commit 8db6fc263f
2 changed files with 25 additions and 0 deletions

View File

@@ -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>(

View File

@@ -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