Network Packet Buffer Descriptor Allocation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Network packet receiving management using array data structures often results in out-of-order issues due to limited storage and resource efficiency, leading to decreased interface utilization efficiency and increased hardware costs.
Innovation Solution
A network packet receiving management method that dynamically allocates and reallocates packet descriptors to free data blocks within a buffer unit, ensuring that packet descriptors are associated with data blocks only when necessary, thereby preventing out-of-order issues and optimizing hardware resource usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If array data structure is used for packet storage, then storage space and system resource are reduced, but packet out-of-order issue occurs when packets are replied in different order
Solution Approach 1:
The buffer is divided into multiple data blocks (first data blocks and second data blocks), each capable of storing packets independently. Packet descriptors are dynamically allocated to these segments, allowing flexible packet management that prevents out-of-order issues while maintaining efficient storage utilization.
Solution Approach 2:
The patent implements dynamic allocation and reallocation of packet descriptors to data blocks based on actual packet receiving conditions. The system can switch between first data blocks and second data blocks as needed, adapting to varying packet arrival patterns and preventing out-of-order delivery issues.
2Reliability
If linked-list data structure is used for packet storage, then packet ordering is maintained, but system resource and storage space increase
Solution Approach 1:
Instead of using a linked-list structure that requires additional pointers and memory for each packet, the patent segments the buffer into multiple data blocks with direct array indexing. This allows packet ordering to be maintained through the structured array layout rather than through complex pointer chaining, reducing storage overhead.
Solution Approach 2:
The patent changes the data structure parameter from a linked-list based approach to an array-based approach with dynamic descriptor allocation. This parameter change maintains packet ordering capability while significantly reducing the storage space and system resources required for packet management.
3Device complexity
If array data structure is used with fixed packet descriptors, then hardware interface is simplified, but receiving efficiency decreases due to bubble issues
Solution Approach 1:
The patent introduces dynamic allocation and reallocation of packet descriptors to data blocks based on actual packet receiving conditions. This dynamic mechanism prevents bubble issues and maintains high receiving efficiency while keeping the hardware interface simple through direct array indexing and descriptor manipulation.
Solution Approach 2:
The system uses self-service mechanisms where packet descriptors automatically point to appropriate data blocks based on the receiving sequence. The dynamic reallocation process ensures that packets are always stored in the correct data blocks without requiring complex external management, maintaining both simplicity and efficiency.
Data Source
AI summary
A method of network packet receiving management includes: providing a buffer unit which includes a plurality of data blocks with a first packet number and a plurality of data blocks with a second number of packets, wherein the data blocks with the first packet number are for storing a plurality of first network packets according to a first array data structure, respectively, the first array data structure has a plurality of first packet descriptors corresponding to the first packet number, and the data blocks with the second number of packets do not correspond to any packet descriptor; and when a first data block corresponding to a first packet descriptor successively receives a first network packet, changing the first packet descriptor corresponding to the first data block to indicate a second data block which does not correspond to any packet descriptor.


