ฉันจะปรับการหมดเวลาการส่ง TCP เริ่มต้นใหม่ได้อย่างไร


14

ค่า TCP RTO เริ่มต้นของ 3s นั้นยาวเกินไปสำหรับแอปพลิเคชันที่ใช้ LAN ส่วนใหญ่ ฉันจะปรับมันลดลงได้อย่างไร? มี sysctl หรือไม่?

คำตอบ:


12

ไม่คุณไม่สามารถ; มันเป็นฮาร์ดโค้ดในเคอร์เนล ดังนั้นเปลี่ยนเคอร์เนลและคอมไพล์ใหม่

#define TCP_TIMEOUT_INIT ((unsigned)(3*HZ))     /* RFC 1122 initial RTO value   */

นี่คือสิ่งที่คุณควรได้รับในการรวม / net / tcp.h

แต่ฉันสามารถเห็นใครบางคนให้แพทช์แม้ว่าจะไม่เคยลองเอง


4

การตั้งค่าเริ่มต้นไม่ควรส่งผลกระทบต่อประสิทธิภาพโดยรวมของคุณเป็นอย่างมากเนื่องจาก RTO สามารถปรับสภาพเครือข่ายได้เอง หากคุณเปลี่ยน RTO คุณสามารถตั้งค่าเป็น 1 วินาที (แต่ไม่ต่ำกว่า)

มีการอภิปรายเรื่องนี้ในRFC 1122 :

        The following values SHOULD be used to initialize the
        estimation parameters for a new connection:
        (a)  RTT = 0 seconds.

        (b)  RTO = 3 seconds.  (The smoothed variance is to be
             initialized to the value that will result in this RTO).

        The recommended upper and lower bounds on the RTO are known
        to be inadequate on large internets.  The lower bound SHOULD
        be measured in fractions of a second (to accommodate high
        speed LANs) and the upper bound should be 2*MSL, i.e., 240
        seconds.

        DISCUSSION:
             Experience has shown that these initialization values
             are reasonable, and that in any case the Karn and
             Jacobson algorithms make TCP behavior reasonably
             insensitive to the initial parameter choices.

RFC 6298เป็นการอัปเดตที่เสนอ (เผยแพร่มิถุนายน 2011) ที่ระบุว่าRTOสามารถเริ่มต้นเป็นค่าที่ต่ำกว่า (แต่ไม่ต่ำกว่า 1 วินาที) และมีภาคผนวกที่มีข้อมูลที่ปรับ 1 วินาทีเป็นค่าเริ่มต้นที่สมเหตุสมผล


1 วินาทีคือไม่ควร; btw คุณสามารถดู rto ของเครื่องมือค้นหาด้านหน้าที่รู้จักกันดี =)
SaveTheRbtz

ฉันไม่เห็นด้วยกับข้อความนี้ "การตั้งค่าเริ่มต้นไม่ควรส่งผลกระทบต่อประสิทธิภาพโดยรวมของคุณมาก" สิ่งนี้อาจส่งผลต่ออัตราข้อผิดพลาดของคุณสำหรับแอปพลิเคชันในการสื่อสารเริ่มต้น เมื่อแอปพลิเคชันแบ็คเอนด์ตั้งค่าการหมดเวลาการอ่านเป็น 3 วินาทีหรือน้อยกว่าแพ็คเก็ตจะลดลง (เหตุการณ์ปกติเมื่อมีความแออัด) บนเครือข่ายในระหว่างการสื่อสาร TCP เริ่มต้นจะไม่อนุญาตให้ทำการส่งใหม่ ค่าเริ่มต้นจะต้องต่ำกว่าการหมดเวลาการอ่านที่กำหนดโดยจุดสิ้นสุดการรับและควรตั้งค่าตาม QOS ของเครือข่ายที่คุณใช้งาน
Joe

3 วินาทีคือนิรันดรบนเครือข่ายท้องถิ่นและแพ็คเก็ตดร็อปเกิดขึ้นอย่างรวดเร็วจริง ๆ เครือข่ายหนึ่งซึ่งเวลาไปกลับเป็นมิลลิวินาที
Joe

ฉันยอมรับซีพียูสมัยใหม่สามารถทำได้หลายอย่างภายใน 3 วินาที ความเข้าใจของฉันคือความล่าช้าเริ่มต้นนี้จะใช้เฉพาะเมื่อไดรเวอร์เริ่มต้นเท่านั้นซึ่งจะเกิดขึ้นเมื่อระบบบูทครั้งแรก
เจย์เอลสตัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.