การรวมลิงก์ (LACP / 802.3ad) ปริมาณงานสูงสุด


10

ฉันเห็นพฤติกรรมที่สับสนเกี่ยวกับอินเตอร์เฟสที่ถูกผูกมัดภายใต้ Linux และฉันต้องการที่จะโยนสถานการณ์ออกไปด้วยความหวังว่าจะมีคนล้างข้อมูลให้ฉัน

ฉันมีสองเซิร์ฟเวอร์: เซิร์ฟเวอร์ 1 (S1) มีการเชื่อมต่ออีเธอร์เน็ต 4x 1Gbit; เซิร์ฟเวอร์ 2 (S2) มีการเชื่อมต่ออีเธอร์เน็ต 2x 1Gbit เซิร์ฟเวอร์ทั้งสองกำลังใช้งาน Ubuntu 12.04 แม้ว่าจะมีเคอร์เนล 3.11.0-15 (จากแพ็คเกจ lux-saucy linux-generic)

เซิร์ฟเวอร์ทั้งสองมีอินเทอร์เฟซเครือข่ายที่เกี่ยวข้องทั้งหมดที่รวมอยู่ในอินเทอร์เฟซ bond0 เดียวด้วยการกำหนดค่าต่อไปนี้ (เป็น/etc/network/interfaces):

bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-slaves eth0 eth1 [eth2 eth3]

ระหว่างเซิร์ฟเวอร์นั้นมีสวิตช์ HP สองตัวซึ่งเป็น (ฉันคิดว่า) กำหนดค่าอย่างถูกต้องสำหรับ LACP บนพอร์ตที่เป็นปัญหา

ตอนนี้ลิงก์กำลังใช้งาน - ทราฟฟิกเครือข่ายจะไหลเข้าและออกจากทั้งสองเครื่องอย่างมีความสุข และอินเทอร์เฟซที่เกี่ยวข้องทั้งหมดกำลังถูกใช้ดังนั้นจึงไม่เหมือนกับการรวมที่ล้มเหลวอย่างสมบูรณ์ อย่างไรก็ตามฉันต้องการแบนด์วิดท์มากที่สุดเท่าที่จะเป็นไปได้ระหว่างเซิร์ฟเวอร์ทั้งสองนี้และฉันไม่ได้รับ ~ 2Gbit / s ที่ฉันคาดไว้

ในการทดสอบของฉันฉันสามารถสังเกตได้ว่าเซิร์ฟเวอร์แต่ละเครื่องดูเหมือนจะจัดสรรการเชื่อมต่อ TCP แต่ละตัว (เช่น iperf, scp, nfs หรืออะไรก็ตาม) ให้กับอินเทอร์เฟซสลาฟเดียว โดยพื้นฐานแล้วดูเหมือนว่าทุกอย่างจะมีขนาดสูงสุด 1 กิกะบิต

โดยการตั้งค่าbond-xmit-hash-policy layer3+4ฉันสามารถใช้iperf -c S1 -P2เพื่อส่งบนอินเทอร์เฟซสลาฟสองตัว แต่ที่ฝั่งเซิร์ฟเวอร์การรับจะยังคงเกิดขึ้นในอินเทอร์เฟซสลาฟเดียวเท่านั้นและทรูพุตทั้งหมดจึงถูก จำกัด ที่ 1Gbit / s บนสองอินเตอร์เฟสทาสเซิร์ฟเวอร์แสดง ~ 100MB / s บนหนึ่งอินเตอร์เฟสอินเทอร์เฟซ หากไม่ได้ตั้งค่าbond-xmit-hash-policyการส่งจะ จำกัด อยู่เพียงหนึ่งอินเทอร์เฟซของทาส

ฉันอยู่ภายใต้การแสดงผลที่ LACP ควรอนุญาตให้ใช้การเชื่อมต่อแบบบันเดิลเช่นอนุญาตให้มีการถ่ายโอน scp เพียงครั้งเดียวเพื่อใช้อินเทอร์เฟซที่มีอยู่ทั้งหมดระหว่างสองโฮสต์

ความเข้าใจของฉันเกี่ยวกับ LACP ผิดหรือเปล่า? หรือฉันพลาดตัวเลือกการกำหนดค่าบางแห่ง ข้อเสนอแนะหรือเบาะแสสำหรับการสอบสวนจะได้รับการชื่นชมมาก!

คำตอบ:


18

คำอธิบายที่รวดเร็วและสกปรกคือการสื่อสารเพียงบรรทัดเดียวโดยใช้ LACP จะไม่แยกแพ็คเก็ตผ่านหลายอินเตอร์เฟส ตัวอย่างเช่นถ้าคุณมีแพ็กเก็ตสตรีมมิ่งการเชื่อมต่อ TCP เดียวจาก HostA ไปยัง HostB มันจะไม่ขยายส่วนต่อประสานเพื่อส่งแพ็กเก็ตเหล่านั้น ฉันได้ดู LACP มากที่นี่เมื่อเร็ว ๆ นี้สำหรับวิธีการแก้ปัญหาที่เรากำลังดำเนินการอยู่และนี่เป็นความเข้าใจผิดทั่วไปที่ 'เชื่อมโยง' หรือ 'เชื่อมต่อ' เครือข่ายหลายอินเตอร์เฟสด้วย LACP ให้ "ปริมาณงาน" ของอินเทอร์เฟซรวม ผู้ค้าบางรายได้สร้างไดรเวอร์ที่เป็นกรรมสิทธิ์ซึ่งจะกำหนดเส้นทางผ่านอินเตอร์เฟสหลายตัว แต่มาตรฐาน LACP ไม่ได้มาจากสิ่งที่ฉันได้อ่าน นี่คือลิงค์ไปยังไดอะแกรมที่เหมาะสมและคำอธิบายที่ฉันพบจาก HP ขณะค้นหาปัญหาที่คล้ายกัน: http://www.hp.com/rnd/library/pdf/59692372.pdf


