竭诚为您提供优质文档/双击可除
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基元,这样在连