Message ID | cover.1725935420.git.lucien.xin@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | net: implement the QUIC protocol in linux kernel | expand |
On Mon, Sep 09, 2024 at 10:30:15PM -0400, Xin Long wrote: > 4. Performance testing via iperf > > The performance testing was conducted using iperf [5] over a 100G > physical NIC, evaluating various packet sizes and MTUs: > > - QUIC vs. kTLS: > > UNIT size:1024 size:4096 size:16384 size:65536 > Gbits/sec QUIC | kTLS QUIC | kTLS QUIC | kTLS QUIC | kTLS > ──────────────────────────────────────────────────────────────────── > mtu:1500 1.67 | 2.16 3.04 | 5.04 3.49 | 7.84 3.83 | 7.95 > ──────────────────────────────────────────────────────────────────── > mtu:9000 2.17 | 2.41 5.47 | 6.19 6.45 | 8.66 7.48 | 8.90 > > - QUIC(disable_1rtt_encryption) vs. TCP: > > UNIT size:1024 size:4096 size:16384 size:65536 > Gbits/sec QUIC | TCP QUIC | TCP QUIC | TCP QUIC | TCP > ──────────────────────────────────────────────────────────────────── > mtu:1500 2.17 | 2.49 3.59 | 8.36 6.09 | 15.1 6.92 | 16.2 > ──────────────────────────────────────────────────────────────────── > mtu:9000 2.47 | 2.54 7.66 | 7.97 14.7 | 20.3 19.1 | 31.3 > > > The performance gap between QUIC and kTLS may be attributed to: > > - The absence of Generic Segmentation Offload (GSO) for QUIC. > - An additional data copy on the transmission (TX) path. > - Extra encryption required for header protection in QUIC. > - A longer header length for the stream data in QUIC. > This is not appealing. However, I can offer you one more possible advantage of in-kernel QUIC. You can think about adding iouring support for QUIC socket, because that could possibly chain the socket fastpath operations together which opens the door for more optimization. Just my two cents. Thanks!
On Fri, Sep 13, 2024 at 9:05 PM Cong Wang <xiyou.wangcong@gmail.com> wrote: > > On Mon, Sep 09, 2024 at 10:30:15PM -0400, Xin Long wrote: > > 4. Performance testing via iperf > > > > The performance testing was conducted using iperf [5] over a 100G > > physical NIC, evaluating various packet sizes and MTUs: > > > > - QUIC vs. kTLS: > > > > UNIT size:1024 size:4096 size:16384 size:65536 > > Gbits/sec QUIC | kTLS QUIC | kTLS QUIC | kTLS QUIC | kTLS > > ──────────────────────────────────────────────────────────────────── > > mtu:1500 1.67 | 2.16 3.04 | 5.04 3.49 | 7.84 3.83 | 7.95 > > ──────────────────────────────────────────────────────────────────── > > mtu:9000 2.17 | 2.41 5.47 | 6.19 6.45 | 8.66 7.48 | 8.90 > > > > - QUIC(disable_1rtt_encryption) vs. TCP: > > > > UNIT size:1024 size:4096 size:16384 size:65536 > > Gbits/sec QUIC | TCP QUIC | TCP QUIC | TCP QUIC | TCP > > ──────────────────────────────────────────────────────────────────── > > mtu:1500 2.17 | 2.49 3.59 | 8.36 6.09 | 15.1 6.92 | 16.2 > > ──────────────────────────────────────────────────────────────────── > > mtu:9000 2.47 | 2.54 7.66 | 7.97 14.7 | 20.3 19.1 | 31.3 > > > > > > The performance gap between QUIC and kTLS may be attributed to: > > > > - The absence of Generic Segmentation Offload (GSO) for QUIC. > > - An additional data copy on the transmission (TX) path. > > - Extra encryption required for header protection in QUIC. > > - A longer header length for the stream data in QUIC. > > > > This is not appealing. > > However, I can offer you one more possible advantage of in-kernel QUIC. > You can think about adding iouring support for QUIC socket, because that > could possibly chain the socket fastpath operations together which opens > the door for more optimization. > I haven't had the chance to try io_uring. From what I understand, it doesn’t require any changes to the protocol stack (Linux QUIC doesn’t support MSG_ZEROCOPY at this time). Thanks for offering this suggestion, it sounds worth exploring when using the QUIC socket in the future. Thanks.