{완전히, 일반적으로 쉽게} TCP 오프 로딩 비활성화


15

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


1
agaist TOE의 주장은 사실이지만 사실적인 제약 조건 (가속화가 일반적으로 도움이되는 곳)으로 살 필요가없는 Tin-Foil 모자 유형이라는 점을 지적하고 싶습니다. TOE를 비활성화해야하는 많은 경우가 있지만, 일반적이지 않으며 "일반적이고 쉽게"비활성화하기위한 노력을 기울이지 않습니다.
Chris S

1
@Chris S : 그렇습니다. 그러나 나는 엉망이 될 때까지 TOE를 신경 쓰지 않았습니다. 그리고 최근 네트워크 문제가 "장애인 TOE"로 귀결된다는 결론을 내 렸습니다. 그래서 나는 그것을 원한다! : DI는 ethtool-Method와 함께 살 수 있지만 "손잡이"를 아는 사람이 있기를 바랍니다 ....
Michuelnik

@ Micheelnik 예-작동하면 작동하게하지만 작동하고 문제를 일으키는 경우 비활성화 해야하는 좋은 이유입니다. 당신은 할 수 있습니다 리눅스가 허용하는 경우 오프로드 엔진 활성 생각의 일부를 마칠 : 오프로드 체크섬을 예를 들어 (하드 CRC32을 망치, 그리고 카드는 빠르고 어느 CAN 패킷 당 당신에게 몇 CPU 사이클을 절약 하드웨어에서 할 높은 트래픽이 네트워크에 추가)
voretaq7

@ voretaq7 : 좋은 지적입니다! 사용 가능한 옵션과 비참한 옵션을 구별해야하는지 여부에 대해 간단히 생각했습니다. 그러나 TOE를 너무 오래 연구하지 않고도 매우 빠른 솔루션이 필요했습니다. 특히 TOE에 너무 오래 걸리기 때문에 지식이 너무 빨리 공급 업체에 특화된 것으로 보이므로 특히 그렇습니다. TX-chksum 오프로드가 제 wireshark가 잘못된 chksum에 대해 불평하는 이유는 무엇입니까?
Michuelnik

사용 중지 한 기능이 TOE가 아니라고 말해야합니다. TOE는 완전한 TCP 오프로드 엔진입니다. 체크섬 오프로드, 세그먼트 오프로드 전송 및 리 어셈블리 오프로드 만 비활성화합니다. 이러한 기능 중 어느 것도 TOE가 아닙니다. 리눅스는 TOE를 지원하지 않습니다 : wiki.linuxfoundation.org/networking/toe
juhist

답변:


13

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

4
이것은 정답입니다
Spongman

7

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

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

"유레카"에는 "H"가 없습니다.
Chris S

내 모국어로, 그것은 ...
;-p

1
데비안 (ish) 특정 (또는 적어도 존중 해야하는 것들을 요구 if-up.d하지만) 매우 우아합니다.
voretaq7

@ voretaq7 : 감사합니다! 본드 장치 및 기타 특수한 경우를 다루면서도 여전히 개선해야합니다.
Michuelnik

post-up for i in rx tx gso ; do ethtool -K $IFACE $i off; donein/etc/network/interfaces
JB를

0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.