ควบคุมความคับคั่งของ TCP สำหรับเครือข่าย 10GbE ที่มีความหน่วงต่ำ -> 1GbE หรือไม่


11

ฉันมีเซิร์ฟเวอร์ที่มีการเชื่อมต่อ 10GbE ไปยังสวิตช์และลูกค้า 10 รายที่มีการเชื่อมต่อ 1GbE ไปยังสวิตช์เดียวกัน

ใช้ nuttcp แบบขนานบนไคลเอนต์แต่ละตัวฉันสามารถส่งข้อมูล TCP 10 สตรีมไปยังเซิร์ฟเวอร์พร้อมกันที่ความเร็วสายไฟ (เช่นเพียงแค่ขี้อาย 100 เมกะไบต์ต่อวินาทีจากไคลเอนต์ทั้ง 10 พร้อมกัน)

อย่างไรก็ตามเมื่อฉันย้อนกลับทิศทางและส่งข้อมูลจากเซิร์ฟเวอร์ไปยังไคลเอนต์ - นั่นคือ 10 TCP สตรีมหนึ่งคนไปยังไคลเอนต์แต่ละคน - TCP retransmissions skyrocket และประสิทธิภาพลดลงถึง 30, 20 หรือแม้แต่ 10 เมกะไบต์ต่อวินาที ต่อลูกค้าหนึ่งราย ฉันต้องการทำให้ตัวเลขเหล่านี้สูงขึ้นเนื่องจากรูปแบบการรับส่งข้อมูลนี้เป็นตัวแทนของแอปพลิเคชันบางอย่างที่ฉันสนใจ

ฉันได้ตรวจสอบแล้วว่าเซิร์ฟเวอร์ของฉันสามารถเชื่อมโยงลิงค์ 10GbE ด้วยการทดสอบเดียวกันผ่านการเชื่อมต่อ 10GbE กับเซิร์ฟเวอร์ที่คล้ายกัน ฉันได้ตรวจสอบแล้วว่าไม่มีข้อผิดพลาดในพอร์ตใด ๆ ของฉัน

ในที่สุดเมื่อฉันบังคับกวาด (จำกัด ) ขนาดหน้าต่าง TCP ของผู้รับฉันสามารถรับแบนด์วิดท์ได้ค่อนข้างสูง (30-40 เมกะไบต์ / วินาที); และถ้าฉันแคลมป์ต่ำมากฉันก็จะสามารถส่งสัญญาณกลับมาที่ศูนย์ได้ (โดยแบนด์วิดท์ต่ำอย่างน่าหัวเราะ)

ดังนั้นฉันมีความมั่นใจพอสมควรว่าฉันกำลังทับบัฟเฟอร์ในสวิตช์ของฉันส่งผลให้เกิดการสูญเสียแพ็กเก็ตเนื่องจากความแออัด อย่างไรก็ตามฉันคิดว่าการควบคุมความแออัดของ TCP นั้นควรจะจัดการกับสิ่งนี้ได้อย่างแน่นอนในที่สุดก็คงความเสถียรที่ความเร็วสูงกว่า 50% ของสายไฟ

ดังนั้นคำถามแรกของฉันง่ายมาก: อัลกอริทึมการควบคุมความแออัดของ TCP ใดจะเหมาะที่สุดสำหรับสถานการณ์ของฉัน มีให้ใช้งานมากมาย แต่ดูเหมือนว่าพวกเขาส่วนใหญ่จะถูกกำหนดเป้าหมายที่เครือข่ายที่สูญเสียหรือเครือข่ายที่มีแบนด์วิดท์สูงหรือเครือข่ายไร้สายที่มีความเร็วสูงหรือไม่มี ... สิ่งใดที่ตรงกับสถานการณ์ของฉัน

คำถามที่สอง: มีอะไรอีกบ้างที่ฉันลองได้บ้าง


1
มันจะมีประโยชน์หากรู้ว่าสวิตช์แบบใด สวิตช์ที่แตกต่างกันจัดการการจัดคิวด้วยวิธีที่ต่างกันและจะช่วย จำกัด โซลูชันให้แคบลง
scottm32768

2
สวิตช์ที่แตกต่างกันมีขนาดบัฟเฟอร์ที่แตกต่างกันดังนั้นการรู้ว่าสวิตช์รุ่นจะช่วยกำจัดปัญหาฮาร์ดแวร์จากปัญหาของคุณ
cpt_fink

1
นอกจากนี้รุ่น NIC ไดรเวอร์รุ่น Linux เคอร์เนลการแจกจ่ายและอื่น ๆ คำตอบของฉันสำหรับ Myricom หรือ Solarflare NIC ด้วย Cisco 4900M จะแตกต่างจากสวิตช์ Dell Powerconnect และ Intel NIC
ewwhite

คำตอบ:


2
  1. คุณต้องการอัลกอริทึมที่ขนาดหน้าต่างไม่ลดลงอย่างมากเมื่อมีแพ็กเก็ตหล่น มันมีขนาดของหน้าต่างที่ลดลงอย่างมากซึ่งส่งผลให้ปริมาณงานลดลงอย่างกระทันหันด้วยปริมาณการใช้ TCP

  2. หากสวิตช์และเซิร์ฟเวอร์ของคุณรองรับการควบคุมการไหลให้ลองเปิดใช้งานการควบคุมการไหล การทำงานนี้ขึ้นอยู่กับซิลิคอนและเฟิร์มแวร์ของ Switch เกือบทั้งหมด โดยทั่วไปสวิตช์จะตรวจจับความแออัดของพอร์ตที่เชื่อมต่อกับไคลเอนต์กำหนดว่าแพ็กเก็ตมาจากไหนและส่งโฟลว์คอนโทรลเฟรมออกจากพอร์ตเข้า (เช่นกลับไปที่เซิร์ฟเวอร์) หากเซิร์ฟเวอร์เข้าใจเฟรมการควบคุมการไหลของข้อมูลจะช่วยลดความเร็วในการส่งข้อมูล ถ้ามันทำงานได้ดีคุณจะได้รับปริมาณงานที่ดีที่สุดโดยแทบไม่มีการเกิดแพ็กเก็ตลดลงที่เกิดขึ้นกับบัฟเฟอร์ egress ของสวิตช์

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