TSO、UFO、GSO、LRO、GRO和RSS介绍(ethtool命令)

本文介绍了网络接口的Offload特性,包括TSO、GSO、LRO、GRO和RSS等,解释了它们如何提高网络收发性能,并提供了查看和配置这些特性的命令示例。

http://blog.chinaunix.net/uid-20639775-id-3529535.html

ethtool -k < 网络接口>,ethtool –show-offload < 网络接口>,或者可以看到很多网络接口的offload特性,例如:

$ sudo ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off

这些offload特性都是为了提升网络收/发性能。TSO、UFO和GSO是对应网络发送,在接收方向上对应的是LRO、GRO。

TSO

TSO(TCP Segmentation Offload),是一种利用网卡对TCP数据包分片,减轻CPU负荷的一种技术,有时也被叫做 LSO (Large segment offload) ,TSO是针对TCP的,UFO是针对UDP的。如果硬件支持 TSO功能,同时也需要硬件支持的TCP校验计算和分散/聚集 (Scatter Gather) 功能。

GSO

GSO(Generic Segmentation Offload),它比TSO更通用,基本思想就是尽可能的推迟数据分片直至发送到网卡驱动之前,此时会检查网卡是否支持分片功能(如TSO、UFO),如果支持直接发送到网卡,如果不支持就进行分片后再发往网卡。这样大数据包只需走一次协议栈,而不是被分割成几个数据包分别走,这就提高了效率。

LRO

LRO(Large Receive Offload),通过将接收到的多个TCP数据聚合成一个大的数据包,然后传递给网络协议栈处理,以减少上层协议栈处理 开销,提高系统接收TCP数据包的能力。

GRO

GRO(Generic Receive Offload),基本思想跟LRO类似,克服了LRO的一些缺点,更通用。后续的驱动都使用GRO的接口,而不是LRO。

RSS

RSS(Receive Side Scaling),是一项网卡的新特性,俗称多队列。具备多个RSS队列的网卡,可以将不同的网络流分成不同的队列,再分别将这些队列分配到多个CPU核心上进行处理,从而将负荷分散,充分利用多核处理器的能力。

可以使用如下命令来关闭对应的参数:

