温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
一、什么叫断流
简单来说,就是在日常使用过程中,出现有信号无网络、卡顿、下载速度慢、网络延迟高等情况。
比如说,网络信号明明满格,但是登陆微信仍显示当前网络不可用;再比如听在线音乐,突然断断续续一直缓冲等等。
二、原因分析
查阅网上资料,经过分析,可以确定基本上是跟 TSO 服务有关。
TSO 全称 TCP Segmentation Offload,即 TCP 分段卸载,通常也称为大型发送分载(LSO, Large Send Offload)。分段是指将大数据块分割成更小的数据段,卸载是指将工作负载从 CPU 移至网卡上的做法。卸载这项工作可以节省 CPU 周期,并且通常可以提高数据包处理性能。即 TSO 是一种利用网卡的少量处理能力,降低 CPU 发送数据包负载的技术,需要网卡硬件及驱动的支持。
简单来说,因为驱动或硬件问题,比如散热不够等等,导致 TSO 服务异常,此时只要关闭 TSO 服务即可。
三、操作命令
I、Esxi 内核
即 VMKernel,通过 SSH 连接到 Esxi 母机执行。
1、查看命令
列出网卡清单:
[root@vn:~] esxcli network nic list
Name PCI Device Driver Admin Status Link Status Speed Duplex MAC Address MTU Description
------ ------------ ------------- ------------ ----------- ----- ------ ----------------- ---- -----------
vmnic0 0000:01:00.0 igc-community Up Up 1000 Full * 1500 Intel Corporation Ethernet Controller I226-V
vmnic1 0000:02:00.0 igc-community Up Up 1000 Full * 1500 Intel Corporation Ethernet Controller I226-V
查看指定网卡的 TSO 服务状态:
[root@vn:~] esxcli network nic tso get -n vmnic0
NIC Value
------ -----
vmnic0 on
2、关闭命令
[root@vn:~] esxcli network nic software set --ipv4tso=0 -n vmnic0
[root@vn:~] esxcli network nic software set --ipv6tso=0 -n vmnic0
3、开启命令
[root@vn:~] esxcli network nic software set --ipv4tso=1 -n vmnic0
[root@vn:~] esxcli network nic software set --ipv6tso=1 -n vmnic0
II、Esxi 控制台服务
通过网页登陆到 Esxi 控制台,找到管理 - 系统 - 高级设置。
1、查看命令
搜索关键字 TSO,可以搜到两个参数,分别是 Net.UseHwTSO 和 Net.UseHwTSO6,若参数值为 1 则表示启用,0 则表示禁用。
2、关闭命令
选中上述两个参数,点击编辑,设置参数值为 0 表示关闭(禁用)。
3、开启命令
选中上述两个参数,点击编辑,设置参数值为 1 表示开启(启用)。
III、VM 虚拟机
针对 Linux 系统,可以使用 ethtool 命令。
1、查看命令
# ethtool --show-offload eth7
Features for eth7:
......
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp6-segmentation: on
udp-fragmentation-offload: off [fixed]
.......
其中的 tcp-segmentation-offload 就是 TSO 服务。
2、关闭命令
# ethtool -K eth7 tso off
# ethtool -K eth7 gso off
注意,这里多了开启 gso,相当于是全局控制,同步设置。
3、开启命令
# ethtool -K eth0 tso on
# ethtool -K eth0 gso on
针对 Windows 系统,可以直接图形化查看修改。
在控制面板 - 网络和 Internet 连接,选中要配置的网卡,点右键再点属性,再点配置,切换到 高级 选项卡,找到 大量传送减负 v2(IPv4) 和 大量传送减负 v2(IPv6),设置开启或 关闭 保存即可。
参考文章:
1、《TCP Segmentation Offload》
2、《TSO 介绍和操作》
3、《I226-V不断流了?!》