Skip to content

Add support for both Qtip and UDP traffic for Server Listeners. #4803

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 143 commits into from
Mar 31, 2025

Conversation

ProjectsByJackHe
Copy link
Contributor

@ProjectsByJackHe ProjectsByJackHe commented Feb 7, 2025

Description

Currently, we have an execution parameter (QUIC_EXECUTION_CONFIG_FLAG_QTIP) that you set to either process packets via QTIP or normal QUIC/UDP traffic.

For a server listener, that means you can only talk to clients with the same execution profile as you; you either deal over QTIP or QUIC/UDP.

This is inconvenient and sometimes a blocker when you want your listener to accept from clients with varying execution parameters (QTIP through the Azure load balancer, normal QUIC/UDP for on-prem clients)

Changes
The main behavior change is that now all Server listeners created will accept both QTIP and QUIC+udp traffic by default when XDP is configured and running correctly.

To support this new design and make testing a bit easier, we also add a knob (QUIC_SETTINGS) to control whether a connection created / listener created is going to send QUIC+udp/QTIP.

This pull-request also updates the behavior of QUIC_EXECUTION_CONFIG_FLAG_QTIP: If you set this flag, all client connections created will default to using QTIP unless otherwise specified. Note that the QUIC_EXECUTION_CONFIG_FLAG_QTIP does not impact server Listeners as they will always accept both QUIC/QTIP traffic assuming XDP is configured and running correctly.

This PR adds an API (connection Get/Set parameter) for client connections to specify whether the connection sends normal QUIC and/or TCP traffic.

Closes: #3516

Testing

Added a datatest to alternate between creating normal QUIC connections and QTIP connections, where they all ping the same listener.

Documentation

QTIPEnabled in QUIC_SETTINGS will be documented.

@ProjectsByJackHe ProjectsByJackHe requested a review from a team as a code owner February 7, 2025 20:49
@ProjectsByJackHe ProjectsByJackHe marked this pull request as draft February 7, 2025 20:49
Copy link

codecov bot commented Feb 7, 2025

Codecov Report

Attention: Patch coverage is 73.52941% with 9 lines in your changes missing coverage. Please review.

Project coverage is 87.23%. Comparing base (abf74b1) to head (a6a9c2e).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
src/core/connection.c 57.14% 3 Missing ⚠️
src/core/settings.c 82.35% 3 Missing ⚠️
src/core/connection_pool.c 66.66% 2 Missing ⚠️
src/core/listener.c 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4803      +/-   ##
==========================================
+ Coverage   84.98%   87.23%   +2.25%     
==========================================
  Files          57       57              
  Lines       17952    17982      +30     
==========================================
+ Hits        15256    15687     +431     
+ Misses       2696     2295     -401     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ProjectsByJackHe ProjectsByJackHe added Partner: SQL By or For the SQL team Area: Lola Related to low latency work Area: API labels Feb 13, 2025
@ProjectsByJackHe ProjectsByJackHe merged commit ec50f1c into main Mar 31, 2025
425 of 427 checks passed
@ProjectsByJackHe ProjectsByJackHe deleted the jackhe/supp-multi-qtip branch March 31, 2025 17:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: API Area: Lola Related to low latency work Partner: SQL By or For the SQL team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support for QTIP and UDP on QUIC
4 participants