记一次虚机上传过慢问题排查

最近线上虚机有个特殊的用户反馈,用户反馈虚机从A服务器下载文件特别慢,于是scp A服务器数据到本地client,发现 只有几十K的流量。

当时第一反应怀疑是虚机负载压力比较大,但是查看虚机IO以及负载都很低。。。。

然后tcpdump抓包发现有大量重传, 虚机A mtu 1450 , 但是抓包存在 length 1466的包都重传了,理应分片为啥不分片呢?

所以还是哪块网络有问题。因为包过大内核协议栈理应理应会交给CPU做分片处理,但是tcpdump抓内核协议栈里的却没有分片,所以怀疑不是CPU做的分片,是不是网卡做的分片,所以怀疑是不是开了tso把分片卸载到网卡了,最终查看网卡参数虚机确实是开了tso了。

TSO(transimit segment offload)是针对tcp而言的,是指协议栈可以将tcp 分段的操作offload到硬件的能力,本身需要硬件的支持。当网卡具有TSO能力时,上层协议栈可以直接下发一个超过MTU数据包,而把数据包拆分的动作交给硬件去做,节省cpu资源。

所以原因是用户开了tso ,但是宿主机上网卡是基于ovs-dpdk的,但是ovs-dpdk没开启tso支持,所以导致了本次网络问题。临时解决办法让用户关了tso,后来网络就好了

通过linux命令可以查看网络接口是否支持TSO和GSO特性:
复制代码
# ethtool -k eth0
tcp-segmentation-offload: on
udp-fragmentation-offload: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
通过linux命令,可以打开和关闭tso功能:
复制代码
ethtool -K eth0 tso on   
ethtool -K eth0 tso off

参考文档:

https://jimizhou.com/virtual-network

https://docs.openvswitch.org/en/latest/topics/userspace-tso/

相关推荐
机器学习之心15 小时前
基于双向时序卷积网络(BiTCN)与支持向量机(SVM)混合模型的时间序列预测代码Matlab源码
网络·支持向量机·matlab
止水编程 water_proof17 小时前
Java-HTTP响应以及HTTPS(下)
网络·网络协议·http
HIT_Weston17 小时前
18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
linux·tcp/ip·ubuntu
好望角雾眠17 小时前
第四阶段C#通讯开发-9:网络协议Modbus下的TCP与UDP
网络·笔记·网络协议·tcp/ip·c#·modbus
网安小白的进阶之路17 小时前
A模块 系统与网络安全 第四门课 弹性交换网络-5
网络·安全·web安全
8K超高清17 小时前
高校巡展:中国传媒大学+河北传媒学院
大数据·运维·网络·人工智能·传媒
C2H5OH66618 小时前
WebSocket-练习1
网络·websocket·网络协议
狂奔的sherry18 小时前
Socket vs WebSocket
网络·websocket·网络协议
sadandbad19 小时前
[vulhub靶机通关]DC-2(rbash绕过_git提权)
网络·sql·web安全·网络安全
2501_9151063219 小时前
App HTTPS 抓包 工程化排查与工具组合实战
网络协议·ios·小程序·https·uni-app·php·iphone