QUIC Scalable Sockets for Batched UDP Flow Handling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing UDP communication protocols face performance issues due to message-oriented operations, IP fragmentation, and shared socket configurations that lead to scaling bottlenecks and fate sharing, resulting in inefficient packet processing and synchronization challenges.
Innovation Solution
Implementing batched UDP packet processing and scalable sockets using QUIC, which includes send and receive APIs for batching and coalescing packets, and creating separate sockets for each client connection to manage UDP flows efficiently.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If UDP applications post small packets one at a time to avoid IP fragmentation, then IP fragmentation is avoided, but performance deteriorates due to excessive API calls and poor data path execution efficiency
Solution Approach 1:
The invention segments the packet processing task by introducing per-flow socket objects that can independently batch packets. Each socket object manages its own send buffer and receive buffer, allowing segmentation of the processing workload across multiple independent units without requiring single-packet sequential processing.
Solution Approach 2:
The invention merges multiple small packets into batches within each per-flow socket's buffer. By combining packets at the socket level before API calls, the system achieves both avoidance of IP fragmentation (through proper packet sizing) and improved performance (through reduced call frequency and batched processing).
2Device complexity
If a single shared socket object is used for all UDP connections, then socket management is simplified, but scaling performance deteriorates due to fate sharing and synchronized processing bottlenecks
Solution Approach 1:
The invention divides the single shared socket into multiple per-flow socket objects, each dedicated to a specific UDP connection. This segmentation eliminates fate sharing by isolating processing paths, allowing independent scaling of each connection without synchronizing across all connections, thereby resolving the scaling bottleneck.
Solution Approach 2:
The invention introduces dynamic socket creation where new per-flow socket objects are created on-demand when a new UDP connection is established. This dynamic approach allows the system to adapt to varying connection loads, creating only the necessary number of sockets to handle current traffic patterns, thus balancing complexity and performance.
Data Source
AI summary
A system having scalable sockets to support User Datagram Protocol (UDP) connections identifies a plurality of UDP connections, wherein a plurality of remote clients connect to corresponding ones of the plurality of UDP connections. Each one of a plurality of UDP sockets is associated with a corresponding one of the plurality of UDP connections. A network stack lookup for UDP packets in network traffic is performed using a network stack to identify the UDP socket corresponding to the remote client associated with each of the UDP packet. The UDP packets are buffered with a send buffer and a receive buffer for the UDP socket corresponding to the remote client associated with the UDP packets as determined by the network stack lookup to support communication over the plurality of UDP connections using the plurality of UDP sockets. The system thereby operates more efficiently and/or is more scalable.


