Wyłącz odciążanie protokołu TCP {całkowicie, ogólnie i łatwo}

15

Chcę wyłączyć tcp-offloading („TOE”) na moich serwerach Debiana.

ethtool -K .....

Mam jednak trochę życzeń:

Zintegruj to czysto z Debianem

To brzmi: nie rc.local, chciałbym również uniknąć skryptów pseudo-rc ...

Sądzę, że instaluje ethtool i używa pre-up.d / -Hook, który dekonfiguruje TOE przy użyciu opcji z / etc / network / interfaces .

Chciałbym zdekonfigurować wszystkie moje (przyszłe) serwery w sposób ogólny za pomocą FAI . (ponieważ Fai jest już na miejscu - i chciał!) Co z opcjami palców, które nie są obsługiwane na niektórych urządzeniach? Czy sieć zawiedzie, jeśli nieistniejąca opcja powinna zostać wyłączona? Sądzę, że nie powinno być tak dobrze, ale nie wydaje mi się, żeby to było moje pożądane rozwiązanie.

Bardzo zaśmieca konfigurację, ponieważ atm ma 11 opcji! Używanie wielu kart sieciowych pachnie dla mnie podatne na błędy.

Czy nie ma bardziej ogólnego rozwiązania? Mam na myśli sysctl, ale jeszcze go nie znalazłem. Moim życzeniem było:

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

PS: Jestem zaskoczony, że moje „nowsze oprogramowanie” ma domyślnie włączone TOE, z tego powodu: http://www.linuxfoundation.org/collaborate/workgroups/networking/toe

Michuelnik
źródło
1
Chciałbym zwrócić uwagę, że chociaż argumenty agaist TOE są prawdziwe, to głównie typy kapeluszów Tin-Foil nie muszą żyć z realistycznymi ograniczeniami (gdzie zwykle przydaje się przyspieszenie). Istnieje wiele przypadków, w których TOE powinno być wyłączone, ale nie jest to powszechne i nie zasługuje na wysiłek, aby wyłączenie go było „ogólne i łatwe”.
Chris S
1
@Chris S: Racja, ale nie przeszkadzało mi TOE, dopóki się nie popsuło. I ostatnio tak naprawdę podsumowuje, że problemy sieciowe sprowadzają się do „wyłączenia TOE”. Więc chcę tego! : DI może żyć z Metodą Ettoolu, ale mam nadzieję, że ktoś zna „gałkę” ....
Michuelnik
@Michuelnik tak - jeśli działa, pozwoliłbym mu działać, ale jeśli działa i powoduje problemy, to dobry powód, aby go wyłączyć. Państwo może chcieć opuścić niektóre części aktywnej Chociaż silnika odciążające, gdy Linux pozwala go: kontrolne wyładowania na przykład (trudno zepsuć CRC32, a karty to zrobić w sprzęt, który jest szybszy i oszczędza kilka cykli procesora w pakiecie, który może sumują się w sieciach o dużym natężeniu ruchu)
voretaq7
@ voretaq7: Dobra uwaga! Zastanowiłem się krótko, czy powinienem rozróżnić opcje użyteczne od nieszczęśliwych. Potrzebowałem jednak dość szybkiego rozwiązania bez zbyt długiego studiowania TOE, zwłaszcza, że ​​TOE wydaje się tak specyficzne dla dostawcy, że jego wiedza starzeje się zbyt szybko, aby zainwestować w nią czas. Czy TX-chksum odciąża źródło, dlaczego mój wireshark narzeka na niewłaściwe chksums?
Michuelnik
Muszę powiedzieć, że funkcje, które wyłączasz, nie są TOE. TOE to pełny silnik odciążający TCP. Wyłączasz tylko odciążenie sumy kontrolnej, wyślesz odciążenie segmentacji i otrzymasz odciążenie ponownego montażu. Żadna z tych funkcji nie jest TOE. Linux nie obsługuje TOE: wiki.linuxfoundation.org/networking/toe
juhist

Odpowiedzi:

13

W Debianie ethtoolpakiet zawiera teraz if-up.dskrypt, który implementuje opcje odciążania (i inne ethtoolustawienia).

Musisz tylko zainstalować ten pakiet i dodać takie wiersze do interfejsu w /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
hmlth
źródło
4
to powinna być zaakceptowana odpowiedź
Spongman
7

Eureka! Znaleziono „moje” rozwiązanie!

Po prostu umieszczam własny skrypt wyłączania palca w /etc/network/if-up.d/, który całkowicie wyłącza odciążanie tcp.

Jako bonus dodałem / etc / network / interfaces -Option, który wyłącza to.

#!/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
Michuelnik
źródło
„Eureka” nie ma w sobie litery „H”.
Chris S
W moim języku ojczystym ma ... ;-p
Michuelnik
1
Debian (ish) specyficzny (lub przynajmniej wymagający rzeczy, które szanują if-up.d), ale dość elegancki - lubię.
voretaq7
@ voretaq7: Dzięki! Nadal muszę poprawić - obsługę urządzeń wiążących i być może innych specjalnych przypadków.
Michuelnik
Lepiej użyj post-up for i in rx tx gso ; do ethtool -K $IFACE $i off; donein/etc/network/interfaces
JB. Z Moniką.
0

Nie na temat (w pewnym sensie), ale skończyłem tutaj, próbując dowiedzieć się, jak zrobić to samo dla niektórych serwerów RHEL6. Jeśli więc ktoś szuka tego samego dla dystrybucji RHEL / CentOS / Fedora, znajdziesz odpowiedź tutaj .

PaddyD
źródło