禁用TCP卸载{完全,通用且轻松地}


15

我想在我的debian服务器上禁用tcp-offloading(“ TOE”)。

ethtool -K .....

不过,我有一些愿望:

干净地将其集成到debian中

内容为:没有rc.local,我也想避免使用伪rc脚本...

我猜想,这是在安装ethtool并使用pre-up.d / -Hook,它使用/ etc / network / interfaces中的选项来取消TOE的配置

我想使用FAI以通用方式取消配置所有(未来)服务器。(因为fai已经存在-并且想要!)某些硬件不支持的脚趾选项呢?如果应禁用不存在的选项,联网会失败吗?我认为不这样做应该很健壮,但这似乎也不是我想要的解决方案。

由于atm有11个选项,因此配置非常混乱。使用多个NIC会使我感到容易出错。

没有更通用的解决方案吗?我有一个sysctl,但尚未找到。我的愿望是:

echo 0 > /proc/sys/net/core/enable_tcp_offloading

PS:我很惊讶地发现我的“较新的硬件”默认情况下启用了TOE,因为:http : //www.linuxfoundation.org/collaborate/workgroups/networking/toe


1
我想指出的是,尽管反对TOE的论点是正确的,但大多数是锡纸帽子类型的人不必忍受现实的约束(通常加速时通常会有所帮助)。在很多情况下,应该禁用TOE,但这并不常见,也不值得尝试“通用且轻松”地禁用它。
克里斯·S

1
@克里斯·S:是的,但是直到它弄乱了我才介意。最近确实总结出,网络问题归结为“禁用TOE”。所以我想要!:DI可以与ethtool的,方法活,但有人知道“旋钮”希望....
Michuelnik

@Michuelnik是的-如果它正在运行,我会让它运行,但是如果它正在运行并给您带来问题,那是禁用它的一个很好的理由。如果Linux允许,您可能希望使卸载引擎的某些部分保持活动状态:例如,卸载校验和(很难弄乱CRC32,而卡在硬件中执行此操作则更快,并为每个数据包节省了几个CPU周期,这可以
加到

@ voretaq7:好点!不久考虑一下,我是否应该区分可用选项和悲惨选项。但是我需要一个不花太多时间研究TOE的快速解决方案,尤其是因为TOE的东西似乎太过特定于供应商,因为它知道老化太快而无法投入时间。TX-chksum-offloading是我的wireshark抱怨错误的chksum的起因吗?
米歇尔尼克

我必须说您要禁用的功能不是TOE。TOE是完整的TCP卸载引擎。您仅禁用校验和卸载,发送分段卸载和接收重组卸载。这些功能都不是TOE。Linux不支持TOE:wiki.linuxfoundation.org/networking/toe
juhist

Answers:


13

ethtool现在,在Debian上,软件包提供了一个if-up.d脚本,该脚本实现用于卸载的选项(和其他ethtool设置)。

您只需要安装此软件包并在中的接口中添加类似这些的行即可/etc/network/interfaces

auto eth0
iface eth0 inet static
    address 10.0.3.1/255.255.248.0
    gateway 10.0.2.10
    offload-tx  off
    offload-sg  off
    offload-tso off

4
这应该是公认的答案
Spongman

7

尤里卡!找到“我的”解决方案!

我只是将自己的禁用脚趾脚本放在/etc/network/if-up.d/中,它完全禁用了tcp-offloading。

作为奖励,我添加了/ etc / network / interfaces -Option,将其禁用。

#!/bin/bash

RUN=true
case "${IF_NO_TOE,,}" in
    no|off|false|disable|disabled)
        RUN=false
    ;;
esac

if [ "$MODE" = start -a "$RUN" = true ]; then
  TOE_OPTIONS="rx tx sg tso ufo gso gro lro rxvlan txvlan rxhash"
  for TOE_OPTION in $TOE_OPTIONS; do
    /sbin/ethtool --offload "$IFACE" "$TOE_OPTION" off &>/dev/null || true
  done
fi

“ Eureka”中没有“ H”。
克里斯·S

用我的母语,它具有...
;-p

1
特定于Debian(ish)(或至少要求尊重的东西if-up.d),但非常优雅-我喜欢。
voretaq7'8

@ voretaq7:谢谢!仍需改进-处理粘合设备,也许还有其他特殊情况。
米歇尔尼克

您最好使用post-up for i in rx tx gso ; do ethtool -K $IFACE $i off; donein/etc/network/interfaces
JB。和莫妮卡

0

脱离主题(有点),但是当我试图弄清楚如何为某些RHEL6服务器做同样的事情时,我到了这里。因此,如果有人在为RHEL / CentOS / Fedora之类的发行版寻找相同的东西,您将在此处找到答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.