Out of Band (OOB) signals
OOB (or Out of band according to abbreviationfinder) signals are low-speed signal patterns that do not appear during transmissions, and are only used during phys initialization. They consist of cycles of predefined durations of rest and transmission of certain Primitives (ALIGNs). The transmission of the Primitives is used only to produce an envelope, so the receiver distinguishes the different OOB signals by the length of the idle interval between the transmissions of the Primitives (the transmission time of the Primitives is not used for distinguish the different signals).
SATA defines two OOB tokens named COMINIT / COMRESET and COMWAKE, and SAS defines a new token named COMSAS, which is used during link initialization to identify itself as a SAS device and verify whether the other device is SAS or SATA.
The Link Level
The link level defines the use of the different Primitives in each type of connection, all the questions related to the establishment and closure of the connections and some other details such as those related to the error detection code (CRC) and data randomization (scrambling), to distribute the radiated energy when transmitting repetitive sequences of characters.
Address frames and link initialization There are two special frames used in the identification and connection request phases, which are called address frames. The frame start and end primitives are also special: SOAF (Start Of Address Frame) and EOAF (End Of Address Frame):
- IDENTIFY, which contains information on the type of device (Initiator, Target, expander edge, expander fanout, etc.), the protocols it supports (SSP, STP, SMP) and the identifications (SAS addresses) of the port or expander device and the phy that sends the plot.
- OPEN, which indicates the protocol to be used in the connection (SSP, STP, SMP), if the request comes from an Initiator or a Target, the speed that all physical links on the pathway must support (1.5 Gbps, 3 Gbps), an optional tag assigned by the Initiator to the SSP and STP connections and the SAS addresses of the source and destination ports.
The level of Transportation
The transport layer constructs the frames to be transmitted and checks the content of the frames that are received. Only frames accepted by the link layer are received.
The following frames are used in SSP connections:
- Data frame.
- Ready plot
- Command Plot
- Response Frame
- Task Plot
In STP connections, the SATA protocol is encapsulated along with the connection control frames. This mechanism is called SATA Tunneling:
- When a SATA Target sends a SATA frame to the expander it is connected to, the expander opens an STP connection to the STP Initiator or to an expander on the way to the STP Initiator. The STP connection is established only for this SATA frame, so at the end of it the expander closes the STP connection.
- When an STP Initiator wants to send a frame, it opens an STP connection with the expander to which it is connected. The expander connected to the SATA Target opens a SATA connection with the Target only for this frame, so at the end of the frame the expander closes the SATA connection.
As for SMP connections, only two frame types are used:
- SMP_REQUEST, sent by the source device (Initiator SMP) indicating the requested function.
- SMP_RESPONSE, sent by the target device (Target SMP) with the information requested in the request.
Benefits of SAS technology
By merging serial interface performance and reliability with existing SCSI environments, SAS brings greater freedom to storage solutions without losing the traditional foundation on which enterprise storage was built, providing the following features:
- Accelerates storage performance compared to parallel SCSI technology
- Ensures data integrity
- Protect IT investments
- Enables flexibility in designing systems with SATA drives in a single bay
The Phy Level
The phy level defines the 8b10b encoding and the OOB signals.
It is widely used in serial transmission at speeds close to and above Gbps. It is the encoding used by Fiber Channel (1 and 2 Gbps), later adopted by Gigabit Ethernet (1 Gbps), and by SAS and SATA (1.5 and 3 Gbps), FireWire 800 (800 Mbps), as well as by InfiniBand (2.5 Gbps).
Encoding has the following functions:
- Ensure sufficient transitions on the line so that the receiver can recover the clock and thus can adequately receive the sequence of bits.
- Greatly increase the chances of detecting single and multiple errors that may occur during transmission.
- Allow the transmission of special characters that contain a pattern easily recognizable by the receiver (called a Comma pattern), which allows you to align words in the sequence of bits it receives (that is, it allows you to know which bit is the first of a word).
The 8b10b encoding consists of replacing each octet (8 bits) with a 10-bit code before its transmission. Of all the possible 10-bit codes (in total 2 ^ 10 = 1024) only 512 are used to encode all possible data characters (which in total can be 2 ^ 8 = 256), and a few more codes to encode a control character string.