For receive-heavy cases on the server-side, we want to track the connection quality for individual client IPs. This counter, similar to the existing system-wide TCPOFOQueue counter in /proc/net/netstat, tracks out-of-order packet reception. By providing this counter in TCP_INFO, it will allow understanding to what degree receive-heavy sockets are experiencing out-of-order delivery and packet drops indicating congestion. Please note that this is similar to the counter in NetBSD TCP_INFO, and has the same name. Also note that we avoid increasing the size of the tcp_sock struct by taking advantage of a hole.
Showing the changes to include/uapi/linux (1 of 4 files). Show all
Unified · Split
| @@ -270,6 +270,8 @@ struct tcp_info { · 269 unmodified lines | ||
| 270 | 270 | __u64 tcpi_bytes_retrans; /* RFC4898 tcpEStatsPerfOctetsRetrans */ |
| 271 | 271 | __u32 tcpi_dsack_dups; /* RFC4898 tcpEStatsStackDSACKDups */ |
| 272 | 272 | __u32 tcpi_reord_seen; /* reordering events seen */ |
| 273 | + | |
| 274 | + __u32 tcpi_rcv_ooopack; /* Out-of-order packets received */ | |
| 273 | 275 | }; |
| 274 | 276 | |
| 275 | 277 | /* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */ |