Skip to content

Commit

Permalink
retx metrics, more probes
Browse files Browse the repository at this point in the history
  • Loading branch information
akhinvasara-jumptrading committed Feb 11, 2025
1 parent e0bf602 commit ba606c0
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 8 deletions.
1 change: 1 addition & 0 deletions book/api/metrics-generated.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@
| quic_​pkt_​oversz | `counter` | Number of QUIC packets dropped due to being too large. |
| quic_​pkt_​verneg | `counter` | Number of QUIC version negotiation packets received. |
| quic_​retry_​sent | `counter` | Number of QUIC Retry packets sent. |
| quic_​pkt_​retransmissions | `counter` | Number of QUIC packets that retransmitted. |

## Bundle Tile
| Metric | Type | Description |
Expand Down
1 change: 1 addition & 0 deletions src/disco/metrics/generated/fd_metrics_quic.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,5 @@ const fd_metrics_meta_t FD_METRICS_QUIC[FD_METRICS_QUIC_TOTAL] = {
DECLARE_METRIC( QUIC_PKT_OVERSZ, COUNTER ),
DECLARE_METRIC( QUIC_PKT_VERNEG, COUNTER ),
DECLARE_METRIC( QUIC_RETRY_SENT, COUNTER ),
DECLARE_METRIC( QUIC_PKT_RETRANSMISSIONS, COUNTER ),
};
8 changes: 7 additions & 1 deletion src/disco/metrics/generated/fd_metrics_quic.h
Original file line number Diff line number Diff line change
Expand Up @@ -313,5 +313,11 @@
#define FD_METRICS_COUNTER_QUIC_RETRY_SENT_DESC "Number of QUIC Retry packets sent."
#define FD_METRICS_COUNTER_QUIC_RETRY_SENT_CVT (FD_METRICS_CONVERTER_NONE)

#define FD_METRICS_QUIC_TOTAL (76UL)
#define FD_METRICS_COUNTER_QUIC_PKT_RETRANSMISSIONS_OFF (124UL)
#define FD_METRICS_COUNTER_QUIC_PKT_RETRANSMISSIONS_NAME "quic_pkt_retransmissions"
#define FD_METRICS_COUNTER_QUIC_PKT_RETRANSMISSIONS_TYPE (FD_METRICS_TYPE_COUNTER)
#define FD_METRICS_COUNTER_QUIC_PKT_RETRANSMISSIONS_DESC "Number of QUIC packets that retransmitted."
#define FD_METRICS_COUNTER_QUIC_PKT_RETRANSMISSIONS_CVT (FD_METRICS_CONVERTER_NONE)

#define FD_METRICS_QUIC_TOTAL (77UL)
extern const fd_metrics_meta_t FD_METRICS_QUIC[FD_METRICS_QUIC_TOTAL];
1 change: 1 addition & 0 deletions src/disco/metrics/metrics.xml
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ metric introduced.
<counter name="PktOversz" summary="Number of QUIC packets dropped due to being too large." />
<counter name="PktVerneg" summary="Number of QUIC version negotiation packets received." />
<counter name="RetrySent" summary="Number of QUIC Retry packets sent." />
<counter name="PktRetransmissions" summary="Number of QUIC packets that retransmitted." />
</tile>

