SAS传输协议处理流程

SAS传输协议处理流程

SAS协议支持三种主要的传输协议,每种协议用于不同的应用场景:

  • SSP (Serial SCSI Protocol): 用于SCSI命令传输
  • SMP (Serial Management Protocol): 用于管理SAS拓扑
  • STP (Serial ATA Tunneling Protocol): 用于SATA命令传输

1. SSP协议处理流程

SSP (Serial SCSI Protocol) 是SAS中用于SCSI命令传输的协议,支持完整的SCSI功能集。

1.1 SSP协议特点

  • 基于SCSI命令集
  • 支持全双工通信
  • 提供可靠的数据传输
  • 支持任务管理功能
  • 使用CRC校验保证数据完整性

1.2 SSP帧结构

+----------------+----------------+----------------+----------------+
|  SOF (1 byte)  | 帧头 (8 bytes) |  数据负载      |  CRC (4 bytes) |
+----------------+----------------+----------------+----------------+
  • SOF: 帧起始标记
  • 帧头: 包含目标/源SAS地址、帧类型等信息
  • 数据负载: 根据帧类型不同,包含命令、数据或响应
  • CRC: 循环冗余校验,确保数据完整性

1.3 SSP目标端处理流程

  1. 连接建立

    • 接收OPEN地址帧
    • 验证发起方SAS地址和权限
    • 确认连接类型为SSP
    • 建立双向通信通道
  2. 命令接收

    • 接收COMMAND帧
    • 验证帧CRC
    • 解析SCSI命令
    • 提取LUN、CDB和任务属性
  3. 命令处理

    • 将命令转发给STE模块
    • STE模块根据命令类型分发
    • 执行SCSI命令操作
    • 准备响应数据
  4. 响应发送

    • 生成RESPONSE帧
    • 包含状态码、感知数据等
    • 发送响应数据
    • 对于读命令,先发送DATA帧,再发送RESPONSE帧
  5. 连接关闭

    • 发送CLOSE原语
    • 更新任务状态
    • 释放资源

1.4 SSP发起端处理流程

  1. 连接建立

    • 发送OPEN地址帧
    • 指定SSP协议
    • 包含目标SAS地址
    • 等待连接确认
  2. 命令发送

    • 构造COMMAND帧
    • 包含LUN、CDB和任务属性
    • 计算并添加CRC
    • 发送SCSI命令
  3. 响应接收

    • 接收RESPONSE帧
    • 验证帧CRC
    • 解析响应数据
    • 对于读命令,先接收DATA帧,再接收RESPONSE帧
  4. 连接关闭

    • 接收CLOSE原语
    • 更新任务状态
    • 通知上层应用

1.5 SSP错误处理

  • 传输错误:

    • CRC校验失败时重新发送
    • 连接断开时重新建立连接
    • 达到重试上限后报告错误
  • 任务管理:

    • 支持ABORT TASK、ABORT TASK SET等任务管理功能
    • 可以中止特定任务或一组任务
    • 支持目标设备重置

1.6 SSP与STE模块交互

+---------------+                 +---------------+
|  SSP传输层    |                 |    STE模块    |
+---------------+                 +---------------+
        |                                |
        |------- SCSI命令 ------------->|
        |                                |
        |                                |---处理命令-->|
        |                                |              |
        |                                |<--处理结果---|
        |                                |
        |<------ 命令响应 --------------|
        |                                |

2. SMP协议处理流程

SMP (Serial Management Protocol) 是SAS中用于管理SAS拓扑和设备的协议。

2.1 SMP协议特点

  • 用于SAS拓扑发现和管理
  • 简单的请求-响应模型
  • 不支持数据流传输
  • 主要用于Expander配置和状态查询

2.2 SMP帧结构

+----------------+----------------+----------------+----------------+
|  SOF (1 byte)  | 帧头 (8 bytes) |  SMP函数数据   |  CRC (4 bytes) |
+----------------+----------------+----------------+----------------+
  • SMP函数数据: 包含SMP函数代码和相关参数

