【OSS 排查方案-5】透过现象看本质之网络排查分析

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 背景:拿到数据包时如何通过众多的数据,提炼出有效的网络分析信息,快速的进行定位排障。以下总结了一些 OSS 上传/下载慢的共性问题,提供大家参考。 排查问题之前让我们先来回顾一下 TCP 的基础知识 TCP 结构: 基础名词: Sequence Number是包的序列号,用来解决网络包乱序(reordering)问题。

背景:拿到数据包时如何通过众多的数据,提炼出有效的网络分析信息,快速的进行定位排障。以下总结了一些 OSS 上传/下载慢的共性问题,提供大家参考。

排查问题之前让我们先来回顾一下 TCP 的基础知识


TCP 结构:

40f9325d91a4b2ac36df4f543e61f1d7.png

基础名词:

  • Sequence Number是包的序列号,用来解决网络包乱序(reordering)问题
  • Acknowledgement Number就是ACK —— 用于确认收到,用来解决不丢包的问题
  • Window又叫Advertised-Window,也就是著名的滑动窗口(Sliding Window),用于解决流控的。
  • TCP Flag,也就是包的类型,主要是用于操控TCP的状态机的
  • CWND ,也就是初始化发包控制的数量, ip ro 可以看到。 ip route 可以设置
  • package flow ,数据包的流动增长。

常用抓包命令:

tcpdump -i 出口网卡 -s0 -v host \( 本地出口IP and 服务端IP \) -w filename.pcap

架构

1)本地 PC -》 OSS 上传

2)本地 PC -》 OSS 上传

3)ECS -》 VPC 环境 -》OSS 下载

第一种架构:

a6d4868370e5f26d8f35c602fef6083a.png

首先根据 TCP/IP connect find important message

  • client WS = 256
  • MSS = 1452
  • SACK = 1
  • server WS = 0
  • cwnd = 2
  • length 1506

通过已知的信息我们可以先得出一些判断

  • server 端不支持 WS,也就是一个往返 RTT 内最大传输是 64KB
  • server support SACK,so transmission lose package,not all package
  • cwnd tiny,起始传输会比较 slow,后续探测 reciver ACK 后,会指数递增

 通过 RTT 可以看出来我们的网络稳定在 0.035

9577c5b71d335e818f2c378688310815.png

分析 TCP Stream  流图可以得知,延迟低,而且无丢包,从而可以得知并非是延迟丢包导致的传输速度慢

分析发包的规律分布

488060fee8bebf78e5148762d8ef769ff743a094

8b0268db891e4ee53717146010206654f4b5d645

通过以上几张连续的判断可以得知,客户端的 cwnd 是 2,而且每经过一个 RTT 后都会进行倍数的递增 2,4,6,8 最终稳定在 9 个,正常的 TCP 协议栈应该是以指数被递增,linux 是 64 ,windows 应该是到 256,同时我们也得知了对方是在一个 windows 系统上发包,协议栈和 Linux 的有很大区别。

接下准备分析为什么客户上传慢的原因:

RTT 是 35ms ,每个 RTT 只能传 9 个包,也就是 9*1506 / 35 = 378KB/s

总的时间  8876789/378/1024 = 23 + 卡顿 ~= 30S

所以整个发包速度慢也就是正常的

而服务端不支持 WS 的情况下,理论的最大传输速度也应该是:

根据 TCP 传输原理,理论最大传输速度 = WND / RTT = 64KB / 0.035 = 1828KB/s

1s 内有 1000/35 = 29 个 RTT, 29* 64 = 每个 RTT 最大传输量

但是现在每秒钟只能传输 1506 * 9 = 13554 = 13KB

综合结论客户端的 TCP 协议站传输是有问题。

第二种架构

老套路,先分析 TCP 三次握手中的基本信息。

42061ccc58d959d8733364e1d185b891b07094b3

  • 服务端支持的 ws, 512 ,也就是单程 RTT 最大的传输量是 576 KB。
  • 客户端的首发包数量是 2 个,也是成倍数递增 2,4,6,8,20 ...最终是 20。
  • RTT 有持续增长的状态,因此三次握手的 RTT 可能不准确,我们需要计算一个加权后的 iRTT,最后得到是 40ms。

为什么延迟大的情况下,我们的传输速度反而比直传 OSS 稳定 0.035S 的要快呢?因为服务端支持 WS,也就是客户端在传输过程中的 package 可以持续滑动。

所以计算下来就是 434/(20*1498/0.04/1024) = 590ms 

整个数据包传输完的时间 ~= 572ms

第三种架构

先从三次握手中获取价值信息

  • 客户端、服务端都支持 WS 
  • RTT 稳定在 0.006
  • send package 稳定在 88 个。
  • 按照 WS 的支持一秒中最多能传的包是  88 * 1514 /0.006 =21MB/S
  • 理论传输 1000/6 = 166,现在最大能传到 104,平均 88 ,可能存在 TCP 协议栈的问题。最终手段通过服务端调整了 OSS 机器的 TCP 协议栈,增大了 send package 和 CWND
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
28天前
|
数据采集 监控 安全
快速部署:基于Kotlin的公司网络流量控制方案
本文介绍了使用Kotlin构建网络流量控制系统的方案,该系统包括数据采集、分析和自动提交到网站的功能。`TrafficMonitor`类负责监控网络流量,收集流量数据并进行分析,然后通过HTTP POST请求将数据安全提交到指定网站,以实现对公司网络流量的有效管理和安全优化。此方案有助于提升网络安全性和性能,支持数字化业务发展。
75 5
|
2月前
|
机器学习/深度学习 编解码 计算机视觉
【APFN】从大佬论文中探索如何分析改进金字塔网络
【APFN】从大佬论文中探索如何分析改进金字塔网络
43 0
|
2月前
|
机器学习/深度学习 分布式计算 资源调度
【社交网络分析】课程考试复盘 + 相关资料补充
【社交网络分析】课程考试复盘 + 相关资料补充
52 0
|
1月前
|
监控 Shell Linux
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
32 0
|
5天前
|
机器学习/深度学习 数据可视化 测试技术
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
19 0
|
6天前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
19 0
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
6天前
|
机器学习/深度学习 算法 数据可视化
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
15 0
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
|
6天前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
26 0
|
6天前
|
数据可视化 网络可视化
R语言混合图形模型MGM的网络可预测性分析
R语言混合图形模型MGM的网络可预测性分析
|
7天前
|
算法 定位技术 Windows
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
12 4

热门文章

最新文章