In-Array Linked List Identifier Pool for SDN Memory Efficiency
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In Software Defined Networks (SDNs), existing identifier management systems face challenges in balancing memory space efficiency and performance, particularly in allocating specific identifiers during pool state recovery, which can lead to unnecessary system interruptions.
Innovation Solution
An in-array linked list identifier pool data structure is designed to provide O(1) operation performance, memory space efficiency, and the capability to allocate specific identifiers, decoupling pool size from identifier size, without requiring extra metadata, allowing for efficient recovery of identifier pools during system restarts.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If traditional identifier management systems are used in SDN, then memory space efficiency may be improved, but allocation performance and system recovery capability deteriorate due to O(n) complexity and system interruptions
Solution Approach 1:
The identifier pool is segmented into fixed-size blocks arranged in an array structure, where each block represents a contiguous range of identifiers. This segmentation allows O(1) allocation by simply moving block pointers forward without iterating through individual identifiers, thus improving allocation performance while maintaining memory efficiency through compact array storage.
Solution Approach 2:
The system pre-organizes identifiers into fixed-size blocks with metadata stored upfront, including block boundaries and availability status. This preliminary structuring enables constant-time allocation operations during runtime, as the system can directly compute available blocks without searching or interrupting ongoing operations, thereby enhancing both allocation performance and system recovery capability.
2Quantity of substance
If traditional identifier management systems are used, then memory usage may be optimized, but system recovery during restarts deteriorates due to interruptions and lack of O(1) access
Solution Approach 1:
The identifier pool structure pre-computes and stores metadata about block boundaries, sizes, and availability states during initialization. This preliminary action enables the system to rapidly recover after restarts by directly accessing the pre-organized block structure without needing to re-scan or re-allocate identifiers, thus improving reliability while maintaining memory efficiency through the compact array representation.
3Adaptability or versatility
If flexible identifier allocation is implemented, then adaptability improves, but memory overhead increases due to extra metadata requirements
Solution Approach 1:
The system segments the identifier space into fixed-size blocks, where each block contains multiple identifiers. This segmentation provides flexibility by allowing the system to allocate entire blocks or ranges of identifiers efficiently, while the fixed block size constraint prevents excessive metadata overhead. The metadata for each block is minimal, storing only boundary information and availability status, thus balancing adaptability with memory efficiency.
Data Source
AI summary
A scheme for managing identifier pool in computer memory is provided. A memory pool array is created within a computer memory, wherein the array reserves locations in the computer memory for use by a software application. Each location in the array represents an identifier. A start identifier and end identifier are specified for the memory pool array, wherein the start identifier specifies a starting location of the array and the end identifier specifies an end location of the array. The memory pool array is initialized by creating an in-array linked list pool of identifiers for use by the software application. An identifier is allocated from the memory pool array for use by the application and released back to the memory pool array after use by the application, wherein allocation and release are managed by a set of pool control variables in the in-array linked list pool.


