我想在我的 debian 服务器上禁用 tcp-offloading ("TOE")。
ethtool -K .....
Run Code Online (Sandbox Code Playgroud)
不过我有一些愿望:
将它干净地集成到 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
Run Code Online (Sandbox Code Playgroud)
PS:我很惊讶地发现我的“新硬件”默认启用了 TOE,因为这个:http : //www.linuxfoundation.org/collaborate/workgroups/networking/toe
由于这个问题,我将在 MySQL 服务器后端嗅探一些数据包,看看会发生什么:
# tcpdump -vv -s0 -c 100 -i bond0 tcp port 3306 and host 192.168.3.87 -w /home/quanta/3.87_aborted.pcap
如您所见,我将 snaplen 设置为 0,但仍然收到消息“捕获期间数据包大小受限”:
MySQL Protocol
Packet Length: 579
Packet Number: 96
text: 336
text: 1004352
text: 147619
text: 336
[Packet size limited during capture: MySQL truncated]
Run Code Online (Sandbox Code Playgroud)
我的界面上的卸载设置:
# ethtool -k bond0
Offload parameters for bond0:
Cannot get device rx csum settings: Operation not supported
rx-checksumming: off
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on
udp fragmentation …Run Code Online (Sandbox Code Playgroud) 一个 tcpdump pcap 导出并在另一台带有 wireshark 的机器上被调查显示出很多无效的 TCP 校验和消息。这是使用 TCP 卸载功能时已知并记录在案的现象:https : //wiki.wireshark.org/TCP_Checksum_Verification
唯一不清楚的是为什么校验和不正确?
TCP 校验和是在伪标头的帮助下在整个 TCP 段上计算的,并在校验和计算过程中使用全零的临时校验和值 ( http://www.tcpipguide.com/free/t_TCPChecksumCalculationandtheTCPPseudoHeader-2.htm#图_218)。然后丢弃伪标头。差异体现在哪里?