From 264bf20d9abc0f9a9633dca5f4179e2c6664343f Mon Sep 17 00:00:00 2001 From: Konstantin Tsoy Date: Fri, 18 Aug 2023 10:21:24 -0700 Subject: [PATCH] Update flow control settings names to reflect that these are indeed flow Summary: Update flow control settings names to reflect that these are indeed flow control Reviewed By: jbeshay Differential Revision: D48137685 fbshipit-source-id: a48372e21cdd529480e25785a9bd5de456427ef3 --- quic/QuicConstants.h | 4 +- quic/api/test/QuicTransportBaseTest.cpp | 8 +- quic/api/test/QuicTransportFunctionsTest.cpp | 8 +- quic/api/test/QuicTransportTest.cpp | 8 +- quic/client/QuicClientTransport.cpp | 10 +- quic/client/state/ClientStateMachine.cpp | 20 +- quic/client/test/ClientStateMachineTest.cpp | 10 +- quic/common/test/TestUtils.cpp | 17 +- quic/common/test/TestUtils.h | 9 +- quic/dsr/test/TestCommon.h | 8 +- .../test/FizzClientExtensionsTest.cpp | 64 +++---- .../test/FizzClientHandshakeTest.cpp | 32 ++-- .../client/test/QuicClientTransportTest.cpp | 178 ++++++++++-------- .../client/test/QuicClientTransportTestUtil.h | 8 +- quic/flowcontrol/QuicFlowController.cpp | 4 +- quic/loss/test/QuicLossFunctionsTest.cpp | 16 +- quic/server/QuicServerTransport.cpp | 10 +- .../handshake/DefaultAppTokenValidator.cpp | 10 +- quic/server/handshake/test/AppTokenTest.cpp | 64 +++---- .../test/DefaultAppTokenValidatorTest.cpp | 87 +++++---- .../handshake/test/ServerHandshakeTest.cpp | 8 +- .../test/ServerTransportParametersTest.cpp | 48 ++--- quic/server/state/ServerStateMachine.cpp | 19 +- quic/server/test/QuicServerTest.cpp | 52 ++--- quic/server/test/QuicServerTransportTest.cpp | 10 +- quic/state/StateData.cpp | 14 +- quic/state/TransportSettings.h | 18 +- .../stream/test/StreamStateMachineTest.cpp | 9 +- quic/state/test/AckHandlersTest.cpp | 8 +- quic/state/test/QuicStreamFunctionsTest.cpp | 16 +- quic/state/test/QuicStreamManagerTest.cpp | 8 +- quic/tools/tperf/tperf.cpp | 4 +- 32 files changed, 421 insertions(+), 368 deletions(-) diff --git a/quic/QuicConstants.h b/quic/QuicConstants.h index 8afe89eaa..84cd58d8c 100644 --- a/quic/QuicConstants.h +++ b/quic/QuicConstants.h @@ -461,8 +461,8 @@ constexpr float kCubicTCPFriendlyEstimateIncreaseFactor = /* Flow Control */ // Default flow control window for HTTP/2 + 1K for headers -constexpr uint64_t kDefaultStreamWindowSize = (64 + 1) * 1024; -constexpr uint64_t kDefaultConnectionWindowSize = 1024 * 1024; +constexpr uint64_t kDefaultStreamFlowControlWindow = (64 + 1) * 1024; +constexpr uint64_t kDefaultConnectionFlowControlWindow = 1024 * 1024; /* Stream Limits */ constexpr uint64_t kDefaultMaxStreamsBidirectional = 2048; diff --git a/quic/api/test/QuicTransportBaseTest.cpp b/quic/api/test/QuicTransportBaseTest.cpp index 10cdfc84d..191bf0bc4 100644 --- a/quic/api/test/QuicTransportBaseTest.cpp +++ b/quic/api/test/QuicTransportBaseTest.cpp @@ -580,13 +580,13 @@ class QuicTransportImplTest : public Test { &connCallback); auto& conn = *transport->transportConn; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn.streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); conn.streamManager->setMaxLocalUnidirectionalStreams( diff --git a/quic/api/test/QuicTransportFunctionsTest.cpp b/quic/api/test/QuicTransportFunctionsTest.cpp index 6eed939f5..e60053c27 100644 --- a/quic/api/test/QuicTransportFunctionsTest.cpp +++ b/quic/api/test/QuicTransportFunctionsTest.cpp @@ -178,13 +178,13 @@ class QuicTransportFunctionsTest : public Test { conn->clientConnectionId = getTestConnectionId(); conn->version = QuicVersion::MVFST; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize * 1000; + kDefaultStreamFlowControlWindow * 1000; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize * 1000; + kDefaultStreamFlowControlWindow * 1000; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize * 1000; + kDefaultStreamFlowControlWindow * 1000; conn->flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize * 1000; + kDefaultConnectionFlowControlWindow * 1000; conn->statsCallback = quicStats_.get(); conn->initialWriteCipher = createNoOpAead(); conn->initialHeaderCipher = createNoOpHeaderCipher(); diff --git a/quic/api/test/QuicTransportTest.cpp b/quic/api/test/QuicTransportTest.cpp index 48e34df13..341ecd8bd 100644 --- a/quic/api/test/QuicTransportTest.cpp +++ b/quic/api/test/QuicTransportTest.cpp @@ -90,15 +90,15 @@ class QuicTransportTest : public Test { std::move(tempHeaderCipher); transport_->getConnectionState() .flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; transport_->getConnectionState() .flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; transport_->getConnectionState() .flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; transport_->getConnectionState().flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; transport_->getConnectionState() .streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); diff --git a/quic/client/QuicClientTransport.cpp b/quic/client/QuicClientTransport.cpp index f2bb11b8f..6e6319ef4 100644 --- a/quic/client/QuicClientTransport.cpp +++ b/quic/client/QuicClientTransport.cpp @@ -1019,10 +1019,12 @@ void QuicClientTransport::startCryptoHandshake() { maybeEnableStreamGroups(); auto paramsExtension = std::make_shared( conn_->originalVersion.value(), - conn_->transportSettings.advertisedInitialConnectionWindowSize, - conn_->transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn_->transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn_->transportSettings.advertisedInitialUniStreamWindowSize, + conn_->transportSettings.advertisedInitialConnectionFlowControlWindow, + conn_->transportSettings + .advertisedInitialBidiLocalStreamFlowControlWindow, + conn_->transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow, + conn_->transportSettings.advertisedInitialUniStreamFlowControlWindow, conn_->transportSettings.advertisedInitialMaxStreamsBidi, conn_->transportSettings.advertisedInitialMaxStreamsUni, conn_->transportSettings.idleTimeout, diff --git a/quic/client/state/ClientStateMachine.cpp b/quic/client/state/ClientStateMachine.cpp index bb1fc46bd..3b5e2a58f 100644 --- a/quic/client/state/ClientStateMachine.cpp +++ b/quic/client/state/ClientStateMachine.cpp @@ -232,15 +232,17 @@ void processServerInitialParams( conn.statelessResetToken = std::move(statelessResetToken); // Update the existing streams, because we allow streams to be created before // the connection is established. - conn.streamManager->streamStateForEach([&conn, - &packetNum](QuicStreamState& s) { - auto windowSize = isUnidirectionalStream(s.id) - ? conn.transportSettings.advertisedInitialUniStreamWindowSize - : isLocalStream(conn.nodeType, s.id) - ? conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize - : conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize; - handleStreamWindowUpdate(s, windowSize, packetNum); - }); + conn.streamManager->streamStateForEach( + [&conn, &packetNum](QuicStreamState& s) { + auto windowSize = isUnidirectionalStream(s.id) + ? conn.transportSettings.advertisedInitialUniStreamFlowControlWindow + : isLocalStream(conn.nodeType, s.id) + ? conn.transportSettings + .advertisedInitialBidiLocalStreamFlowControlWindow + : conn.transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow; + handleStreamWindowUpdate(s, windowSize, packetNum); + }); if (maxDatagramFrameSize.has_value()) { if (maxDatagramFrameSize.value() > 0 && maxDatagramFrameSize.value() <= kMaxDatagramPacketOverhead) { diff --git a/quic/client/test/ClientStateMachineTest.cpp b/quic/client/test/ClientStateMachineTest.cpp index 98508d6f0..49da547a4 100644 --- a/quic/client/test/ClientStateMachineTest.cpp +++ b/quic/client/test/ClientStateMachineTest.cpp @@ -23,10 +23,12 @@ namespace { // Use non-default values to test for nops constexpr auto idleTimeout = kDefaultIdleTimeout + 1s; constexpr auto maxRecvPacketSize = 1420; -constexpr auto initialMaxData = kDefaultConnectionWindowSize + 2; -constexpr auto initialMaxStreamDataBidiLocal = kDefaultStreamWindowSize + 3; -constexpr auto initialMaxStreamDataBidiRemote = kDefaultStreamWindowSize + 4; -constexpr auto initialMaxStreamDataUni = kDefaultStreamWindowSize + 5; +constexpr auto initialMaxData = kDefaultConnectionFlowControlWindow + 2; +constexpr auto initialMaxStreamDataBidiLocal = + kDefaultStreamFlowControlWindow + 3; +constexpr auto initialMaxStreamDataBidiRemote = + kDefaultStreamFlowControlWindow + 4; +constexpr auto initialMaxStreamDataUni = kDefaultStreamFlowControlWindow + 5; constexpr auto initialMaxStreamsBidi = kDefaultMaxStreamsBidirectional + 6; constexpr auto initialMaxStreamsUni = kDefaultMaxStreamsUnidirectional + 7; constexpr auto knobFrameSupport = true; diff --git a/quic/common/test/TestUtils.cpp b/quic/common/test/TestUtils.cpp index 3a82d7469..f17d7a24a 100644 --- a/quic/common/test/TestUtils.cpp +++ b/quic/common/test/TestUtils.cpp @@ -161,10 +161,10 @@ class AcceptingTicketCipher : public fizz::server::TicketCipher { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional); appToken.version = QuicVersion::MVFST; @@ -220,13 +220,14 @@ QuicCachedPsk setupZeroRttOnClientCtx( quicCachedPsk.transportParams.idleTimeout = kDefaultIdleTimeout.count(); quicCachedPsk.transportParams.maxRecvPacketSize = kDefaultUDPReadBufferSize; - quicCachedPsk.transportParams.initialMaxData = kDefaultConnectionWindowSize; + quicCachedPsk.transportParams.initialMaxData = + kDefaultConnectionFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamsBidi = kDefaultMaxStreamsBidirectional; quicCachedPsk.transportParams.initialMaxStreamsUni = diff --git a/quic/common/test/TestUtils.h b/quic/common/test/TestUtils.h index bb235cb35..2464acc93 100644 --- a/quic/common/test/TestUtils.h +++ b/quic/common/test/TestUtils.h @@ -474,13 +474,13 @@ class FakeServerHandshake : public FizzServerHandshake { std::vector transportParams; transportParams.push_back(encodeIntegerParameter( TransportParameterId::initial_max_stream_data_bidi_local, - kDefaultStreamWindowSize)); + kDefaultStreamFlowControlWindow)); transportParams.push_back(encodeIntegerParameter( TransportParameterId::initial_max_stream_data_bidi_remote, - kDefaultStreamWindowSize)); + kDefaultStreamFlowControlWindow)); transportParams.push_back(encodeIntegerParameter( TransportParameterId::initial_max_stream_data_uni, - kDefaultStreamWindowSize)); + kDefaultStreamFlowControlWindow)); transportParams.push_back(encodeIntegerParameter( TransportParameterId::initial_max_streams_bidi, kDefaultMaxStreamsBidirectional)); @@ -488,7 +488,8 @@ class FakeServerHandshake : public FizzServerHandshake { TransportParameterId::initial_max_streams_uni, kDefaultMaxStreamsUnidirectional)); transportParams.push_back(encodeIntegerParameter( - TransportParameterId::initial_max_data, kDefaultConnectionWindowSize)); + TransportParameterId::initial_max_data, + kDefaultConnectionFlowControlWindow)); transportParams.push_back(encodeIntegerParameter( TransportParameterId::idle_timeout, kDefaultIdleTimeout.count())); transportParams.push_back(encodeIntegerParameter( diff --git a/quic/dsr/test/TestCommon.h b/quic/dsr/test/TestCommon.h index 3d05e0e21..124ae411b 100644 --- a/quic/dsr/test/TestCommon.h +++ b/quic/dsr/test/TestCommon.h @@ -47,13 +47,13 @@ class DSRCommonTestFixture : public testing::Test { protected: void prepareFlowControlAndStreamLimit() { conn_.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn_.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn_.flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn_.flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn_.streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); conn_.streamManager->setMaxLocalUnidirectionalStreams( diff --git a/quic/fizz/client/handshake/test/FizzClientExtensionsTest.cpp b/quic/fizz/client/handshake/test/FizzClientExtensionsTest.cpp index 936370e1b..46c1f996a 100644 --- a/quic/fizz/client/handshake/test/FizzClientExtensionsTest.cpp +++ b/quic/fizz/client/handshake/test/FizzClientExtensionsTest.cpp @@ -28,10 +28,10 @@ static EncryptedExtensions getEncryptedExtensions() { TEST(FizzClientHandshakeTest, TestGetChloExtensionsMvfst) { FizzClientExtensions ext(std::make_shared( QuicVersion::MVFST, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, @@ -51,10 +51,10 @@ TEST(FizzClientHandshakeTest, TestGetChloExtensionsMvfst) { TEST(FizzClientHandshakeTest, TestGetChloExtensions) { FizzClientExtensions ext(std::make_shared( QuicVersion::QUIC_DRAFT, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, @@ -73,10 +73,10 @@ TEST(FizzClientHandshakeTest, TestGetChloExtensions) { TEST(FizzClientHandshakeTest, TestGetChloExtensionsV1) { FizzClientExtensions ext(std::make_shared( QuicVersion::QUIC_V1, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, @@ -95,10 +95,10 @@ TEST(FizzClientHandshakeTest, TestGetChloExtensionsV1) { TEST(FizzClientHandshakeTest, TestGetChloExtensionsV1Alias) { FizzClientExtensions ext(std::make_shared( QuicVersion::QUIC_V1_ALIAS, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, @@ -118,10 +118,10 @@ TEST(FizzClientHandshakeTest, TestGetChloExtensionsV1Alias) { TEST(FizzClientHandshakeTest, TestOnEE) { FizzClientExtensions ext(std::make_shared( QuicVersion::MVFST, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, @@ -136,10 +136,10 @@ TEST(FizzClientHandshakeTest, TestOnEE) { TEST(FizzClientHandshakeTest, TestV1RejectExtensionNumberMismatch) { FizzClientExtensions ext(std::make_shared( QuicVersion::QUIC_V1, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, @@ -167,10 +167,10 @@ TEST(FizzClientHandshakeTest, TestV1RejectExtensionNumberMismatch) { TEST(FizzClientHandshakeTest, TestOnEEMissingServerParams) { FizzClientExtensions ext(std::make_shared( QuicVersion::MVFST, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, @@ -205,10 +205,10 @@ TEST(FizzClientHandshakeTest, TestGetChloExtensionsCustomParams) { FizzClientExtensions ext(std::make_shared( QuicVersion::QUIC_V1, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultMaxStreamsBidirectional, kDefaultMaxStreamsUnidirectional, kDefaultIdleTimeout, diff --git a/quic/fizz/client/handshake/test/FizzClientHandshakeTest.cpp b/quic/fizz/client/handshake/test/FizzClientHandshakeTest.cpp index 743d183a9..747855750 100644 --- a/quic/fizz/client/handshake/test/FizzClientHandshakeTest.cpp +++ b/quic/fizz/client/handshake/test/FizzClientHandshakeTest.cpp @@ -58,10 +58,10 @@ class ClientHandshakeTest : public Test, public boost::static_visitor<> { hostname, std::make_shared( QuicVersion::MVFST, - folly::to(kDefaultConnectionWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), + folly::to(kDefaultConnectionFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), folly::to(kDefaultMaxStreamsBidirectional), folly::to(kDefaultMaxStreamsUnidirectional), kDefaultIdleTimeout, @@ -97,10 +97,10 @@ class ClientHandshakeTest : public Test, public boost::static_visitor<> { auto serverTransportParameters = std::make_shared( getVersion(), - folly::to(kDefaultConnectionWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), + folly::to(kDefaultConnectionFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), std::numeric_limits::max(), std::numeric_limits::max(), /*disableMigration=*/true, @@ -391,10 +391,10 @@ class ClientHandshakeCallbackTest : public ClientHandshakeTest { hostname, std::make_shared( QuicVersion::MVFST, - folly::to(kDefaultConnectionWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), + folly::to(kDefaultConnectionFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), folly::to(kDefaultMaxStreamsBidirectional), folly::to(kDefaultMaxStreamsUnidirectional), kDefaultIdleTimeout, @@ -503,10 +503,10 @@ class ClientHandshakeZeroRttTest : public ClientHandshakeTest { hostname, std::make_shared( QuicVersion::MVFST, - folly::to(kDefaultConnectionWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), - folly::to(kDefaultStreamWindowSize), + folly::to(kDefaultConnectionFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), + folly::to(kDefaultStreamFlowControlWindow), folly::to(kDefaultMaxStreamsBidirectional), folly::to(kDefaultMaxStreamsUnidirectional), kDefaultIdleTimeout, diff --git a/quic/fizz/client/test/QuicClientTransportTest.cpp b/quic/fizz/client/test/QuicClientTransportTest.cpp index b5861753b..c13d4d279 100644 --- a/quic/fizz/client/test/QuicClientTransportTest.cpp +++ b/quic/fizz/client/test/QuicClientTransportTest.cpp @@ -493,16 +493,17 @@ TEST_P(QuicClientTransportIntegrationTest, TestZeroRttSuccess) { CHECK(client->getConn().zeroRttWriteCipher); EXPECT_TRUE(client->serverInitialParamsSet()); EXPECT_EQ( - client->peerAdvertisedInitialMaxData(), kDefaultConnectionWindowSize); + client->peerAdvertisedInitialMaxData(), + kDefaultConnectionFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiLocal(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiRemote(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataUni(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_CALL(clientConnSetupCallback, onTransportReady()).WillOnce(Invoke([&] { ASSERT_EQ(client->getAppProtocol(), "h3"); CHECK(client->getConn().zeroRttWriteCipher); @@ -570,16 +571,17 @@ TEST_P(QuicClientTransportIntegrationTest, ZeroRttRetryPacketTest) { CHECK(client->getConn().zeroRttWriteCipher); EXPECT_TRUE(client->serverInitialParamsSet()); EXPECT_EQ( - client->peerAdvertisedInitialMaxData(), kDefaultConnectionWindowSize); + client->peerAdvertisedInitialMaxData(), + kDefaultConnectionFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiLocal(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiRemote(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataUni(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_CALL(clientConnSetupCallback, onTransportReady()).WillOnce(Invoke([&] { ASSERT_EQ(client->getAppProtocol(), "h3"); CHECK(client->getConn().zeroRttWriteCipher); @@ -709,16 +711,17 @@ TEST_P(QuicClientTransportIntegrationTest, TestZeroRttRejection) { CHECK(client->getConn().zeroRttWriteCipher); EXPECT_TRUE(client->serverInitialParamsSet()); EXPECT_EQ( - client->peerAdvertisedInitialMaxData(), kDefaultConnectionWindowSize); + client->peerAdvertisedInitialMaxData(), + kDefaultConnectionFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiLocal(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiRemote(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataUni(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); client->serverInitialParamsSet() = false; EXPECT_CALL(clientConnSetupCallback, onTransportReady()).WillOnce(Invoke([&] { @@ -741,16 +744,17 @@ TEST_P(QuicClientTransportIntegrationTest, TestZeroRttRejection) { EXPECT_EQ(client->getConn().zeroRttWriteCipher, nullptr); EXPECT_TRUE(client->serverInitialParamsSet()); EXPECT_EQ( - client->peerAdvertisedInitialMaxData(), kDefaultConnectionWindowSize); + client->peerAdvertisedInitialMaxData(), + kDefaultConnectionFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiLocal(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiRemote(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataUni(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_TRUE(client->getConn().statelessResetToken.has_value()); } @@ -783,16 +787,17 @@ TEST_P(QuicClientTransportIntegrationTest, TestZeroRttNotAttempted) { sendRequestAndResponseAndWait(*expected, data->clone(), streamId, &readCb); EXPECT_TRUE(client->serverInitialParamsSet()); EXPECT_EQ( - client->peerAdvertisedInitialMaxData(), kDefaultConnectionWindowSize); + client->peerAdvertisedInitialMaxData(), + kDefaultConnectionFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiLocal(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiRemote(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataUni(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); } TEST_P(QuicClientTransportIntegrationTest, TestZeroRttInvalidAppParams) { @@ -825,16 +830,17 @@ TEST_P(QuicClientTransportIntegrationTest, TestZeroRttInvalidAppParams) { sendRequestAndResponseAndWait(*expected, data->clone(), streamId, &readCb); EXPECT_TRUE(client->serverInitialParamsSet()); EXPECT_EQ( - client->peerAdvertisedInitialMaxData(), kDefaultConnectionWindowSize); + client->peerAdvertisedInitialMaxData(), + kDefaultConnectionFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiLocal(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataBidiRemote(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); EXPECT_EQ( client->peerAdvertisedInitialMaxStreamDataUni(), - kDefaultStreamWindowSize); + kDefaultStreamFlowControlWindow); } TEST_P(QuicClientTransportIntegrationTest, ChangeEventBase) { @@ -2220,15 +2226,15 @@ class QuicClientTransportVersionAndRetryTest // 0-rtt support exists, remove this. client->getNonConstConn() .flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; client->getNonConstConn() .flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; client->getNonConstConn() .flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; client->getNonConstConn().flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; } }; @@ -4920,12 +4926,15 @@ TEST_F(QuicClientTransportPskCacheTest, TestTwoOnNewCachedPsk) { EXPECT_CALL(*mockPskCache_, putPsk(hostname_, _)) .WillOnce(Invoke([=](const std::string&, QuicCachedPsk psk) { auto& params = psk.transportParams; - EXPECT_EQ(params.initialMaxData, kDefaultConnectionWindowSize); + EXPECT_EQ(params.initialMaxData, kDefaultConnectionFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiLocal, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiLocal, + kDefaultStreamFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiRemote, kDefaultStreamWindowSize); - EXPECT_EQ(params.initialMaxStreamDataUni, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiRemote, + kDefaultStreamFlowControlWindow); + EXPECT_EQ( + params.initialMaxStreamDataUni, kDefaultStreamFlowControlWindow); EXPECT_EQ(psk.appParams, appParams1); })); mockClientHandshake->triggerOnNewCachedPsk(); @@ -4945,12 +4954,15 @@ TEST_F(QuicClientTransportPskCacheTest, TestTwoOnNewCachedPsk) { EXPECT_CALL(*mockPskCache_, putPsk(hostname_, _)) .WillOnce(Invoke([=](const std::string&, QuicCachedPsk psk) { auto& params = psk.transportParams; - EXPECT_EQ(params.initialMaxData, kDefaultConnectionWindowSize); + EXPECT_EQ(params.initialMaxData, kDefaultConnectionFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiLocal, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiLocal, + kDefaultStreamFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiRemote, kDefaultStreamWindowSize); - EXPECT_EQ(params.initialMaxStreamDataUni, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiRemote, + kDefaultStreamFlowControlWindow); + EXPECT_EQ( + params.initialMaxStreamDataUni, kDefaultStreamFlowControlWindow); EXPECT_EQ(psk.appParams, appParams2); })); mockClientHandshake->triggerOnNewCachedPsk(); @@ -5029,13 +5041,13 @@ TEST_F(QuicZeroRttClientTest, TestReplaySafeCallback) { .WillOnce(InvokeWithoutArgs([]() { QuicCachedPsk quicCachedPsk; quicCachedPsk.transportParams.initialMaxStreamDataBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxData = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; quicCachedPsk.transportParams.idleTimeout = kDefaultIdleTimeout.count(); quicCachedPsk.transportParams.maxRecvPacketSize = kDefaultUDPReadBufferSize; @@ -5072,8 +5084,8 @@ TEST_F(QuicZeroRttClientTest, TestReplaySafeCallback) { // Transport parameters did not change since zero rtt was accepted. // Except for max packet size. verifyTransportParameters( - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultIdleTimeout, kDefaultAckDelayExponent, kDefaultMaxUDPPayload); @@ -5081,12 +5093,15 @@ TEST_F(QuicZeroRttClientTest, TestReplaySafeCallback) { EXPECT_CALL(*mockQuicPskCache_, putPsk(hostname_, _)) .WillOnce(Invoke([=](const std::string&, QuicCachedPsk psk) { auto& params = psk.transportParams; - EXPECT_EQ(params.initialMaxData, kDefaultConnectionWindowSize); + EXPECT_EQ(params.initialMaxData, kDefaultConnectionFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiLocal, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiLocal, + kDefaultStreamFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiRemote, kDefaultStreamWindowSize); - EXPECT_EQ(params.initialMaxStreamDataUni, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiRemote, + kDefaultStreamFlowControlWindow); + EXPECT_EQ( + params.initialMaxStreamDataUni, kDefaultStreamFlowControlWindow); EXPECT_EQ( params.initialMaxStreamsBidi, std::numeric_limits::max()); EXPECT_EQ( @@ -5100,13 +5115,13 @@ TEST_F(QuicZeroRttClientTest, TestEarlyRetransmit0Rtt) { .WillOnce(InvokeWithoutArgs([]() { QuicCachedPsk quicCachedPsk; quicCachedPsk.transportParams.initialMaxStreamDataBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxData = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; quicCachedPsk.transportParams.idleTimeout = kDefaultIdleTimeout.count(); quicCachedPsk.transportParams.maxRecvPacketSize = kDefaultUDPReadBufferSize; @@ -5151,8 +5166,8 @@ TEST_F(QuicZeroRttClientTest, TestEarlyRetransmit0Rtt) { // Transport parameters did not change since zero rtt was accepted. // Except for max packet size. verifyTransportParameters( - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultIdleTimeout, kDefaultAckDelayExponent, kDefaultMaxUDPPayload); @@ -5160,12 +5175,15 @@ TEST_F(QuicZeroRttClientTest, TestEarlyRetransmit0Rtt) { EXPECT_CALL(*mockQuicPskCache_, putPsk(hostname_, _)) .WillOnce(Invoke([=](const std::string&, QuicCachedPsk psk) { auto& params = psk.transportParams; - EXPECT_EQ(params.initialMaxData, kDefaultConnectionWindowSize); + EXPECT_EQ(params.initialMaxData, kDefaultConnectionFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiLocal, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiLocal, + kDefaultStreamFlowControlWindow); EXPECT_EQ( - params.initialMaxStreamDataBidiRemote, kDefaultStreamWindowSize); - EXPECT_EQ(params.initialMaxStreamDataUni, kDefaultStreamWindowSize); + params.initialMaxStreamDataBidiRemote, + kDefaultStreamFlowControlWindow); + EXPECT_EQ( + params.initialMaxStreamDataUni, kDefaultStreamFlowControlWindow); EXPECT_EQ( params.initialMaxStreamsBidi, std::numeric_limits::max()); EXPECT_EQ( @@ -5179,13 +5197,13 @@ TEST_F(QuicZeroRttClientTest, TestZeroRttRejection) { .WillOnce(InvokeWithoutArgs([]() { QuicCachedPsk quicCachedPsk; quicCachedPsk.transportParams.initialMaxStreamDataBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxData = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; quicCachedPsk.transportParams.idleTimeout = kDefaultIdleTimeout.count(); quicCachedPsk.transportParams.maxRecvPacketSize = kDefaultUDPReadBufferSize; @@ -5215,8 +5233,8 @@ TEST_F(QuicZeroRttClientTest, TestZeroRttRejection) { EXPECT_CALL(*mockQuicPskCache_, removePsk(hostname_)); recvServerHello(); verifyTransportParameters( - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultIdleTimeout, kDefaultAckDelayExponent, mockClientHandshake->maxRecvPacketSize); @@ -5230,13 +5248,13 @@ TEST_F(QuicZeroRttClientTest, TestZeroRttRejectionWithSmallerFlowControl) { .WillOnce(InvokeWithoutArgs([]() { QuicCachedPsk quicCachedPsk; quicCachedPsk.transportParams.initialMaxStreamDataBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxData = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; quicCachedPsk.transportParams.idleTimeout = kDefaultIdleTimeout.count(); quicCachedPsk.transportParams.maxRecvPacketSize = kDefaultUDPReadBufferSize; @@ -5310,13 +5328,13 @@ TEST_F( .WillOnce(InvokeWithoutArgs([]() { QuicCachedPsk quicCachedPsk; quicCachedPsk.transportParams.initialMaxStreamDataBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxData = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; quicCachedPsk.transportParams.idleTimeout = kDefaultIdleTimeout.count(); quicCachedPsk.transportParams.maxRecvPacketSize = kDefaultUDPReadBufferSize; @@ -5399,13 +5417,13 @@ TEST_F( .WillOnce(InvokeWithoutArgs([]() { QuicCachedPsk quicCachedPsk; quicCachedPsk.transportParams.initialMaxStreamDataBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxStreamDataUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; quicCachedPsk.transportParams.initialMaxData = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; quicCachedPsk.transportParams.idleTimeout = kDefaultIdleTimeout.count(); quicCachedPsk.transportParams.maxRecvPacketSize = kDefaultUDPReadBufferSize; @@ -5510,8 +5528,8 @@ TEST_F(QuicProcessDataTest, ProcessDataWithGarbageAtEnd) { packetData->prependChain(IOBuf::copyBuffer("garbage in")); deliverData(serverAddr, packetData->coalesce()); verifyTransportParameters( - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultIdleTimeout, kDefaultAckDelayExponent, mockClientHandshake->maxRecvPacketSize); @@ -5548,8 +5566,8 @@ TEST_F(QuicProcessDataTest, ProcessPendingData) { packet, aead, getInitialHeaderCipher(), nextPacketNum); deliverData(serverAddr, packetData->coalesce()); verifyTransportParameters( - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultIdleTimeout, kDefaultAckDelayExponent, mockClientHandshake->maxRecvPacketSize); @@ -5657,8 +5675,8 @@ TEST_F(QuicProcessDataTest, ProcessPendingDataBufferLimit) { packet, aead, getInitialHeaderCipher(), nextPacketNum); deliverData(serverAddr, packetData->coalesce()); verifyTransportParameters( - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultIdleTimeout, kDefaultAckDelayExponent, mockClientHandshake->maxRecvPacketSize); diff --git a/quic/fizz/client/test/QuicClientTransportTestUtil.h b/quic/fizz/client/test/QuicClientTransportTestUtil.h index 3ce7844db..421e55ff1 100644 --- a/quic/fizz/client/test/QuicClientTransportTestUtil.h +++ b/quic/fizz/client/test/QuicClientTransportTestUtil.h @@ -331,8 +331,8 @@ class FakeOneRttHandshakeLayer : public FizzClientHandshake { bool connected_{false}; QuicVersion negotiatedVersion{QuicVersion::MVFST}; uint64_t maxRecvPacketSize{kDefaultMaxUDPPayload}; - uint64_t maxInitialStreamData{kDefaultStreamWindowSize}; - uint64_t connWindowSize{kDefaultConnectionWindowSize}; + uint64_t maxInitialStreamData{kDefaultStreamFlowControlWindow}; + uint64_t connWindowSize{kDefaultConnectionFlowControlWindow}; uint64_t maxInitialStreamsBidi{std::numeric_limits::max()}; uint64_t maxInitialStreamsUni{std::numeric_limits::max()}; folly::Optional params_; @@ -647,8 +647,8 @@ class QuicClientTransportTestBase : public virtual testing::Test { assertWritten(false, LongHeader::Types::Handshake); verifyTransportParameters( - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, kDefaultIdleTimeout, kDefaultAckDelayExponent, mockClientHandshake->maxRecvPacketSize); diff --git a/quic/flowcontrol/QuicFlowController.cpp b/quic/flowcontrol/QuicFlowController.cpp index df597871e..728773f40 100644 --- a/quic/flowcontrol/QuicFlowController.cpp +++ b/quic/flowcontrol/QuicFlowController.cpp @@ -422,9 +422,9 @@ void updateFlowControlStateWithSettings( QuicConnectionStateBase::ConnectionFlowControlState& flowControlState, const TransportSettings& transportSettings) { flowControlState.windowSize = - transportSettings.advertisedInitialConnectionWindowSize; + transportSettings.advertisedInitialConnectionFlowControlWindow; flowControlState.advertisedMaxOffset = - transportSettings.advertisedInitialConnectionWindowSize; + transportSettings.advertisedInitialConnectionFlowControlWindow; } MaxDataFrame generateMaxDataFrame(const QuicConnectionStateBase& conn) { diff --git a/quic/loss/test/QuicLossFunctionsTest.cpp b/quic/loss/test/QuicLossFunctionsTest.cpp index 3945a04f4..36e1d1dc4 100644 --- a/quic/loss/test/QuicLossFunctionsTest.cpp +++ b/quic/loss/test/QuicLossFunctionsTest.cpp @@ -111,13 +111,13 @@ class QuicLossFunctionsTest : public TestWithParam { conn->ackStates.appDataAckState.nextPacketNum = 1; conn->ackStates.appDataAckState.nonDsrPacketSequenceNumber = 1; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn->streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); conn->streamManager->setMaxLocalUnidirectionalStreams( @@ -143,13 +143,13 @@ class QuicLossFunctionsTest : public TestWithParam { conn->ackStates.handshakeAckState->nextPacketNum = 1; conn->ackStates.appDataAckState.nextPacketNum = 1; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn->statsCallback = quicStats_.get(); // create a serverConnectionId that is different from the client connId // with bits for processId and workerId set to 0 diff --git a/quic/server/QuicServerTransport.cpp b/quic/server/QuicServerTransport.cpp index 96f9d3ab3..b1fed6506 100644 --- a/quic/server/QuicServerTransport.cpp +++ b/quic/server/QuicServerTransport.cpp @@ -545,10 +545,12 @@ void QuicServerTransport::maybeWriteNewSessionTicket() { appToken.transportParams = createTicketTransportParameters( conn_->transportSettings.idleTimeout.count(), conn_->transportSettings.maxRecvPacketSize, - conn_->transportSettings.advertisedInitialConnectionWindowSize, - conn_->transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn_->transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn_->transportSettings.advertisedInitialUniStreamWindowSize, + conn_->transportSettings.advertisedInitialConnectionFlowControlWindow, + conn_->transportSettings + .advertisedInitialBidiLocalStreamFlowControlWindow, + conn_->transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow, + conn_->transportSettings.advertisedInitialUniStreamFlowControlWindow, conn_->transportSettings.advertisedInitialMaxStreamsBidi, conn_->transportSettings.advertisedInitialMaxStreamsUni); appToken.sourceAddresses = serverConn_->tokenSourceAddresses; diff --git a/quic/server/handshake/DefaultAppTokenValidator.cpp b/quic/server/handshake/DefaultAppTokenValidator.cpp index 8a27ff3c0..00b22cdc5 100644 --- a/quic/server/handshake/DefaultAppTokenValidator.cpp +++ b/quic/server/handshake/DefaultAppTokenValidator.cpp @@ -89,7 +89,7 @@ bool DefaultAppTokenValidator::validate( auto ticketMaxData = getIntegerParameter(TransportParameterId::initial_max_data, params); if (!ticketMaxData || - conn_->transportSettings.advertisedInitialConnectionWindowSize < + conn_->transportSettings.advertisedInitialConnectionFlowControlWindow < *ticketMaxData) { VLOG(10) << "Decreased max data"; return validated = false; @@ -102,13 +102,15 @@ bool DefaultAppTokenValidator::validate( auto ticketMaxStreamDataUni = getIntegerParameter( TransportParameterId::initial_max_stream_data_uni, params); if (!ticketMaxStreamDataBidiLocal || - conn_->transportSettings.advertisedInitialBidiLocalStreamWindowSize < + conn_->transportSettings + .advertisedInitialBidiLocalStreamFlowControlWindow < *ticketMaxStreamDataBidiLocal || !ticketMaxStreamDataBidiRemote || - conn_->transportSettings.advertisedInitialBidiRemoteStreamWindowSize < + conn_->transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow < *ticketMaxStreamDataBidiRemote || !ticketMaxStreamDataUni || - conn_->transportSettings.advertisedInitialUniStreamWindowSize < + conn_->transportSettings.advertisedInitialUniStreamFlowControlWindow < *ticketMaxStreamDataUni) { VLOG(10) << "Decreased max stream data"; return validated = false; diff --git a/quic/server/handshake/test/AppTokenTest.cpp b/quic/server/handshake/test/AppTokenTest.cpp index 0a717edc8..ca846b68a 100644 --- a/quic/server/handshake/test/AppTokenTest.cpp +++ b/quic/server/handshake/test/AppTokenTest.cpp @@ -93,10 +93,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeNoSourceAddresses) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.version = QuicVersion::MVFST; @@ -110,10 +110,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeSingleIPv6Address) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.sourceAddresses = { @@ -129,10 +129,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeThreeIPv6Addresses) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.sourceAddresses = { @@ -150,10 +150,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeSingleIPv4Address) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.sourceAddresses = {folly::IPAddress("1.2.3.4")}; @@ -168,10 +168,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeThreeIPv4Addresses) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.sourceAddresses = { @@ -189,10 +189,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeIPv6AndIPv4Addresses) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.sourceAddresses = { @@ -210,10 +210,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeWithAppToken) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.appParams = folly::IOBuf::copyBuffer("QPACK Params"); @@ -228,10 +228,10 @@ TEST(AppTokenTest, TestEncodeAndDecodeIPv6AndIPv4AddressesWithAppToken) { appToken.transportParams = createTicketTransportParameters( kDefaultIdleTimeout.count(), kDefaultUDPReadBufferSize, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max()); appToken.sourceAddresses = { diff --git a/quic/server/handshake/test/DefaultAppTokenValidatorTest.cpp b/quic/server/handshake/test/DefaultAppTokenValidatorTest.cpp index d71da32e5..bb1f6cea9 100644 --- a/quic/server/handshake/test/DefaultAppTokenValidatorTest.cpp +++ b/quic/server/handshake/test/DefaultAppTokenValidatorTest.cpp @@ -40,10 +40,10 @@ TEST(DefaultAppTokenValidatorTest, TestValidParams) { appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count(), conn.transportSettings.maxRecvPacketSize, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni); ResumptionState resState; @@ -71,10 +71,10 @@ TEST(DefaultAppTokenValidatorTest, TestValidOptionalParameter) { appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count(), conn.transportSettings.maxRecvPacketSize, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni); appToken.transportParams.parameters.push_back( @@ -103,15 +103,15 @@ TEST( conn.statsCallback = quicStats.get(); auto initialMaxData = - conn.transportSettings.advertisedInitialConnectionWindowSize; + conn.transportSettings.advertisedInitialConnectionFlowControlWindow; AppToken appToken; appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count(), conn.transportSettings.maxRecvPacketSize, initialMaxData - 1, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni); ResumptionState resState; @@ -125,7 +125,7 @@ TEST( EXPECT_TRUE(validator.validate(resState)); EXPECT_EQ( - conn.transportSettings.advertisedInitialConnectionWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, initialMaxData - 1); EXPECT_EQ(conn.flowControlState.windowSize, initialMaxData - 1); EXPECT_EQ(conn.flowControlState.advertisedMaxOffset, initialMaxData - 1); @@ -182,13 +182,15 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidMissingParams) { auto& params = appToken.transportParams; params.parameters.push_back(encodeIntegerParameter( TransportParameterId::initial_max_stream_data_bidi_local, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize)); + conn.transportSettings + .advertisedInitialBidiLocalStreamFlowControlWindow)); params.parameters.push_back(encodeIntegerParameter( TransportParameterId::initial_max_stream_data_bidi_remote, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize)); + conn.transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow)); params.parameters.push_back(encodeIntegerParameter( TransportParameterId::initial_max_stream_data_uni, - conn.transportSettings.advertisedInitialUniStreamWindowSize)); + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow)); params.parameters.push_back(encodeIntegerParameter( TransportParameterId::ack_delay_exponent, conn.transportSettings.ackDelayExponent)); @@ -222,10 +224,10 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidRedundantParameter) { appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count(), conn.transportSettings.maxRecvPacketSize, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni); appToken.transportParams.parameters.push_back( @@ -256,10 +258,13 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidDecreasedInitialMaxStreamData) { appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count(), conn.transportSettings.maxRecvPacketSize, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize + 1, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize + 1, - conn.transportSettings.advertisedInitialUniStreamWindowSize + 1, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow + + 1, + conn.transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow + + 1, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow + 1, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni); ResumptionState resState; @@ -286,10 +291,10 @@ TEST(DefaultAppTokenValidatorTest, TestChangedIdleTimeout) { appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count() + 100, conn.transportSettings.maxRecvPacketSize, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni); ResumptionState resState; @@ -318,10 +323,10 @@ TEST(DefaultAppTokenValidatorTest, TestDecreasedInitialMaxStreams) { appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count(), conn.transportSettings.maxRecvPacketSize, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi + 1, conn.transportSettings.advertisedInitialMaxStreamsUni + 1); ResumptionState resState; @@ -353,10 +358,10 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidAppParams) { appToken.transportParams = createTicketTransportParameters( conn.transportSettings.idleTimeout.count(), conn.transportSettings.maxRecvPacketSize, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni); ResumptionState resState; @@ -380,10 +385,12 @@ class SourceAddressTokenTest : public Test { appToken_.transportParams = createTicketTransportParameters( conn_.transportSettings.idleTimeout.count(), conn_.transportSettings.maxRecvPacketSize, - conn_.transportSettings.advertisedInitialConnectionWindowSize, - conn_.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn_.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn_.transportSettings.advertisedInitialUniStreamWindowSize, + conn_.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn_.transportSettings + .advertisedInitialBidiLocalStreamFlowControlWindow, + conn_.transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow, + conn_.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn_.transportSettings.advertisedInitialMaxStreamsBidi, conn_.transportSettings.advertisedInitialMaxStreamsUni); } diff --git a/quic/server/handshake/test/ServerHandshakeTest.cpp b/quic/server/handshake/test/ServerHandshakeTest.cpp index 532cdd5ec..e60f2684a 100644 --- a/quic/server/handshake/test/ServerHandshakeTest.cpp +++ b/quic/server/handshake/test/ServerHandshakeTest.cpp @@ -90,10 +90,10 @@ class ServerHandshakeTest : public Test { hostname = kTestHostname.str(); verifier = std::make_shared(); - uint64_t initialMaxData = kDefaultConnectionWindowSize; - uint64_t initialMaxStreamDataBidiLocal = kDefaultStreamWindowSize; - uint64_t initialMaxStreamDataBidiRemote = kDefaultStreamWindowSize; - uint64_t initialMaxStreamDataUni = kDefaultStreamWindowSize; + uint64_t initialMaxData = kDefaultConnectionFlowControlWindow; + uint64_t initialMaxStreamDataBidiLocal = kDefaultStreamFlowControlWindow; + uint64_t initialMaxStreamDataBidiRemote = kDefaultStreamFlowControlWindow; + uint64_t initialMaxStreamDataUni = kDefaultStreamFlowControlWindow; uint64_t initialMaxStreamsBidi = kDefaultMaxStreamsBidirectional; uint64_t initialMaxStreamsUni = kDefaultMaxStreamsUnidirectional; auto clientExtensions = diff --git a/quic/server/handshake/test/ServerTransportParametersTest.cpp b/quic/server/handshake/test/ServerTransportParametersTest.cpp index f5fe15f6c..820838d23 100644 --- a/quic/server/handshake/test/ServerTransportParametersTest.cpp +++ b/quic/server/handshake/test/ServerTransportParametersTest.cpp @@ -37,10 +37,10 @@ static ClientHello getClientHello(QuicVersion version) { TEST(ServerTransportParametersTest, TestGetExtensions) { ServerTransportParametersExtension ext( QuicVersion::MVFST, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max(), /*disableMigration=*/true, @@ -60,10 +60,10 @@ TEST(ServerTransportParametersTest, TestGetExtensions) { TEST(ServerTransportParametersTest, TestGetExtensionsMissingClientParams) { ServerTransportParametersExtension ext( QuicVersion::MVFST, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max(), /*disableMigration=*/true, @@ -78,10 +78,10 @@ TEST(ServerTransportParametersTest, TestGetExtensionsMissingClientParams) { TEST(ServerTransportParametersTest, TestQuicV1RejectDraftExtensionNumber) { ServerTransportParametersExtension ext( QuicVersion::QUIC_V1, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max(), /*disableMigration=*/true, @@ -100,10 +100,10 @@ TEST(ServerTransportParametersTest, TestQuicV1RejectDraftExtensionNumber) { TEST(ServerTransportParametersTest, TestQuicV1RejectDuplicateExtensions) { ServerTransportParametersExtension ext( QuicVersion::QUIC_V1, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max(), /*disableMigration=*/true, @@ -126,10 +126,10 @@ TEST(ServerTransportParametersTest, TestQuicV1RejectDuplicateExtensions) { TEST(ServerTransportParametersTest, TestQuicV1Fields) { ServerTransportParametersExtension ext( QuicVersion::QUIC_V1, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max(), /*disableMigration=*/true, @@ -166,10 +166,10 @@ TEST(ServerTransportParametersTest, TestQuicV1Fields) { TEST(ServerTransportParametersTest, TestMvfstFields) { ServerTransportParametersExtension ext( QuicVersion::MVFST, - kDefaultConnectionWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, - kDefaultStreamWindowSize, + kDefaultConnectionFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, + kDefaultStreamFlowControlWindow, std::numeric_limits::max(), std::numeric_limits::max(), /*disableMigration=*/true, diff --git a/quic/server/state/ServerStateMachine.cpp b/quic/server/state/ServerStateMachine.cpp index 991828e5c..6742f6863 100644 --- a/quic/server/state/ServerStateMachine.cpp +++ b/quic/server/state/ServerStateMachine.cpp @@ -549,12 +549,13 @@ void updateTransportParamsFromTicket( conn.transportSettings.idleTimeout = std::chrono::milliseconds(idleTimeout); conn.transportSettings.maxRecvPacketSize = maxRecvPacketSize; - conn.transportSettings.advertisedInitialConnectionWindowSize = initialMaxData; - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize = + conn.transportSettings.advertisedInitialConnectionFlowControlWindow = + initialMaxData; + conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow = initialMaxStreamDataBidiLocal; - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize = + conn.transportSettings.advertisedInitialBidiRemoteStreamFlowControlWindow = initialMaxStreamDataBidiRemote; - conn.transportSettings.advertisedInitialUniStreamWindowSize = + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow = initialMaxStreamDataUni; updateFlowControlStateWithSettings( conn.flowControlState, conn.transportSettings); @@ -804,10 +805,12 @@ void onServerReadDataFromOpen( conn.serverHandshakeLayer->accept( std::make_shared( version, - conn.transportSettings.advertisedInitialConnectionWindowSize, - conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize, - conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize, - conn.transportSettings.advertisedInitialUniStreamWindowSize, + conn.transportSettings.advertisedInitialConnectionFlowControlWindow, + conn.transportSettings + .advertisedInitialBidiLocalStreamFlowControlWindow, + conn.transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow, + conn.transportSettings.advertisedInitialUniStreamFlowControlWindow, conn.transportSettings.advertisedInitialMaxStreamsBidi, conn.transportSettings.advertisedInitialMaxStreamsUni, conn.transportSettings.disableMigration, diff --git a/quic/server/test/QuicServerTest.cpp b/quic/server/test/QuicServerTest.cpp index e2d34ac76..685163646 100644 --- a/quic/server/test/QuicServerTest.cpp +++ b/quic/server/test/QuicServerTest.cpp @@ -2036,14 +2036,14 @@ class QuicServerTest : public Test { server_->setFizzContext(quic::test::createServerCtx()); server_->setHostId(serverHostId_); server_->setConnectionIdVersion(quic::ConnectionIdVersion::V2); - transportSettings_.advertisedInitialConnectionWindowSize = - kDefaultConnectionWindowSize * 2; - transportSettings_.advertisedInitialBidiLocalStreamWindowSize = - kDefaultStreamWindowSize * 2; - transportSettings_.advertisedInitialBidiRemoteStreamWindowSize = - kDefaultStreamWindowSize * 2; - transportSettings_.advertisedInitialUniStreamWindowSize = - kDefaultStreamWindowSize * 2; + transportSettings_.advertisedInitialConnectionFlowControlWindow = + kDefaultConnectionFlowControlWindow * 2; + transportSettings_.advertisedInitialBidiLocalStreamFlowControlWindow = + kDefaultStreamFlowControlWindow * 2; + transportSettings_.advertisedInitialBidiRemoteStreamFlowControlWindow = + kDefaultStreamFlowControlWindow * 2; + transportSettings_.advertisedInitialUniStreamFlowControlWindow = + kDefaultStreamFlowControlWindow * 2; transportSettings_.statelessResetTokenSecret = getRandSecret(); server_->setTransportSettings(transportSettings_); server_->setConnectionIdAlgoFactory( @@ -2143,20 +2143,24 @@ class QuicServerTest : public Test { .WillRepeatedly(Invoke([&](auto transportSettings) { EXPECT_EQ( transportSettings_ - .advertisedInitialBidiLocalStreamWindowSize, + .advertisedInitialBidiLocalStreamFlowControlWindow, transportSettings - .advertisedInitialBidiLocalStreamWindowSize); + .advertisedInitialBidiLocalStreamFlowControlWindow); EXPECT_EQ( transportSettings_ - .advertisedInitialBidiRemoteStreamWindowSize, + .advertisedInitialBidiRemoteStreamFlowControlWindow, transportSettings - .advertisedInitialBidiRemoteStreamWindowSize); + .advertisedInitialBidiRemoteStreamFlowControlWindow); EXPECT_EQ( - transportSettings_.advertisedInitialUniStreamWindowSize, - transportSettings.advertisedInitialUniStreamWindowSize); + transportSettings_ + .advertisedInitialUniStreamFlowControlWindow, + transportSettings + .advertisedInitialUniStreamFlowControlWindow); EXPECT_EQ( - transportSettings_.advertisedInitialConnectionWindowSize, - transportSettings.advertisedInitialConnectionWindowSize); + transportSettings_ + .advertisedInitialConnectionFlowControlWindow, + transportSettings + .advertisedInitialConnectionFlowControlWindow); })); ON_CALL(*transport, onNetworkData(_, _)) .WillByDefault(Invoke( @@ -2363,14 +2367,14 @@ TEST_F(QuicServerTest, OverrideTakeoverAddressTest) { class QuicServerTakeoverTest : public Test { public: void SetUp() override { - transportSettings_.advertisedInitialConnectionWindowSize = - kDefaultConnectionWindowSize * 2; - transportSettings_.advertisedInitialBidiLocalStreamWindowSize = - kDefaultStreamWindowSize * 2; - transportSettings_.advertisedInitialBidiRemoteStreamWindowSize = - kDefaultStreamWindowSize * 2; - transportSettings_.advertisedInitialUniStreamWindowSize = - kDefaultStreamWindowSize * 2; + transportSettings_.advertisedInitialConnectionFlowControlWindow = + kDefaultConnectionFlowControlWindow * 2; + transportSettings_.advertisedInitialBidiLocalStreamFlowControlWindow = + kDefaultStreamFlowControlWindow * 2; + transportSettings_.advertisedInitialBidiRemoteStreamFlowControlWindow = + kDefaultStreamFlowControlWindow * 2; + transportSettings_.advertisedInitialUniStreamFlowControlWindow = + kDefaultStreamFlowControlWindow * 2; setUpServer(oldServer_, ProcessId::ZERO); setUpServer(newServer_, ProcessId::ONE); } diff --git a/quic/server/test/QuicServerTransportTest.cpp b/quic/server/test/QuicServerTransportTest.cpp index 2708b0a12..faf5442e1 100644 --- a/quic/server/test/QuicServerTransportTest.cpp +++ b/quic/server/test/QuicServerTransportTest.cpp @@ -4509,7 +4509,8 @@ class QuicServerTransportHandshakeTest EXPECT_EQ( initialMaxData, server->getConn() - .transportSettings.advertisedInitialConnectionWindowSize); + .transportSettings + .advertisedInitialConnectionFlowControlWindow); auto initialMaxStreamDataBidiLocal = *getIntegerParameter( TransportParameterId::initial_max_stream_data_bidi_local, params); @@ -4523,16 +4524,17 @@ class QuicServerTransportHandshakeTest initialMaxStreamDataBidiLocal, server->getConn() .transportSettings - .advertisedInitialBidiLocalStreamWindowSize); + .advertisedInitialBidiLocalStreamFlowControlWindow); EXPECT_EQ( initialMaxStreamDataBidiRemote, server->getConn() .transportSettings - .advertisedInitialBidiRemoteStreamWindowSize); + .advertisedInitialBidiRemoteStreamFlowControlWindow); EXPECT_EQ( initialMaxStreamDataUni, server->getConn() - .transportSettings.advertisedInitialUniStreamWindowSize); + .transportSettings + .advertisedInitialUniStreamFlowControlWindow); auto initialMaxStreamsBidi = *getIntegerParameter( TransportParameterId::initial_max_streams_bidi, params); diff --git a/quic/state/StateData.cpp b/quic/state/StateData.cpp index 9992c6089..c6f279840 100644 --- a/quic/state/StateData.cpp +++ b/quic/state/StateData.cpp @@ -15,15 +15,17 @@ QuicStreamState::QuicStreamState(StreamId idIn, QuicConnectionStateBase& connIn) // Note: this will set a windowSize for a locally-initiated unidirectional // stream even though that value is meaningless. flowControlState.windowSize = isUnidirectionalStream(idIn) - ? conn.transportSettings.advertisedInitialUniStreamWindowSize + ? conn.transportSettings.advertisedInitialUniStreamFlowControlWindow : isLocalStream(connIn.nodeType, idIn) - ? conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize - : conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize; + ? conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow + : conn.transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow; flowControlState.advertisedMaxOffset = isUnidirectionalStream(idIn) - ? conn.transportSettings.advertisedInitialUniStreamWindowSize + ? conn.transportSettings.advertisedInitialUniStreamFlowControlWindow : isLocalStream(connIn.nodeType, idIn) - ? conn.transportSettings.advertisedInitialBidiLocalStreamWindowSize - : conn.transportSettings.advertisedInitialBidiRemoteStreamWindowSize; + ? conn.transportSettings.advertisedInitialBidiLocalStreamFlowControlWindow + : conn.transportSettings + .advertisedInitialBidiRemoteStreamFlowControlWindow; // Note: this will set a peerAdvertisedMaxOffset for a peer-initiated // unidirectional stream even though that value is meaningless. flowControlState.peerAdvertisedMaxOffset = isUnidirectionalStream(idIn) diff --git a/quic/state/TransportSettings.h b/quic/state/TransportSettings.h index 49970f6e5..49f971707 100644 --- a/quic/state/TransportSettings.h +++ b/quic/state/TransportSettings.h @@ -91,13 +91,17 @@ struct SerializedKnob { }; struct TransportSettings { - // The initial connection window advertised to the peer. - uint64_t advertisedInitialConnectionWindowSize{kDefaultConnectionWindowSize}; - // The initial window size of the stream advertised to the peer. - uint64_t advertisedInitialBidiLocalStreamWindowSize{kDefaultStreamWindowSize}; - uint64_t advertisedInitialBidiRemoteStreamWindowSize{ - kDefaultStreamWindowSize}; - uint64_t advertisedInitialUniStreamWindowSize{kDefaultStreamWindowSize}; + // The initial flow control window for the whole connection advertised to the + // peer. + uint64_t advertisedInitialConnectionFlowControlWindow{ + kDefaultConnectionFlowControlWindow}; + // The initial flow control window size of a stream advertised to the peer. + uint64_t advertisedInitialBidiLocalStreamFlowControlWindow{ + kDefaultStreamFlowControlWindow}; + uint64_t advertisedInitialBidiRemoteStreamFlowControlWindow{ + kDefaultStreamFlowControlWindow}; + uint64_t advertisedInitialUniStreamFlowControlWindow{ + kDefaultStreamFlowControlWindow}; uint64_t advertisedInitialMaxStreamsBidi{kDefaultMaxStreamsBidirectional}; uint64_t advertisedInitialMaxStreamsUni{kDefaultMaxStreamsUnidirectional}; // Maximum number of packets to buffer while cipher is unavailable. diff --git a/quic/state/stream/test/StreamStateMachineTest.cpp b/quic/state/stream/test/StreamStateMachineTest.cpp index cb63a8287..d33d36609 100644 --- a/quic/state/stream/test/StreamStateMachineTest.cpp +++ b/quic/state/stream/test/StreamStateMachineTest.cpp @@ -39,12 +39,13 @@ std::unique_ptr createConn() { conn->ackStates.handshakeAckState->nextPacketNum = 1; conn->ackStates.appDataAckState.nextPacketNum = 1; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; - conn->flowControlState.peerAdvertisedMaxOffset = kDefaultConnectionWindowSize; + kDefaultStreamFlowControlWindow; + conn->flowControlState.peerAdvertisedMaxOffset = + kDefaultConnectionFlowControlWindow; conn->streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); conn->streamManager->setMaxLocalUnidirectionalStreams( diff --git a/quic/state/test/AckHandlersTest.cpp b/quic/state/test/AckHandlersTest.cpp index 96932032c..14aa3c277 100644 --- a/quic/state/test/AckHandlersTest.cpp +++ b/quic/state/test/AckHandlersTest.cpp @@ -4212,13 +4212,13 @@ class AckEventForAppDataTest : public Test { conn->clientConnectionId = getTestConnectionId(); conn->version = QuicVersion::MVFST; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn->flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn->initialWriteCipher = createNoOpAead(); conn->initialHeaderCipher = createNoOpHeaderCipher(); conn->streamManager->setMaxLocalBidirectionalStreams( diff --git a/quic/state/test/QuicStreamFunctionsTest.cpp b/quic/state/test/QuicStreamFunctionsTest.cpp index 626042d83..4cba3d33f 100644 --- a/quic/state/test/QuicStreamFunctionsTest.cpp +++ b/quic/state/test/QuicStreamFunctionsTest.cpp @@ -35,13 +35,13 @@ class QuicStreamFunctionsTest : public Test { void SetUp() override { conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn.streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); conn.streamManager->setMaxLocalUnidirectionalStreams( @@ -58,13 +58,13 @@ class QuicServerStreamFunctionsTest : public Test { void SetUp() override { conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn.streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); conn.streamManager->setMaxLocalUnidirectionalStreams( diff --git a/quic/state/test/QuicStreamManagerTest.cpp b/quic/state/test/QuicStreamManagerTest.cpp index aeafb5d83..08630c7b9 100644 --- a/quic/state/test/QuicStreamManagerTest.cpp +++ b/quic/state/test/QuicStreamManagerTest.cpp @@ -34,13 +34,13 @@ class QuicStreamManagerTest : conn(FizzServerQuicHandshakeContext::Builder().build()) {} void SetUp() override { conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiRemote = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetUni = - kDefaultStreamWindowSize; + kDefaultStreamFlowControlWindow; conn.flowControlState.peerAdvertisedMaxOffset = - kDefaultConnectionWindowSize; + kDefaultConnectionFlowControlWindow; conn.streamManager->setMaxLocalBidirectionalStreams( kDefaultMaxStreamsBidirectional); conn.streamManager->setMaxLocalUnidirectionalStreams( diff --git a/quic/tools/tperf/tperf.cpp b/quic/tools/tperf/tperf.cpp index 623318eee..344700f72 100644 --- a/quic/tools/tperf/tperf.cpp +++ b/quic/tools/tperf/tperf.cpp @@ -660,9 +660,9 @@ class TPerfClient : public quic::QuicSocket::ConnectionSetupCallback, quicClient_->setCongestionControllerFactory( std::make_shared()); auto settings = quicClient_->getTransportSettings(); - settings.advertisedInitialUniStreamWindowSize = + settings.advertisedInitialUniStreamFlowControlWindow = std::numeric_limits::max(); - settings.advertisedInitialConnectionWindowSize = window_; + settings.advertisedInitialConnectionFlowControlWindow = window_; settings.autotuneReceiveConnFlowControl = autotuneWindow_; settings.connectUDP = true; settings.shouldRecvBatch = true;