Storage Area Network Congestion Control via Queue Depth Throttling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Storage area networks (SANs) face congestion issues due to individual resources, even when no individual logical unit or namespace is congested, leading to data traffic buildup and performance degradation, with existing protocols lacking standardized solutions for mitigating congestion caused by credit-stalling or oversubscription.
Innovation Solution
Implementing a method within the SAN that issues congestion notifications to control the number of requests directed to congested resources by determining the current queue depth and comparing it to a maximum permissible queue depth, rejecting requests when exceeded, and dynamically adjusting the queue depth based on congestion state changes using coarse and fine reduction factors.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If typical flow controls operate at the storage protocol layer to limit data requests between host and logical unit, then individual logical unit congestion is managed, but aggregate target device congestion cannot be detected or controlled
Solution Approach 1:
The patent introduces an intermediary congestion notification mechanism that operates between the transport layer and storage protocol layer. This intermediary layer receives congestion notifications from the transport layer and translates them into actionable flow control decisions at the storage protocol layer, enabling aggregate congestion control without requiring complex direct integration between layers.
Solution Approach 2:
The patent segments the congestion control function into separate modular components: transport layer congestion detection, congestion notification generation, and storage protocol layer flow control execution. This segmentation allows each component to operate independently while maintaining overall system coordination, reducing complexity compared to a monolithic control mechanism.
2Productivity
If host device places requests to multiple target devices simultaneously, then network utilization is improved, but host device itself becomes congested when data arrives simultaneously
Solution Approach 1:
The patent implements feedback mechanisms where congestion notifications from target devices are fed back to the host device. The host device uses this feedback information to dynamically adjust its request issuance rate to multiple target devices, preventing simultaneous data arrivals that cause host congestion while maintaining high network utilization through coordinated multi-device access.
3Productivity
If no limits are imposed at storage layer on IU transport, then individual logical units operate efficiently, but aggregate target device congestion causes overall performance degradation
Solution Approach 1:
The patent implements dynamic flow control where the storage protocol layer adjusts request limits to target devices based on real-time congestion conditions. When aggregate congestion is detected through transport layer notifications, the system dynamically reduces request rates to affected target devices. When congestion clears, normal throughput is restored, allowing the system to adaptively balance individual logical unit efficiency with overall target device stability.
Data Source
AI summary
In a storage area network operating in accordance with a transport-level protocol to interconnect host and target devices, where the transport-level protocol issues congestion notifications when any of the host or target devices becomes congested, a method for reducing congestion includes, on receipt of a request to (a) write data to one of the target devices or (b) read data from one of the target devices for return to one of the host devices, (A) determining whether congestion already exists at (a) the target device to which the write request is directed, or (b) the host device to which data from the read request is to be returned, and (B) when a congestion state already exists, comparing current depth of a queue of write or read requests to a maximum permissible queue depth. When the current depth of the queue exceeds a maximum permissible queue depth, the request is rejected.


