Skip to content

Commit 0cf4725

Browse files
committed
quic: add new session-level stats tracked by ngtcp2
Signed-off-by: James M Snell <jasnell@gmail.com>
1 parent 91dd5d5 commit 0cf4725

3 files changed

Lines changed: 90 additions & 13 deletions

File tree

lib/internal/quic/stats.js

Lines changed: 65 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ const {
6262
IDX_STATS_SESSION_HANDSHAKE_COMPLETED_AT,
6363
IDX_STATS_SESSION_HANDSHAKE_CONFIRMED_AT,
6464
IDX_STATS_SESSION_BYTES_RECEIVED,
65-
IDX_STATS_SESSION_BYTES_SENT,
6665
IDX_STATS_SESSION_BIDI_IN_STREAM_COUNT,
6766
IDX_STATS_SESSION_BIDI_OUT_STREAM_COUNT,
6867
IDX_STATS_SESSION_UNI_IN_STREAM_COUNT,
@@ -76,6 +75,15 @@ const {
7675
IDX_STATS_SESSION_RTTVAR,
7776
IDX_STATS_SESSION_SMOOTHED_RTT,
7877
IDX_STATS_SESSION_SSTHRESH,
78+
IDX_STATS_SESSION_PKT_SENT,
79+
IDX_STATS_SESSION_BYTES_SENT,
80+
IDX_STATS_SESSION_PKT_RECV,
81+
IDX_STATS_SESSION_BYTES_RECV,
82+
IDX_STATS_SESSION_PKT_LOST,
83+
IDX_STATS_SESSION_BYTES_LOST,
84+
IDX_STATS_SESSION_PING_RECV,
85+
IDX_STATS_SESSION_PKT_DISCARDED,
86+
7987
IDX_STATS_SESSION_DATAGRAMS_RECEIVED,
8088
IDX_STATS_SESSION_DATAGRAMS_SENT,
8189
IDX_STATS_SESSION_DATAGRAMS_ACKNOWLEDGED,
@@ -112,7 +120,6 @@ assert(IDX_STATS_SESSION_CLOSING_AT !== undefined);
112120
assert(IDX_STATS_SESSION_HANDSHAKE_COMPLETED_AT !== undefined);
113121
assert(IDX_STATS_SESSION_HANDSHAKE_CONFIRMED_AT !== undefined);
114122
assert(IDX_STATS_SESSION_BYTES_RECEIVED !== undefined);
115-
assert(IDX_STATS_SESSION_BYTES_SENT !== undefined);
116123
assert(IDX_STATS_SESSION_BIDI_IN_STREAM_COUNT !== undefined);
117124
assert(IDX_STATS_SESSION_BIDI_OUT_STREAM_COUNT !== undefined);
118125
assert(IDX_STATS_SESSION_UNI_IN_STREAM_COUNT !== undefined);
@@ -126,6 +133,14 @@ assert(IDX_STATS_SESSION_MIN_RTT !== undefined);
126133
assert(IDX_STATS_SESSION_RTTVAR !== undefined);
127134
assert(IDX_STATS_SESSION_SMOOTHED_RTT !== undefined);
128135
assert(IDX_STATS_SESSION_SSTHRESH !== undefined);
136+
assert(IDX_STATS_SESSION_PKT_SENT !== undefined);
137+
assert(IDX_STATS_SESSION_BYTES_SENT !== undefined);
138+
assert(IDX_STATS_SESSION_PKT_RECV !== undefined);
139+
assert(IDX_STATS_SESSION_BYTES_RECV !== undefined);
140+
assert(IDX_STATS_SESSION_PKT_LOST !== undefined);
141+
assert(IDX_STATS_SESSION_BYTES_LOST !== undefined);
142+
assert(IDX_STATS_SESSION_PING_RECV !== undefined);
143+
assert(IDX_STATS_SESSION_PKT_DISCARDED !== undefined);
129144
assert(IDX_STATS_SESSION_DATAGRAMS_RECEIVED !== undefined);
130145
assert(IDX_STATS_SESSION_DATAGRAMS_SENT !== undefined);
131146
assert(IDX_STATS_SESSION_DATAGRAMS_ACKNOWLEDGED !== undefined);
@@ -347,11 +362,6 @@ class QuicSessionStats {
347362
return this.#handle[IDX_STATS_SESSION_BYTES_RECEIVED];
348363
}
349364

350-
/** @type {bigint} */
351-
get bytesSent() {
352-
return this.#handle[IDX_STATS_SESSION_BYTES_SENT];
353-
}
354-
355365
/** @type {bigint} */
356366
get bidiInStreamCount() {
357367
return this.#handle[IDX_STATS_SESSION_BIDI_IN_STREAM_COUNT];
@@ -417,6 +427,38 @@ class QuicSessionStats {
417427
return this.#handle[IDX_STATS_SESSION_SSTHRESH];
418428
}
419429

430+
get pktSent() {
431+
return this.#handle[IDX_STATS_SESSION_PKT_SENT];
432+
}
433+
434+
get bytesSent() {
435+
return this.#handle[IDX_STATS_SESSION_BYTES_SENT];
436+
}
437+
438+
get pktRecv() {
439+
return this.#handle[IDX_STATS_SESSION_PKT_RECV];
440+
}
441+
442+
get bytesRecv() {
443+
return this.#handle[IDX_STATS_SESSION_BYTES_RECV];
444+
}
445+
446+
get pktLost() {
447+
return this.#handle[IDX_STATS_SESSION_PKT_LOST];
448+
}
449+
450+
get bytesLost() {
451+
return this.#handle[IDX_STATS_SESSION_BYTES_LOST];
452+
}
453+
454+
get pingRecv() {
455+
return this.#handle[IDX_STATS_SESSION_PING_RECV];
456+
}
457+
458+
get pktDiscarded() {
459+
return this.#handle[IDX_STATS_SESSION_PKT_DISCARDED];
460+
}
461+
420462
/** @type {bigint} */
421463
get datagramsReceived() {
422464
return this.#handle[IDX_STATS_SESSION_DATAGRAMS_RECEIVED];
@@ -454,7 +496,6 @@ class QuicSessionStats {
454496
handshakeConfirmedAt: `${this.handshakeConfirmedAt}`,
455497
gracefulClosingAt: `${this.gracefulClosingAt}`,
456498
bytesReceived: `${this.bytesReceived}`,
457-
bytesSent: `${this.bytesSent}`,
458499
bidiInStreamCount: `${this.bidiInStreamCount}`,
459500
bidiOutStreamCount: `${this.bidiOutStreamCount}`,
460501
uniInStreamCount: `${this.uniInStreamCount}`,
@@ -468,6 +509,14 @@ class QuicSessionStats {
468509
rttVar: `${this.rttVar}`,
469510
smoothedRtt: `${this.smoothedRtt}`,
470511
ssthresh: `${this.ssthresh}`,
512+
pktSent: `${this.pktSent}`,
513+
bytesSent: `${this.bytesSent}`,
514+
pktRecv: `${this.pktRecv}`,
515+
bytesRecv: `${this.bytesRecv}`,
516+
pktLost: `${this.pktLost}`,
517+
bytesLost: `${this.bytesLost}`,
518+
pingRecv: `${this.pingRecv}`,
519+
pktDiscarded: `${this.pktDiscarded}`,
471520
datagramsReceived: `${this.datagramsReceived}`,
472521
datagramsSent: `${this.datagramsSent}`,
473522
datagramsAcknowledged: `${this.datagramsAcknowledged}`,
@@ -493,7 +542,6 @@ class QuicSessionStats {
493542
handshakeConfirmedAt: this.handshakeConfirmedAt,
494543
gracefulClosingAt: this.gracefulClosingAt,
495544
bytesReceived: this.bytesReceived,
496-
bytesSent: this.bytesSent,
497545
bidiInStreamCount: this.bidiInStreamCount,
498546
bidiOutStreamCount: this.bidiOutStreamCount,
499547
uniInStreamCount: this.uniInStreamCount,
@@ -507,6 +555,14 @@ class QuicSessionStats {
507555
rttVar: this.rttVar,
508556
smoothedRtt: this.smoothedRtt,
509557
ssthresh: this.ssthresh,
558+
pktSent: this.pktSent,
559+
bytesSent: this.bytesSent,
560+
pktRecv: this.pktRecv,
561+
bytesRecv: this.bytesRecv,
562+
pktLost: this.pktLost,
563+
bytesLost: this.bytesLost,
564+
pingRecv: this.pingRecv,
565+
pktDiscarded: this.pktDiscarded,
510566
datagramsReceived: this.datagramsReceived,
511567
datagramsSent: this.datagramsSent,
512568
datagramsAcknowledged: this.datagramsAcknowledged,

src/quic/session.cc

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ namespace quic {
8181
V(HANDSHAKE_COMPLETED_AT, handshake_completed_at) \
8282
V(HANDSHAKE_CONFIRMED_AT, handshake_confirmed_at) \
8383
V(BYTES_RECEIVED, bytes_received) \
84-
V(BYTES_SENT, bytes_sent) \
8584
V(BIDI_IN_STREAM_COUNT, bidi_in_stream_count) \
8685
V(BIDI_OUT_STREAM_COUNT, bidi_out_stream_count) \
8786
V(UNI_IN_STREAM_COUNT, uni_in_stream_count) \
@@ -95,6 +94,14 @@ namespace quic {
9594
V(RTTVAR, rttvar) \
9695
V(SMOOTHED_RTT, smoothed_rtt) \
9796
V(SSTHRESH, ssthresh) \
97+
V(PKT_SENT, pkt_sent) \
98+
V(BYTES_SENT, bytes_sent) \
99+
V(PKT_RECV, pkt_recv) \
100+
V(BYTES_RECV, bytes_recv) \
101+
V(PKT_LOST, pkt_lost) \
102+
V(BYTES_LOST, bytes_lost) \
103+
V(PING_RECV, ping_recv) \
104+
V(PKT_DISCARDED, pkt_discarded) \
98105
V(DATAGRAMS_RECEIVED, datagrams_received) \
99106
V(DATAGRAMS_SENT, datagrams_sent) \
100107
V(DATAGRAMS_ACKNOWLEDGED, datagrams_acknowledged) \
@@ -1801,8 +1808,6 @@ void Session::Send(Packet::Ptr packet) {
18011808
}
18021809

18031810
Debug(this, "Session is sending %s", packet->ToString());
1804-
auto& stats_ = impl_->stats_;
1805-
STAT_INCREMENT_N(Stats, bytes_sent, packet->length());
18061811
endpoint().Send(std::move(packet));
18071812
}
18081813

@@ -1976,7 +1981,6 @@ datagram_id Session::SendDatagram(Store&& data) {
19761981
Debug(this, "Datagram %" PRIu64 " sent", did);
19771982
auto& stats_ = impl_->stats_;
19781983
STAT_INCREMENT(Stats, datagrams_sent);
1979-
STAT_INCREMENT_N(Stats, bytes_sent, vec.len);
19801984
impl_->state_->last_datagram_id = did;
19811985
return did;
19821986
}
@@ -2331,6 +2335,15 @@ void Session::UpdateDataStats() {
23312335
STAT_SET(Stats, rttvar, info.rttvar);
23322336
STAT_SET(Stats, smoothed_rtt, info.smoothed_rtt);
23332337
STAT_SET(Stats, ssthresh, info.ssthresh);
2338+
STAT_SET(Stats, pkt_sent, info.pkt_sent);
2339+
STAT_SET(Stats, bytes_sent, info.bytes_sent);
2340+
STAT_SET(Stats, pkt_recv, info.pkt_recv);
2341+
STAT_SET(Stats, bytes_recv, info.bytes_recv);
2342+
STAT_SET(Stats, pkt_lost, info.pkt_lost);
2343+
STAT_SET(Stats, bytes_lost, info.bytes_lost);
2344+
STAT_SET(Stats, ping_recv, info.ping_recv);
2345+
STAT_SET(Stats, pkt_discarded, info.pkt_discarded);
2346+
23342347
STAT_SET(
23352348
Stats,
23362349
max_bytes_in_flight,

test/parallel/test-quic-internal-endpoint-stats-state.mjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,14 @@ assert.strictEqual(typeof sessionStats.minRtt, 'bigint');
199199
assert.strictEqual(typeof sessionStats.rttVar, 'bigint');
200200
assert.strictEqual(typeof sessionStats.smoothedRtt, 'bigint');
201201
assert.strictEqual(typeof sessionStats.ssthresh, 'bigint');
202+
assert.strictEqual(typeof sessionStats.pktSent, 'bigint');
203+
assert.strictEqual(typeof sessionStats.bytesSent, 'bigint');
204+
assert.strictEqual(typeof sessionStats.pktRecv, 'bigint');
205+
assert.strictEqual(typeof sessionStats.bytesRecv, 'bigint');
206+
assert.strictEqual(typeof sessionStats.pktLost, 'bigint');
207+
assert.strictEqual(typeof sessionStats.bytesLost, 'bigint');
208+
assert.strictEqual(typeof sessionStats.pingRecv, 'bigint');
209+
assert.strictEqual(typeof sessionStats.pktDiscarded, 'bigint');
202210
assert.strictEqual(typeof sessionStats.datagramsReceived, 'bigint');
203211
assert.strictEqual(typeof sessionStats.datagramsSent, 'bigint');
204212
assert.strictEqual(typeof sessionStats.datagramsAcknowledged, 'bigint');

0 commit comments

Comments
 (0)