Sparse Array Resequencing for Bonded Channel Data Segments
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Resequencing packets across multiple bonded channels is a time-intensive process that consumes considerable memory, as segments or packets may be received out of order, requiring significant memory resources to buffer missing segments until they are received.
Innovation Solution
A method and system for resequencing packets that uses a sparse array to efficiently manage and store segments, allowing for minimal memory usage and rapid processing by maintaining a counter for the next expected packet sequence number and using timeouts to determine if missing packets should be considered lost, thereby allowing continued processing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a resequencing buffer is used to store missing segments, then data delivery order is ensured, but memory consumption increases significantly
Solution Approach 1:
The resequencing buffer is divided into multiple channels, each responsible for storing segments with specific sequence numbers. This segmentation allows the system to only buffer segments that are actually missing, rather than allocating memory for all possible segments, thereby reducing overall memory consumption while maintaining reliable data delivery order.
Solution Approach 2:
Each channel in the bonded channel set maintains its own resequencing buffer with specific characteristics. The system applies different buffering strategies to different channels based on their individual segment reception patterns, allowing optimized memory usage for each channel's specific needs rather than using a uniform approach for all channels.
2Reliability
If segments are buffered and resequenced, then correct data order is maintained, but processing time increases
Solution Approach 1:
By dividing the resequencing task across multiple channels, each channel independently processes its segments without blocking others. This parallel segmentation of the resequencing process reduces the total processing time while ensuring correct data order through the sequence number tracking mechanism in each channel's buffer.
Solution Approach 2:
Segments are immediately placed into the appropriate channel buffer upon reception, with sequence numbers recorded in advance. This preliminary organization of segments by channel and sequence number eliminates the need for complex sorting operations later, reducing processing time while maintaining data order integrity.
3Reliability
If all segments are stored in memory, then no data loss occurs, but system resources are depleted
Solution Approach 1:
The memory resource is segmented into multiple channel-specific buffers rather than a single large buffer. Each buffer only needs to store segments for its specific channel, reducing the memory footprint per channel while collectively maintaining the ability to store all necessary segments across the bonded channel set.
Solution Approach 2:
The resequencing buffers dynamically allocate and deallocate memory based on actual segment reception needs. When segments are received out of order, memory is allocated only for those specific segments in the appropriate channel buffer, rather than reserving memory for all possible segments, thereby reducing overall memory resource consumption while preventing data loss.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A method, system, and computer program product for receiving and resequencing a plurality of data segments received on a plurality of channels of a bonding channel set, comprising determining if a sequence number of a received segment matches an expected sequence number. If so, the process includes forwarding the segment for further processing, incrementing the expected sequence number, and forwarding any queued packets corresponding to the expected sequence number and immediately succeeding sequence numbers less than a sequence number of annexed missing segment. If the sequence number of the received segment does not match the expected sequence number, the received segment is queued at a memory location. The address of this location is converted to a segment index. The segment index is stored in a sparse array. The sparse array is indexed by hashing the sequence number of the received segment. The system can be applied to communications conforming to the Data Over Cable System Interface Specification (DOCSIS) or a similar standard.