NGINX QUIC Protocol Multiplexing for Multi-Protocol UDP Ports
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The existing scenario of using QUIC based on NGINX is limited as it only supports HTTP/3.0 and does not support other application layer protocols, leading to increased UDP port overhead due to the need for separate ports for each protocol.
Innovation Solution
Integrate a QUIC protocol stack on the NGINX server to process QUIC messages and derive application layer data, allowing multiple protocols like HTTP/1.1, HTTP/2.0, and RTMP to share the same UDP port, reducing port overhead.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If separate UDP ports are assigned for each application layer protocol, then each protocol can be independently supported, but UDP port overhead increases
Solution Approach 1:
The patent implements a universal QUIC protocol stack that can handle multiple application layer protocols (HTTP/1.1, HTTP/2.0, HTTP/3.0, RTMP, etc.) through a single UDP port. The protocol stack includes a multiplexer that routes different application protocols to appropriate processing modules, enabling one port to serve multiple functions rather than requiring separate ports for each protocol.
Solution Approach 2:
The patent introduces a multiplexer as an intermediary component between the QUIC protocol stack and various application layer protocols. This multiplexer acts as a mediator that receives UDP packets, identifies the application protocol type, and directs them to the corresponding processing module, thereby enabling protocol diversity without requiring separate ports for each protocol.
2Adaptability or versatility
If only HTTP/3.0 is supported on port 443, then QUIC-based NGINX works for web traffic, but other application layer protocols cannot be supported
Solution Approach 1:
The patent segments the QUIC protocol stack into distinct functional modules, each responsible for a specific application layer protocol (HTTP/1.1 module, HTTP/2.0 module, HTTP/3.0 module, RTMP module, etc.). This segmentation allows each module to process its specific protocol independently while sharing the common QUIC transport layer, thereby supporting multiple protocols without overwhelming complexity.
Solution Approach 2:
The patent implements a dynamic protocol selection mechanism where the multiplexer can adaptively route different application protocols to appropriate processing modules based on the incoming data characteristics. This dynamic approach allows the system to handle protocol diversity flexibly, switching between different processing paths as needed without requiring static dedicated paths for each protocol.
3Quantity of substance
If multiple application layer protocols share the same UDP port, then port overhead is reduced, but protocol identification and routing become more complex
Solution Approach 1:
The patent uses protocol identification mechanisms similar to color recognition to distinguish between different application layer protocols. By examining specific fields in the UDP packet (such as payload markers, header structures, or negotiation protocols), the system can identify the protocol type and route it accordingly. This approach allows clear protocol differentiation without requiring separate ports, as each protocol has its own identifiable 'signature' or 'color' within the shared port.
Data Source
AI summary
Disclosed are a data processing method, an electronic device, and a computer-readable storage medium. During uplink transmission, upon receiving a first QUIC message from a client device over a target UDP port, an NGINX server sends the first QUIC message to the QUIC protocol stack, such that the QUIC protocol stack processes the first QUIC message to derive application layer data, and sends a first data stream including a first application layer data packet to an upstream server. During downlink transmission, the NGINX server receives a second data stream from the upstream server, caches a second application layer data packet included in the second data stream into a second cache, and delivers the second application layer data packet to the QUIC protocol stack for processing when the QUIC protocol stack is writable to derive a second QUIC message and sends the second QUIC message to the client device.


