SAS Expander Buffering for Connection Spoofing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In SAS domains, incoming requests are often rejected or dropped when directed to PHYs that are already servicing a point-to-point connection, leading to increased workload for the requesting device without improving I/O processing speed.
Innovation Solution
SAS expanders store incoming I/O from initiators in memory and respond with an OPEN ACCEPT, allowing them to 'spoof' a connection, thereby preventing request rejection and enabling processing when the connection becomes available.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the expander rejects requests directed to busy PHYs, then the expander maintains connection integrity, but the initiator experiences increased workload and reduced I/O processing speed
Solution Approach 1:
The expander performs preliminary actions by storing incoming I/O requests in a buffer before the connection is fully established. This allows the initiator to send requests without waiting for connection availability, and the expander processes these buffered requests once the PHY becomes available, thereby maintaining connection integrity while improving I/O processing speed.
Solution Approach 2:
The buffer acts as an intermediary between the initiator and the busy PHY. Instead of directly rejecting requests, the expander intermediates by temporarily holding requests in the buffer and forwarding them when the connection becomes available. This resolves the contradiction by maintaining reliability through proper connection management while improving productivity through non-blocking request handling.
2Reliability
If the initiator re-sends rejected requests, then the request may eventually be processed, but the initiator's processing power is wasted and I/O efficiency does not improve
Solution Approach 1:
The expander provides self-service by automatically managing the retry logic. Instead of the initiator repeatedly sending requests and handling rejections, the expander buffers the requests and automatically retransmits them when the PHY becomes available. This eliminates the need for initiator retry logic, conserving initiator processing power while ensuring reliable request delivery.
Solution Approach 2:
The buffer serves as an intermediary that absorbs the retry mechanism. The expander intermediates between the initiator and the target device, handling the complexity of connection availability and request retransmission. This resolves the contradiction by ensuring reliable delivery through automated retry management while reducing initiator energy consumption by eliminating retry logic from the initiator.
3Productivity
If the expander buffers incoming I/O requests, then request processing efficiency improves, but the expander requires additional memory resources
Solution Approach 1:
The expander implements partial buffering by allocating memory resources dynamically based on actual buffer occupancy and connection availability. Rather than pre-allocating large fixed buffers for all possible scenarios, the system buffers requests only when necessary and releases buffer space when connections become available. This resolves the contradiction by improving request processing efficiency through selective buffering while minimizing memory resource consumption through dynamic allocation.
4Productivity
If the expander spoofs connection availability, then the initiator can send requests without retry overhead, but the connection is not actually ready for data transfer
Solution Approach 1:
The expander creates a virtual copy of the connection state by acknowledging requests and buffering data locally before actual connection establishment. The buffered I/O represents a copy of the data that will be transferred once the connection is ready. This resolves the contradiction by improving I/O processing efficiency through immediate request acknowledgment while maintaining connection reliability by ensuring data is properly transferred once the PHY becomes available.
Data Source
AI summary
Methods and structure are provided for “spoofing” an active connection between a Serial Attached SCSI (SAS) initiator and a SAS target. The structure includes a SAS expander, comprising multiple physical links with associated transceivers (PHYs), switching hardware, a memory, and a control unit. Each PHY is operable to receive incoming Open Address Frames (OAFs) from SAS initiators that request connections with target devices. The switching hardware is operable to selectively link PHYs of the expander with each other to enable connections between initiators and target devices. The control unit is operable to determine that a connection requested by a received OAF cannot be completed, is operable to transmit an OPEN ACCEPT to the SAS initiator that transmitted the OAF responsive to making the determination, and is operable to store I/O received from the SAS initiator for the requested connection in the memory, responsive to transmitting the OPEN ACCEPT.