<tile name="bundle">
Expand Down
15 changes: 8 additions & 7 deletions src/disco/quic/fd_quic_tile.c
Original file line number Diff line number Diff line change
Expand Up @@ -148,15 +148,16 @@ metrics_write( fd_quic_ctx_t * ctx ) {
FD_MCNT_SET( QUIC, CONNECTION_ERROR_NO_SLOTS, ctx->quic->metrics.conn_err_no_slots_cnt );
FD_MCNT_SET( QUIC, CONNECTION_ERROR_RETRY_FAIL, ctx->quic->metrics.conn_err_retry_fail_cnt );

FD_MCNT_ENUM_COPY( QUIC, PKT_CRYPTO_FAILED, ctx->quic->metrics.pkt_decrypt_fail_cnt );
FD_MCNT_ENUM_COPY( QUIC, PKT_NO_KEY, ctx->quic->metrics.pkt_no_key_cnt );
FD_MCNT_SET( QUIC, PKT_NO_CONN, ctx->quic->metrics.pkt_no_conn_cnt );
FD_MCNT_SET( QUIC, PKT_TX_ALLOC_FAIL, ctx->quic->metrics.pkt_tx_alloc_fail_cnt );
FD_MCNT_ENUM_COPY( QUIC, PKT_CRYPTO_FAILED, ctx->quic->metrics.pkt_decrypt_fail_cnt );
FD_MCNT_ENUM_COPY( QUIC, PKT_NO_KEY, ctx->quic->metrics.pkt_no_key_cnt );
FD_MCNT_SET( QUIC, PKT_NO_CONN, ctx->quic->metrics.pkt_no_conn_cnt );
FD_MCNT_SET( QUIC, PKT_TX_ALLOC_FAIL, ctx->quic->metrics.pkt_tx_alloc_fail_cnt );
FD_MCNT_SET( QUIC, PKT_NET_HEADER_INVALID, ctx->quic->metrics.pkt_net_hdr_err_cnt );
FD_MCNT_SET( QUIC, PKT_QUIC_HEADER_INVALID, ctx->quic->metrics.pkt_quic_hdr_err_cnt );
FD_MCNT_SET( QUIC, PKT_UNDERSZ, ctx->quic->metrics.pkt_undersz_cnt );
FD_MCNT_SET( QUIC, PKT_OVERSZ, ctx->quic->metrics.pkt_oversz_cnt );
FD_MCNT_SET( QUIC, PKT_VERNEG, ctx->quic->metrics.pkt_verneg_cnt );
FD_MCNT_SET( QUIC, PKT_UNDERSZ, ctx->quic->metrics.pkt_undersz_cnt );
FD_MCNT_SET( QUIC, PKT_OVERSZ, ctx->quic->metrics.pkt_oversz_cnt );
FD_MCNT_SET( QUIC, PKT_VERNEG, ctx->quic->metrics.pkt_verneg_cnt );
FD_MCNT_SET( QUIC, PKT_RETRANSMISSIONS, ctx->quic->metrics.pkt_retransmissions_cnt );

FD_MCNT_SET( QUIC, HANDSHAKES_CREATED, ctx->quic->metrics.hs_created_cnt );
FD_MCNT_SET( QUIC, HANDSHAKE_ERROR_ALLOC_FAIL, ctx->quic->metrics.hs_err_alloc_fail_cnt );
Expand Down
4 changes: 4 additions & 0 deletions src/disco/quic/test_quic_metrics.txt
Original file line number Diff line number Diff line change
Expand Up @@ -236,3 +236,7 @@ quic_pkt_verneg{kind="quic",kind_id="0"} 122
# HELP quic_retry_sent Number of QUIC Retry packets sent.
# TYPE quic_retry_sent counter
quic_retry_sent{kind="quic",kind_id="0"} 123

# HELP quic_pkt_retransmissions Number of QUIC packets that retransmitted.
# TYPE quic_pkt_retransmissions counter
quic_pkt_retransmissions{kind="quic",kind_id="0"} 124
8 changes: 8 additions & 0 deletions src/waltz/quic/fd_quic.c
Original file line number Diff line number Diff line change
Expand Up @@ -3232,6 +3232,7 @@ fd_quic_gen_handshake_done_frame( fd_quic_conn_t * conn,
uchar * payload_end,
fd_quic_pkt_meta_t * pkt_meta,
ulong now ) {
FD_DTRACE_PROBE_1( quic_gen_handshake_done_frame, conn->our_conn_id );
if( conn->handshake_done_send==0 ) return 0UL;
conn->handshake_done_send = 0;
if( FD_UNLIKELY( conn->handshake_done_ackd ) ) return 0UL;
Expand Down Expand Up @@ -3673,6 +3674,7 @@ fd_quic_conn_tx( fd_quic_t * quic,

hdr_sz = fd_quic_encode_initial( cur_ptr, cur_sz, &initial );
hdr_len_field = cur_ptr + hdr_sz - 6; /* 2 byte len, 4 byte packet number */
FD_DTRACE_PROBE_2( quic_encode_initial, initial.src_conn_id, initial.dst_conn_id );
break;
}

Expand All @@ -3694,6 +3696,7 @@ fd_quic_conn_tx( fd_quic_t * quic,

hdr_sz = fd_quic_encode_handshake( cur_ptr, cur_sz, &handshake );
hdr_len_field = cur_ptr + hdr_sz - 6; /* 2 byte len, 4 byte packet number */
FD_DTRACE_PROBE_2( quic_encode_handshake, handshake.src_conn_id, handshake.dst_conn_id );
break;
}

Expand All @@ -3709,6 +3712,7 @@ fd_quic_conn_tx( fd_quic_t * quic,
one_rtt.pkt_num = pkt_number;

hdr_sz = fd_quic_encode_one_rtt( cur_ptr, cur_sz, &one_rtt );
FD_DTRACE_PROBE_2( quic_encode_one_rtt, one_rtt.dst_conn_id, one_rtt.pkt_num );
break;
}

Expand Down Expand Up @@ -4514,6 +4518,10 @@ fd_quic_pkt_meta_retry( fd_quic_t * quic,
continue;
}

quic->metrics.pkt_retransmissions_cnt++;

FD_DTRACE_PROBE_4( quic_pkt_meta_retry, conn->our_conn_id, pkt_meta->pkt_number, pkt_meta->expiry, pkt_meta->flags);

/* set the data to retry */
uint flags = pkt_meta->flags;
if( flags & FD_QUIC_PKT_META_FLAGS_HS_DATA ) {
Expand Down
1 change: 1 addition & 0 deletions src/waltz/quic/fd_quic.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,7 @@ union fd_quic_metrics {
ulong pkt_no_conn_cnt; /* number of packets with unknown conn ID (excl. Initial) */
ulong pkt_tx_alloc_fail_cnt; /* number of pkt_meta alloc fails */
ulong pkt_verneg_cnt; /* number of QUIC version negotiation packets or packets with wrong version */
ulong pkt_retransmissions_cnt; /* number of pkt_meta retries */

/* Frame metrics */
ulong frame_rx_cnt[ 22 ]; /* number of frames received (indexed by implementation-defined IDs) */
Expand Down

0 comments on commit ba606c0

Please sign in to comment.