Назад | Перейти на главную страницу

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

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

ethtool -K .....

Но у меня есть несколько пожеланий:

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

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

Я бы предположил, что это установка ethtool и использование pre-up.d /-Хук, который деконфигурирует TOE, используя параметры из / и т.д. / сеть / интерфейсы.

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

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

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

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

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

В 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

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

Я просто кладу свои отключенный носок Скрипт в /etc/network/if-up.d/ который полностью отключает tcp-offloading.

В качестве бонуса я добавил / и т.д. / сеть / интерфейсы-Опция, отключающая это.

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

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

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

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

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