相关疑难解决方法(0)

GRO(通用接收卸载)如何在更高级的 NIC 上工作?

我对特定的答案感兴趣:

  1. 具有 GRO 的 NIC 是否编辑/创建 TCP ACK 或任何其他数据包(或者此功能对接收器/发送器 TCP 堆栈透明)?
  2. 当 NIC 应该将“粘合段”传递给 TCP 堆栈时,应该有超时/事件吗?这些是什么?
  3. 在数据包转发设置中 - GRO 功能是否也尝试读取接收器 ACK(请参阅下文,为什么我会问这个)?
  4. 任何能比维基百科和 linux 手册页更好地解释 GRO 和其他 NIC 卸载功能(TSO、LSO ...)的来源都将不胜感激。

更多细节:

我正在对一个 IPSec 实现的性能问题进行故障排除。问题是可用带宽并没有在所有 4 个 VPN 隧道中均匀分布(大约分布为 200MBps/200MBps/1MBps/1MBps;每个 VPN 隧道封装单个 TCP 连接)。在 PCAP 中,我偶尔会看到网络服务器空闲大约 2 秒(等待 ACK)。当网络服务器重新传输未确认的段时,下载恢复。

我对 PCAP 的看法是 NIC GRO 功能将数据包粘合在一起,但有时不会将它们及时传递到 TCP 堆栈,这导致了问题。

由于此 VPN 服务器没有终止 TCP 连接而仅转发数据包的接口。然后我尝试禁用 GRO,之后我观察到流量在所有隧道中均匀分布。此外,当在 Web 服务器上禁用 TCP 窗口缩放时,即使启用了 GRO,带宽也会被分配(这就是我遇到问题 #3 的原因)。

我在 Ubuntu 10.04 服务器(64 位)上使用 2.6.32-27 linux。网卡是英特尔 82571EB。所有接口(HTTP 客户端、VPN 客户端、VPN 服务器、Web 服务器)都通过 …

nic linux-networking

16
推荐指数
1
解决办法
5万
查看次数

标签 统计

linux-networking ×1

nic ×1