您好,欢迎访问三七文档
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地址帧能够被接受器从混乱的dwords中优先辨别并且执行。物理层是SAS标准中的最底层,它主要定义了SAS线缆和接头的规范,电气特性和SASphy层中用于SAS收发器的测试条件。具体的接口和连接器我们已经在前面的章节中做了介绍。
本文标题:SAS协议分析
链接地址:https://www.777doc.com/doc-3644400 .html