diff options
author | Edward Tomasz Napierala <trasz@FreeBSD.org> | 2019-12-02 20:58:04 +0000 |
---|---|---|
committer | Edward Tomasz Napierala <trasz@FreeBSD.org> | 2019-12-02 20:58:04 +0000 |
commit | adc56f5a383771f594829b7db9c263b6f0dcf1bd (patch) | |
tree | 1767a0c4a3c4257add557b9ae6dbf666df6b4926 /sys/netinet/tcp.h | |
parent | 79c1428ed655778475f020df2932d0b2f1c648b1 (diff) | |
download | src-adc56f5a383771f594829b7db9c263b6f0dcf1bd.tar.gz src-adc56f5a383771f594829b7db9c263b6f0dcf1bd.zip |
Make use of the stats(3) framework in the TCP stack.
This makes it possible to retrieve per-connection statistical
information such as the receive window size, RTT, or goodput,
using a newly added TCP_STATS getsockopt(3) option, and extract
them using the stats_voistat_fetch(3) API.
See the net/tcprtt port for an example consumer of this API.
Compared to the existing TCP_INFO system, the main differences
are that this mechanism is easy to extend without breaking ABI,
and provides statistical information instead of raw "snapshots"
of values at a given point in time. stats(3) is more generic
and can be used in both userland and the kernel.
Reviewed by: thj
Tested by: thj
Obtained from: Netflix
Relnotes: yes
Sponsored by: Klara Inc, Netflix
Differential Revision: https://reviews.freebsd.org/D20655
Notes
Notes:
svn path=/head/; revision=355304
Diffstat (limited to 'sys/netinet/tcp.h')
-rw-r--r-- | sys/netinet/tcp.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/netinet/tcp.h b/sys/netinet/tcp.h index 125cacb28350..4e06c97920d6 100644 --- a/sys/netinet/tcp.h +++ b/sys/netinet/tcp.h @@ -168,6 +168,7 @@ struct tcphdr { #define TCP_NOOPT 8 /* don't use TCP options */ #define TCP_MD5SIG 16 /* use MD5 digests (RFC2385) */ #define TCP_INFO 32 /* retrieve tcp_info structure */ +#define TCP_STATS 33 /* retrieve stats blob structure */ #define TCP_LOG 34 /* configure event logging for connection */ #define TCP_LOGBUF 35 /* retrieve event log for connection */ #define TCP_LOGID 36 /* configure log ID to correlate connections */ @@ -364,4 +365,18 @@ struct tcp_function_set { */ #define TLS_SET_RECORD_TYPE 1 +/* + * TCP specific variables of interest for tp->t_stats stats(9) accounting. + */ +#define VOI_TCP_TXPB 0 /* Transmit payload bytes */ +#define VOI_TCP_RETXPB 1 /* Retransmit payload bytes */ +#define VOI_TCP_FRWIN 2 /* Foreign receive window */ +#define VOI_TCP_LCWIN 3 /* Local congesiton window */ +#define VOI_TCP_RTT 4 /* Round trip time */ +#define VOI_TCP_CSIG 5 /* Congestion signal */ +#define VOI_TCP_GPUT 6 /* Goodput */ +#define VOI_TCP_CALCFRWINDIFF 7 /* Congestion avoidance LCWIN - FRWIN */ +#define VOI_TCP_GPUT_ND 8 /* Goodput normalised delta */ +#define VOI_TCP_ACKLEN 9 /* Average ACKed bytes per ACK */ + #endif /* !_NETINET_TCP_H_ */ |