分类:
2012-02-15 18:18:03
原文地址:TCP SNMP counters (三) 作者:raise_sail
类别 | 名称 | 描述 |
---|---|---|
TcpExt | TCPBacklogDrop | tcp_v4_rcv() : 如果socket被user锁住,后退一步内核会把包加到sk_backlog_queue,但如果因为sk_rcv_buf不足的原因入队失败,计数器加1 |
TcpExt | TCPDeferAcceptDrop | tcp_check_req(): 如果启用TCP_DEFER_ACCEPT,这个计数器统计了被丢掉了“Pure ACK”个数。 TCP_DEFER_ACCEPT:允许listener只有在连接上有数据才创建新的socket,以抵御syn-flood攻击。 |
TcpExt | TCPDirectCopyFromBacklog | tcp_recvmsg(): 如果有数据在softirq里面从backlog queue中直接复制到userland memory上,计数器加1 |
TcpExt | TCPDirectCopyFromPrequeue | tcp_recvmsg(): 如果有数据在这个syscall里从prequeue中直接复制到userland memory上,计数器加1 |
TcpExt | TCPHPHits | tcp_rcv_established(): 如果有skb通过“快速路径”进入到sk_receive_queue上,计数器加1。 特别地,Pure ACK以及直接复制到user space上的都不算在这个计数器上。 |
TcpExt | TCPHPHitsToUser | tcp_rcv_established(): 如果有skb通过“快速路径”直接复制到user space上,计数器加1。 |
TcpExt | TCPLossFailures | tcp_retransmit_timer(): icsk_retransmit==0(第一次进入重传状态)并且处于Loss状态下,计数器加1 可能情况是:因为partial ACK中从Loss中undo了一些状态,但还有完全离开Loss |
TcpExt | TCPMD5NotFound | tcp_v4_do_rcv() -> tcp_v4_inbound_md5_hash() : 配置了md5检查,但在输入skb中没有找到对应TCP选项。 |
TcpExt | TCPMD5Unexpected | tcp_v4_do_rcv() -> tcp_v4_inbound_md5_hash() : 未配置md5检查,但在输入skb中找到了对应TCP选项。 |
TcpExt | TCPMemoryPressures | tcp_enter_memory_pressure()在从“非压力状态”切换到“有压力状态”时计数器加1,可能的触发点有:
|
TcpExt | TCPMinTTLDrop | tcp_v4_err() / tcp_v4_rcv(): 在接收到TCP报文或者TCP相关的ICMP报文时,检查IP TTL,如果小于socket option设置的一个阀值,就丢包。这个功能是RFC5082(The Generalized TTL Security Mechanism, GTSM)规定的,使用GTSM的通信双方,都将TTL设置成最大值255,双方假定了解之间的链路情况,这样可以通过检查最小TTL值隔离攻击。 |
TcpExt | TCPPrequeueDropped | tcp_v4_rcv() -> tcp_prequeue() : 如果因为内存不足(ucopy.memory < sk->rcv_buf)而加入到prequeue失败,重新由backlog处理,计数器加1 |
TcpExt | TCPPrequeued | tcp_recvmsg() -> tcp_prequeue_process() : tcp_recvmsg()发现可以从prequeue接收到报文,计数器加1(不是每个skb加1) |
TcpExt | TCPRcvCollapsed | tcp_prune_queue() -> tcp_collapse() -> tcp_collapse_one() tcp_prune_ofo_queue() -> tcp_collapse() |
TcpExt | TCPReqQFullDoCookies | tcp_rcv_state_process() -> tcp_v4_conn_request() -> tcp_syn_flood_action() syn_table过载,进行SYN cookie的次数(取决于是否打开sysctl_tcp_syncookies)。 |
TcpExt | TCPReqQFullDrop | tcp_rcv_state_process() -> tcp_v4_conn_request() -> tcp_syn_flood_action() syn_table过载,丢掉SYN的次数。 |
TcpExt | TCPSchedulerFailed | tcp_delack_timer(): 在delay ACK处理功能内,如果prequeue中仍有数据,计数器就加1 加入到prequeue,本来是期待着userspace(使用tcp_recvmsg()之类的系统调用)尽快处理之。其中仍有数据,可能隐含着userspace行为不佳。 |
TcpExt | IPReversePathFilter | ip_rcv_finish() -> ip_route_input_noref(): 反向路径过滤掉的IP分组数量:要么反向路由查找失败,要么是找到的输出接口与输入接口不同。 |