竭诚为您提供优质文档/双击可除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”时,目标设备不承认由启动方设备修改的参数值——即使该目标设备支持这个参数)。