2.3 SMP目标端处理流程

  1. 连接建立

    • 接收OPEN地址帧
    • 验证发起方SAS地址
    • 确认连接类型为SMP
    • 建立双向通信通道
  2. 请求接收

    • 接收REQUEST帧
    • 验证帧CRC
    • 解析SMP函数
    • 提取函数参数
  3. 请求处理

    • 执行SMP函数
      • DISCOVER: 发现PHY信息
      • REPORT GENERAL: 报告一般信息
      • REPORT PHY SATA: 报告PHY SATA信息
      • CONFIGURE PHY: 配置PHY参数
      • 其他SMP函数
    • 准备响应数据
  4. 响应发送

    • 生成RESPONSE帧
    • 包含函数结果和返回数据
    • 计算并添加CRC
    • 发送响应数据
  5. 连接关闭

    • 发送CLOSE原语
    • 释放资源

2.4 SMP发起端处理流程

  1. 连接建立

    • 发送OPEN地址帧
    • 指定SMP协议
    • 包含目标SAS地址
    • 等待连接确认
  2. 请求发送

    • 构造REQUEST帧
    • 包含SMP函数代码和参数
    • 计算并添加CRC
    • 发送SMP函数请求
  3. 响应接收

    • 接收RESPONSE帧
    • 验证帧CRC
    • 解析响应数据
    • 提取函数执行结果
  4. 连接关闭

    • 接收CLOSE原语
    • 通知上层应用
    • 更新拓扑信息(如适用)

2.5 常见SMP函数

函数名称 功能描述 典型用途
DISCOVER 获取PHY信息 拓扑发现
REPORT GENERAL 获取设备一般信息 设备状态查询
REPORT PHY SATA 获取SATA PHY信息 SATA设备管理
CONFIGURE PHY 配置PHY参数 PHY速率设置
REPORT ROUTE INFO 获取路由信息 路由表查询
CONFIGURE ROUTE INFO 配置路由信息 路由表设置

3. STP协议处理流程

STP (Serial ATA Tunneling Protocol) 是SAS中用于在SAS网络中传输SATA命令的协议。

3.1 STP协议特点

  • 允许SATA设备连接到SAS网络
  • 将SATA FIS封装在STP帧中传输
  • 保留SATA协议特性
  • 支持SATA设备的所有功能

3.2 STP帧结构

+----------------+----------------+----------------+----------------+
|  SOF (1 byte)  | 帧头 (8 bytes) |  SATA FIS      |  CRC (4 bytes) |
+----------------+----------------+----------------+----------------+
  • SATA FIS: SATA帧信息结构,包含SATA命令和数据

3.3 STP处理流程

  1. 连接建立

    • 发送OPEN地址帧
    • 指定STP协议
    • 包含目标SAS地址(映射到SATA设备)
    • 等待连接确认
  2. SATA命令传输

    • 将SATA FIS封装在STP帧中
      • Register FIS: 包含命令寄存器值
      • Data FIS: 包含读/写数据
      • PIO Setup FIS: 设置PIO传输参数
      • DMA Setup FIS: 设置DMA传输参数
      • Set Device Bits FIS: 设置设备状态
    • 传输SATA命令和数据
    • SAS/SATA桥接器转换STP帧为原生SATA信号
    • SATA设备执行命令并返回结果
    • 桥接器将SATA响应封装回STP帧
  3. 连接关闭

    • 发送CLOSE原语
    • 释放资源

3.4 STP与SATA设备交互

+---------------+                 +---------------+                 +---------------+
|  SAS主机      |                 |  SAS/SATA     |                 |  SATA设备     |
|  (STP发起端)  |                 |  桥接器       |                 |               |
+---------------+                 +---------------+                 +---------------+
        |                                |                                |
        |------- STP帧 --------------->|                                |
        |                                |------- SATA FIS ------------->|
        |                                |        (协议转换)              |
        |                                |                                |---执行命令-->|
        |                                |                                |              |
        |                                |                                |<--命令结果---|
        |                                |                                |
        |                                |<------ SATA FIS --------------|
        |<------ STP帧 ----------------|                                |
        |       (协议转换)              |                                |

