网络设备丢弃ECN包导致的慢响应问题
客户反映,接口访问不定期的会出现慢响应的情况,单个请求,耗时近10s。
用 WireShark 抓包并过滤本地端口,单个访问流:
包序列解析:
(1)No.9813:第一个包是 [SYN, ECN, CwR] 包,说明启用了 ECN,发送带有 ECN 位设置的包;
(2)正常情况下,目标会返回一个[ACK]包,告知当前链路上的拥塞情况,但这里并没有收到响应包;
(3)No.9815:重新发送一次 ECN 包,也无响应;
(4)No.9855:这时,距离第一次请求已经过去了9s,之后,放弃ECN,直接尝试建立连接;
(5)No.9855 ~ No.9865:建立TCP连接,建立Https通讯,完成数据交互;
(6)No.9866:RST包,请求完成。
分析:
两次 ECN 都无响应,判断是,通路上,某个设备不支持 ECN 或出错了,发现有 ECN位设置的包就直接丢弃。
解决办法:
关闭服务器的 ECN,问题解决,响应耗时正常。
ECN关闭方法为:
netsh interface tcp set global ecncapability=disabled
附上ECN的简介
Explicit Congestion Notification(显示拥塞通知)
基本原理:路由器在出现拥塞时通知TCP。
(1)TCP段传递时,路由器使用IP首部中的2位来记录拥塞;
(2)TCP段到达后,接收方知道报文段是否在某个位置经历过拥塞。
然而,需要了解拥塞发生情况的是发送方,而非接收方。
因此,接收方使用下一个ACK通知发送方有拥塞发生,然后,发送方做出响应,缩小自己的拥塞窗口。
网络设备丢弃ECN包导致的慢响应问题相关推荐
- linux如何查看丢弃数据包,导致Linux服务器丢弃数据包?
我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处 ...
- 网络设备转发数据包的整个流程_网络工程师(33):路由转发工作原理
网络中各种网络设备对业务数据的转发主要有二层转发和三层转发.二层转发主要由交换机在同一个VLAN内实现,其转发依据是MAC地址表.如果MAC地址表中存在目的MAC地址表项,就从对应接口发出去,否则会从 ...
- nginx丢弃http包体处理
http框架丢弃http请求包体和上一篇文章http框架接收包体, 都是由http框架提供的两个方法,供http各个模块调用,从而决定对包体做什么处理.是选择丢弃还是接收,都是由模块决定的.例如静态资 ...
- linux 网卡丢弃多播包,rp_filter及Linux下多网卡接收多播的问题
工作中曾遇到一个很奇怪的问题,我奉命调查.事情是这样的,有一台双网卡的机器,上面装有Fedora8,运行一个程序.该程序分别在两个网口上都接收多播数据,程序运行是正常的.但是,后来升级系统到Fedor ...
- IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
IntelliJ IDEA中无法加载jar包导致出现"cannot resolve symbol..."问题的解决 之前也经常碰到这样的错误,通过reimport.清缓存等方法都可 ...
- 传真故障排除示例--网络环境存在丢包导致传真失败
原因: 网络环境丢包导致传真失败 故障现象:传真失败率很高 设备封包提示信息: 原因分析: 通过封包信息分析,信令交互正常,通过解析传真的RTP信息,确认存在丢包 处理措施: 排查网络环境 备注说明: ...
- 线程超时 php-fpm,php-fpm线程僵死导致网站无响应
php-fpm线程僵死导致网站无响应 网站突然打不开,查看了网站日志,未发现有攻击和流量异常现象.查看内存,负载都未有异常,于是查看php-fpm日志,发现了大量以下样式的警告通知.[NOTICE] ...
- 服务器:php-fpm线程卡死导致网站无响应
服务器:php-fpm线程僵死导致网站无响应 网站突然打不开,查看了网站日志,未发现有攻击和流量异常现象.查看内存,负载都未有异常,于是查看php-fpm日志,发现了大量以下样式的警告通知. [NOT ...
- GTASA圣安地列斯大量高清贴图包导致游戏崩溃闪退的解决办法
GTASA圣安地列斯大量高清贴图包导致游戏崩溃闪退的解决办法 记录博文 情况说明 在安装了很多不同的 HD 纹理包之后(例如美化包)&驾驶或飞行了大约10分钟,游戏导致崩溃.不管用啥 stre ...
最新文章
- div中移除某个元素 js_[JS基础] 13 - 其他 JS 基础
- nginx重定向到其他url方法_高级开发必须掌握Nginx之四,if、set、return
- 《暗时间》前两篇的笔记和总结
- android7.0 拦截短信,变化很大!微信安卓版7.0.17内测体验
- NAT STURN,ICE
- datax源码阅读一:python文件
- 【分享】Web前端开发第三方插件大全
- 持续交付一:从开发到上线的环境
- kotlin中判断字符串_Kotlin程序查找字符串中字符的频率
- 在不使用{}时,else执行到哪里结束
- PHP—str_replace()替换函数的使用
- JSP 页面 jstl 时间戳 long型转时间
- php支付回调怎么写_php 微信支付回调校验的两种做法
- 掘金翻译计划 GitHub Star 破3千--终于等到你
- python等待时间1009python等待时间_Python之学习Selenium(四):固定的休眠时间、隐式等待和显示等待...
- MatConvnet工具箱文档翻译理解一
- DB2数据库的备份还原详解
- win10隐藏桌面功能
- 天池大数据竞赛项目代码_竞赛以使用开放内容,开放数据或开放源代码开始新项目
- 实现原理 扫描枪_详细介绍扫描枪工作原理