1、问题

某项目将原部署与上海机房的一个服务迁移至北京机房,当服务在北京部署后,测试发现从上海机房服务器的应用连不上该在北京机房新部署的服务,而北京同一机房内其他服务器上连接则正常。Ping测试的网络正常。telnet测试时发现两个机房间的服务器连上北京机房服务的端口需要近10秒钟,但从管理员的PC上telnet却正常。

那么问题来了,为什么telnet端口花了近10秒钟?  抓包看看吧。

2、分析

从抓包结果看在客户端在TCP的握手时对端在客户端重发了第三次SYN包后才响应。客户端在发送了第一个SYN包(图上第一个包)后没有收到ACK应答,于是3秒后重发SYN包(图上第二个包),等待6秒后没有收到应答,再次重发SYN包(图上第三个包),这次很快收到了对端的ACK应答(图上第四个包),从第一个SYN包到三次握手成功,总共花了9秒多时间。

同时从对端的抓包结果来看,对端只收到一个SYN包,并马上响应了。

那么现在的问题是前两次发送的SYN包在传送过程中被谁丢弃了?

结合管理员先前的测试,从其PC上telnet正常,只有在上海机房的服务器上telnet有问题,似乎问题是出在上海机房的网络上。在上海机房的该服务器上测试到其他服务器的的连接情况,测试结果发现只有到北京机房的某些服务器有问题,并且到其他的机房没有发现问题。

排查至此,重新定位问题点,不应该是两端一个点的问题,应该是两端某些特定的情况造成连接问题。比较北京有问题和没有问题服务器的网络上和系统上差异,发现有问题的服务器都是在DDOS防护设备防护内。

重新测试,并且在DDOS防护设备上也同时抓包,测试结果确认DDOS防护设备收到了3个SYN包,但前两个SYN包都没有转发给目标服务器,直接丢弃了,直到源端第三次发送的SYN包时才转发。

丢失的SYN包找到,那么问题是为什么防护设备要丢掉正常的前两个SYN包呢?将抓包结果发送的设备的原厂分析,结论是,DDOS防护设备不支持ECN,解决方案升级防护设备或者关闭远端的ECN。

先来解释一下ECN。ECN:(Explicit Congestion Notification)显式拥塞通知。

对于使用ECN的TCP连接,需要在数据包的IP包头上设置ECT位。当TCP连接中发送端发送的数据包仅需要一个ECT位时,应该使用ECT(0)。如果发送端接收到了一个带有ECE的ACK包(也就是说,这个ACK包带有设置在TCP头上的ECE标记),那么发送端就知道该包在网络中从发送端到接收端的途中经历了拥塞,此拥塞指示应该被看作和没有启用ECN的TCP的拥塞丢包是一个意思,也就是说,TCP发送端应该减半发送窗口和降低慢启动阈值。

没看懂上面的也没关系,只要记住ECN是在TCP/IP中用可以通过包头中的标志来让发送端知道链路中发生了拥堵就OK了。

ECN标识的SYN包:

3、解决办法

关闭上海机房的服务器上ECN,再测试telnet测试正常,再测试应用也正常了。

查询资料得知,Windows 2012系统默认开启了ECN,win7等系统默认是关闭的,这也解释了为什么从上海服务器上测试时有问题,但是从系统管理员的PC测试却没有问题。

Windows系统关闭ECN命令:

netsh interface tcp set globalecncapability=disabled

Linux系统不编译内核的ECN关闭方法:

echo "0" >/proc/sys/net/ipv4/tcp_ecn

ECN允许主机或路由器之间进行明确的通报,以在网络堵塞时提高整体的

传输速度。但问题是,并不是所有的路由器及网络设备都支持ECN。事实上,有些老式的设备把ECN交换包视为非法,并且当做垃圾信息全部丢弃,造成一些莫名的网络的问题。

特别预告:

KVM云社区昆明群成立了,近期将举办沙龙,需要进群的朋友,联系北极熊。

KVM社区QQ群,99.99%纯技术交流气氛

QQ 1群:434720759(已满)

QQ 2群:131961942,加入密码大写KVM

1000人VMWare技术交流群:494084329,加入密码小写vm

OpenNebula QQ群:495571573 加入密码Nebula

2000人OpenStack开发纯技术群:334605713 加入密码nova

Cloudstack纯技术交流群:515249455密码cs

2000人桌面云行业讨论:484979056加入密码大写VDI

2000人超融合行业讨论群:65779632 加入密码大写HC

