- QUIC adalah protokol yang diharapkan membawa perubahan besar dalam peningkatan performa aplikasi web, tetapi performanya tidak memenuhi harapan
- Makalah ini menganalisis performa QUIC secara sistematis pada jaringan berkecepatan tinggi
Abstrak
- Pada internet berkecepatan tinggi, stack UDP+QUIC+HTTP/3 menunjukkan penurunan throughput data hingga 45,2% dibanding TCP+TLS+HTTP/2
- Kesenjangan performa antara QUIC dan HTTP/2 makin besar seiring meningkatnya bandwidth dasar
- Masalah ini diamati pada klien transfer data ringan dan browser web utama (Chrome, Edge, Firefox, Opera), beragam host (desktop, mobile), serta berbagai jaringan (broadband kabel, seluler)
- Tidak hanya memengaruhi transfer file, tetapi juga berbagai aplikasi seperti streaming video (penurunan bitrate video hingga 9,8%) dan penjelajahan web
- Akar penyebab diidentifikasi melalui analisis pelacakan paket yang ketat serta profiling kernel dan ruang pengguna
- Secara khusus, overhead pemrosesan di sisi penerima tinggi akibat paket data yang berlebihan dan ACK QUIC di ruang pengguna
- Makalah ini menyajikan rekomendasi konkret untuk mengurangi masalah performa yang diamati
Akar penyebab penurunan performa
- Terjadi overhead pemrosesan paket yang berlebihan pada level kernel di sisi penerima
- QUIC tidak menggunakan UDP GRO (Generic Receive Offload), sehingga harus memproses jauh lebih banyak paket dibanding TCP
- Hal ini dikonfirmasi dari jumlah pemanggilan fungsi
netif_receive_skb yang jauh lebih banyak pada QUIC
- Overhead pemrosesan paket berlebihan juga terjadi pada ruang pengguna untuk QUIC
- Ada overhead besar untuk memproses banyak paket yang diteruskan dari kernel
- Pembuatan ACK QUIC di ruang pengguna juga menjadi penyebab overhead
Usulan untuk mengurangi penurunan performa
- Mengadopsi UDP GRO di sisi penerima
- Mengurangi jumlah paket yang harus diproses oleh stack UDP sehingga menurunkan overhead kernel dan ruang pengguna
- Namun, menerapkan UDP GRO di berbagai lingkungan klien mungkin tidak mudah
- Meningkatkan solusi offloading seperti GSO/GRO agar sesuai untuk QUIC
- Mendukung offloading untuk rangkaian paket UDP dengan ukuran yang berbeda-beda
- Menambahkan pengaturan pacing yang tepat pada GSO untuk mencegah kemacetan jaringan
- Mengoptimalkan logika QUIC di sisi penerima
- Menunda pengiriman ACK QUIC untuk mengurangi overhead pembuatan respons
- Menggunakan
recvmmsg untuk membaca beberapa paket UDP sekaligus demi meningkatkan performa
- Menggunakan unduhan multi-thread
- Untuk file berukuran besar, unduhan multi-thread yang memanfaatkan beberapa inti CPU dapat meningkatkan performa penerimaan
- Namun, isu fairness perlu dipertimbangkan
1 komentar
Opini Hacker News