SAS Protocol Layer - 5 (SPL-5) 第一章:概述以及SAS协议基础概念(1)

SAS Protocol Layer - 5 (SPL-5) 系列文章目录

第一章:概述以及SAS协议基础概念(1)



前言

目前关于SATA的中文协议概述有很多,但是基于SAS和expander的中文协议很少,基于此,为了方便自己巩固学习,记录此系列博客,欢迎纠正讨论。


一、SAS Protocol Layer - 5 (SPL-5) 是什么?

串行SCSI:Serial Attached SCSI (SAS) 。

该标准规定了 SAS-4 中指定的 SAS 互连上使用的三种传输协议,一种用于传输 SCSI 命令 (SSP),另一种用于向 SATA 设备传输串行 ATA 命令 (STP),还有一种用于支持接口管理 (SMP)。该标准旨在与 SAS 标准、SCSI 命令集标准和 ATA 命令集标准结合使用。

本标准定义了使用 SAS 互连的三种传输协议(见 SAS-4):
a) 串行 SCSI 协议 (SSP):支持多启动器 (initiator) 和多目标 (target) 的 SCSI 映射;
b) 串行 ATA 隧道协议(STP):支持多启动器和多目标的串行 ATA 扩展映射;以及
c) 串行管理协议(SMP):一种管理协议。

该标准的组织结构如下:(黑体字是需要掌握的概念)
第 1 条(范围)说明了本标准与 SCSI 和 ATA 系列标准的关系。
第 2 条(规范性引用文件)提供了对其他标准和文件的引用。
第 3 条(术语、定义、符号、缩写、关键字和约定)定义了本标准中使用的术语和约定。
第 4 条(总论)描述了体系结构、名称和标识符 (identifiers)、状态机、复位、I_T 关系丢失 (I_T nexus loss),提供了扩展器设备模型 (expander device model)、发现过程 (discover)、配置子过程 (configuration subprocess)、分区 (zoning)、phy 电源条件 (phy power conditions)、phy 测试功能 (phy test functions) 和 phy 事件 (phy events)。
第 5 条物理层)描述了 phy 层。它描述了 8b10b 编码128b150b 编码、位顺序、带外(OOB: out of band)信号、phy 复位序列 (phy reset sequences)、phy 层状态机、字符编码、字符解码、字、基元/原语 (primitives)、BMC 编码、phy 电源条件 (phy power conditions)和spinup
第 6 条链路层)描述 link 层。它描述了基元/原语 (primitives)、物理链路速率容限管理 (physical link rate tolerance management)、空闲物理链路 (idle physical links)、CRC、加扰 (scrambling)、前向纠错(FEC: forward error correction)、交错 SPL (interleaved)、地址帧 (address frames)、电源控制 (power control)、链路重置序列 (link reset sequence)及其状态机、低物理功率条件 (low phy power condition)、SAS 域变化 (SAS domain changes)、连接 (connections)、速率匹配 (rate matching)、SAS 逻辑物理状态机的链路层和expander逻辑物理状态机的链路层,以及 SSP、STP 和 SMP 连接规则链路层状态机
第 7 条(端口层)描述位于一个或多个链路层和一个或多个传输层之间的 port 层。它包括端口层状态机
第 8 条(传输层)描述 transport 层。它包括 SSP、STP 和 SMP 帧定义以及传输层状态机
第 9 条(应用层)描述 application 层。它描述了 SCSI 传输协议服务、模式参数、日志参数、诊断参数、电源条件、错误处理和重要产品数据。描述了 ATA 应用层规则。描述管理应用层规则,包括 READY LED 信号行为和 SMP 功能。——此一项工作中涉及较少,暂未了解。

二、SAS协议结构

SAS数据传输结构,来源:SPL-5
从顶层(靠近操作系统)到底层(靠近物理连线)的结构:应用层→传输层→端口层→链路层→物理层。其中端口层和物理层不区分协议类型。

串行SCSI协议(SSP):用于传输SCSI命令
在SCSI3规范中,已经将SCSI上层指令与底层传输系统相分离,SSP在此就作为SCSI指令的传输系统,SSP会保障SCSI指令和数据以及对指令成功地被传送和接收。一共有五种SSP帧类型,包含COMMAND、TASK、XFER_RDY、DATA、RESPONSE类型。

