Linux内核协议栈丢弃SYN报文的主要场景剖析

  1. 云栖社区>
  2. 阿里云支持与服务>
  3. 博客>
  4. 正文

Linux内核协议栈丢弃SYN报文的主要场景剖析

怀知 2019-04-26 15:26:20 浏览12485
展开阅读全文

在排查网络问题的时候,经常会遇见TCP连接建立不成功的场景。如果能获取到两端抓包,两端抓包看起来如下:

  • 客户端在一直按照指数退避重传TCP SYN (因为首包没有获取到RTT及RTO,会在1, 2, 4, 8秒... 重传,直到完成net.ipv4.tcp_syn_retries次重传)
  • 服务器端能看到TCP SYN报文已经到达网卡,但是TCP协议栈没有任何回包。

因为这样的问题出现的频率不小,本文会从TCP协议栈方面总结常见原因。所谓的TCP协议栈方面的原因,就是TCP SYN报文已经到了内核的TCP处理模块,但在服务器端内核逻辑中不给客户端回SYNACK。客户端一直重传TCP SYN也可能由别的原因造成,比如服务器端有多块网卡造成的出入路径不一致,或者SYN报文被iptables规则阻拦,这些场景都不在本文的讨论范围之内。

Liste

网友评论

登录后评论
0/500
评论
怀知
+ 关注
所属云栖号: 阿里云支持与服务