概述
SAS,全称Serial Attached SCSI,即串行连结SCSI,是一种采用了串行总线的高速互连技术。通过物理上使用串行总线连结,在链路上传输SCSI协议标准命令,SAS替代了早期的并行SCSI总线传输技术,相较于后者,SAS实现了更高的传输速率、更方便的连接以及更高的扩展性。当前,SAS在服务器以及存储阵列中广泛应用,主要用于连接硬盘和硬盘框。
SAS协议发展历程
SAS协议自2005年发布SAS 1.0版本后,先后又发布了2.0、3.0以及4.0版本,每个新发布的版本传输速率较于上一代都实现了翻倍。当前,市面上应用最广泛的主要是SAS 3.0(12G SAS),涉及的产品很多,其后的SAS 4.0版本也逐渐有厂商发布了对应的存储设备,后续会陆续应用到市场当中。
协议版本 | 速率 | 发布时间 |
---|---|---|
SAS-1 | 3Gbps | 2005 |
SAS-2 | 6Gbps | 2009 |
SAS-3 | 12Gbps | 2013 |
SAS-4 | 24Gbps | 2019/2020 |
SAS技术特性
SAS支持以下技术特性:
- 采用串行总线技术,可以实现更高带宽的硬件链路,目前应用最广泛的SAS 3.0版本,单条链路可以支持到12Gbps/s的速率;
- 点对点的结构,可提供端点间固定的带宽,避免了共享总线带来的瓶颈效应;
- 全双工的数据传输,SAS的物理链路包含了发送和接收两组差分信号线路,可以实现双边同时传输数据,提高数据的吞吐量;
- 高扩展性:SAS协议支持使用Expander设备扩展连接SAS设备,最高可在一个SAS域内支持65535的设备数量;
- 兼容性:SAS在链路协议以及接口上均实现了对SATA的兼容,支持接入SATA盘,并传输SATA数据帧。
SAS设备拓扑
SAS在实际应用场景中,主要用来接入硬盘以及硬盘框,如下图,是一个基础的SAS组网模型,其中,SAS主机适配器作为启动器,可以直连SAS或SATA设备;同时还接入了一个Expander设备,从而可以扩展更多的SAS设备。
SAS总线通过点对点的方式将两个设备连结到一起,连接点称为端口。每个SAS设备至少需要包含一个端口,对于SAS HBA和Expander设备通常会包含多个端口。一个SAS端口由一个或以上的Phy(对应于一条物理链路)组成,如果端口中仅有一个Phy,该端口被称为窄端口,如上图中x1端口;有包括多于一个的Phy,则称其为宽端口,如上图中x4宽端口。
SAS基本术语
在对SAS组网模型有了一个基础的认识后,我们再来看一下SAS的一些基本术语和概念。
SAS phy
SAS phy是一个逻辑概念,包含了一个收发器,可以在物理链路上实现发送或接收数据。SAS的一条物理链路包含了两组差分信号对,分别用于发送和接收方向;并且允许同时在两个方向上进行传输,即支持全双工。当两个SAS设备连接到一起时时,设备间的链路示意图如下:
SAS端口
SAS端口包含了一个或多个SAS phy,根据端口包含的phy数量,可将端口分成窄端口和宽端口,如下图示意:
SAS设备
一个SAS设备通常会包含一个或多个SAS端口,如下:
SAS协议定义了两种类型的SAS设备:End Device和Expander Device,其中:
- End Device:SAS协议定义不是Expander设备的设备都属于End Device,包括SAS主机适配器、SAS硬盘等。End device不具备转发能力;
- Expander Device:可以提供设备扩展能力,允许系统接入更多的SAS设备。
Expander Device
SAS地址
SAS地址是一个64位长度的标识符。对于设备中每个phy都配置了一个SAS地址,并且如果多个phy需要组成宽端口,需要配置相同的SAS地址。SAS协议规定,SAS地址应该使用NAA IEEE注册格式进行定义,如下:
如果SAS地址的所有字段全为0,则会被视为无效的标识。
SAS域
域用于将SAS网络划分成不同部分,域是一个逻辑概念,在同一个域中的设备可以互相通信,而域之间通信则需要受到一定的限制。SAS协议中的定义的域包括SAS域和ATA域,示意如下:
SAS协议分层
SAS协议分为6个层次,从低到高依次是物理层、Phy层、链路层、端口层、传输层和应用层:
各个分层功能描述如下:
- 物理层(physical layer):主要定义了SAS线缆和接口的规范,电气特性和SAS phy层中用于SAS收发器的测试条件;
- Phy层(phy layer):负责传输上层协议的比特流,定义了编码方案、供电/复位序列等;
- 链路层(link layer):定义了如何控制phy层连接管理。链路层根据所处理的协议不同还分为SSP链路层(串行SCSI协议链路层)、STP链路层(串行隧道协议链路层)、SMP链路层(串行管理协议链路层);
- 端口层(port layer):描述的是链路层和传输层的接口,包括如何请求、中断、如何选择建立连接。SAS端口层可以通过相关的SAS链路层同接口中所有的phy进行通讯;
- 传输层(transport layer):主要负责SAS帧的封装和分解。具体的来说传输层能从端口层接收SAS帧并且解析,然后将SAS帧内要传输的内容发送给应用层,反之依然。根据所处理的具体协议不同,传输层分为:SSP传输层(串行SCSI协议传输层)、STP传输层(串行隧道协议传输层)和SMP传输层(串行管理协议传输层);
- 应用层(application layer):描述了如何在不同类型的应用下使用SAS的细节,它产生请求并且向相关的传输层发送请求(比如,SCSI应用层给SSP传输层发送请求,要求向一个SSP目标端口发送一条SCSI命令),并且从相关的传输层接收请求响应结果。
参考链接
- 《SAS Protocol Layer》
- 《SAS Storage Archteciture》