ฉันเห็นพฤติกรรมที่สับสนเกี่ยวกับอินเตอร์เฟสที่ถูกผูกมัดภายใต้ 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 ผิดหรือเปล่า? หรือฉันพลาดตัวเลือกการกำหนดค่าบางแห่ง ข้อเสนอแนะหรือเบาะแสสำหรับการสอบสวนจะได้รับการชื่นชมมาก!