{완전히, 일반적으로 쉽게} TCP 오프 로딩 비활성화 피하고 싶습니다 … ethtool을 설치하고

데비안 서버에서 tcp-offloading ( “TOE”)을 비활성화하고 싶습니다.

ethtool -K .....

그래도 몇 가지 소원이 있습니다.

데비안에 깔끔하게 통합

이것은 rc.local이 아니라 pseudo-rc-scripting을 피하고 싶습니다 …

ethtool을 설치하고 pre-up.d / -Hook을 사용하여 / etc / network / interfaces의 옵션을 사용하여 TOE를 구성 해제 한다고 생각합니다 .

FAI를 사용하여 모든 (미래) 서버를 일반적인 방식으로 구성 해제하고 싶습니다 . (실패가 이미 존재하고 싶었 기 때문에!) 일부 하드웨어에서 지원되지 않는 발가락 옵션은 어떻습니까? 존재하지 않는 옵션을 비활성화해야 네트워킹이 실패합니까? 그렇게하지 않는 것이 강력해야한다고 생각하지만 이것은 내가 원하는 해결책이 아닌 것 같습니다.

atm에는 11 가지 옵션이 있기 때문에 구성이 매우 복잡합니다! 여러 개의 NIC를 사용하면 오류가 발생하기 쉽습니다.

더 일반적인 해결책이 없습니까? 나는 sysctl을 염두에두고 있지만 아직 찾지 못했습니다. 내 소원은 :

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

추신 : 다음과 같은 이유로 기본적으로 TOE를 활성화 할 수있는 “최신 하드웨어”를 찾게되어 매우 놀랐습니다. http://www.linuxfoundation.org/collaborate/workgroups/networking/toe



답변

데비안에서 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


답변

유레카! “내”솔루션을 찾았습니다!

tcp-offloading을 완전히 비활성화하는 /etc/network/if-up.d/에 자체 비활성화 스크립트 를 배치하고 있습니다 .

보너스로 / 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


답변

주제를 벗어 났지만 일부 RHEL6 서버에서 동일한 작업을 수행하는 방법을 알아 내려고 노력했습니다. 따라서 누구나 RHEL / CentOS / Fedora 배포판과 같은 것을 찾고 있다면 여기 에서 답변을 찾을 수 있습니다 .


답변