History

tcp: new TCP_INFO stats for RTO events

The 2023 SIGCOMM paper "Improving Network Availability with Protective ReRoute" has indicated Linux TCP's RTO-triggered txhash rehashing can effectively reduce application disruption during outages. To better measure the efficacy of this feature, this patch adds three more detailed stats during RTO recovery and exports via TCP_INFO. Applications and monitoring systems can leverage this data to measure the network path diversity and end-to-end repair latency during network outages to improve their network infrastructure. The following counters are added to tcp_sock in order to track RTO events over the lifetime of a TCP socket. 1. u16 total_rto - Counts the total number of RTO timeouts. 2. u16 total_rto_recoveries - Counts the total number of RTO recoveries. 3. u32 total_rto_time - Counts the total time spent (ms) in RTO recoveries. (time spent in CA_Loss and CA_Recovery states) To compute total_rto_time, we add a new u32 rto_stamp field to tcp_sock. rto_stamp records the start timestamp (ms) of the last RTO recovery (CA_Loss). Corresponding fields are also added to the tcp_info struct.

Aananth V committed 3 years ago

Commit 3868ab01 parent e3265786 files · +63 −2Browse files

Showing the changes to include/uapi (1 of 6 files). Show all

Unified · Split

include/uapi/linux/tcp.h+12−0
@@ -289,6 +289,18 @@ struct tcp_info { · 288 unmodified lines
289 */289 */
290 290
291 __u32 tcpi_rehash; /* PLB or timeout triggered rehash attempts */291 __u32 tcpi_rehash; /* PLB or timeout triggered rehash attempts */
292
293 __u16 tcpi_total_rto; /* Total number of RTO timeouts, including
294 * SYN/SYN-ACK and recurring timeouts.
295 */
296 __u16 tcpi_total_rto_recoveries; /* Total number of RTO
297 * recoveries, including any
298 * unfinished recovery.
299 */
300 __u32 tcpi_total_rto_time; /* Total time spent in RTO recoveries
301 * in milliseconds, including any
302 * unfinished recovery.
303 */
292};304};
293 305
294/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */306/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t