Отключить TCP-разгрузку {полностью, обобщенно и легко}

Я хочу отключить tcp-offloading ("TOE") на моих серверах Debian.

ethtool -K .....

У меня есть некоторые пожелания, хотя:

Интегрируйте его в Debian

Это гласит: нет rc.local, я также хотел бы избежать псевдо-rc-сценариев...

Я предполагаю, что он устанавливает ethtool и использует pre-up.d /-Hook, который деконфигурирует ОО, используя параметры из / etc / network / interfaces.

Я хотел бы деконфигурировать все мои (будущие) серверы в общем виде с использованием FAI. (поскольку fai уже есть - и хотел!) А как насчет опций, которые не поддерживаются на некоторых аппаратных средствах? Будет ли сбой в сети, если отключить несуществующую опцию? Я полагаю, это должно быть надежно, чтобы не делать этого, но это тоже, похоже, не мое решение.

Конфиг очень сильно загромождает, так как у него 11 вариантов! При использовании нескольких сетевых карт это пахнет ошибкой для меня.

Разве нет более общего решения? Я имею в виду sysctl, но пока не нашел. Мое желание было:

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

PS: я очень удивлен, обнаружив, что на моем "новом оборудовании" по умолчанию включена поддержка ОО, из-за этого: http://www.linuxfoundation.org/collaborate/workgroups/networking/toe

3 ответа

Решение

Эврика! Нашел "мое" решение!

Я просто помещаю свой скрипт Script- Toe в /etc/network/if-up.d/, который полностью отключает tcp-разгрузку.

В качестве бонуса я добавил / 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

На 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

Если вы используете систему, которая использует Netplan (например, Ubuntu) для настройки сети, вы можете использовать post-up скрипт Netplan для настройки разгрузки. Как уже упоминалось в ответе на другой вопрос.

Вы создаете сценарий в следующем каталоге с именем с префиксом номера, чтобы указать порядок загрузки, например /etc/networkd-dispatcher/routable.d/40-offloading-config- который является исполняемым и принадлежит root. например, чтобы отключить разгрузку сегмента TCP на eth0:

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

Не по теме (вроде), но я оказался здесь, когда пытался понять, как сделать то же самое для некоторых серверов RHEL6. Поэтому, если кто-то ищет то же самое для дистрибутивов, подобных RHEL/CentOS/Fedora, вы найдете ответ здесь.

Другие вопросы по тегам