ปิดใช้งาน TCP-Offloading {สมบูรณ์แบบทั่วไปและง่ายดาย}


15

ฉันต้องการปิดใช้งาน tcp-offloading ("TOE") บนเซิร์ฟเวอร์เดเบียนของฉัน

ethtool -K .....

ฉันมีความปรารถนาบางอย่าง แต่:

รวมมันเข้ากับเดเบียนอย่างหมดจด

อ่านนี้: ไม่มี rc.local ฉันต้องการหลีกเลี่ยงการหลอกสคริปต์ rc ...

ฉันเดาก็ติดตั้ง ethtool และการใช้ก่อน up.d / -Hook ซึ่ง deconfigures TOE ใช้ตัวเลือกจาก/ etc / เครือข่าย / อินเตอร์เฟซ

ผมอยากจะ deconfigure เซิร์ฟเวอร์ทั้งหมดของฉัน (ในอนาคต) ในแฟชั่นทั่วไปใช้หนาน (เนื่องจากไฟอยู่ในสถานที่ - และต้องการ!) แล้วตัวเลือกแบบนิ้วเท้าที่ไม่รองรับกับฮาร์ดแวร์บางตัว? ระบบเครือข่ายจะล้มเหลวหรือไม่หากไม่ได้ใช้ตัวเลือกที่มีอยู่ ฉันเดาว่ามันควรจะมีประสิทธิภาพไม่ควรทำ แต่ดูเหมือนจะไม่เป็นทางออกที่ฉันต้องการเช่นกัน

มันปรับแต่งการกำหนดค่าเป็นอย่างมากเนื่องจาก ATM มี 11 ตัวเลือก! การใช้ NIC หลายครั้งนี้ทำให้ฉันมีข้อผิดพลาด

ไม่มีวิธีแก้ปัญหาทั่วไปเพิ่มเติมหรือไม่ ฉันมี sysctl ในใจ แต่ยังไม่พบ ความปรารถนาของฉันคือ:

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

PS: ฉันค่อนข้างประหลาดใจที่พบ "ฮาร์ดแวร์รุ่นใหม่" เพื่อให้เปิดใช้งาน 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

@Michuelnik ใช่ - ถ้ามันใช้งานได้ฉันจะปล่อยให้มันทำงาน แต่ถ้ามันทำงานและสร้างปัญหาให้คุณนั่นเป็นเหตุผลที่ดีที่จะปิดการใช้งาน คุณอาจต้องการปล่อยให้บางส่วนของเอ็นจิ้น offload ทำงานแม้ว่าลินุกซ์จะอนุญาต: การถ่ายอัพซัม (ยากที่จะทำให้ผิดพลาดขึ้น CRC32 และการ์ดทำในฮาร์ดแวร์ซึ่งเร็วกว่าและช่วยให้คุณประหยัด CPU รอบต่อแพ็คเก็ต เพิ่มในเครือข่ายที่มีปริมาณการใช้งานสูง)
voretaq7

@ voretaq7: จุดดี! คิดในไม่ช้าว่าฉันควรแยกแยะตัวเลือกที่ใช้ได้หรือไม่ แต่ฉันต้องการวิธีแก้ปัญหาที่ค่อนข้างเร็วโดยไม่ต้องศึกษา TOE นานเกินไปโดยเฉพาะอย่างยิ่งเนื่องจากสิ่งที่ดูเหมือนว่าเฉพาะเจาะจงมากเกินไปผู้ขาย soe ว่ามันเป็นความรู้ที่อายุเร็วเกินไปที่จะใช้เวลาในการลงทุน TX-chksum- ถ่ายจุดกำเนิดทำไม wireshark ของฉันบ่นเกี่ยวกับ chksums ผิดหรือเปล่า?
Michuelnik

ฉันต้องบอกว่าฟีเจอร์ที่คุณปิดใช้งานไม่ใช่ TOE TOE เป็นเอ็นจิ้น offload TCP แบบเต็ม คุณกำลังปิดการใช้งานเพียงตรวจสอบการถ่ายการโหลดส่งการแบ่งส่วนการถ่ายโอนและรับการถ่ายภาพการประกอบซ้ำ ไม่มีฟีเจอร์ใดที่เป็น TOE Linux ไม่รองรับ TOE: wiki.linuxfoundation.org/networking/toe
juhist

คำตอบ:


13

บน 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

4
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
Spongman

7

ยูเรก้า! พบวิธีแก้ปัญหา "ของฉัน"!

ฉันเพียงแค่วางสคริปต์ตัวปิดการใช้งานของฉันเองใน/etc/network/if-up.d/ซึ่งปิดการใช้งาน tcp-offloading อย่างสมบูรณ์

ในฐานะโบนัสฉันได้เพิ่ม/ 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
Michuelnik

1
เฉพาะ Debian (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.