/usr/sbin/ethtool -K eth1 gro off
/usr/sbin/ethtool -K eth1 lro off
/usr/sbin/ethtool -K eth1 tso off
<think>我们正在讨论如何使用ethtool优化网络传输速率。根据引用内容,ethtool可以调整网卡参数,如速度、双工模式、自适应功能(如中断协调)以及GSO等特性。下面我将详细说明优化方法及关键配置参数。###一、核心参数优化方法1.**手动设置速率与双工模式**-**适用场景**:当自动协商失败或需要强制指定速率时(如连接老式交换机)-**操作命令**:```bashsudoethtool-seth0speed1000duplexfullautonegoff```-**参数说明**:-`speed`:强制设置速率(10/100/1000)-`duplex`:指定双工模式(half/full)-`autoneg`:关闭自动协商(需两端设备手动匹配)[^1]2.**中断协调优化**-**作用**:减少CPU中断次数,提升大流量处理能力-**查看当前配置**:```bashethtool-ceth0```-**调整示例**(降低中断频率):```bashsudoethtool-Ceth0rx-usecs100tx-usecs100```-**关键参数**:-`rx-usecs`:收包中断延迟(微秒),值越大中断频率越低-`tx-frames`:发包触发中断的帧数阈值3.**Offload功能配置**-**GSO/TSO/UFO**:将分片任务卸载到网卡,减轻CPU负载```bash#开启TCP分段卸载(TSO)sudoethtool-Keth0tsoon#开启通用分段卸载(GSO)sudoethtool-Keth0gsoon```-**注意**:虚拟化环境可能需要特殊配置[^2]###二、高级调优技巧|**功能**|**命令**|**优化目标**||----------------|----------------------------------|--------------------------||巨型帧支持|`ethtool-Geth0rx-jumbo8192`|提升大包传输效率||环形缓冲区调整|`ethtool-Geth0rx4096`|减少丢包(高流量场景)||RSS多队列|`ethtool-leth0`|多核负载均衡|###三、诊断与验证步骤1.**检查当前配置生效状态**:```bashethtooleth0#查看基础设置ethtool-keth0|grepoffload#检查卸载功能状态```2.**性能测试对比**:```bash#优化前测试iperf3-c192.168.1.100#优化后重复测试iperf3-c192.168.1.100```###四、注意事项1.**硬件兼容性**:-部分老式网卡不支持高速率或高级offload功能-使用`ethtool-ieth0`查看驱动信息2.**配置持久化**:-通过`/etc/network/interfaces`或systemd-networkd保存设置:```bashpost-upethtool-seth0speed1000duplexfull```>**警告**:错误配置可能导致网络中断!建议在维护窗口操作[^3]。§§相关问题§§1.如何诊断网络丢包是否由环形缓冲区不足引起?2.如何为多队列网卡配置RSS哈希策略?3.虚拟化环境中SR-IOV网卡的ethtool优化有哪些特殊注意事项?</think>### 使用 ethtool 优化网络传输速率的方法配置参数 #### 一、基础速率优化 1. **手动设置速率与双工模式** - **适用场景**:当自动协商失败或需强制特定速率时(如连接老式交换机) - **命令示例**: ```bash sudo ethtool -s eth0 speed 1000 duplex full autoneg off ``` - **参数说明**: - `speed`: 强制设置速率(10/100/1000) - `duplex`: 指定双工模式(half/full) - `autoneg off`: 关闭自动协商(需两端设备手动匹配)[^1] 2. **恢复自适应模式** - **适用场景**:手动设置后需恢复自动协商 - **命令**: ```bash sudo ethtool -r eth0 # 重启自动协商 ``` #### 二、高级性能优化 1. **Offload 功能配置** | **功能** | **命令** | **优化目标** | **风险提示** | |----------|----------|--------------|--------------| | **TSO/GSO** | `ethtool -K eth0 gso on` | 减少CPU分片负载 | 可能引起延迟抖动 | | **UFO** | `ethtool -K eth0 ufo on` | 提升大包传输效率 | 部分设备不支持 | | **LRO** | `ethtool -K eth0 lro on` | 减少接收中断次数 | 可能导致乱序包 | 2. **中断协调优化** - **适用场景**:高流量场景减少CPU中断负载 - **配置命令**: ```bash sudo ethtool -C eth0 rx-usecs 100 tx-usecs 100 ``` - **关键参数**: - `rx-usecs`:收包中断延迟(微秒) - `tx-frames`:发包触发中断的帧数阈值 - `adaptive-rx on`:启用自适应中断[^1] #### 三、缓冲区优化 1. **环形缓冲区调整** - **查看当前配置**: ```bash ethtool -g eth0 ``` - **调整命令**(预防丢包): ```bash sudo ethtool -G eth0 rx 4096 tx 4096 # 设置RX/TX缓冲区大小 ``` 2. **巨型帧支持** ```bash sudo ethtool -K eth0 gro on # 开启巨型帧接收 sudo ip link set eth0 mtu 9000 # 设置MTU ``` #### 四、诊断与验证 1. **检查配置生效**: ```bash ethtool eth0 # 查看基础设置 ethtool -k eth0 # 查看offload状态 ethtool -c eth0 # 查看中断协调参数 ``` 2. **性能测试对比**: ```bash # 优化前测试 iperf3 -c server_ip # 优化后测试 iperf3 -c server_ip -t 60 -P 8 ``` #### 五、典型场景配置 1. **低延迟场景**(如高频交易): ```bash sudo ethtool -C eth0 rx-usecs 10 tx-usecs 10 sudo ethtool -K eth0 tx-nocache-copy on ``` 2. **高吞吐场景**(如视频传输): ```bash sudo ethtool -G eth0 rx 8192 tx 8192 sudo ethtool -K eth0 tso on gso on gro on ``` > **警告**:配置变更需验证兼容性,不当设置可能导致网络中断!建议在维护窗口操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值