Vô hiệu hóa TCP-Offloading {hoàn toàn, tổng quát và dễ dàng}


15

Tôi muốn tắt tính năng giảm tải tcp ("TOE") trên các máy chủ debian của mình.

ethtool -K .....

Tôi có một số điều ước, mặc dù:

Tích hợp nó một cách sạch sẽ vào debian

Điều này đọc: không có RC.local, tôi cũng muốn tránh giả kịch bản ...

Tôi đoán, nó đang cài đặt ethtool và sử dụng pre-up.d / -Hook để định cấu hình TOE bằng các tùy chọn từ / etc / network / giao diện .

Tôi muốn định cấu hình tất cả các máy chủ (tương lai) của mình theo kiểu chung bằng FAI . (vì fai đã sẵn sàng - và muốn!) Còn các tùy chọn ngón chân không được hỗ trợ trên một số phần cứng thì sao? Mạng sẽ thất bại nếu một tùy chọn không tồn tại nên bị vô hiệu hóa? Tôi đoán nó sẽ không mạnh mẽ để làm như vậy, nhưng điều này dường như cũng không phải là giải pháp mong muốn của tôi.

Nó làm xáo trộn cấu hình rất nhiều, vì atm có 11 tùy chọn! Sử dụng nhiều NIC, điều này có mùi dễ xảy ra với tôi.

Không có một giải pháp chung chung hơn? Tôi có một hệ thống trong tâm trí, nhưng chưa tìm thấy. Mong ước của tôi là:

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

PS: Tôi khá ngạc nhiên khi thấy "phần cứng mới hơn" của mình được bật TOE theo mặc định, vì điều này: http://www.linuxfoundation.org/collabISE/workgroups/networking/toe


1
Tôi muốn chỉ ra rằng trong khi các lập luận viên agaist TOE là đúng, thì chủ yếu là các loại mũ Tin-Foil, những người không phải sống với những ràng buộc thực tế (trong đó bất kỳ sự tăng tốc nào thường hữu ích). Có rất nhiều trường hợp cạnh mà TOE nên bị vô hiệu hóa, nhưng nó không phổ biến và không xứng đáng với nỗ lực để vô hiệu hóa nó "chung chung và dễ dàng".
Chris S

1
@Chris S: Đúng vậy, nhưng tôi không bận tâm đến TOE cho đến khi nó rối tung lên. Và nó thực sự tổng hợp gần đây rằng các vấn đề mạng sôi sục để "vô hiệu hóa TOE". Vì vậy, tôi muốn nó! : DI có thể sống với Phương pháp ethtool, nhưng hy vọng ai đó biết "núm" ....
Michuelnik

@Michuelnik yeah - nếu nó hoạt động tôi sẽ để nó chạy, nhưng nếu nó hoạt động và gây ra vấn đề cho bạn thì đó là một lý do tốt để vô hiệu hóa nó. Bạn có thể muốn để một số bộ phận của công cụ giảm tải hoạt động mặc dù nếu Linux cho phép: Ví dụ về việc giảm tổng kiểm tra (khó có thể làm hỏng CRC32 và các thẻ hoạt động trong phần cứng nhanh hơn và tiết kiệm cho bạn một vài chu kỳ CPU cho mỗi gói có thể thêm vào các mạng lưu lượng cao)
voretaq7

@ voretaq7: Điểm tốt! Suy nghĩ về nó trong thời gian ngắn, liệu tôi có nên phân biệt giữa các lựa chọn có thể sử dụng và khốn khổ. Nhưng tôi cần một giải pháp khá nhanh mà không cần học TOE quá lâu, đặc biệt là vì các công cụ TOE có vẻ như nhà cung cấp cụ thể rằng kiến ​​thức của nó quá già để đầu tư thời gian vào nó. Có phải TX-chksum giảm tải nguồn gốc tại sao wireshark của tôi phàn nàn về chksums sai?
Michuelnik

Tôi phải nói rằng các tính năng bạn vô hiệu hóa không phải là TOE. TOE là một công cụ giảm tải TCP đầy đủ. Bạn đang vô hiệu hóa chỉ kiểm tra giảm tải, gửi giảm tải phân khúc và nhận giảm tải lắp lại. Không có tính năng nào trong số đó là TOE. Linux không hỗ trợ TOE: wiki.linuxfoundation.org/networking/toe
juhist

Câu trả lời:


12

Trên Debian, ethtoolgói hiện cung cấp một if-up.dtập lệnh thực hiện các tùy chọn để giảm tải (và các ethtoolcài đặt khác ).

Bạn chỉ cần cài đặt gói này và thêm các dòng như thế này vào giao diện /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
đây phải là câu trả lời được chấp nhận
Spongman

7

Eureka! Tìm thấy giải pháp "của tôi"!

Tôi chỉ đơn giản là đặt Script vô hiệu hóa ngón chân của riêng mình vào /etc/network/if-up.d/ để vô hiệu hóa hoàn toàn việc giảm tải tcp.

Như phần thưởng tôi đã thêm / etc / mạng / giao diện -Option, vô hiệu hóa điều này.

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

"Eureka" không có "H" trong đó.
Chris S

Trong tiếng mẹ đẻ của tôi, nó có ... ;-p
Michuelnik

1
Debian (ish) cụ thể (hoặc ít nhất là yêu cầu những thứ tôn trọng if-up.d), nhưng khá thanh lịch - tôi thích.
voretaq7

@ voretaq7: Cảm ơn! Vẫn phải cải thiện - xử lý các thiết bị trái phiếu và có thể các trường hợp đặc biệt khác.
Michuelnik

Bạn muốn sử dụng tốt hơn post-up for i in rx tx gso ; do ethtool -K $IFACE $i off; donetrong/etc/network/interfaces
JB. Với Monica.

0

Không có chủ đề (loại) nhưng tôi đã kết thúc ở đây khi cố gắng tìm ra cách làm điều tương tự cho một số máy chủ RHEL6. Vì vậy, nếu bất cứ ai đang tìm kiếm điều tương tự cho các bản phân phối của RHEL / CentOS / Fedora, bạn sẽ tìm thấy câu trả lời ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.