Desative o descarregamento de TCP {completamente, genericamente e facilmente}

Desative o descarregamento de TCP {completamente, genericamente e facilmente}

eu quero desabilitardescarregamento tcp(TOE) em meus servidores Debian. Eu usaria algo como:

ethtool -K …

Porém, tenho alguns desejos: é possível integrá-lo de forma limpa ao Debian?

Isto diz: não rc.local, eu também gostaria de evitar scripts pseudo-rc.

Eu acho que está instalando ethtoole usando o pre-up.d/hook que desconfigura o TOE usando opções de /etc/network/interfaces.

Gostaria de desconfigurar todos os meus (futuros) servidores de maneira genérica usando FAI (já que o FAI já está em vigor - e é desejado!).

E quanto às opções de dedo do pé que não são suportadas em alguns hardwares? A rede falhará se uma opção inexistente for desativada? Acho que deveria ser robusto não fazer isso, mas essa também não parece ser a solução que desejo.

Isso atrapalha muito a configuração, já que no atm são 11 opções! Usar várias NICs parece propenso a erros para mim.

Não existe uma solução mais genérica? Tenho um sysctl em mente, mas ainda não encontrei um. Meu desejo era:

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

PS: Estou bastante surpreso ao descobrir que meu "hardware mais recente" tem o TOE habilitado por padrão, por causa deesse.

Responder1

No Debian, o ethtoolpacote agora fornece um if-up.dscript que implementa opções de descarregamento (e outras ethtoolconfigurações).

Você só precisa instalar este pacote e adicionar linhas como essas à interface em /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

Responder2

Eureca! Encontrei a "minha" solução!

Estou simplesmente colocando o meu própriodesabilitar o dedo do péRoteiro em/etc/network/if-up.d/que desativa completamente o descarregamento do TCP.

Como bônus, adicionei um/etc/rede/interfaces-Opção, que desativa isso.

#!/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

Responder3

Fora do tópico (mais ou menos), mas acabei aqui tentando descobrir como fazer a mesma coisa para alguns servidores RHEL6. Então, se alguém estiver procurando a mesma coisa para distribuições do tipo RHEL/CentOS/Fedora, você encontrará a respostaaqui.

Responder4

Se você estiver usando um sistema que usaNetplan(por exemplo, Ubuntu) para configurar a rede, então você pode usar umScript de post-up do Netplanpara configurar o descarregamento. Como mencionado em umresponderpara outra pergunta.

Você cria um script no diretório a seguir com um nome prefixado por um número para indicar a ordem de carregamento, por exemplo /etc/networkd-dispatcher/routable.d/40-offloading-config- que é executável e de propriedade do root. por exemplo, para desativar o descarregamento de segmento TCP na eth0:

#!/bin/sh
/sbin/ethtool -K eth0 tso off

informação relacionada