Skip to content

Commit 40cc0ca

Browse files
mjorasfacebook-github-bot
authored andcommitted
Add DSR packet count to state and qlog.
Summary: It's useful at the end of a connection to know if we tried DSR. Reviewed By: jbeshay Differential Revision: D30545282 fbshipit-source-id: bbb2f3408f7a2d5666676c9e2583bf8fd9f18911
1 parent 9c1b93c commit 40cc0ca

File tree

9 files changed

+22
-21
lines changed

9 files changed

+22
-21
lines changed

quic/api/QuicTransportBase.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,8 @@ void QuicTransportBase::closeImpl(
289289
: std::numeric_limits<uint64_t>::max(),
290290
getSendConnFlowControlBytesWire(*conn_),
291291
conn_->usedZeroRtt,
292-
conn_->version.value_or(QuicVersion::MVFST_INVALID)});
292+
conn_->version.value_or(QuicVersion::MVFST_INVALID),
293+
conn_->dsrPacketCount});
293294
}
294295

295296
// TODO: truncate the error code string to be 1MSS only.

quic/dsr/frontend/WriteFunctions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ uint64_t writePacketizationRequest(
8787
// used, so setting it to 0
8888
0,
8989
true /* isDSRPacket */);
90+
connection.dsrPacketCount++;
9091

9192
if (instructionAddError) {
9293
// TODO: Support empty write loop detection

quic/logging/FileQLogger.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ void FileQLogger::addTransportSummary(const TransportSummaryArgs& args) {
195195
args.currentConnFlowControl,
196196
args.usedZeroRtt,
197197
args.quicVersion,
198+
args.dsrPacketCount,
198199
refTime));
199200
}
200201