SATA通道协议(STP):用于SAS和SATA之间数据的传输
由于SATA协议与SCSI协议是完全两套上层协议,不仅指令描述方式和结构不同,而且在底层传输中的控制上也不同,STP就是将SATA协议的底层传输逻辑拿过来,并将其承载于SAS底层进行传输。

SCSI管理协议(SMP):用于对连接设备的维护和管理
SMP是一种对SAS网络内所有Expander进行管理的协议,包括Expander拓扑发现和路由协议。由Initiator端建立连接后向Target端发起查询请求,Target只能响应Initiator的查询而不能主动向Initiator发送消息,SMP中的Target对应的整个Expander本身。Expander接收到针对这个Target的消息,就会自己做处理而不是转发到其他某个PHY。

1. SCSI:Small Computer System Interface

SCSI设备的连接类似树形的分层结构,从PCIE总线遍历,可以找到所有的SCSI设备,从上到下的层次为:PCIE->initiator->channel->target->lun。
SCSI架构中主机上的SCSI接口卡称为initiator,与其相连接的SCSI 磁盘等设备称为target。
在逻辑上,initiator和target之间通信的工作模式采用client-server的“请求-响应”模式。
client是initiator端的驱动。
server是target端的逻辑单元 logic unit (LUN)。

2. PCIE总线:Peripheral Component Interface Extend

是一个树状形的接口总线。
其主要是为CPU提供访问外围设备的接口总线。
为总线的数据传输效率带来提升。
PCIe总线是以CPU为中心的互联总线,在任何时刻,其只有一个“CPU”。
使用了高速差分总线,并采用端到端的连接方式,因此在每一条PCIe链路中只能连接两个设备。

3. SAS domain:SAS Expander+终端设备+连接设备(即SAS连接线缆)

是全交换式架构。
每个节点独享带宽,系统整体带宽=节点数量×每个节点享有的带宽。
每个SAS电缆有4根电缆,2根输入(RXn/RXp) 、2根输出(TXp/TXn)。
SAS可以同时进行数据的读写全双工的数据操作提高了数据的吞吐效率。
expander可以支持128个port,每个SAS domain可以有128个expander,所以最高可以有128 x 128 = 16384 个port。实际中因为带宽的原因少很多。

每个SAS设备都有一个唯一的全局名(WorldWide Name,WWN),由8个字节组成,存储在非易失存储器中,方便寻址。
当SAS domain中增加了一个新设备时,或者当一个设备从SAS domain中卸载时,该事件通告会被发送到每一个initiator设备上,使得他们可以重新调整配置。
连接在SAS domain中的SATA设备上电或者插拔时,expander负责分配给SATA设备WWN。
SAS 域中不能形成环路,以保证其发现终端设备流程的正常进行。
SAS域的组成,来源:SPL-5
SAS 对SATA的兼容性:
二者的兼容性主要体现在物理层面和协议层面的兼容。
在物理上, SAS接口和SATA接口完全兼容, SATA硬盘可以直接使用在SAS的环境中,从接口标准上而言, SATA是SAS的一个子标准,因此SAS控制器可以直接操控SATA硬盘,但是SAS却不能直接使用在SATA的环境中,因为SATA控制器并不能对SAS硬盘进行控制;
在协议上, SAS由3种类型协议组成:SSP、STP、SMP。根据连接的不同设备使用相应的协议进行数据传输。

三、易混概念

1. links and phys 链路和phy的易混概念

physical link:physical link是一组四根导线作为两个差分信号对。一对差分信号向一个方向传输,而另一对差分信号向相反方向传输。数据可以同时在两个方向上传输。(实物)
physical phy:一个physical phy包含一个收发器,该收发器电接口到一个physical link,该physical link连接到另一个physical phy。 (实物)
logical link = physical link:两个差分信号对,每个方向一对,两个physical phys。(实物)
当存在expander的时候logical link特指包含expander和physical link的潜在pathway。(实物+潜在pathway)
logical phy :用于连接到其他设备 (例如expander phy或SAS phy) 的设备中的对象。logical phy包括不同协议模式下的link层。(link layer + phy layer)
expander phy:接口到服务交付子系统的expander中的Phy。(实物)
链路和phy示意图, 来源 SPL-5

2. names and identifiers 易混概念

