Print this page
11547 Want connstat(1M) command to display per-connection TCP statistics
Portions contributed by: Cody Peter Mello <cody.mello@joyent.com>
Portions contributed by: Ahmed G <ahmedg@delphix.com>
Reviewed by: Jason King <jason.king@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>

*** 18,28 **** * * CDDL HEADER END * * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. */ ! /* Copyright (c) 1990 Mentat Inc. */ #ifndef _INET_MIB2_H #define _INET_MIB2_H #include <netinet/in.h> /* For in6_addr_t */ --- 18,31 ---- * * CDDL HEADER END * * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. */ ! /* ! * Copyright (c) 1990 Mentat Inc. ! * Copyright (c) 2015, 2016 by Delphix. All rights reserved. ! */ #ifndef _INET_MIB2_H #define _INET_MIB2_H #include <netinet/in.h> /* For in6_addr_t */
*** 1352,1375 **** /* remote ip addr for this connection { tcpConnEntry 4 } */ IpAddress tcpConnRemAddress; /* remote port for this connection { tcpConnEntry 5 } */ int tcpConnRemPort; /* In host byte order */ struct tcpConnEntryInfo_s { /* seq # of next segment to send */ Gauge ce_snxt; /* seq # of of last segment unacknowledged */ Gauge ce_suna; ! /* currect send window size */ Gauge ce_swnd; /* seq # of next expected segment */ Gauge ce_rnxt; /* seq # of last ack'd segment */ Gauge ce_rack; ! /* currenct receive window size */ Gauge ce_rwnd; /* current rto (retransmit timeout) */ Gauge ce_rto; /* current max segment size */ Gauge ce_mss; /* actual internal state */ int ce_state; } tcpConnEntryInfo; --- 1355,1399 ---- /* remote ip addr for this connection { tcpConnEntry 4 } */ IpAddress tcpConnRemAddress; /* remote port for this connection { tcpConnEntry 5 } */ int tcpConnRemPort; /* In host byte order */ struct tcpConnEntryInfo_s { + Counter64 ce_in_data_inorder_bytes; + Counter64 ce_in_data_inorder_segs; + Counter64 ce_in_data_unorder_bytes; + Counter64 ce_in_data_unorder_segs; + Counter64 ce_in_zwnd_probes; + + Counter64 ce_out_data_bytes; + Counter64 ce_out_data_segs; + Counter64 ce_out_retrans_bytes; + Counter64 ce_out_retrans_segs; + Counter64 ce_out_zwnd_probes; + Counter64 ce_rtt_sum; + /* seq # of next segment to send */ Gauge ce_snxt; /* seq # of of last segment unacknowledged */ Gauge ce_suna; ! /* current send window size */ Gauge ce_swnd; + /* current congestion window size */ + Gauge ce_cwnd; /* seq # of next expected segment */ Gauge ce_rnxt; /* seq # of last ack'd segment */ Gauge ce_rack; ! /* # of unsent bytes in the xmit queue */ ! Gauge ce_unsent; ! /* current receive window size */ Gauge ce_rwnd; + /* round-trip time smoothed average (us) */ + Gauge ce_rtt_sa; /* current rto (retransmit timeout) */ Gauge ce_rto; + /* round-trip time count */ + Gauge ce_rtt_cnt; /* current max segment size */ Gauge ce_mss; /* actual internal state */ int ce_state; } tcpConnEntryInfo;
*** 1406,1435 **** int tcp6ConnRemPort; /* interface index or zero { ipv6TcpConnEntry 5 } */ DeviceIndex tcp6ConnIfIndex; /* state of tcp6 connection { ipv6TcpConnEntry 6 } RW */ int tcp6ConnState; ! struct tcp6ConnEntryInfo_s { ! /* seq # of next segment to send */ ! Gauge ce_snxt; ! /* seq # of of last segment unacknowledged */ ! Gauge ce_suna; ! /* currect send window size */ ! Gauge ce_swnd; ! /* seq # of next expected segment */ ! Gauge ce_rnxt; ! /* seq # of last ack'd segment */ ! Gauge ce_rack; ! /* currenct receive window size */ ! Gauge ce_rwnd; ! /* current rto (retransmit timeout) */ ! Gauge ce_rto; ! /* current max segment size */ ! Gauge ce_mss; ! /* actual internal state */ ! int ce_state; ! } tcp6ConnEntryInfo; /* pid of the processes that created this connection */ uint32_t tcp6ConnCreationProcess; /* system uptime when the connection was created */ uint64_t tcp6ConnCreationTime; --- 1430,1440 ---- int tcp6ConnRemPort; /* interface index or zero { ipv6TcpConnEntry 5 } */ DeviceIndex tcp6ConnIfIndex; /* state of tcp6 connection { ipv6TcpConnEntry 6 } RW */ int tcp6ConnState; ! struct tcpConnEntryInfo_s tcp6ConnEntryInfo; /* pid of the processes that created this connection */ uint32_t tcp6ConnCreationProcess; /* system uptime when the connection was created */ uint64_t tcp6ConnCreationTime;