sas协议.docx
- 文档编号:29621818
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:13
- 大小:22.40KB
sas协议.docx
《sas协议.docx》由会员分享,可在线阅读,更多相关《sas协议.docx(13页珍藏版)》请在冰豆网上搜索。
sas协议
竭诚为您提供优质文档/双击可除
sas协议
篇一:
sas协议分析
sas协议
scsi标准定义了很多不同的传输协议,用于不同的scsi设备之间的信息交换。
sas标准定义使用sas串行连接通讯的scsi设备之间交换信息的方式。
其它的scsi传输协议标准定义了scsi设备和其它内部互连设备之间的信息交换方式。
sas工作组在制订sas规范的时候借鉴了很多sata协议、scsi协议乃至Fc协议的成果,为的就是最大化的兼容当前的架构,同时将过渡到新接口的风险和代价降至最低。
下面的表格对比了sata、sas和Fc接口的一些基本的特征。
可以运行在scsi接口上的应用程序(比如软件和驱动程序)几乎不用修改就可以被用于同sas端口的通讯,这主要得益于sas体系所引入的协议层概念。
sas标准将sas架构分为6层,从低到高依次是物理层、phy层、链路层、端口层、传输层和应用层,每层负责一定的功能。
物理层对于线缆、接头、收发器等硬件进行了定义;phy层包括了最低级的协议,比如编码方案和供电/复位序列等等;链路层描述的是如何控制phy层连接管理;端口层描述的是链路层和传输层的接口,包括如何请求、中断、如何选择建立连接;传输层定义了如何将所传输的命令、状态、数据封装在sas帧中,以及如何分解sas帧;应用层描述了如何在不同类型的应用下使用sas的细节。
在目前的很多的协议或者规范中都采用了分层结构,比如我们每天都会与之打交道的网络协议,其采用的7层的osi参考模型即是成功的范例。
在这种分层结构中,如果需要开发基于应用层的应用,那么仅需要专注于应用层即可,只要按照相应的规范进行开发,结果是肯定可以运行在更低一层上的。
这些分层协议的工作模式也都是相似的,比如sas系统在接收数据时数据按照应用层、传输层、端口层和物理层的顺序传递,而发送数据时,按照物理层、端口层、传输层和应用层的顺序传递。
每一层把数据传递到上一层或者下一层的时候,都需要做相应的处理(封装或者解包),目的是将信息转换为相邻层能够理解的格式。
应用层(applicationlayer)是sas标准中所定义的sas架构的最高层,它是唯一一层不属于sas端口的层。
根据所处理的具体协议不同,应用层(al)主要分为scsi应用层(sal)、ata应用层(aal)和管理应用层(mal)。
应用层同相关的sas端口中的传输层对话,它产生请求并且向相关的传输层发送请求(比如,scsi应用层给ssp发起者传输层发送请求,要求向一个ssp目标端口发送一条scsi命令),并且从相关的传输层接收请求响应结果。
传输层(transportlayer)主要负责sas帧的封装和分解,具体的来说传输层能从端口层接收sas帧并且分解,然后sas帧内实际要传输的内容发送给应用层,反之依然,应用层将信息传递给传输层,传输层将其封装为端口层所能处理的sas帧。
根据所处理的具体协议不同,传输层分为ssp传输层(串行scsi协议传输层)、stp传输层(串行隧道协议传输层)和mt传输层(串行管理协议传输层)。
端口层(portlayer)可同一个或多个sas链路层接口,也可同一个或多个sas传输层接口。
端口层接收来自传输层的请求、中断、选择链路层、选择建立连接所需的phys、向所选择的链路层转发传输请求。
端口层接收来自链路层的确认信息、中断确认、转发到正确的传输层的确认。
一个sas端口包括一个sas端口层和一个或多个链路层以及相关的sasphy、sas物理层。
sas端口层可以通过相关的sas链路层同接口中所有的phys通讯。
如果sas端口中仅有一个phy,该端口被称为窄端口,有包括多于一个的phy,则称其为宽端口。
窄端口只能构建窄链路,而宽端口则可以构建窄链路和宽链路。
不管是窄端口还是宽端口都只有一个端口层。
sas端口的sas地址也就是全局名(wwm),在一个sas端口中的所有phys具有相同的sas地址。
在并行scsi中寻址域中所有的设备非常的简单,这是因为每个设备都预先被分配了地址。
而sas域则要复杂的多,通过前面的介绍可以了解,最复杂的情况下可能需要面对16000多个设备。
sas利用了全局名(worldwidename,wwn)来解决这个问题,每个sas设备都有一个唯一的全局名,由8个字节组成,存储在非易失存储器中。
当系统上电时,sas系统中的所有设备相互建立起通讯联系并且交换wwn,直至确定域中所连接的设备数量和类型。
当sas系统中增加了一个新设备时,或者当一个设备从sas系统中卸载时,该事件通告会被发送到每一个发起者设备上,使得它们可以重新调整配置。
连接在sas系统中的sata设备上电或者插拔时,扩展器负责分配给sata设备全局名。
当系统完成初始化之后,sata协议被用于sata设备的通讯,而sas协议被用于同sas设备的通讯。
链路层(linklayer)用于连接sasphy层和sas端口层,而我们一般所说的sasphy则统称链路层和sasphy层。
sas链路层通过控制sasphy层来管理同其它sas设备的联系。
同传输层的结构有些相似,链路层根据所处理的协议不同还分为ssp链路层(串行scsi协议链路层)、stp链路层(串行隧道协议链路层)、smp链路层(串行管理协议链路层)。
在速度谈判完成之后,sasphy层向sas链路层发送信号,sas链路开始运作。
此时,sas链路层控制着所有sasphy层的运作,比如鉴定序列、连接管理、处理端口层所请求的帧传输。
一个sas链路层同每一个sasphy相关。
在链路层中有两个重要的结构需要我们了解:
sas基元命令(sasprimitives)和sas地址帧(sasaddressframes.)
所有的sas传输由32bit编码(每组32bit编码被称为dwords——doubleword的简称,每个字包括两个字节)组成。
所有有效的sasdwords不是基元就是数据dwords。
基元具有特定的意义和作用。
部分基元只在两个sas端口建立连接之后传输,有的基元则仅仅在sas端口间无连接时发生作用,而有的基元则可以在任意情况下生效。
有的基元命令可用于ssp、stp和smp协议,有的则可能仅在某种协议下可用。
两个sas设备之间建立成功连接之后,除了基于信息之外所有的信息都通过sas帧的形式传输。
所谓的帧就是包括信息和4字节cRc数据的特定格式的编码。
sas帧包括两种类型:
无连接时可传输的帧和连接建立后可传输的帧,其中前者被称为sas地址帧(sasaddressframes)。
sas链路层定义了identiFy地址帧和open地址帧两种类型。
这两种地址帧传输之前一般会是一个soaF基元,传输之后一般会紧跟一个eoaF基元,这样在连
篇二:
sas结构与ssp协议的实现
sas结构与ssp协议的实现1
摘要本文在对sas(serialattachedscsi)结构进行简要概述后,针对sas中最主要的部分——ssp(serialscsiprotocol)结构及其协议的特点和具体实现作了较为详细地论述。
关键词sas结构ssp协议ssp工作流程
1概述
sas应用层是sas标准结构中的最高层,也是唯一没有包含在sas端口内的层次。
sas设备包含3个应用层:
scsi应用层,ata应用层和管理应用层。
应用层与sas端口内相应的传输层相互通讯----应用层产生请求并发向传输层,而后接收传输层发回的响应。
本文将从scsi应用层开始,逐步展开对scsi命令在sas中的执行过程的讨论。
图1展示了sas结构的全部层次
:
图1.sas结构的层次
为支持scsi应用层的使用,sas协议制定了串行scsi设备之间的信息交换规则。
其主要内容是:
所有sas设备都支持scsi基本命令集(spc-3),此外,各个sas设备还支持相关的特定设备类型命令集(例如,sas硬盘设备要服从scsi块命令标准,sbc-2),必须在遵循scsi结构模型标准(sam-3)的基础上实现整个sas结构。
sas协议与scsi协议的关系如图2。
图2.scsi标准层次
scsi应用层部分简化模型如图3所示:
图3.sasssp结构的简化模型
从图3中可以看出,ssp启动方就是sas启动方,包括scsi启动方应用层和启动方端口部件。
同样,ssp目标方就是sas目标方,包括scsi目标方应用层和目标方端口部件。
ssp启动方端口与目标方端口之间使用sas设备传输子系统(背板pcb、连接器和电缆等)相连,并通过ssp协议实现相互通讯。
2scsi传输层协议服务
scsi应用层与传输层之间的所有通信都是基于sam标准协议(sam-3)。
ssp定义了支持远程过程调用时sam-3需要的传输协议服务以及sas映射到sam单元的方式。
在sas中,包括无返回数据传输命令(例如,staRtstopunit)、任务管理功能(例如,aboRttask)、数据入命令(例如,Read)、数据出命令(例如,wRite)的过程调用。
协议中,无返回数据传输命令序列的执行过程如图4所示。
图4.无返回数据传输的命令序列
具体过程是scsi启动方应用层发送一个无数据发送命令的协议服务请求到sas启动方设备的ssp端口,该请求包括该命令预期的cdb和ssp目标端口的sas地址;ssp启动方端口利用发送来的信息构建命令帧并建立与目标端口的联接,而后把该帧发送到指定的目标端口;目标端口接收、检查和解析该帧,向目标应用层发送收到命令的协议服务指示信息,该信息包括ssp启动方端口识别信息和本次命令的cdb;目标应用层处理接收到的命令,在处理完成后向ssp目标端口发送一个针对ssp启动方端口命令的协议服务响应请求,该响应请求信息包含命令完成状况信息和启动方端口的sas地址;目标端口利用该信息构建响应帧并建立与启动方端口的联接,而后向启动方端口发送该帧。
启动方端口接收、检查和解析该帧,向scsi启动方应用层发送命令完成确认信息,该确认信息包含目标、任务和状态标示符。
3scsi方式的参数
方式断定(modesense)命令把ssp目标设备方式页的参数返回到scsi启动方的应用层,启动方应用层可以通过方式选择(modeselect)命令修改ssp目标设备方式页内的参数。
这些命令及相应的页格式都遵从scsi基本命令集规范。
sas标准在ssp协议中又补充了两种方式页:
断开/重联方式页和ssp协议专用的两种端口方式页。
3.1断开/重联方式页
断开/重联方式页为scsi启动方应用层提供了一种调整系统性能的方法。
协议中规定该方式页在ssp目标设备中的实现是强制性的,但是目标设备不一定要对这些参数提供支持(响应方式断定命令的参数使用目标设备在方式页字段中返回零来指明,当返回为“0”时,目标设备不承认由启动方设备修改的参数值——即使该目标设备支持这个参数)。
3.2sasssp协议特定的端口方式页—短格式
短格式方式页为ssp目标应用层提供了一种方法,它可以在ssp启动方设备在规定的时间内不做出响应时收回所占用的资源。
不管使用何种方式,目标设备都不必要支持其中的参数,也不需要承认启动方对参数值的修改。
i_t_nexuslosstime字段值指定了在收回分配给启动方设备的资源之前,ssp目标端口用来尝试与ssp启动端口重联最多可耗费的时间。
该字段的值是在初始化时送到sas目标端口并由目标端口层初始化i_t_nexuslosstime定时器。
initiatoRResponsetimeout字段内的值指定在夭折一条命令之前,ssp目标端口允许等待接收一个帧的最长等待时间。
当一个xFeR_Rdy帧发送到ssp启动方端口后,目标端口按照该字段的值设置并启动定时器。
在定时器超时前,如果启动方端口没有对xFeR_Rdy提供数据响应,scsi目标应用层就可以夭折该次命令,并收回该次命令使用的资源。
该字段为零值时,指示断开或不支持定时器。
3.3协议特定的端口方式页—phy控制和发现子页
这是一种长格式的方式页,它允许ssp目标方的应用层把目标sas端口相关phy的信息提供给启动者的应用层。
每一个phy都有一个方式页。
如果一个sas的目标端口中包含两个端口,每个端口各有一个phy,则ssp目标应用层就需要返回两个phy的信息。
所有ssp目标设备都应该实现该页和所有参数报告,但目标设备不一定允许启动方设备改变其参数值。
该方式页内的字段和意义解释如下:
(1)phyidentiFieR字段包含该sas设备在sas端口内为一个phy分配的唯一的编号。
(2)attacheddeVicetype字段指示配接到该phy的设备类型(例如,扩展器设备),它取自于所收到的identiFy寻址帧。
(3)negotiatedphysicallinkRate字段指示最后的速度协商结果。
(4)使用6个数据位指示连接到该端口的设备端口的类型(ssp启动端口,ssp目标端口),它由最后收到的identiFy寻址帧确定。
(5)sasaddRess寻址字段含有在标示序列期间phy发送的sas地址。
(6)attachedsasaddRess字段含有在最后识别序列期间phy接收到的sas地址。
(7)attachedphyidentiFieR字段含有在最后识别序列期间phy接收到的phy标示符。
(8)haRdwaReminimumphysicallinkRate字段指示速率协商时phy支持的最小的物理链路速率。
(9)pRogRammedminimumphysicallinkRate字段示速率协商时phy支持的最小的物理链路层的速率已被设置。
如果目标设备不允许通过modeselect命令改变该值,则该值由硬件的最小物理链路速率值确定。
(10)pRogRammedmaximumphysicallinkRate字段标示速率协商时phy支持的最大的物理链路层的速率已被设置。
如果目标设备不允许通过modeselect命令改变该值,则该值由硬件的最大物理链路速率值确定。
3.4scsi的日志参数和协议要求的日志页
logsense命令为scsi启动方应用层提供了一种可以获得统计信息或ssp目标设备保存的操作信息的方法。
logselect命令为启动方应用层提供了一种管理这种信息方法。
sas协议中,日志页的格式遵从scsi基本命令集中的规定,sas标准对ssp协议中日志页的使用补充如下。
scsi启动方应用层利用日志页获取sas目标设备phy信息和phy的错误状态。
要求所有的ssp目标设备都要实现该页并能够报告所有的参数。
但是,目标设备不必要提供由启动者设备来改变参数值。
以下日志页的信息与该协议特有的控制和发现页的返回相同:
phy标示符、配接设备的类型、协商的物理链路速率、用于连接设备类型的六个数据位、sas地址、附加sas地址和附加phy标示符。
除了以上的参数信息外,日志页中还包含一些错误信息,例如inValiddwoRdcount、RunningdispaRityeRRoRcount、lossoFdwoRdsynchRonizationcount、phyResetpRoblemcount。
4scsi命令在sas中的执行过程
按照图1展示的sas结构分层,以读命令为例,简要说明一下scsi命令通过sas结构层次
的处理过程。
为突出命令执行的主要步骤,假定在执行scsi命令前sas结构中已经满足以下几个条件:
(a)启动者和目标之间的路径中建立了操作链路。
(b)启动者和目标没有打开其它联接。
(c)目标上没有对应该启动者的还未完成的其它任务。
(d)全部任务数据在一个帧内发送。
(e)该序列产生在一个联接期间。
(f)序列期间未出现错误和重试。
在以上假定条件均成立的基础上,scsi命令执行的步骤如下:
(1)该序列起始在总线空闲阶段。
在一个可运作的物理链路上,启动者和目标的链路层正发送着扰频数据和原语(例如,align(0))。
(2)scsi启动方应用层向ssp传输层发出一个发送scsi命令协议的服务请求。
该请求包含:
a.连接速率;
b.启动者联接标志(该字段是可选用字段,可设置为“0”);
c.目标的sas地址(例如,目标端口的wwn);
d.命令标志;
e.逻辑设备号;
f.命令的任务属性(例如,把任务放在队列头);
g.读命令的cdb。
(3)启动方ssp传输层构建一个命令信息单元后,向启动方的sas端口层发送一个帧发送请求。
该请求包含:
a.启动者端口位置为“1”;
b.协议类型置为ssp;
c.连接速率(取自发送scsi命令的请求);
d.启动者连接标志值(如果发送scsi命令的请求中没有指示,该位置零);e.目标的sas地址(取自发送scsi命令的请求);
f.帧的类型(例如,命令);
g.重新计算后的目标sas地址(从64位sas地址中计算后的24位sas目标地址);h.重新计算后的源sas地址(从64位sas地址中计算后的24位sas源地址);
i.命令标志(取自发送scsi命令的请求);
j.包含lun、任务属性和cdb的命令信息单元(取自发送scsi命令的请求);
(4)启动方端口层向启动端口的链路层发送一个打开联接的请求。
打开联接请求包含:
a.启动者端口位置“1”(取自帧发送请求);
b.置为ssp协议(取自帧发送请求);
c.连接速率(取自帧发送请求);
d.启动者连接标志值(取自帧发送请求);
e.目标sas地址(取自帧发送请求);
f.源sas地址(取自帧发送请求);
g.路径的连锁数;
h.仲裁的等待时间值。
(5)启动方链路层构建一个open寻址帧,通过相关的phy层把该帧发向目标方的sas地址。
open寻址帧包含的内容有:
a.一个soaF原语;
b.启动者端口位置“1”(取自open连接请求);
c.置为ssp协议(取自open连接请求);
d.寻址帧类型;
e.连接的速率(取自open连接请求);
f.启动者连接标志(取自open连接请求);
g.目标sas地址(取自open连接请求);
h.源sas地址(取自open连接请求);
i.路径的联锁数(取自open连接请求);
j.仲裁等待时间(取自open连接请求);
k.cRc;
l.一个eoaF原语。
除了原语外,以上各项在发送时都要进行扰频。
(6)目标方的链路层接收phy层的open寻址帧,校验cRc,并且通过它的phy向启动方的sas地
址发送一个open-accept原语。
(7)目标链路层通过它的phy向启动方sas地址发送一个RRdy原语,准予启动方端口向目标端口发送一个帧。
(8)目标的链路层向目标的端口层发送一个联接被打开的确认,该确认包含有启动者的sas地址。
(9)启动方应用层收到open-accept原语后,向启动方端口层发送一个联接被打开的确认。
(10)启动方端口层向启动方的ssp链路层发送一个tx帧请求。
tx帧请求后随以下内容:
a.帧的类型;
b.重新计算后的目标sas地址;
c.重新计算后的源sas地址;
d.命令标志;
e.命令信息单元。
(11)启动方的链路层构建命令帧,通过相关的phy层向目标sas地址发送该帧。
命令帧包含以
下内容:
a.一个soF原语;
b.tx帧请求的内容;
c.cRc;
d.一个eoF原语。
除原语外,命令帧内的其它部分都要经链路层扰频。
(12)启动方链路层向该启动方端口层发送一个帧发送确认。
(13)启动方端口层向启动方ssp传输层发送一个传输状态(帧已发送)。
(14)目标链路层收到命令帧,进行cRc校验,而后向启动方sas地址发送一个ack原语。
(15)目标链路层向目标端口层发送一个ack发送确认。
(16)目标的端口层向目标的ssp传输层发送一个ack确认。
(17)启动方的链路层收到ack原语后,修改ack/nak平衡计数器,向启动方sas端口层发送一
个收到ack的确认。
(18)启动方端口层向启动方ssp传输层发送一个传输状态(收到ack)确认。
(19)启动方链路层向目标sas地址发送两个RRdy原语,同意目标端口向启动方端口发送两个
帧,其中一个是数据帧,一个是Response帧。
启动方可以在连接期间的任何时刻发出第二个RRdy。
(20)目标链路层向目标的sas端口层发送一个帧接收(ack/nak平衡)确认。
(21)目标端口层向ssp目标传输层发送一个帧接收(ack/nak平衡)确认,该确认包含有命令帧。
(22)目标ssp传输层检查帧的类型和长度,也可能检查保留字段和地址;还要向目标的scsi应用层发送一个scsi命令接收协议服务指示。
scsi命令接收指示包含:
a.源方的sas地址;
b.命令标志;
c.逻辑设备号;
d.命令描述cdb。
(23)目标scsi应用层向目标的ssp传输层发送一个数据入协议服务请求。
发送的数据入请求
包含:
a.目的地的sas地址(取自命令接收指示的源sas地址);
b.标志(取自命令接收指示);
c.目标的传输标志(该字段可选,可以为零);
d.数据偏移;
篇三:
sata与sas接口
sata与sas接口硬盘
一、sata与sas接口的异同
sata(serialata)和sas(serialattachedscsi)串行总线接口在数据传输的过程中,数据线和信号线独立使用,并且传输的时钟频率保持独立,因此同以往的并行总线接口技术相比,串行总线的传输速率是并行的30倍。
sata的出现扩展了原先的ata技术,并且业界指定第一代sata标准的峰值传输速率可达1.5gbps。
sas技术是并行scsi的改进技术,采用了串行的传输方式。
sas定位于高端的服务器市场。
在系统中,每一个端口可以最多可以连接16256个外部设备,并且sas采取直接的点到点的串行传输方式,传输的速率高达3gbps。
sas的接口也做了较大的改进,它同时提供了3.5英寸和2.5英寸的接口,因此能够适合不同服务器环境的需求。
更重要的一点是,sas接口和sata接口完全兼容,这一特性给了整个系统更多的选择空间和适用范围,用户可以根据不同的需求和承受能力,选择sas和sata进行组合。
sas接口和sata接口具有多层次兼容的特点:
1.物理层
sas连接接口和sata接口完全兼容,sata硬盘可以直接使用在sas的环境中。
从接口标准上而言,sata是sas的一个子标准,因此sas控制器可以直接操控sata硬盘。
但是sas却不能直接使用在sata的环境中,因为sata控制器并不能对sas硬盘进行控制。
在sas和sata这样的关系下,业界已经着手研究一种基于sas的通用接口,在这种接口下,sas和sata可以完全兼容。
2.协议层
sas由3种类型协议组成,根据连接的不同设备使用相应的协议进行数据传输。
其中串行scsi协议(ssp)用于传输scsi命令;scsi管理协议(smp)用于对连接设备的维护和管理;sata通道协议(stp)用于sas和sata之间数据的传输。
因此在这3种协议的配合下,sas可以和sata和部分scs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sas 协议
![提示](https://static.bdocx.com/images/bang_tan.gif)