TCPオフロードを無効にする{完全に、一般的かつ簡単に}


15

私のdebianサーバーでtcp-offloading( "TOE")を無効にしたいのですが。

ethtool -K .....

しかし、私はいくつかの願いがあります:

Debianにきれいに統合する

これは読み取ります:rc.localなし、擬似rcスクリプトを回避したい...

ethtoolをインストールし、/ etc / network / interfacesのオプションを使用してTOEを構成解除するpre-up.d / -Hookを使用していると思います

FAIを使用して、すべての(将来の)サーバーを一般的な方法で構成解除したいと思います。(faiはすでに設置されており、欲しかったからです!)一部のハードウェアでサポートされていないtoe-optionsはどうですか?存在しないオプションを無効にする必要がある場合、ネットワークは失敗しますか?そうしないことは堅牢であるべきだと思いますが、これも私の希望するソリューションではないようです。

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
@Chris S:そうですね、TOEが台無しになるまで気にしませんでした。そして最近、ネットワークの問題が「TOEの無効化」に帰着することを実際にまとめています。だから欲しい!:DIはethtool-Methodで生きることができますが、誰かが「ノブ」を知っていることを望みます
。...-Michuelnik

@Michuelnikええ-動作している場合は実行しますが、動作して問題が発生している場合は、無効にするのに十分な理由です。あなたはあり例えばオフロードチェックサム(CRC32を台無しにするのは難しい、とカードはハードウェアでそれを行う高速で、あなたにどの缶パケットあたり数CPUサイクルを保存する:Linuxはそれを許可する場合かかわらず、アクティブなオフロード・エンジンの一部を残したいですトラフィックの多いネットワークに追加)
-voretaq7

@ voretaq7:良い点!すぐに考えて、使用可能なオプションと悲惨なオプションを区別する必要があるかどうか。しかし、TOEが時間を費やすにはあまりにも早く老化するという知識があるため、特にTOEのスタッフはベンダー特有であるように思われるため、TOEをあまり長く研究することなく、非常に迅速なソリューションが必要でした。TX-chksum-offloadingが原因で、wiresharkが間違ったchksumについて文句を言うのはなぜですか?
ミシェルニック

無効にしている機能はTOEではありません。TOEは完全なTCPオフロードエンジンです。チェックサムオフロードのみを無効にし、セグメンテーションオフロードを送信し、再アセンブリオフロードを受信します。これらの機能はどれもTOEではありません。LinuxはTOEをサポートしていません:wiki.linuxfoundation.org/networking/toe
juhist

回答:


12

Debianでは、ethtoolパッケージ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
これは受け入れられる答えである必要があります
スポンジマン

7

ユーレカ!「私の」ソリューションが見つかりました!

tcp-offloadingを完全に無効にする/etc/network/if-up.d/に自分のdisable-toeスクリプトを配置するだけです。

ボーナスとして、これを無効にする/ 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

@ voretaq7:ありがとう!まだ改善する必要があります-ボンドデバイスやその他の特殊なケースの取り扱い
ミシェルニック

あなたはより良い使用したいpost-up for i in rx tx gso ; do ethtool -K $IFACE $i off; done/etc/network/interfaces
JB。モニカと。

0

トピックから外れていますが、いくつかのRHEL6サーバーで同じことを行う方法を見つけようとすると、ここで終わりました。だから、誰かがディストリビューションのようなRHEL / CentOS / Fedoraの同じものを探しているなら、あなたはここで答えを見つけるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.