4. 协议选择与连接建立

当SAS设备需要与另一个设备通信时,它会根据目标设备类型和操作需求选择适当的协议:

  1. 协议选择依据:

    • 与SAS设备通信SCSI命令: 使用SSP
    • 与SAS Expander进行管理操作: 使用SMP
    • 与SATA设备通信: 使用STP
  2. OPEN地址帧中的协议指示:

    +----------------+----------------+----------------+----------------+
    |  目标SAS地址   |  源SAS地址     |  连接速率      |  协议标识      |
    +----------------+----------------+----------------+----------------+
    

    协议标识字段指定要使用的协议(SSP/SMP/STP)

  3. 连接建立后的协议切换:

    • 一旦连接建立,协议不能在同一连接中更改
    • 需要关闭连接并重新建立新连接才能切换协议

5. 总结

SAS支持的三种传输协议(SSP、SMP、STP)各自针对不同的应用场景进行了优化:

  • SSP: 提供完整的SCSI功能,适用于与SAS设备的数据传输
  • SMP: 提供管理功能,适用于SAS拓扑的发现和配置
  • STP: 提供SATA兼容性,使SATA设备能够连接到SAS网络

这三种协议共享相同的物理层和部分链路层,但在传输层有各自独特的处理流程和帧格式。通过这种设计,SAS协议栈能够同时支持存储数据传输、拓扑管理和SATA兼容性。

6. 主机通过Expander与下游设备通信

6.1 基本概念

Expander是SAS网络中的交换设备,主要功能有:

  • 连接多个SAS/SATA设备到网络
  • 路由连接请求到正确的目标设备
  • 管理设备之间的通信

6.2 主机与下游设备通信的三种协议

  1. SMP协议 - 用于主机与Expander通信

    • 管理Expander配置
    • 查询拓扑信息
    • 获取设备状态
  2. SSP协议 - 用于主机与SAS设备通信

    • 传输SCSI命令和数据
    • Expander仅转发数据,不处理
  3. STP协议 - 用于主机与SATA设备通信

    • 将SATA命令封装在SAS网络中传输
    • Expander执行协议转换

6.3 SAS网络通信架构与协议流程

6.3.1 SAS网络架构图
+-------------+              +-------------+              +-------------+
|             |  SMP (管理)  |             |              |             |
|             |------------->|             |              |             |
|             |              |             |              |             |
|   SAS主机   |  SSP (数据)  |  Expander   |  SSP (数据)  |  SAS设备    |
|  (发起端)   |------------->|  (交换设备) |------------->|  (目标端)   |
|             |              |             |              |             |
|             |  STP (数据)  |             |  SATA (转换) |             |
|             |------------->|             |------------->|  SATA设备   |
+-------------+              +-------------+              +-------------+

SAS网络通信架构说明:

  1. SAS主机与Expander通信

    • SMP协议:主机直接管理Expander本身
      • Expander是SMP命令的终点和处理者
      • 用于配置、查询和控制Expander
    • SSP协议:主机通过Expander访问SAS设备
      • Expander仅转发SSP命令,不做处理
      • 主机和SAS设备是实际的通信双方
    • STP协议:主机通过Expander访问SATA设备
      • Expander在SAS和SATA协议间进行转换
      • 使SATA设备能够接入SAS网络
  2. Expander的三种角色

    • SMP目标设备:直接处理管理命令
    • SSP透明中继:纯粹转发SSP通信
    • STP/SATA桥接器:在两种协议间进行转换