1
ทั้งหมดนั้นสมเหตุสมผล ฉันไม่รู้ว่าทำไมฉันไม่พบความเข้าใจผิดของฉันในไม่ช้า ฉันเพิ่งจะได้รู้รอบคำค้นหาที่ถูกต้องและหน้าเอกสาร ดูเหมือนว่าขึ้นอยู่กับฮาร์ดแวร์เครือข่ายที่เราอาจจะสามารถเปลี่ยนโหมด hashing src-dest และโชคดีในการรับส่งข้อมูลแบบหลายอินเตอร์เฟส แต่ฉันคิดว่าในขั้นตอนนี้ฉันจะมีความสุขกับสิ่งที่เรามี ขอบคุณสำหรับคำชี้แจงและลิงค์ที่มีประโยชน์มาก
เซทเท

ดีใจที่ได้ช่วยเหลือ ฉันได้อ่านมากเกี่ยวกับเรื่องนี้เมื่อเร็ว ๆ นี้พยายามที่จะได้รับการชี้แจงเกี่ยวกับคำศัพท์ที่เกี่ยวข้องกับการเดินสายไฟและการเชื่อมที่ใช้แตกต่างกันโดยผู้ขายที่แตกต่างกัน ฉันพบว่าด้านนอกของมาตรฐานเฉพาะเช่นผู้ที่กำหนดโดย IEEE ผู้ขายมักจะใช้คำบางคำสลับกัน ...
ไมค์เนย์เลอร์

6
เอกสารนี้ไม่สามารถใช้ได้กับ URL ดั้งเดิมอีกต่อไป แต่ยังสามารถเข้าถึงได้ผ่าน Internet Archive: web.archive.org/web/20030324105208/http://www.hp.com/rnd/…
smbear

3

bond-xmit-hash-policy layer3+4ตั้งค่าการปรับสมดุลโหลดจากเซิร์ฟเวอร์ต้นทางของคุณเป็นสวิตช์ ไม่ได้ตั้งค่าอัลกอริทึมการปรับสมดุลโหลดจากสวิตช์ของคุณไปยังเซิร์ฟเวอร์ที่สอง ที่เกือบจะแน่นอนยังคงเป็นชั้นที่ 2 หรือชั้นที่ 3 ที่สมดุลนั่นคือไม่ได้เลย


2

ก่อนอื่นเมื่อคุณใช้ไดรเวอร์ทีมที่จะสร้างโอเวอร์เฮดและลดปริมาณงานสูงสุดที่คาดไว้ซึ่งคือ ~ 940 MB / s ในอะแดปเตอร์ 1GB โดย ~ 10%

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

ข้อควรพิจารณาอีกประการคือ iperf หนึ่งเธรดอาจไม่ได้รับความเร็วสูงสุด สำหรับ 1GB, 2-6 เธรดน่าจะเหมาะกว่าคุณสามารถใช้สคริปต์ทุบตีง่ายๆเพื่อเปิดหลายเธรดในเวลาเดียวกัน

สำหรับ Intel NIC แต่ RSS และฮาร์ดแวร์ RSC สามารถส่งผลกระทบต่อปริมาณงานบน Broadcom ตรวจสอบให้แน่ใจว่า TOE ใช้งานได้

แม้ว่าขั้นตอนที่หนึ่งจะเป็นการลบ LAGs และลองทดสอบการรับส่งข้อมูล 1 พอร์ตในแต่ละระบบเพื่อดูว่าได้รับปริมาณงานเท่าใดให้ทำเช่นนี้กับพอร์ตทั้งหมดจากนั้นลอง 2 LACP เป็นสัตว์ร้ายที่จะติดตั้ง ถูกและฉันไม่เคยลองติดตั้งสวิตช์ HP เพียงแค่ Force10 (pre-Dell)

นอกจากนี้ทำไมถึงมีการสลับคู่


ตามคำตอบอื่น ๆ ที่อธิบายปัญหาพื้นฐานคือความเข้าใจของฉัน LACP แต่เพียงเพื่อกรอกภาพ: กล่องลินุกซ์กำลังใช้ไดรเวอร์พันธะของเคอร์เนล แต่ละอินเทอร์เฟซแต่ละตัวสามารถพุชทรูพุตความเร็วใกล้เคียงสูงสุด (ประมาณ 110-117MB / s ขึ้นอยู่กับทราฟฟิกอื่น ๆ ) ดังนั้นฉันแค่ต้องการเพิ่มแบนด์วิดท์นั้นแทนที่จะปรับ NIC แต่ละตัว ในส่วนของสวิทช์นั้นเรามีสำนักงานหลายแห่งและมีสวิทช์แบบรางที่มีไฟเบอร์ mux / demux และบิตอื่น ๆ และบ็อบในทาง ฉันมีทั้งเซิร์ฟเวอร์ในสวิตช์ HP 2920-48G หนึ่งตัวสำหรับการทดสอบ
เซทเท

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