[关闭]
@JCChan 2015-08-28T20:25:47.000000Z 字数 3172 阅读 6192

SAS协议

大话存储


一、SAS物理层

  适用于存储系统网络的不只FC一个,还有一个同档次的SAS协议,全称为Serial Attached SCSI,即串行SCSI。SAS硬盘的接口和SATA硬盘的接口非常像,只是比SATA硬盘接口多了一个数据接口。像FC磁盘一样用来连接两路控制器。第二数据接口位于第一数据接口靠背的位置。
  SAS网络与FC网络有一个本质的区别,SAS为全交换式架构,不同于FC一样有Fabric和FCAL两种架构,当一个Initiator与多块磁盘相连接到SAS网络时,就相当于连接到同一台交换机的两台主机一样,全双工线速无阻塞交换,可以直接进行收发数据,不需要进行仲裁,每个节点独立的带宽,系统整体带宽=节点数量×每个节点拥有的带宽。
  SAS网络中,每一个物理接口都需要一套底层编解码器对数据进行8/10b编解码,每个物理接口又称为PHY,在SAS1.0时代,每个物理接口的编解码速度为3Gb/s,即300MB/s,到SAS2.0时代性能才翻了一倍,而同时代的FC物理接口的编解码速度为4Gb/s,但是SAS有一项设计比FC优秀,就是可以将多个PHY捆绑成一个逻辑接口,可以理解为交换机中的EtherChannel,这是FC做不到的,同时SAS也借用了Infiniband网络的设计,常见为4X宽端口的SAS接口。对应有一张4X的SAS适配卡,如果这张适配卡上有独立的Raid芯片或者集成到SAS IO Processor中,就变成一块可接SAS或者SATA硬盘的Raid卡
  SAS协议利用STP(SATA Tunneling Protocol)来兼容SATA协议,对SATA节点的数据收发,SAS是将数据封装在SAS协议帧中传递的,数据到达SATA节点后,解封装,然后再由SATA节点处理,这点是FC自身无法做到的,需要一个SCSI-ATA协议转换器以及一个SATA-FC接口转换器来实现。对于物理接口转换器,由于SATA盘只有一个数据接口,而FC磁盘有两个逻辑数据接口,包含在一个物理SCA2接口中,所以这个接口转换器称为Port Multiplexer,即在前端实现两个逻辑接口,或者两个物理PHY,对于SAS来讲,而后端连接同一个SATA物理接口,转换器将前端的所有接口都映射到后端的一个接口,并且在前端虚拟出两个物理接口地址以用于前端网络寻址操作,所以这种被称为Dongle
  SAS作为一个交换网络,也有自己的交换机或者交换芯片,分为三个部分,XBAR代表Crossbar,它基于Crossbar架构的交换矩阵用于各个PHY之间进行高速交换,每个PHY前端连接8/10b Serdes,芯片内部是并行传递的。SXL表示SAS Expander Link。芯片包含的另外一个部分为32b的MIPS核心处理器,这个处理器执行Firmware以实现SES、SMP和其他一些外部信号处理工作,XBAR右侧为各种信号总线和接口,在Arbiter,负责协调各个PHY之间发起的通信并控制Crossbar将数据交换到正确的目的,但SAS不使用仲裁共享的方式。


二、SAS链路层

  SAS的链路层大部分内容与FC协议类似,但是与FC最大的不同是,SAS在链路层使用面向连接的交换技术。Initiator向Target发起通信之前必须建立好连接,但是不同于传输层的端到端连接。SAS链路层的连接指的是在一个SAS网络内的两个PHY的通信路径中的所有Expander内部,都为这条通信保持相应的资源。对于初次收发数据,Crossbar上的Aribter会检测新建一条路径,便于以恒定的路径发送到下一跳Expander的端口,直至最终Target,如果是在PHY之间建立的,每个PHY之间都会为对应的OPEN请求建立连接。具体过程如下:
  (1)Initiator端的链路层首先通过PHY接口向其连接的Expander发起一个OPEN帧,帧中携带的是Target端PHY的SAS地址。
  (2)本地Expander收到之后,首先返回AIP(Arbitration In Progress),这个期间,Expander会为这个请求分配资源,如果资源不够的话,则分配的资源会相冲突,由优先级来连接,也算是仲裁的一种。
  (3)Arbitration成功之后,在Expander内为其保留恒定资源和Crossbar路径,然后将这个帧路由到Target所在的Expander,途中经过的所有Expander都会为这个初始连接分配恒定的资源和路径。
  (4)Target端的链路层接收到OPEN请求以后,向Initiator端返回一个OPEN_ACCEPT帧,连接建立。
  (5)需要关闭连接的时候,Initiator端发送CLOSE帧。


三、SAS网络层

  SAS网络中的每个节点使用的地址与FC网络类似,也是一个64b长度的定长地址,也叫做WWN,但是与FC Fabric不同的是,SAS直接使用这个64b地址来路由数据包,而FC Fabric则使用另外分配的24b的Fabric ID路由数据包。编址是为了寻址,每个Expander上运行着一种协议,用来执行整个系统中的Expander发现以及路由条目的学习,这种协议叫做SMP
  类比IP路由,对于直接连接的硬盘,相应的路由类型为D,就是Direct,如果是由两个Expander级联,则会多一种T类型的路由,称为Table Routes,由于硬盘和硬盘之间不会通信的,他们需要等待Initiator端发起指令,因此必须要有一个Expander连接SAS卡,连接到SAS卡的硬盘的路由类型中会加入一个S,为Subtractive,相当于默认路由,则根据默认路由的指令,可以减小Expander中的路由条目。一个Expander中接入的最大节点不能超过128个。级联以后,中心的Expander称为Fanout Expander,其他作为Edge Expander,可以将S类型的信息路由给Fanout。每个SAS网络被称为一个Domain。


四、SAS传输层和应用层

  SAS网络中目前有三种应用协议:SSP、STP、SMP。
  SSP是一套用于Initiator和Target之间传输SCSI指令的传输保证协议,与FC中的FCP层充当相同的角色,在SCSI3规范中,已经将SCSI上层指令与底层传输系统相分离,SSP在此就作为SCSI指令的传输系统,SSP会保障SCSI指令和数据以及对指令的相应成功地被传送和接收。一共有五种SSP帧类型,包含COMMAND、TASK、XFER_RDY、DATA、RESPONSE类型,TASK和RESPONSE类型指令用于SSP设备控制指令步骤,COMMAND和RESPONSE类型用于SSP发起SCSI指令,DATA类型用于SCSI Read,XFER_RDY用于写指令。
  STP是一套用于在Initiator和Target之间传送SATA指令的传输保障协议。由于SATA协议与SCSI协议是完全两套上层协议,不仅指令描述方式和结构不同,而且在底层传输中的控制上也不同,STP就是将SATA协议的底层传输逻辑拿来过来,并将其承载于SAS底层进行传输。但是记住,SCSI和SATA,他们都是在不同程度的Tunnel+Map的方式被承载于SAS网络上传递。
  SMP是一种对SAS网络内所有Expander进行管理的协议,包括Expander拓扑发现和路由协议。由Initiator端建立连接后向Target端发起查询请求,Target只能响应Initiator的查询而不能主动向Initiator发送消息,SMP中的Target对应的整个Expander本身。Expander接收到针对这个Target的消息,就会自己做处理而不是转发到其他某个PHY。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注