Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2237469
  • 博文数量: 230
  • 博客积分: 9346
  • 博客等级: 中将
  • 技术积分: 3418
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-26 01:58
文章分类

全部博文(230)

文章存档

2015年(30)

2014年(7)

2013年(12)

2012年(2)

2011年(3)

2010年(42)

2009年(9)

2008年(15)

2007年(74)

2006年(36)

分类: LINUX

2015-04-09 12:17:28

原文地址:TCP SNMP counters (三) 作者:raise_sail


TCP Others Others

类别
名称
描述
TcpExtTCPBacklogDroptcp_v4_rcv() : 如果socket被user锁住,后退一步内核会把包加到sk_backlog_queue,但如果因为sk_rcv_buf不足的原因入队失败,计数器加1
TcpExtTCPDeferAcceptDroptcp_check_req(): 如果启用TCP_DEFER_ACCEPT,这个计数器统计了被丢掉了“Pure ACK”个数。

TCP_DEFER_ACCEPT:允许listener只有在连接上有数据才创建新的socket,以抵御syn-flood攻击。

TcpExtTCPDirectCopyFromBacklogtcp_recvmsg(): 如果有数据在softirq里面从backlog queue中直接复制到userland memory上,计数器加1
TcpExtTCPDirectCopyFromPrequeuetcp_recvmsg(): 如果有数据在这个syscall里从prequeue中直接复制到userland memory上,计数器加1
TcpExtTCPHPHitstcp_rcv_established(): 如果有skb通过“快速路径”进入到sk_receive_queue上,计数器加1。

特别地,Pure ACK以及直接复制到user space上的都不算在这个计数器上。

TcpExtTCPHPHitsToUsertcp_rcv_established(): 如果有skb通过“快速路径”直接复制到user space上,计数器加1。
TcpExtTCPLossFailurestcp_retransmit_timer(): icsk_retransmit==0(第一次进入重传状态)并且处于Loss状态下,计数器加1

可能情况是:因为partial ACK中从Loss中undo了一些状态,但还有完全离开Loss

TcpExtTCPMD5NotFoundtcp_v4_do_rcv() -> tcp_v4_inbound_md5_hash() : 配置了md5检查,但在输入skb中没有找到对应TCP选项。
TcpExtTCPMD5Unexpectedtcp_v4_do_rcv() -> tcp_v4_inbound_md5_hash() : 未配置md5检查,但在输入skb中找到了对应TCP选项。
TcpExtTCPMemoryPressurestcp_enter_memory_pressure()在从“非压力状态”切换到“有压力状态”时计数器加1,可能的触发点有:
  • tcp_sendmsg()
  • tcp_sendpage()
  • tcp_fragment()
  • tso_fragment()
  • tcp_mtu_probe()
  • tcp_data_queue()
TcpExtTCPMinTTLDroptcp_v4_err() / tcp_v4_rcv(): 在接收到TCP报文或者TCP相关的ICMP报文时,检查IP TTL,如果小于socket option设置的一个阀值,就丢包。这个功能是RFC5082(The Generalized TTL Security Mechanism, GTSM)规定的,使用GTSM的通信双方,都将TTL设置成最大值255,双方假定了解之间的链路情况,这样可以通过检查最小TTL值隔离攻击。
TcpExtTCPPrequeueDroppedtcp_v4_rcv() -> tcp_prequeue() : 如果因为内存不足(ucopy.memory < sk->rcv_buf)而加入到prequeue失败,重新由backlog处理,计数器加1
TcpExtTCPPrequeuedtcp_recvmsg() -> tcp_prequeue_process() : tcp_recvmsg()发现可以从prequeue接收到报文,计数器加1(不是每个skb加1)
TcpExtTCPRcvCollapsedtcp_prune_queue() -> tcp_collapse() -> tcp_collapse_one()

tcp_prune_ofo_queue() -> tcp_collapse() 
每当合并sk_receive_queue(ofo_queue)中的连续报文时,计数器加1

TcpExtTCPReqQFullDoCookiestcp_rcv_state_process() -> tcp_v4_conn_request() -> tcp_syn_flood_action()

syn_table过载,进行SYN cookie的次数(取决于是否打开sysctl_tcp_syncookies)。

TcpExtTCPReqQFullDroptcp_rcv_state_process() -> tcp_v4_conn_request() -> tcp_syn_flood_action()

syn_table过载,丢掉SYN的次数。

TcpExtTCPSchedulerFailedtcp_delack_timer(): 在delay ACK处理功能内,如果prequeue中仍有数据,计数器就加1

加入到prequeue,本来是期待着userspace(使用tcp_recvmsg()之类的系统调用)尽快处理之。其中仍有数据,可能隐含着userspace行为不佳。

TcpExtIPReversePathFilterip_rcv_finish() -> ip_route_input_noref(): 反向路径过滤掉的IP分组数量:要么反向路由查找失败,要么是找到的输出接口与输入接口不同。

全剧终,如有错误,敬请指正。
阅读(1446) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~