quic/logging/QLogger.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class QLogger {
6868
uint64_t currentConnFlowControl{};
6969
bool usedZeroRtt{};
7070
QuicVersion quicVersion{QuicVersion::MVFST_INVALID};
71+
uint64_t dsrPacketCount{};
7172
};
7273
virtual void addTransportSummary(const TransportSummaryArgs& args) = 0;
7374
virtual void addCongestionMetricUpdate(

quic/logging/QLoggerTypes.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ QLogTransportSummaryEvent::QLogTransportSummaryEvent(
343343
uint64_t currentConnFlowControlIn,
344344
bool usedZeroRttIn,
345345
QuicVersion quicVersionIn,
346+
uint64_t dsrPacketCountIn,
346347
std::chrono::microseconds refTimeIn)
347348
: totalBytesSent{totalBytesSentIn},
348349
totalBytesRecvd{totalBytesRecvdIn},
@@ -357,7 +358,8 @@ QLogTransportSummaryEvent::QLogTransportSummaryEvent(
357358
currentWritableBytes{currentWritableBytesIn},
358359
currentConnFlowControl{currentConnFlowControlIn},
359360
usedZeroRtt{usedZeroRttIn},
360-
quicVersion{quicVersionIn} {
361+
quicVersion{quicVersionIn},
362+
dsrPacketCount{dsrPacketCountIn} {
361363
eventType = QLogEventType::TransportSummary;
362364
refTime = refTimeIn;
363365
}
@@ -387,6 +389,7 @@ folly::dynamic QLogTransportSummaryEvent::toDynamic() const {
387389
data["quic_version"] =
388390
static_cast<std::underlying_type<decltype(quicVersion)>::type>(
389391
quicVersion);
392+
data["dsr_packet_count"] = dsrPacketCount;
390393

391394
d.push_back(std::move(data));
392395
return d;

quic/logging/QLoggerTypes.h

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -393,22 +393,6 @@ class QLogConnectionCloseEvent : public QLogEvent {
393393
folly::dynamic toDynamic() const override;
394394
};
395395

396-
struct TransportSummaryArgs {
397-
uint64_t totalBytesSent{};
398-
uint64_t totalBytesRecvd{};
399-
uint64_t sumCurWriteOffset{};
400-
uint64_t sumMaxObservedOffset{};
401-
uint64_t sumCurStreamBufferLen{};
402-
uint64_t totalBytesRetransmitted{};
403-
uint64_t totalStreamBytesCloned{};
404-
uint64_t totalBytesCloned{};
405-
uint64_t totalCryptoDataWritten{};
406-
uint64_t totalCryptoDataRecvd{};
407-
uint64_t currentWritableBytes{};
408-
uint64_t currentConnFlowControl{};
409-
bool usedZeroRtt{};
410-
};
411-
412396
class QLogTransportSummaryEvent : public QLogEvent {
413397
public:
414398
QLogTransportSummaryEvent(
@@ -426,6 +410,7 @@ class QLogTransportSummaryEvent : public QLogEvent {
426410
uint64_t currentConnFlowControl,
427411
bool usedZeroRtt,
428412
QuicVersion version,
413+
uint64_t dsrPacketCount,
429414
std::chrono::microseconds refTimeIn);
430415
~QLogTransportSummaryEvent() override = default;
431416
uint64_t totalBytesSent;
@@ -442,6 +427,7 @@ class QLogTransportSummaryEvent : public QLogEvent {
442427
uint64_t currentConnFlowControl;
443428
bool usedZeroRtt;
444429
QuicVersion quicVersion;
430+
uint64_t dsrPacketCount;
445431

446432
folly::dynamic toDynamic() const override;
447433
};

quic/logging/test/QLoggerTest.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ TEST_F(QLoggerTest, TransportSummaryEvent) {
112112
22,
113113
44,
114114
false,
115-
QuicVersion::MVFST});
115+
QuicVersion::MVFST,
116+
37});
116117

117118
std::unique_ptr<QLogEvent> p = std::move(q.logs[0]);
118119
auto gotEvent = dynamic_cast<QLogTransportSummaryEvent*>(p.get());
@@ -130,6 +131,7 @@ TEST_F(QLoggerTest, TransportSummaryEvent) {
130131
EXPECT_EQ(gotEvent->currentWritableBytes, 22);
131132
EXPECT_EQ(gotEvent->currentConnFlowControl, 44);
132133
EXPECT_EQ(gotEvent->usedZeroRtt, false);
134+
EXPECT_EQ(gotEvent->dsrPacketCount, 37);
133135
}
134136

135137
TEST_F(QLoggerTest, CongestionMetricUpdateEvent) {
@@ -757,14 +759,15 @@ TEST_F(QLoggerTest, TransportSummaryFollyDynamic) {
757759
"current_writable_bytes": 11,
758760
"current_conn_flow_control": 12,
759761
"used_zero_rtt": true,
760-
"quic_version": 4207849474
762+
"quic_version": 4207849474,
763+
"dsr_packet_count": 37
761764
}
762765
]
763766
])");
764767

765768
FileQLogger q(VantagePoint::Client);
766769
q.addTransportSummary(
767-
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, true, QuicVersion::MVFST});
770+
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, true, QuicVersion::MVFST, 37});
768771
folly::dynamic gotDynamic = q.toDynamic();
769772
gotDynamic["traces"][0]["events"][0][0] = "0"; // hardcode reference time
770773
folly::dynamic gotEvents = gotDynamic["traces"][0]["events"];

quic/server/test/QuicServerTransportTest.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4315,6 +4315,7 @@ TEST_F(
43154315

43164316
TEST_F(QuicServerTransportTest, WriteDSR) {
43174317
server->getNonConstConn().transportSettings.dsrEnabled = true;
4318+
EXPECT_EQ(server->getConn().dsrPacketCount, 0);
43184319
// Make sure we are post-handshake
43194320
ASSERT_NE(nullptr, server->getConn().oneRttWriteCipher);
43204321
// Rinse anything pending
@@ -4336,6 +4337,7 @@ TEST_F(QuicServerTransportTest, WriteDSR) {
43364337
EXPECT_TRUE(server->getConn().outstandings.packets.back().isDSRPacket);
43374338
EXPECT_CALL(*rawDSRSender, release()).Times(1);
43384339
server->resetStream(streamId, GenericApplicationErrorCode::NO_ERROR);
4340+
EXPECT_EQ(server->getConn().dsrPacketCount, 1);
43394341
}
43404342

43414343
} // namespace test

quic/state/StateData.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,9 @@ struct QuicConnectionStateBase : public folly::DelayedDestruction {
813813
// in the Observers, to construct Write Blocks
814814
uint64_t writeCount{0};
815815

816+
// Number of DSR packets sent by this connection.
817+
uint64_t dsrPacketCount{0};
818+
816819
// Whether we successfully used 0-RTT keys in this connection.
817820
bool usedZeroRtt{false};
818821

0 commit comments

Comments
 (0)