SAS Phy:一个phy即是一个transceiver,每个phy都有一个SAS addresss,和一个唯一的identifier;
SAS Port:一个port包含一个或一组phy,每个SAS port有一个唯一的SAS地址,同一个Port中的所有phy共用一个address;
SAS device:一个SAS device可以包括一个或多个SAS port;
phy的sas address在宽端口时共用一个,但是它的identifier在每个sas device中只有一个。不同domain中同一个sas deviece的不同port可能有同样的sas address。

Device name: 是SAS/expander中的SAS address,用于IDENTIFY address frame (IDAF) bit [95:32] DEVICE NAME,Byte 11-4。通过 SSP 目标端口访问的逻辑单元通过 SCSI 重要产品数据报告 SAS 目标设备名称。

每个扩展器设备和 SAS 设备都应包含一个 SAS 地址作为其设备名称。
用作设备名称的 SAS 地址不得用作任何其他名称或标识符(如设备名称、端口名称、端口标识符或逻辑单元名称),除非扩展设备的 SAS 地址与该扩展设备中 SMP 端口的 SAS 地址相同。
SAS 设备和扩展设备在 IDENTIFY 地址帧中报告其设备名称。

Port identifier:是SAS port SAS address,用于IDAF bit [159:96] SAS ADDRESS,Byte 19-12。会在 SMP DISCOVER 响应中报告这些 SAS 端口的端口标识符。端口标识符在 OPEN 地址帧中用作源和目标 SAS 地址。通过 SSP 目标端口访问的LUN通过 SCSI 重要产品数据报告 SAS 目标端口标识符。

每个 SAS 端口(例如,包括每个 STP SATA 网桥中的 STP 目标端口/连接虚拟phy的SAS port)都应包含一个 SAS address 作为其端口标识符。
用作端口标识符的 SAS address 不得用作任何其他名称或标识符(如设备名称、端口名称或逻辑单元名称),但以下情况除外:
a) SAS 地址用作多个其他 SAS 域的端口标识符;以及
b) 扩展设备中 SMP port的 SAS 地址与包含该 SMP port的扩展设备的 SAS 地址相同。

Expander port 没有端口标识符。

Phy identifier:是用于在设备内识别一个 phy,用于IDAF bit [167:160] PHY IDENTIFIER,Byte 20。

每个 SAS phy 和扩展器 phy 都应分配一个称为 phy identifier 的标识符,该标识符在 SAS 设备和/或扩展器设备中是唯一的。设备标识符用于 SMP 功能。物理标识符应大于或等于 00h 小于或等于 FEh(即 254),并应从 00h 开始编号。物理标识符应小于能发现的实际phy数量。
names and identifiers, 来源 SPL-5

3. 宽端口和窄端口

宽端口的里的所有phy共用一个Port identifier。
窄端口里只有一个phy。
窄端口是在发送和接收SAS地址后创建的,除非创建了宽端口。
例如:带有SAS地址B的物理设备与带有SAS地址Y的物理设备相关联成为一个端口,而带有SAS地址B的物理设备与带有SAS地址Z的物理设备相关联成为另一个端口。
窄链接是将一个窄端口连接到另一个窄端口的物理链接。
宽链接是将一个宽端口连接到另一个宽端口的一组物理链接。
能够成为同一宽端口一部分的phy必须将identification序列中传输的IDENTIFY地址帧中的以下位和字段设置为每个phy设备上的同一组值:
在这里插入图片描述

端口中的每个phy可能处于不同的phy电源状态
在这里插入图片描述

4. End device:

是一种SAS device,SAS物理连接的末端设备,例如HBA卡、Disk driver都是end device。
如果存在expander,SAS目标端口可能位于expander中的SAS设备中。

5. Application clients and device servers

SCSI/ATA/management应用程序客户端是SCSI/ATA/SMP命令和任务管理功能请求的来源。SCSI/ATA/management应用程序客户端使用SSP/STP/SMP initiator 端口连接到服务交付子系统;
SCSI/ATA/management设备服务器处理SCSI/ATA/SMP命令。SCSI/ATA/SMP设备服务器使用SSP/STP目标端口连接到服务交付子系统;
可以实现SCSI到ATA转换层,以使SCSI应用程序客户端与ATA设备通信。

服务交付子系统可以是
a) SAS 启动端口和 SAS 目标端口之间的一组物理链接;或
b) 支持两个以上 SAS 端口的一组物理链路和扩展设备。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

总结

阐释了一部分初始sas和epander的基本概念,包括通信方式、通信协议类型、和一部分专业术语。

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值