6.3.2 SAS通信协议层次图
+-------------------------------------------------------------------+
|                           应用层                                   |
|                                                                   |
|  +-----------------+   +-------------------+   +----------------+ |
|  | SCSI应用        |   | SAS管理应用       |   | SATA应用       | |
|  +-----------------+   +-------------------+   +----------------+ |
+-------------------------------------------------------------------+
|                           传输层                                   |
|                                                                   |
|  +-----------------+   +-------------------+   +----------------+ |
|  | SSP (Serial     |   | SMP (Serial       |   | STP (Serial    | |
|  | SCSI Protocol)  |   | Management        |   | ATA Tunneling  | |
|  +-----------------+   | Protocol)         |   | Protocol)      | |
|                        +-------------------+   +----------------+ |
+-------------------------------------------------------------------+
|                           链路层                                   |
|                                                                   |
|  +-----------------------------------------------------------+    |
|  | SAS链路层 (连接管理、地址帧、原语)                        |    |
|  +-----------------------------------------------------------+    |
+-------------------------------------------------------------------+
|                           物理层                                   |
|                                                                   |
|  +-----------------------------------------------------------+    |
|  | SAS物理层 (OOB、速率协商、8b/10b编码)                     |    |
|  +-----------------------------------------------------------+    |
+-------------------------------------------------------------------+

协议层次说明:

  1. 物理层

    • 提供物理媒介接口和信号传输
    • 负责OOB信号交换和速率协商
    • 处理信号编码/解码(8b/10b)
    • 所有协议共享相同的物理层
  2. 链路层

    • 管理连接的建立和释放
    • 处理地址帧和原语交换
    • 提供基本的错误检测
    • 所有协议共享相同的链路层
  3. 传输层

    • SSP: 封装SCSI命令,提供SCSI服务
    • SMP: 提供管理功能,处理配置和查询
    • STP: 封装SATA FIS,提供隧道服务
    • 每种协议有各自独立的传输层实现
  4. 应用层

    • 实现最终的用户功能
    • 处理SCSI命令、管理功能和SATA操作
    • 与上层软件和驱动程序交互
总结

三种协议数据流对比

+-------------+     +-------------+     +-------------+
| 主机        |     | Expander    |     | 目标设备    |
+-------------+     +-------------+     +-------------+
       |                   |                   |
       |  SMP 请求帧       |                   |
       |------------------>|                   |
       |                   |--[处理SMP命令]--->|
       |                   |                   |
       |  SMP 响应帧       |                   |
       |<------------------|                   |
       |                   |                   |
+-------------+     +-------------+     +-------------+
| 主机        |     | Expander    |     | SAS设备     |
+-------------+     +-------------+     +-------------+
       |                   |                   |
       |  SSP 命令帧       |  转发SSP命令帧    |
       |------------------>|------------------>|
       |                   |                   |
       |                   |                   |--[处理SCSI命令]-->|
       |                   |                   |                   |
       |                   |                   |<--[命令完成]------|
       |                   |                   |
       |  转发SSP响应帧    |  SSP 响应帧       |
       |<------------------|<------------------|
       |                   |                   |
+-------------+     +-------------+     +-------------+
| 主机        |     | Expander    |     | SATA设备    |
+-------------+     +-------------+     +-------------+
       |                   |                   |
       |  STP 帧           |                   |
       |------------------>|                   |
       |                   | (协议转换)SATA FIS |
       |                   |------------------>|
       |                   |                   |
       |                   |                   |--[处理ATA命令]-->|
       |                   |                   |                  |
       |                   |                   |<--[命令完成]-----|
       |                   |                   |
       |                   |  SATA FIS         |
       |                   |<------------------|
       |  STP 帧(协议转换)  |                   |
       |<------------------|                   |
       |                   |                   |

三种协议数据流说明:

  1. SMP数据流

    • 主机直接与Expander通信
    • Expander接收SMP请求并处理
    • 处理完成后返回SMP响应
    • 无需转发到其他设备
  2. SSP数据流

    • 主机发送SSP命令帧到Expander
    • Expander透明转发命令到SAS设备
    • SAS设备处理SCSI命令
    • 响应通过相同路径返回
    • Expander不修改SSP帧内容
  3. STP数据流

    • 主机发送STP帧(封装SATA FIS)到Expander
    • Expander执行协议转换,提取SATA FIS
    • 转换后的SATA FIS发送到SATA设备
    • SATA设备响应返回SATA FIS
    • Expander将SATA FIS封装为STP帧返回给主机

你可能感兴趣的:(服务器,linux,网络,SAS,SES,Expander)