先看下实际输出的结果:
[root@RHEL]# cat /proc/net/sctp/assocs ASSOC SOCK STY SST ST HBKT ASSOC-ID TX_QUEUE RX_QUEUE UID INODE LPORT RPORT LADDRS <-> RADDRS HBINT INS OUTS MAXRT T1X T2X RTXC f153f2a0 f5fa1400 2 10 4 18020 82 0 256 0 94012 3018 3449 *192.168.0.21 <-> *192.168.0.100 30000 100 10 10 0 0 0 f153a8f0 f5fa1400 2 10 4 18020 77 0 256 0 94012 3018 3194 *192.168.0.21 <-> *192.168.0.100 30000 100 10 10 0 0 0
|
各个字段的含义分别如下:
assoc: 表示assoc的内存地址。
sock:表示sock的内存地址。
STY:表示sctp sock的类型。
SCTP_SOCKET_UDP = 0,
SCTP_SOCKET_UDP_HIGH_BANDWIDTH = 1,
SCTP_SOCKET_TCP = 2,
SST: 表示sock的状态。sctp的sock状态延续了tcp协议的状态。
sctp中sock的状态:
SCTP_SS_CLOSED = TCP_CLOSE, //7
SCTP_SS_LISTENING = TCP_LISTEN, //10
SCTP_SS_ESTABLISHING = TCP_SYN_SENT, //2
SCTP_SS_ESTABLISHED = TCP_ESTABLISHED, //1
SCTP_SS_CLOSING = TCP_CLOSING, //11
ST: 表示assoc的状态。 assoc的状态取值如下:
/* SCTP state defines for internal state machine */
SCTP_STATE_EMPTY = 0,
SCTP_STATE_CLOSED = 1,
SCTP_STATE_COOKIE_WAIT = 2,
SCTP_STATE_COOKIE_ECHOED = 3,
SCTP_STATE_ESTABLISHED = 4,
SCTP_STATE_SHUTDOWN_PENDING = 5,
SCTP_STATE_SHUTDOWN_SENT = 6,
SCTP_STATE_SHUTDOWN_RECEIVED = 7,
SCTP_STATE_SHUTDOWN_ACK_SENT = 8,
HBKT: 表示该assoc在hash表中的hash值。
ASSOC-ID:表示该连接的ID值。
TX_QUEUE: 表示发送缓存的内存使用量。单位:字节。
RX_QUEUE: 表示接收队列的内存使用量。单位:字节。
UID INODE: 分别表示sock所对应的uid和inode值。
LPORT RPORT:分别表示本地端口和远端端口。
LADDRS <-> RADDRS :分别表示本地IP地址和远端IP地址。
HBINT:表示assoc发送heartbeat的间隔时间OUTS:同INS类似,表示该assoc可以允许发送的最大 stream数。默认值是10。
MAXRT:表示该assoc允许的最大重传数。默认值是10
T1X:表示该assoc重传的INIT chunk的次数。
T2X:表示该assoc重传的SHUTDOWN chunk的次数。
RTXC:表示该assoc重传的DATA chunk的次数。
内核实现:
函数sctp_assocs_seq_show()输出sctp hash表中各个assoc的内容。
阅读(4797) | 评论(0) | 转发(0) |