syn重发_疑难杂症之被丢弃的SYN包相关推荐

  1. syn重发_什么是“SYN”请求?ISN又是什么?

    syn攻击是SYN是TCP/IP建立连接时使用的握手信号.在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以 ...

  2. 三次握手时,客户端发送的 SYN 报文为什么会被丢弃?

    楔子 我们知道当客户端和服务端建立连接时,会进行三次握手.客户端先向服务端发送 SYN 报文,表示想要建立连接,这是第一次握手:然后服务端收到 SYN 之后会给客户端回复 SYN + ACK,表示同意 ...

  3. syn重发_SYN攻击

    TCP协议 之前已经介绍过TCP三次握手相关知识.本文主要介绍利用TCP协议栈三次握手弱点来进行网络攻击的SYN攻击. TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据 ...

  4. syn c 语言程序,C语言实现SYN Flood

    #include #include #include #include #include #include #include #include #include #include #include # ...

  5. Element UI _ 疑难杂症

    目录 Icon 图标 Button 按钮 Input 输入框 Select 选择器 DatePicker 日期选择器 Table 表格 Pagination 分页 Descriptions 描述列表 ...

  6. linux防火墙为空文件夹,如何记录Linux IPTables防火墙丢弃的数据包到日志文件-linux防火墙设置...

    如果您的IPTables规则无法正常工作,则可能需要记录IPTables丢弃的数据包以进行故障排除.本文解释如何记录传入和传出丢弃的firewal数据包. 记录所有丢弃的输入数据包 首先,我们需要了解 ...

  7. 使用perf监控Linux内核网络丢弃的数据包

    本文将使用perf监控Linux内核网络丢弃的数据包,如果还没有安装perf,请先按一下步骤安装: 根据提示,安装所需的依赖,要注意的是,内核版本不同,安装命令略有差异: sudo apt insta ...

  8. 以实例分析 IGP中更新源检测失败丢弃路由更新包

    遇到的BGP中更新源检测失败现象 在iBGP建立邻居关系时,往往会采用单播方式的环回口建立邻居,这样做是因为环回口有永不Down的特点.在这种情况下即使是在一个接口出现问题之后,仍然可以通过其他的可用 ...

  9. 魔百盒CM201-1、CM211-1朝歌ZG_支持UWE5621WiFi驱动_免拆卡刷固件包

    魔百盒CM201-1.CM211-1朝歌ZG_支持UWE5621WiFi驱动_免拆卡刷固件包 图片 刷机方法: 把下载的刷机包文件解压一次,复制到U盘根目录!update.zip升级包不能解压,原原本 ...

  10. M401H_山东移动_SM0_SD46_国科6323芯片_安卓4_AI语音_免拆卡刷固件包

    M401H_山东移动_SM0_SD46_国科6323芯片_安卓4_AI语音_免拆卡刷固件包 固件特点: 1.修改dns,三网通用: 2.开放原厂固件屏蔽的市场安装和u盘安装apk: 3.无开机广告,无 ...

最新文章

  1. 科大讯飞市值腰斩背后,AI产业集体思考如何落地?
  2. 【Rsyslog】 从json 中通过正则 key 获取 value值,rsyslog正则匹配获取key 的 value值
  3. 一个return引发的血案 - 自己动手实现allocator
  4. python的learn_Python_learn_1day
  5. android:installLocation简析
  6. 如何找到odata服务实现的具体backend 系统
  7. 通过用户模型,对数据库进行增删改查操作
  8. c语言编写一个函数判断闰年,C语言:实现一个函数判断year是不是闰年
  9. 数据管理,数据治理,数据中心,数据中台,数据湖这下就分清楚了!
  10. c++ 使用nacos_想自学Maven?推荐Maven极简高速入门及常规使用
  11. 小程序解码时 php 7.0以上 mcrypt拓展无法使用 旧版本的解密解决方案 新版本在另外一篇文章
  12. Windows 7系统mac地址修改攻略
  13. html 下拉 可选可填,根据HTML下拉列表选择填充输入
  14. 十大免费SSL证书:网站免费添加HTTPS加密
  15. 《2020年度中国数据竞赛年鉴》发布!
  16. win7计算机病毒制作教程,win7 64位旗舰版系统删除电脑病毒文件夹方法
  17. python实战 爬取网易云评论信息
  18. EasyAR4.0稀疏空间地图室内导航
  19. 生命主题dreamweaver作业静态HTML网页设计——卫生与健康 6页 带视频
  20. 微信小程序背景图真机显示不了

热门文章

  1. 中职计算机应用基础表格制作说课稿,表格制作的说课稿
  2. 有符号整型的数据范围为什么负数比正数多一个
  3. C++ 设置字体颜色
  4. nodejs实现桌面程序exe
  5. 华氏温度转摄氏温度c语言作业,c语言摄氏度与华氏温度如何转换
  6. 【V-REP自学笔记(六)】基于V-REP逆运动学模块的机械臂轨迹规划
  7. 重装win10系统(纯净win10系统)
  8. php发卡v6_GitHub - Cghang/vfkphp: V发卡 完全开源免费的个人自动发卡解决方案
  9. 04、docker端口映射的原理及配置方法
  10. 360全景地图 android,Android-谷歌VR展示360度全景图