อัปสองเส้นแต่อุโมงค์เดียว: การสลับ การกระจาย หรือการรวมลิงก์
การสลับเมื่อล้มเหลว การกระจายตามโฟลว์ และการรวมโฟลว์เดียวเป็นคำสัญญาที่ต่างกันสามอย่าง เส้นทางเริ่มต้นสองเส้นให้อย่างแรก แต่ไม่ได้ให้อีกสองอย่าง
สองเส้นอินเทอร์เน็ตทำให้ VPN พร้อมใช้งานมากขึ้นได้ และทำให้เร็วขึ้นสำหรับงานบางประเภท แต่กลไกเป็นตัวกำหนดว่าจะเกิดอย่างไหน การมีเส้นทางเริ่มต้นสองเส้นไม่ได้แปลว่าเชื่อมรวมกัน และอุโมงค์ที่บรรทุกการเชื่อมต่อภายในหลายพันรายการก็ยังเป็นโฟลว์ภายนอกเดียว การตั้งชื่อคำสัญญาก่อนคือความต่างระหว่างการออกแบบกับความผิดหวังราคาแพง ตารางด้านล่างแยกตัวเลือกตามสิ่งที่แต่ละแบบต้องการที่ปลายทางไกล และสิ่งที่การสูญเสียลิงก์ทำกับการถ่ายโอน
สามคำสัญญา และมีเพียงอย่างเดียวที่ต้องมีคู่ค้า
การสลับเมื่อล้มเหลวทำให้เส้นทางพร้อมใช้เมื่อลิงก์ที่ต้องการหายไป การกระจายด้วยแฮชโฟลว์กระจายโฟลว์อิสระไปยังอัปลิงก์ทั้งสอง การรวมโฟลว์เดียวทำให้การถ่ายโอนหนึ่งรายการใช้ลิงก์ทั้งสองพร้อมกัน สิ่งเหล่านี้เป็นผลิตภัณฑ์ต่างกันที่มีข้อกำหนดต่างกัน และมีเพียงอย่างสุดท้ายที่ต้องได้รับความร่วมมือจากสิ่งนอกเราเตอร์ของคุณ
| Mechanism | Far-end requirement | Effect on one transfer | What breaks under a link loss |
|---|---|---|---|
| Packet-spraying overlay | A cooperating endpoint that reassembles the stream | Packets can spread across both links | Reordering and buffering on the surviving path; its own recovery logic decides what continues |
| MPTCP subflows | A peer or proxy that accepts subflows | Subflows can share one connection | Surviving subflows continue if the peer keeps them alive |
| Flow-hash balancing | Nothing new; the existing tunnel endpoint is enough | One outer flow still follows one link | Flows hashed onto the dead link move; established sessions break |
| Link failover | Nothing new | One path at a time; the second link sits idle | The session stalls or restarts on the other link |
ไม่มีอะไรในตารางนั้นเป็นเหตุผลให้ซื้อเส้นที่สอง สิ่งที่ตารางทำคือป้องกันไม่ให้การออกแบบสลับถูกราวกับเป็นการเชื่อมรวม
ทำไมอุโมงค์จึงดูเหมือนโฟลว์เดียวสำหรับเราเตอร์
เราเตอร์ที่กระจายโหลดจะแฮชที่อยู่ต้นทางและปลายทางพร้อมพอร์ต แล้วส่งโฟลว์ทั้งหมดไปยังที่ที่แฮชชี้ อุโมงค์ VPN คือโฟลว์หนึ่งเช่นนั้นจากมุมมองของเราเตอร์ ไม่ว่าอะไรจะทำงานอยู่ข้างใน การเชื่อมต่อภายในไม่เคยไปถึงการตัดสินใจของแฮช เพราะส่วนหัวภายนอกกำหนดเส้นทางไว้แล้ว นั่นคือเหตุผลที่อัปลิงก์เส้นที่สองเพิ่มความจุรวมเป็นสองเท่าให้ผู้ใช้จำนวนมากได้ และไม่เปลี่ยนอะไรในการถ่ายโอนใหญ่ของผู้ใช้คนเดียว
อุโมงค์แยกสองอันให้ผู้สมัครสองรายได้ แต่ยังต้องมีนโยบายที่ตั้งใจซึ่งจัดสรรทราฟฟิกและรักษาการตอบกลับไว้บนเส้นทางที่คำขอเดินทางไป การกำหนดเส้นทางแบบอสมมาตรเป็นผลลัพธ์ปกติของการข้ามขั้นตอนนั้น ขั้นต่ำคือนโยบายที่ระบุโฟลว์ ลิงก์ที่ต้องการ และลิงก์สำรอง
การเชื่อมรวมอีเทอร์เน็ตไม่ข้ามผู้ให้บริการที่ไม่เกี่ยวข้อง เพราะปลายทางไกลต้องเข้าร่วมในโปรโตคอลการรวมลิงก์ การเชื่อมรวมข้ามผู้ให้บริการอินเทอร์เน็ตสองรายเป็นโครงการวิจัย เว้นแต่จะมีปลายทางที่ให้ความร่วมมือ
สิ่งที่ TCP หลายเส้นทางต้องการที่ปลายทั้งสอง
เอกสาร Multipath TCP ของ Linux อธิบายโฟลว์ย่อยหลายรายการที่เป็นของการเชื่อมต่อเดียว การสนับสนุนของเคอร์เนลที่ปลายหนึ่งไม่เปลี่ยนอะไรโดยลำพัง เพราะคู่ตรงข้ามก็ต้องยอมรับโฟลว์ย่อยเหล่านั้นด้วย พร็อกซีที่ฝั่งไกลเป็นการจัดวางทั่วไปอีกแบบ และกลายเป็นองค์ประกอบที่มีความจุและความพร้อมใช้งานของตัวเองที่ต้องวางแผน ตรรกะเดียวกันตัดคำตอบง่ายๆ สำหรับ WireGuard ออก เพราะการขนส่งเป็น UDP: MPTCP เพิ่มโฟลว์ย่อย TCP และไม่สามารถรวมอุโมงค์นั้นได้หากไม่มีสิ่งอื่นในการออกแบบ
ตรวจสอบว่าคุณลักษณะของเคอร์เนลเปิดอยู่หรือไม่ก่อนออกแบบโดยรอบ เพราะดิสทริบิวชันหลายตัวส่งมาโดยปิดไว้ สามคำสั่งนี้ตอบได้ในหนึ่งนาที
sysctl net.mptcp.enabled
ss -M | head
ip mptcp limits show
เลือกจากภาระงาน ไม่ใช่จากโบรชัวร์
หากภาระงานเป็นเซสชันอิสระจำนวนมาก การกระจายด้วยแฮชโฟลว์เพิ่มความจุได้โดยไม่ต้องมีความร่วมมือที่ปลายทางไกล หากเป็นการถ่ายโอนใหญ่หนึ่งรายการ มีเพียงการออกแบบรวมลิงก์ที่จะช่วยได้ และการออกแบบนั้นต้องมีคู่ที่ให้ความร่วมมือ หากข้อกำหนดคือให้งานดำเนินต่อเมื่อลิงก์ตาย คำตอบคือการสลับ และทรูพุตของการถ่ายโอนเดียวไม่เกี่ยวข้อง
เขียนข้อกำหนดเป็นประโยคเดียวที่มีคำกริยาอยู่ในนั้น: สำรองหนึ่งชุดเสร็จเร็วเป็นสองเท่า หรือลิงก์ที่ล้มไม่ยุติเซสชัน เป้าหมายที่คลุมเครือสร้างการออกแบบที่ไม่มีใครยอมรับหรือปฏิเสธได้ จากนั้นตัดสินใจว่าปลายทางไกลเป็นอะไรได้ เพราะตัวเลือกที่ถูกที่สุดมักเป็นตัวที่ไม่ต้องการสิ่งใหม่ที่นั่น ข้อจำกัดนั้นกำจัดข้ออ้างในโบรชัวร์ส่วนใหญ่ก่อนการประชุมครั้งแรก
แยกคำสัญญาทั้งสามไว้ในเอกสารข้อกำหนด การออกแบบที่อ้างทั้งสามมักส่งมอบอย่างหนึ่งและสมมติอีกสองอย่างเงียบๆ ส่วนถัดไปทดสอบว่าส่งมอบสิ่งใดจริง
ทดสอบการถ่ายโอนหนึ่งและหลายรายการ แล้วดึงลิงก์ออก
เปรียบเทียบการถ่ายโอนต่อเนื่องหนึ่งรายการกับการถ่ายโอนแบบขนานหลายรายการไปยังปลายทางเดียวกัน และบันทึกการสูญเสีย ความหน่วง และการใช้ลิงก์แต่ละเส้น หากได้ประโยชน์เฉพาะกับเซสชันแบบขนาน นั่นชี้ไปที่การกระจายโฟลว์ ไม่ใช่การรวมโฟลว์เดียว ทดสอบการสูญเสียอัปลิงก์หนึ่งเส้นแยกต่างหาก เพราะความจุขณะที่ลิงก์ทั้งสองทำงานไม่บอกอะไรเกี่ยวกับการสลับสำหรับเซสชันที่สร้างไว้แล้ว บันทึกเส้นทาง ซ็อกเก็ต และตัวนับการส่งซ้ำก่อนและหลังการทดสอบแต่ละครั้ง
ip route show default
ip route get 10.80.0.5
mtr -n -c 20 -r 10.80.0.5
เมื่อการถ่ายโอนเดียวยังใช้อัปลิงก์หนึ่งเส้น การออกแบบกำลังทำสิ่งที่แฮชโฟลว์บ่งบอกอย่างถูกต้อง เมื่อการถ่ายโอนแบบขนานกระจายไปทั้งสองเส้น การกระจายทำงานแต่การรวมไม่ทำงาน บันทึกว่าการออกแบบรักษาคำสัญญาข้อใดจริง และการสนทนาเรื่องความจุครั้งถัดไปจะเริ่มจากหลักฐาน ไม่ใช่ข้ออ้างของผู้ขาย