NVMe/TCP Namespace Discovery Using Bulk Requests on High-Latency Links
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
High latency in long-haul networks poses challenges for Non-Volatile Memory Express (NVMe) over TCP connections, leading to prolonged connection times for accessing remote storage, which existing solutions have not effectively addressed.
Innovation Solution
Optimized methods for identifying and transmitting namespace requests within a TCP window size, utilizing bulk requests for namespace descriptors, and processing responses in parallel to reduce connection times.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If traditional sequential namespace requests are used, then connection reliability is maintained, but connection establishment time increases significantly in high-latency networks
Solution Approach 1:
The patent calculates the maximum number of namespaces that can be requested within a single TCP window before acknowledgment is received. This preliminary calculation enables the system to prepare and send multiple namespace requests in advance without waiting for individual acknowledgments, thereby reducing connection establishment time while maintaining connection reliability through pre-computed request batching.
Solution Approach 2:
The patent segments the namespace discovery process into two phases: a bulk request phase where multiple namespace requests are sent simultaneously within a TCP window, and a response processing phase where namespace descriptors are received and processed. This segmentation allows parallel transmission of multiple requests while maintaining manageable complexity through structured response handling.
2Productivity
If multiple namespace requests are sent in parallel, then connection establishment time is reduced, but TCP window size limitations may cause request failures
Solution Approach 1:
The patent dynamically adjusts the number of parallel namespace requests based on the TCP window size parameter. By calculating the maximum number of requests that can fit within the available TCP window (considering request size, response size, and window size), the system optimizes parallel request transmission to maximize productivity while ensuring reliability by not exceeding TCP buffer limitations.
3Loss of time
If bulk namespace requests are implemented, then connection establishment time decreases, but handling of partial responses becomes more complex
Solution Approach 1:
The patent implements feedback mechanisms to track which namespace requests have been fulfilled and which require additional requests. The system monitors the relationship between sent requests and received namespace descriptors, using this feedback to determine when to send supplementary requests for namespaces not yet described. This structured feedback approach reduces response processing complexity while maintaining fast connection establishment.
4Ease of operation
If sequential acknowledgment waiting is used, then request-response matching is simplified, but overall connection setup time increases
Solution Approach 1:
The patent assigns unique identifiers to each namespace request before sending them in parallel. This preliminary identification scheme enables the system to match responses to requests without sequential acknowledgment waiting. The pre-assigned identifiers provide a straightforward matching mechanism that maintains ease of operation while enabling parallel request processing to reduce total connection setup time.
Data Source
AI summary
A method for use by a computing device, comprising: receiving a bulk request for namespace information, the bulk request being a Non-Volatile Memory Express (NVMe) command that contains a Controller and Namespace Structure (CNS) code, the CNS code being arranged to indicate that the namespace information for multiple namespaces should be returned in response to the bulk request; identifying a plurality of namespaces, the plurality of namespaces being identified based on an offset value and a length value that are provided in the bulk request; transmitting a bulk request response that contains namespace descriptors for each of the plurality of namespaces.


