最新消息:

TCP SNMP counters (三)

tcp admin 3199浏览 0评论
TCP Others Others


类别 名称 描述
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,可能的触发点有:

  • tcp_sendmsg()
  • tcp_sendpage()
  • tcp_fragment()
  • tso_fragment()
  • tcp_mtu_probe()
  • tcp_data_queue()
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()
每当合并sk_receive_queue(ofo_queue)中的连续报文时,计数器加1
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分组数量:要么反向路由查找失败,要么是找到的输出接口与输入接口不同。
 
全剧终,如有错误,敬请指正。

转载请注明:爱开源 » TCP SNMP counters (三)

您必须 登录 才能发表评论!