SAS协议支持三种主要的传输协议,每种协议用于不同的应用场景:
SSP (Serial SCSI Protocol) 是SAS中用于SCSI命令传输的协议,支持完整的SCSI功能集。
+----------------+----------------+----------------+----------------+
| SOF (1 byte) | 帧头 (8 bytes) | 数据负载 | CRC (4 bytes) |
+----------------+----------------+----------------+----------------+
连接建立
命令接收
命令处理
响应发送
连接关闭
连接建立
命令发送
响应接收
连接关闭
传输错误:
任务管理:
+---------------+ +---------------+
| SSP传输层 | | STE模块 |
+---------------+ +---------------+
| |
|------- SCSI命令 ------------->|
| |
| |---处理命令-->|
| | |
| |<--处理结果---|
| |
|<------ 命令响应 --------------|
| |
SMP (Serial Management Protocol) 是SAS中用于管理SAS拓扑和设备的协议。
+----------------+----------------+----------------+----------------+
| SOF (1 byte) | 帧头 (8 bytes) | SMP函数数据 | CRC (4 bytes) |
+----------------+----------------+----------------+----------------+
连接建立
请求接收
请求处理
响应发送
连接关闭
连接建立
请求发送
响应接收
连接关闭
函数名称 | 功能描述 | 典型用途 |
---|---|---|
DISCOVER | 获取PHY信息 | 拓扑发现 |
REPORT GENERAL | 获取设备一般信息 | 设备状态查询 |
REPORT PHY SATA | 获取SATA PHY信息 | SATA设备管理 |
CONFIGURE PHY | 配置PHY参数 | PHY速率设置 |
REPORT ROUTE INFO | 获取路由信息 | 路由表查询 |
CONFIGURE ROUTE INFO | 配置路由信息 | 路由表设置 |
STP (Serial ATA Tunneling Protocol) 是SAS中用于在SAS网络中传输SATA命令的协议。
+----------------+----------------+----------------+----------------+
| SOF (1 byte) | 帧头 (8 bytes) | SATA FIS | CRC (4 bytes) |
+----------------+----------------+----------------+----------------+
连接建立
SATA命令传输
连接关闭
+---------------+ +---------------+ +---------------+
| SAS主机 | | SAS/SATA | | SATA设备 |
| (STP发起端) | | 桥接器 | | |
+---------------+ +---------------+ +---------------+
| | |
|------- STP帧 --------------->| |
| |------- SATA FIS ------------->|
| | (协议转换) |
| | |---执行命令-->|
| | | |
| | |<--命令结果---|
| | |
| |<------ SATA FIS --------------|
|<------ STP帧 ----------------| |
| (协议转换) | |
当SAS设备需要与另一个设备通信时,它会根据目标设备类型和操作需求选择适当的协议:
协议选择依据:
OPEN地址帧中的协议指示:
+----------------+----------------+----------------+----------------+
| 目标SAS地址 | 源SAS地址 | 连接速率 | 协议标识 |
+----------------+----------------+----------------+----------------+
协议标识字段指定要使用的协议(SSP/SMP/STP)
连接建立后的协议切换:
SAS支持的三种传输协议(SSP、SMP、STP)各自针对不同的应用场景进行了优化:
这三种协议共享相同的物理层和部分链路层,但在传输层有各自独特的处理流程和帧格式。通过这种设计,SAS协议栈能够同时支持存储数据传输、拓扑管理和SATA兼容性。
Expander是SAS网络中的交换设备,主要功能有:
SMP协议 - 用于主机与Expander通信
SSP协议 - 用于主机与SAS设备通信
STP协议 - 用于主机与SATA设备通信
+-------------+ +-------------+ +-------------+
| | SMP (管理) | | | |
| |------------->| | | |
| | | | | |
| SAS主机 | SSP (数据) | Expander | SSP (数据) | SAS设备 |
| (发起端) |------------->| (交换设备) |------------->| (目标端) |
| | | | | |
| | STP (数据) | | SATA (转换) | |
| |------------->| |------------->| SATA设备 |
+-------------+ +-------------+ +-------------+
SAS网络通信架构说明:
SAS主机与Expander通信
Expander的三种角色
+-------------------------------------------------------------------+
| 应用层 |
| |
| +-----------------+ +-------------------+ +----------------+ |
| | SCSI应用 | | SAS管理应用 | | SATA应用 | |
| +-----------------+ +-------------------+ +----------------+ |
+-------------------------------------------------------------------+
| 传输层 |
| |
| +-----------------+ +-------------------+ +----------------+ |
| | SSP (Serial | | SMP (Serial | | STP (Serial | |
| | SCSI Protocol) | | Management | | ATA Tunneling | |
| +-----------------+ | Protocol) | | Protocol) | |
| +-------------------+ +----------------+ |
+-------------------------------------------------------------------+
| 链路层 |
| |
| +-----------------------------------------------------------+ |
| | SAS链路层 (连接管理、地址帧、原语) | |
| +-----------------------------------------------------------+ |
+-------------------------------------------------------------------+
| 物理层 |
| |
| +-----------------------------------------------------------+ |
| | SAS物理层 (OOB、速率协商、8b/10b编码) | |
| +-----------------------------------------------------------+ |
+-------------------------------------------------------------------+
协议层次说明:
物理层
链路层
传输层
应用层
三种协议数据流对比
+-------------+ +-------------+ +-------------+
| 主机 | | Expander | | 目标设备 |
+-------------+ +-------------+ +-------------+
| | |
| SMP 请求帧 | |
|------------------>| |
| |--[处理SMP命令]--->|
| | |
| SMP 响应帧 | |
|<------------------| |
| | |
+-------------+ +-------------+ +-------------+
| 主机 | | Expander | | SAS设备 |
+-------------+ +-------------+ +-------------+
| | |
| SSP 命令帧 | 转发SSP命令帧 |
|------------------>|------------------>|
| | |
| | |--[处理SCSI命令]-->|
| | | |
| | |<--[命令完成]------|
| | |
| 转发SSP响应帧 | SSP 响应帧 |
|<------------------|<------------------|
| | |
+-------------+ +-------------+ +-------------+
| 主机 | | Expander | | SATA设备 |
+-------------+ +-------------+ +-------------+
| | |
| STP 帧 | |
|------------------>| |
| | (协议转换)SATA FIS |
| |------------------>|
| | |
| | |--[处理ATA命令]-->|
| | | |
| | |<--[命令完成]-----|
| | |
| | SATA FIS |
| |<------------------|
| STP 帧(协议转换) | |
|<------------------| |
| | |
三种协议数据流说明:
SMP数据流
SSP数据流
STP数据流