Shared Kernel Sliding Window Buffer for Concurrent Streaming
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current content delivery systems face challenges in efficiently streaming content to multiple devices due to high system memory and processing power requirements, leading to network bottlenecks and poor user experience.
Innovation Solution
Implementing a shared sliding window buffer in kernel space allows for concurrent streaming to multiple devices, reducing the need for multiple buffers and minimizing context/mode switching, thereby optimizing system performance and stream quality.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If TCP-based protocols are used to deliver content streams concurrently to multiple devices, then reliable data transmission is achieved, but system memory usage and processing power requirements increase significantly
Solution Approach 1:
The patent merges multiple separate sliding window buffers into a single shared buffer in kernel space that serves multiple TCP connections simultaneously. This consolidation eliminates redundant buffer allocations while maintaining the reliability of individual connection management, directly reducing memory usage without compromising data transmission reliability
Solution Approach 2:
The shared sliding window buffer is designed to serve multiple functions: it handles data transmission for multiple TCP connections, manages sliding window protocols for different clients, and coordinates with user-space applications all through a single buffer structure. This multi-functionality reduces the total memory required compared to having dedicated buffers for each connection
2Ease of operation
If separate sliding window buffers are allocated for each TCP connection, then connection management is simplified, but the number of buffers and memory consumption increase
Solution Approach 1:
Multiple connection-specific buffer management functions are merged into a single shared buffer structure in kernel space. The buffer maintains internal organization to handle different TCP connections while presenting a unified management interface, reducing the total number of buffer objects from N (one per connection) to 1 (shared buffer)
Solution Approach 2:
The shared sliding window buffer acts as an intermediary between user-space applications and the network stack. It mediates data flow for multiple TCP connections, translating individual connection requirements into unified buffer management operations, thereby simplifying the overall system architecture
3Reliability
If user mode and kernel mode switching is performed for each socket operation, then memory protection and system stability are maintained, but processing overhead increases
Solution Approach 1:
The sliding window buffer and its management structures are pre-established in kernel space before socket operations begin. Data structures, buffer pointers, and connection state information are prepared in advance in the kernel, eliminating the need for repeated mode switching during actual data transmission operations
Solution Approach 2:
Multiple socket operations that would traditionally require separate mode switches are merged into unified kernel-space operations. The shared buffer allows multiple connections to be managed through single kernel-space functions, reducing the frequency of user-mode to kernel-mode transitions while maintaining system stability
Data Source
AI summary
Systems and methods are described for streaming content to multiple devices from a shared sliding window buffer in kernel space, thereby reducing memory resource use and minimizing context/mode switching between kernel space and user space. For example, concurrent streaming sessions may be seen, e.g., as a live multimedia stream. If a live video is being transmitted as a multicast stream to many devices, rather than each device having a corresponding sliding window buffer in kernel space, each device will share a shared sliding buffer in kernel space. The sliding window buffer size will be at least large enough to stream the slowest connection speed and can be, e.g., multiple times as large as necessary, in case of the issues beyond the worst-case scenario. The system then transmits chunks of the content from the shared sliding window buffer to each of the plurality of client devices.


