Skip to content
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

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

Draft
wants to merge 23 commits into
base: main
Choose a base branch
from

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)

Closes: #3516

Testing

Test modifications are required to ensure normal QUIC/UDP endpoint is still supported when you set the QUIC_EXECUTION_CONFIG_FLAG_QTIP parameter.

Documentation

N/A

@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 0% with 34 lines in your changes missing coverage. Please review.

Project coverage is 86.55%. Comparing base (47042ad) to head (455b833).

Files with missing lines Patch % Lines
src/core/connection.c 0.00% 34 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4803      +/-   ##
==========================================
+ Coverage   85.92%   86.55%   +0.62%     
==========================================
  Files          56       56              
  Lines       17425    17459      +34     
==========================================
+ Hits        14973    15111     +138     
+ Misses       2452     2348     -104     

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

@ProjectsByJackHe ProjectsByJackHe added Partner: SQL By or For the SQL team Area: Lola Related to low latency work Area: API labels Feb 13, 2025
@@ -6754,6 +6754,26 @@ QuicConnParamSet(
break;
#endif

#ifdef QUIC_API_ENABLE_PREVIEW_FEATURES
Copy link
Member

@nibanks nibanks Feb 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We only have these ifdef checks in the public headers. We always compile in the preview features internally.

Comment on lines +213 to +221
//
// Whether to use QTIP on sends for this connection.
//
BOOLEAN SendViaQtip : 1;

//
// Whether to allow QTIP on receives for this connection.
//
BOOLEAN RecvViaQtip : 1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are you separating out send/receive? I'd recommend just using one variable, UseQTIP.

Comment on lines 926 to +931
#define QUIC_PARAM_CONN_SEND_DSCP 0x05000019 // uint8_t

#ifdef QUIC_API_ENABLE_PREVIEW_FEATURES
#define QUIC_PARAM_CONN_SEND_QTIP 0x0500001A // uint8_t (BOOLEAN)
#define QUIC_PARAM_CONN_RECV_QTIP 0x0500001B // uint8_t (BOOLEAN)
#endif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#define QUIC_PARAM_CONN_SEND_DSCP 0x05000019 // uint8_t
#ifdef QUIC_API_ENABLE_PREVIEW_FEATURES
#define QUIC_PARAM_CONN_SEND_QTIP 0x0500001A // uint8_t (BOOLEAN)
#define QUIC_PARAM_CONN_RECV_QTIP 0x0500001B // uint8_t (BOOLEAN)
#endif
#define QUIC_PARAM_CONN_SEND_DSCP 0x05000019 // uint8_t
#ifdef QUIC_API_ENABLE_PREVIEW_FEATURES
#define QUIC_PARAM_CONN_SEND_QTIP 0x0500001A // uint8_t (BOOLEAN)
#define QUIC_PARAM_CONN_RECV_QTIP 0x0500001B // uint8_t (BOOLEAN)
#endif

As I indicated in the other comment, let's just use one new value QUIC_PARAM_CONN_QTIP.

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
2 participants