pub struct TcpInfo {Show 54 fields
pub state: u8,
pub ca_state: u8,
pub retransmits: u8,
pub probes: u8,
pub backoff: u8,
pub options: u8,
pub wscale: u8,
pub delivery_rate_app_limited: u8,
pub rto: u32,
pub ato: u32,
pub snd_mss: u32,
pub rcv_mss: u32,
pub unacked: u32,
pub sacked: u32,
pub lost: u32,
pub retrans: u32,
pub fackets: u32,
pub last_data_sent: u32,
pub last_ack_sent: u32,
pub last_data_recv: u32,
pub last_ack_recv: u32,
pub pmtu: u32,
pub rcv_ssthresh: u32,
pub rtt: u32,
pub rttvar: u32,
pub snd_ssthresh: u32,
pub snd_cwnd: u32,
pub advmss: u32,
pub reordering: u32,
pub rcv_rtt: u32,
pub rcv_space: u32,
pub total_retrans: u32,
pub pacing_rate: u64,
pub max_pacing_rate: u64,
pub bytes_acked: u64,
pub bytes_received: u64,
pub segs_out: u32,
pub segs_in: u32,
pub notsent_bytes: u32,
pub min_rtt: u32,
pub data_segs_in: u32,
pub data_segs_out: u32,
pub delivery_rate: u64,
pub busy_time: u64,
pub rwnd_limited: u64,
pub sndbuf_limited: u64,
pub delivered: u32,
pub delivered_ce: u32,
pub bytes_sent: u64,
pub bytes_retrans: u64,
pub dsack_dups: u32,
pub reord_seen: u32,
pub rcv_ooopack: u32,
pub snd_wnd: u32,
}Fields§
§state: u8State of the TCP connection: one of TCP_ESTABLISHED,
TCP_SYN_SENT, TP_SYN_RECV, TCP_FIN_WAIT1,
TCP_FIN_WAIT2 TCP_TIME_WAIT, TCP_CLOSE,
TCP_CLOSE_WAIT, TCP_LAST_ACK TCP_LISTEN, TCP_CLOSING.
ca_state: u8Congestion algorithm state: one of TCP_CA_OPEN,
TCP_CA_DISORDER, TCP_CA_CWR, TCP_CA_RECOVERY,
TCP_CA_LOSS
retransmits: u8§probes: u8§backoff: u8§options: u8§wscale: u8§delivery_rate_app_limited: u8A boolean indicating if the goodput was measured when the socket’s throughput was limited by the sending application. tcpi_delivery_rate_app_limited:1, tcpi_fastopen_client_fail:2
rto: u32Value of the RTO (Retransmission TimeOut) timer. This value is calculated using the RTT.
ato: u32Value of the ATO (ACK TimeOut) timer.
snd_mss: u32MSS (Maximum Segment Size). Not shure how it differs from
advmss.
rcv_mss: u32MSS (Maximum Segment Size) advertised by peer
unacked: u32Number of segments that have not been ACKnowledged yet, ie the number of in-flight segments.
sacked: u32Number of segments that have been SACKed
lost: u32Number of segments that have been lost
retrans: u32Number of segments that have been retransmitted
fackets: u32Number of segments that have been FACKed
last_data_sent: u32§last_ack_sent: u32§last_data_recv: u32§last_ack_recv: u32§pmtu: u32§rcv_ssthresh: u32§rtt: u32RTT (Round Trip Time). There RTT is the time between the moment a segment is sent out and the moment it is acknowledged. There are different kinds of RTT values, and I don’t know which one this value corresponds to: mRTT (measured RTT), sRTT (smoothed RTT), RTTd (deviated RTT), etc.
rttvar: u32RTT variance (or variation?)
snd_ssthresh: u32Slow-Start Threshold
snd_cwnd: u32Size of the congestion window
advmss: u32MSS advertised by this peer
reordering: u32§rcv_rtt: u32§rcv_space: u32§total_retrans: u32§pacing_rate: u64§max_pacing_rate: u64§bytes_acked: u64§bytes_received: u64§segs_out: u32§segs_in: u32§notsent_bytes: u32§min_rtt: u32§data_segs_in: u32§data_segs_out: u32§delivery_rate: u64The most recent goodput, as measured by tcp_rate_gen(). If the socket is limited by the sending application (e.g., no data to send), it reports the highest measurement instead of the most recent. The unit is bytes per second (like other rate fields in tcp_info).
busy_time: u64§rwnd_limited: u64§sndbuf_limited: u64§delivered: u32§delivered_ce: u32§bytes_sent: u64§bytes_retrans: u64§dsack_dups: u32§reord_seen: u32reordering events seen
rcv_ooopack: u32Out-of-order packets received
snd_wnd: u32peer’s advertised receive window after scaling (bytes)