การใช้งาน QUIC ใน Linux Kernel แสดงให้เห็นอนาคตที่มีแววแม้จะมีช่องว่างด้านประสิทธิภาพในปัจจุบัน

ทีมชุมชน BigGo
การใช้งาน QUIC ใน Linux Kernel แสดงให้เห็นอนาคตที่มีแววแม้จะมีช่องว่างด้านประสิทธิภาพในปัจจุบัน

ความพยายามครั้งแรกของ Linux kernel ในการรองรับ QUIC ซึ่งเป็นโปรโตคอลอินเทอร์เน็ตสมัยใหม่ที่ขับเคลื่อนการรับส่งข้อมูลบนเว็บส่วนใหญ่ในปัจจุบัน ได้จุดประกายการถอดถอนอย่างเข้มข้นในชุมชนเกี่ยวกับการแลกเปลี่ยนด้านประสิทธิภาพและศักยภาพในอนาคต แม้ว่า QUIC จะสัญญาว่าจะให้การเชื่อมต่อที่เร็วขึ้นและประสบการณ์บนมือถือที่ดีกว่า แต่ผลการทดสอบประสิทธิภาพเบื้องต้นเผยให้เห็นช่องว่างด้านประสิทธิภาพที่สำคัญ ทำให้นักพัฒนาตั้งคำถามว่าประโยชน์ที่ได้รับนั้นคุ้มค่ากับต้นทุนหรือไม่

การตรวจสอบประสิทธิภาพในความเป็นจริงทำให้เกิดความกังวล

การใช้งานใน kernel เบื้องต้นแสดงตัวเลขประสิทธิภาพที่น่าเป็นห่วงซึ่งได้รับความสนใจจากชุมชน ในการเปรียบเทียบโดยตรง การใช้งาน QUIC ใหม่ให้ throughput เพียงประมาณหนึ่งในสี่ของ TCP แบบดั้งเดิมในการทดสอบบางอย่าง โดย in-kernel TLS มีประสิทธิภาพดีกว่าเกือบสามเท่า ที่น่าเป็นห่วงมากยิ่งขึ้นคือ เมื่อปิดการเข้ารหัสทั้งหมด TCP แบบธรรมดายังคงมีประสิทธิภาพดีกว่า QUIC มากกว่าสี่เท่าในบางสถานการณ์

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

ผลการเปรียบเทียบประสิทธิภาพ:

  • In-kernel TLS เทียบกับ QUIC: TLS มีประสิทธิภาพดีกว่าประมาณ 3 เท่า
  • Plain TCP เทียบกับ QUIC (ปิดการเข้ารหัส): TCP มีประสิทธิภาพดีกว่ามากกว่า 4 เท่า
  • การใช้งาน QUIC ปัจจุบัน: ประมาณ 3-5 Gbps
  • Linux kernel TCP: ประมาณ 4.5 Gbps (แพ็กเก็ตปกติ), ประมาณ 24 Gbps (พร้อม large segmentation offload)
  • Userspace QUIC ที่ดีที่สุด ( msquic ): ประมาณ 7 Gbps

เครือข่ายมือถือขับเคลื่อนการใช้งาน QUIC แม้จะมีต้นทุนเซิร์ฟเวอร์

การถอดถอนเรื่องประสิทธิภาพมีความแตกต่างเชิงลึกมากขึ้นเมื่อพิจารณารูปแบบการใช้งานในโลกจริง สมาชิกชุมชนเน้นว่า QUIC ไม่ได้ถูกออกแบบมาเป็นหลักสำหรับแอปพลิเคชันเซิร์ฟเวอร์ที่มี throughput สูง แต่เพื่อแก้ไขปัญหาที่รบกวนผู้ใช้มือถือบนเครือข่ายที่ไม่เสถียร เมื่อผู้ใช้เปลี่ยนระหว่างการเชื่อมต่อ WiFi และเซลลูลาร์ การเชื่อมต่อ TCP แบบดั้งเดิมจะขาดหายไปทั้งหมด ในขณะที่ QUIC สามารถรักษา session ได้อย่างราบรื่น

QUIC จะทำงานได้ดี แต่ไม่ค่อยมีข้อได้เปรียบมากนักสำหรับการรับส่งข้อมูลระหว่างเครื่องจักรด้วยกัน การรับส่งข้อมูลระหว่างเครื่องจักรมักจะมีการเชื่อมต่อที่มีอายุยาวผ่านเครือข่ายที่ค่อนข้างดี

ปรัชญาการออกแบบที่เน้นมือถือเป็นหลักนี้อธิบายว่าทำไมบริษัทอย่าง Google จึงยินดีที่จะยอมรับต้นทุนเซิร์ฟเวอร์ที่สูงขึ้น ซึ่งรายงานว่าสูงขึ้น 2 ถึง 3 เท่าในบางกรณี เพื่อมอบประสบการณ์ผู้ใช้ที่ดีกว่าสำหรับผู้ใช้สมาร์ทโฟน ความสามารถของโปรโตคอลในการหลีกเลี่ยง head-of-line blocking และจัดการการสูญหายของแพ็กเก็ตได้อย่างสง่างามมากขึ้น ทำให้มีคุณค่าเป็นพิเศษสำหรับผู้ใช้ในประเทศกำลังพัฒนาที่พึ่งพาการเข้าถึงอินเทอร์เน็ตผ่านมือถือเป็นหลัก

สстатิสติการใช้งานในปัจจุบัน:

  • QUIC จัดการการเชื่อมต่อส่วนใหญ่ไปยังเซิร์ฟเวอร์ของ Google
  • 40% ของการใช้งานบราวเซอร์ Chrome ใช้ QUIC
  • เติบโตประมาณ 5% ทุกสองปี
  • รองรับโดยเว็บเบราว์เซอร์หลักทั้งหมด
  • ใช้สำหรับการใช้งานโปรโตคอล HTTP/3

การเร่งความเร็วของฮาร์ดแวร์เป็นกุญแจสำคัญต่อประสิทธิภาพในอนาคต

ชุมชนยังคงมองโลกในแง่ดีเกี่ยวกับแนวโน้มระยะยาวของ QUIC โดยส่วนใหญ่พึ่งพาการสนับสนุนฮาร์ดแวร์ในอนาคตเพื่อลดช่องว่างด้านประสิทธิภาพ ผู้ขาย network interface card แสดงความสนใจในการให้คุณสมบัติการเร่งความเร็วเฉพาะสำหรับ QUIC คล้ายกับวิธีที่ TCP ได้รับประโยชน์จากการปรับปรุงฮาร์ดแวร์มานานหลายทศวรรษ การใช้งานใน kernel เป็นขั้นตอนแรกที่สำคัญในการเปิดใช้งานการสนับสนุนฮาร์ดแวร์ดังกล่าว แม้ว่าประสิทธิภาพซอฟต์แวร์ในปัจจุบันจะตามไม่ทันความคาดหวัง

นักพัฒนายังชี้ให้เห็นการปรับปรุงทางเทคนิคเฉพาะที่สามารถเพิ่มประสิทธิภาพได้อย่างมาก ซึ่งรวมถึงการเพิ่มการสนับสนุน segmentation offload การกำจัดการคัดลอกข้อมูลที่ไม่จำเป็น และการปรับปรุง encryption pipeline ฉันทามติชี้ให้เห็นว่าแม้ประสิทธิภาพในปัจจุบันจะน่าผิดหวัง แต่สถาปัตยกรรมพื้นฐานอนุญาตให้มีการปรับปรุงที่สำคัญในอนาคต

ข้อมูลจำเพาะทางเทคนิคของ QUIC:

  • มาตรฐานโปรโตคอล: RFC 9000 (พร้อมการอัปเดตใน RFC 9369)
  • สร้างขึ้นบนโปรโตคอล UDP
  • ประเภท socket ใหม่: IPPROTO_QUIC
  • รองรับการส่งข้อมูลหลายสตรีมพร้อมกัน
  • ใช้การเข้ารหัสแบบ end-to-end เสมอ
  • รวมถึง connection ID สำหรับการรักษาเซสชันข้ามการเปลี่ยนแปลง IP

บทสรุป

การใช้งาน QUIC ของ Linux kernel เป็นก้าวสำคัญในการพัฒนาโปรโตคอลอินเทอร์เน็ต แม้จะมีข้อจำกัดด้านประสิทธิภาพในปัจจุบัน แม้ว่าตัวเลข benchmark จะวาดภาพที่น่าเป็นห่วงสำหรับแอปพลิเคชันที่มี throughput สูง แต่ข้อได้เปรียบในการออกแบบของโปรโตคอลสำหรับผู้ใช้มือถือและเครือข่ายที่ไม่เสถียรยังคงขับเคลื่อนการใช้งาน การทดสอบจริงจะเป็นการดูว่าการเร่งความเร็วของฮาร์ดแวร์และการปรับปรุงซอฟต์แวร์สามารถลดช่องว่างด้านประสิทธิภาพได้เร็วพอที่จะทำให้ QUIC เป็นทางเลือกที่เป็นไปได้สำหรับการแทนที่ TCP ในสภาพแวดล้อมเซิร์ฟเวอร์หรือไม่ ในตอนนี้ อินเทอร์เน็ตดูเหมือนจะถูกกำหนดให้ทำงานบนแนวทางแบบผสม โดย QUIC ให้บริการผู้ใช้มือถือและ TCP จัดการงานหนักในศูนย์ข้อมูล

อ้างอิง: QUIC for the kernel