fc协议栈分析报告文案_第1页
fc协议栈分析报告文案_第2页
fc协议栈分析报告文案_第3页
fc协议栈分析报告文案_第4页
fc协议栈分析报告文案_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./FC协议栈分析报告项目名称:编写:审核:批准:日期:修订记录版本/状态作者参与者起始日期备注目录1FC概述42FC-0<Physica1>层63FC-1<Code>编码层73.18B/10B编码83.2链路维护94FC-2<Protocol>层114.1帧<Frame>结构114.2命令集<OrderedSet>174.3序列与交换184.4协议184.5分类服务和流控制194.6登录和服务参数225FC-3层236FC-4<Mapping>层237FC拓扑结构247.1交换拓扑247.2点对点拓扑267.3仲裁环拓扑268FC服务与管理298.1名称服务<NameServer>298.2管理服务<ManagementServer>308.3时间和别名服务319FCP-4协议映射329.1FCPI/O操作329.2FCP信息单元〔FCPIU339.3FCPI/O操作流程439.4差错检测与恢复46参考文献521FC概述光纤通道<FiberChannel,FC>技术是一种能够为存储设备、IP数据网、音频流等应用提供高速数据传输的骨干网络技术。早在1988年,惠普〔HP,SUN和IBM等公司就开始了对这项技术进行实验和开发、经过多年的发展,光纤通道技术已经发展成为一项完备的,高速的和高扩展性的网络技术,现在的光纤通道技术主要应用在网络数据存储、高速IP数据网、音视频流等多种领域。目前,光纤通道技术可以广泛提供1Gb/s速率的设备,价格有所降低,设备的端口密度可以达到数十个甚至上百个。2Gb/s设备已经实用化,标准化和互操作性等都有所提高。FC是由美国工业标准协会<ANSI>提出的通道标准,其目的是适应快速增长的高速数据传输的需求。为了能够适应可能出现的技术变革,提供更快更好的性能,光纤通道技术被设计为具有下面的这些要素:为可扩展性、小型光纤,连接器和距离扩展能力准备的串行传输;最大规模网络应用中的异步通信;交互通信能力和连接新的传输介质的能力;低延迟的交换网络互联;为开发和配置复杂性准备的模块化和层次化结构;高带宽、低延迟的最低错误率和轻量级错误;我们可以认为光纤通道是一种通用的传输通道,它能够为多种高层协议<UpperLevelProtocols,ULP>提供高性能的传输通道,这些协议包括智能外设接口<IntelligentPeripheralInterface,IPI>命令集、小型计算机系统接口<SmallComputerSystemInterface,SCSI>命令集或高性能并行接口<High—PerformanceParallelInterface,HIPPI>数据帧、互联网协议<InternetProtocol,IP>、IEEES02.2等。在逻辑上,我们可以将FC看作是一种用于构造高性能信息传输的、双向的、点对点的串行数据通道。在物理上,FC是一到多对应的点对点的互连链路,每条链路终结于一个端口或转发器。FC的链路介质可以是光纤、双绞线或同轴电缆。在FC系统中,所有的设备<如主机或存储系统>的连接都是由两条单向的传输通道构成的,一条用于发送,另一条用于接收,每一条传输通道都要将一个设备上端口的发送器与另一个设备上端口的接收器连接起来。传输通道介质可以采用单模光纤、多模光纤.双绞线或同轴电缆,相应的设备端口可以采用SC、SG、LC或MT—RJ。FC提供了非常广泛的介质速率选择围,计入8B/10B编码和其他开销之后,对于净负荷100MB/s的传输速率,介质上的传输速率要达到1063Mb/s。这一速率是实际速率,称为全速<FullSpeed>。还可以分为半速、1/4速、1培速等。同样,FC系统也定义了倍速和4倍速<如下表所示>。表1-1FC速率类型净负荷MB/s速率Mb/s与全速的比率12.51331/8251661/4505311/2100106312002126240042524FC系统中设备的连接有三种拓扑方式:点对点方式<PointtoPoint>、交换方式<Fabric>、仲裁环方式<ArbitratedLoop>。FC协议栈模型可以用下图来表示:图1-1光纤通道协议栈结构 1.FC-0层描述物理接口,它包括传送介质,发射机和接收机及其接口。FC-0层规定了各种介质和与之有关的能以各种速率运行的驱动器和接收机。 2.FC-1层描述了8B/10B的编码规则,该码型可以实现传送比特流的DC均衡,使控制字节与数据字节分离且可简化比特,字节和字同步。另外,该编码具有检测某些传送和接收误差的机制。 3.FC-2层是信令协议层,它规定了需要传送成块数据的规则和机制。在协议层,FC-2层是最复杂的一层,它提供不同类型的服务,分组,排序,检错,传送数据的分段重组,以及协调不同容量的端口之间的通信需要注册服务。 4.FC-3层提供的一系列服务,是光纤通路节点的多个N端口所公用的。由于必要性限制,故对这层尚未给出明确定义,但是它所提供的功能适用于整个体系结构未来的扩展。 5.FC-4层提供了光纤通路到已存在的更上层协议的映射,这些协议包括IP、SCSI协议,或HIPPI等等。2FC-0<Physica1>层FC-0层定义了FC中的物理部分,包括光纤、连接器以及不同传输介质和传输速率所对应的光学和电器特性参数。另外,在FC-0层中还详细说明了各种介质以及相应的驱动和可能的接收速度。FC-0层又分为介质子层和接口子层,介质子层描述了不同传输介质的光学和电器特性,以及相应的传输速率和距离围。目前支持的传输介质主要有单模光纤<Singlemode,SM>、多模光纤<Multimode,Mm>、视频电缆<VideoCable,VC>和微型电缆<MiniatureCable,MI>以及屏蔽双绞线<TwistedPair,TP>等。接口子层描述了不同传输介质的接口规,及其接口插座的光信号特性,其中包括发送接口<TX>和接收接口<RX>,如:SC、SG、LC、MT-RJ等。另外,在FC-0层中还定义了发送状态、接收状态、输人数据相位跳转的回应、不可用码的限制、接收初始化时间等容。发送状态发送状态由FC-l层控制,状态值由从FC-l层接收的串行数据信号转换为与传输介质相适合的信号类型。FC-0层共有3种状态:不可发送状态<TransmitterNot.EnableState>,表示光发送器的光源输出关闭,或者是电路发送器的输出电平小于最小限制或为零。在电源打开时,FC-0层将置于不可发送状态,直到FC-1发出信号。可发送状态<TransmitterEnableState>,表示发送器能发送数据比特序列。发送失败状态<TransmitterFailureState>,有些发送器能够监控自己部发生的错误,当其发现错误后将自己置于发送失败状态,另外有些发送器不能够监控自己部发生的错误,所以也就不具备发送失败状态。接收状态接收器从传输介质中接收数据比特序列,然后放大数据信号并且联合时钟一起送给FC-1层进行处理。FC-0层中没有接收状态。输入数据相位跳转的回应有些支持链路控制功能<LinkControl-Facilities>的FC物理设备可以检测到输入串行比特数据流的相位不连续,并且提供相应的恢复特性。不可用码的限制FC-0层并不检测传输编码中不合规则的比特流,如:非法的命令集等,FC-0层总是希望将比特流传输到能够提供码流校验的更高层去处理。而FC-0层只是尽可能地提供码流传输的同步和提供误码率<BitErrorRate,BER>/小于10-12等必须条件。接收初始化时间FC-0层接收器的初始化时间指的是,从初始接收有效输入数据开始到对输入比特流同步并以保证的误码率放大和转发的时间。整个接收器的初始化时间应当不大干1ms。3FC-1<Code>编码层FC-1层中定义了FC的底层传输协议,包括串行编码、解码和链路状态维护。在FC中,数据的传输采用8B/10B编码,用以限制最大运行编码长度维护数据比特流电位的平衡并且提供信息数据的编码对齐。经编码处理后的字符共有两类,一类是数据字符,一类是专用字符。在FC-1层中由几个专用字符组合在一起,并通过字符命令集来表示一定的特殊含义,如:帧边界、简单传输请求或通过周期性的交互维持链路传输状态。3.18B/10B编码在FC-1层中,信息数据的传送编码是将1个字节8比特转换成10比特的传输字符,然后再将比特流进行串行传输的。在接收端如果是数据字符,则将10比特的传输字符转换为8比特的标准字节,FC支持所有0-255的8比特标准字节,如果是保留的专用字符将不被转换,而直接进行功能处理。FC-1使用字母符号表示数据信息比特和控制变量。对于上层FC-2层的1个数据字节,在FC-1层中由A,B,C,D,E,F,G,H表示,同时由z表示控制变量<如图3所示>,这个信息经过FC-I的8B/10B编码转换为1个A,B,C,D,E,F,G,H,I,J的10比特传输字符。其中每个信息比特表示的值为1或0,每个控制变量表示的值为D<数据字符>或K<专用字符>。对于每一个标准的8比特传输字符,均采用Zxx.Y的命名法则进行编码转换,其中Z是未编码的传输字符的控制变量,如果传输字符是有效数据字符,则Z=D;如果传输字符表示专用字符,则Z=K。小数点前面的xx表示比特符号E,D,C,B和A的二进制值,小数点后的Y表示比特符号H,G和F的二进制值。经过Zxx.Y命名转换后的传输字符可以通过编码表获得l0比特的传输编码<参见FC-FS标准中的10比特编码表>。下图示例了FC-2层十六进制字节0xBC分别作为有效数据字符和专用字符在FC-1层中的字符编码命名和10比特转换过程。图3-1光纤通道编码3.2链路维护FC-1层的链路维护是通过系统对发送器和接收器的逻辑状态进行控制来完成的。发送器和接收器的逻辑状态大致可以分为操作状态和非操作状态两种。接收器状态转换见下图。当接收器检测到一个信号,而且接收器又不在回路模式时,接收器将尝试进行接收器收到的传输字边界字符的编码比特流之间的同步。如果没有边界分隔字符发现,接收器将返回同步丢失的错误。图3-2接收器状态转换图3-2接收器状态转换接收器的操作状态包括同步获得状态<Synchronization—Acquired>和同步丢失状态<Loss-Of—Synchronization>。当接收器收到的传输字边界字符与发送器产生的边界字符相同时,接收器进入到同步获得状态,同时接收器开始接收比特信息流,并开始进行解码。当接收器收到的传输词边界字符与发送器产生的边界字符不相同时,接收器进入到同步丢失状态。接收器在进入到同步丢失状态以后,仍然保持可操作状态,但是不再接收比特信息流和相应的解码。接收器的非操作状态只有重置状态<Reset>一种,当部或外部的重置条件被强加给接收器时,接收器将成为非操作状态,并随之进入重置状态。正常情况下,接收器的初始状态为同步丢失状态,此时的接收器会尝试进行同步,一旦和发送器建立了同步,接收器就进入同步获得状态进行比特信息流的接收和解码,如果接收器检测到信号丢失条件,那么就从同步获得状态转入同步丢失状态,一般信号丢失条件为连续收到5个非法传输词字符,无论接收器是在同步获得状态还是在同步丢失状态,当部或外部的重置条件被强加给接收器时,接收器将转入重置状态FC>,而当部或外部的重置退出条件被强加给接收器时,接收器由重置状态转入同步丢失状态,在FC标准之中没有明确地定义重置条件和重置退出条件,具体实现由厂商完成,最典型的重置条件和重置退出条件是电位重置。当发送器处于操作状态,发送器将持续尝试向所连接的光纤发送经过编码的比特信息流.有些发送器能够监视发送信号和校验其有效性,如果发现错误,发送器会转入非操作状态。FC-1层发送器的操作状态包括工作状态<Working>、不可用状态<Not—Enabled>和开放光路状态<Open—Fiber>。当发送器积极地尝试向所连接的光纤发送经过编码的比特信息流时,发送器处于工作状态。当一个发送器端口请求或被外部事件所初始化,发送器将进入不可用状态,而当发送器检测到一个激光安全条件,发送器将进入开放光路状态。发送器在进入到不可用状态和开放光路状态,将保持操作状态。激光安全条件的检测是由FC-0层的链路控制功能<Link—Control—Facilities>来完成的,旦发送器进八开放光路状态,不管是否接收到可用或不可用的端口请求,发送器都将一直保持开放光路状态,直到发送器检测不到激光安全条件。发送器的非操作状态只有失败状态<Fai1ure>一种,当发送器检测到一个失败条件后,发送器将成为非操作状态,并随之进入失败状态。失败条件的检测,是由各个生产厂商定义的单一信号的检测,FC标准没有作明确规定。正常情况下,发送器的初始状态为不可用状态,如果发送器收到端口可用的请求,而且又没有检测到激光安全的条件,那么发送器就会进入工作状态,然后开始向所连接的光纤发送编码比特信息流如果处于开放光路状态的发送器检测到激光安全条件不存在了,而且又没有明显的禁用请求,那么发送器就会转入到工作状态。如果处于工作状态的发送器收到一个禁用请求,而且又没有检测到激光安全的条件,那么发送器就会回到不可用状态。无论发送器是处于工作状态,还是处于不可用状态,只要是发送器检测到了激光安装条件,那么发送器就会转入到开放光路状态。如果处于工作状态的发送器在向所连接的光纤发送编码比特信息流时检测到了一个失败条件,那么发送器就会转入到失败状态。如果处于开放光路状态的发送器检测到激光安全条件不存在了,而且收到明显的禁用请求,那幺发送器就会转入到不可用状态。发送器只有在工作状态下,才会向所连接的光纤发送编码比特信息流,而当处于不可用状态或开放光路状态时,将停止向所连接的光纤发送编码比特信息流,但是仍保持操作状态。如下图所示:图3-3发送器状态转换图图3-3发送器状态转换图4FC-2<Protocol>层数据帧及数据包的发送和接收是在FC-2<Protocol>层实现的,FC-2层定义了帧结构、命令集、序列、交换、分类服务等容。FC-2层定义了4种数据传输单位:帧、帧序列、帧交换和数据包。当上层协议的数据单元长度大于光纤通道数据帧负载的最大长度2112个字节时,则需要被分割成多个数据帧,这些数据帧就被称为帧序列。一个帧序列表示一个上层协议数据单元,而上层应用程序对数据的操作通常基于一个个操作,一个操作包括双向的几个数据单元交换,因此,用帧交换来表示上层协议的一个操作,一个帧交换只能有一个帧序列处于活动状态。数据包是由一个或若干个帧交换组成。4.1帧<Frame>结构数据帧由帧起始〔SOF、帧报头〔frameheader、数据字段、冗余校验码〔CRC和帧结束〔EOF组成。帧起始、冗余校验码和帧结束都是由一个传输字组成。帧报头由6个传输字组成。负载最多能有537个传输字〔2112个字节,数据帧格式如下图所示。图4-1FC-2的帧格式图4-1FC-2的帧格式帧报头格式每个帧含有一个24字节的帧头,它包括字段描述容和帧处理。帧头格式包括下列字段:R_CTL:路由控制。D_ID:目的标识符。S_ID:源点标识符。CS_CTL:类型特殊控制。TYPE:数据结构类型。F_CTL:帧控制。SEQ_ID:序列标识符。DF_CTL:数据字段控制。SEQ_CNT:序列数。OX_ID:发送端交换ID。RX_ID:响应端交换ID。参数:数据帧中的相对偏移。帧头字段的主要作用是唯一的标识帧。每个帧是由称为帧ID值的〔S_ID,D_ID,OX_ID,RX_ID,SEQ_ID和SEQ_CNT值来唯一地标识。帧报头格式如下图所示:图4-2帧报头格式图4-2帧报头格式路由控制字段:R_CTL提供不同类型帧之间第一层的区别,起到归类帧的作用,路由控制<R_CTL>是1个字节字段,它包括两个四位的子字段,即:路由子字段和信息子字段,路由控制字段R_CTL类别码如下表所示。表4-1R_CTL类别码路由帧类型0设备数据帧2扩展链路服务3FC-4链路数据4视频数据5扩展头8基本链路服务c链路控制帧f扩展路由其他保留地址标识符:S_ID和D_ID每个N端口有一个3字节N端口标识符,在交换结构地址域是唯一的。F端口像N端口一样都具有唯一的本地地址标识符,它可以用于将帧连接到交换结构上的端口。等级特别控制:CS_CTL用于与服务类型有关的帧处理。这个字段只在第1类和第4类帧中才有意义。数据结构类型:TYPE一个可进一步标识帧种类的字段。最常见的用法是在数据帧中来区别FC-4ULP接口。该字段和R_CTL字段共同标识出帧的具体类型。首先通过R_CTL字段标识出该帧是数据帧还是链路控制帧,再通过该字段进一步标识出帧的类型。例如当R_CTL=0xh,TYPE=0Ah则表示该帧为承载SCSI协议的数据帧。帧控制:F_CTL一个含有与帧容有关的控制信息,一个3字节字段,大多数其他帧头字段基本上是用于帧标识,F_CTL是控制帧处理的重要字段,对于不同的服务类型来说,相关的控制位有不同的值,同时控制字段的有效性也不同。F_CTL各字段的详细描述如下表所示:表4-2F控制字段位描述交换上下文230交换发起端1交换响应端序列上下文220序列发起端1序列响应端第一个序列210交换的其它序列1交换的第一个序列最后一个序列200交换的其它序列1交换的最后一个序列结束序列190序列的其它数据帧1序列的最后一个数据帧结束连接<Class1或Class6>180连接激活1连接挂起结束<Class1或Class6中有效,在其它类型中忽略>CS_CTL/优先级170字1的31~24位表示CS_CTL1字1的31~24位表示优先级序列Initiative160保持序列Initiative1传输序列Initiative废弃15废弃14ACK形式〔Class1,Class2,Class6有效13-1200b不需要额外提供01b需要Ack_110b保留11b需要Ack_0数据压缩〔废弃11数据加密〔废弃10序列重传〔Class1,Class6有效90初始序列重传1序列重传单向传输〔Class1,Class6有效80双向传输1单向传输连续序列条件〔当结束序列=1,序列Initiative=0时有效7~600b无信息01b实时序列10b快速序列11b延迟序列终止序列条件5~4接收端响应帧00b连续序列01b异常终止序列,按异常中止处理10b停止序列11b实时序列重传请求数据帧00b异常中止,丢弃多个序列01b异常中止,丢弃一个序列02b无限缓存处理策略11b丢弃多个序列,立即重传相对偏移30一些帧定义的参数字段1参数字段,相对偏移交换重组2交换重组保留填充字节1~0净荷结束,不满4字节整数倍,填充00b填充0个字节01b填充1个字节10b填充2个字节11b填充3个字节序列ID:SEQ_ID用来唯一标识交换的序列,由序列发起端分配。数据字段控制:DF_CTL规定帧头和帧净荷之间任选头标所包含容的说明。数据字段中定义的可选报头是:网络报头<NetworkHeader>、关联报头<AssociationHeader>和设备报头<DeviceHeader>。序列计数:SEQ_CNT用来唯一地识别出一序列的帧,保证帧接收的连续性并使链路控制帧与它们相关的数据帧具有唯一的关系。发送端交换标识符:OX_ID发起端交换标识,是除了FFFFh以外的值。响应端交换标识符:RX_ID接收端交换标识,是除了FFFFh以外的值。参数字段:此字段与帧类型有关。对链路控制帧而言,参数字段给出链路控制帧的特定类型。对数据帧而言,参数字段包含相对偏转值。这规定从ULP缓冲区与ULP基础地址的偏移。参数字段的定义:对请求数据类<FCP_DATAIU>,参数字段应该包含一个相对的偏移,F_CTL的相对偏移位应该置为1,表明参数字段的值是一个相对偏移。相对偏移是个4的整数倍。对非请求控制类<FCP_CMNDIU>,参数字段依赖任务重试标志是否激活,如果发送和接收的FCP_PORT在任务重试上达成一致,参数字段应该置为任务重试标志,如果发送和接收的FCP_PORT在任务重试上没有达成一致,参数字段应该置为0。不管哪种情况,F_CTL字段的相对偏移位都应该置为0。对其他的FCP类型的Device_data帧,F_CTL字段应该置为0,相对偏移字段包含0。帧的容域帧容域的数据长度是4字节的整数倍,当长度不足4字节的整数倍时将采用向容域中填充1-3个字节,从而使其长度达到4字节的整数倍。容域中字段描述如下图所示:图4-3帧内容图4-3帧内容帧数据段中的可选报头是提供给FC-4层使用的,可选报头头的类型是由帧报头的DF_CTL字段决定的。DF_CTL字段的长度是一个字,对应位与所定义的附加报头如下表所示。表4-3附加报头字段对应位Bit<s>可选报头可应用围23保留所有帧220=无ESP_Header和ESP_Trailer1=ESP_Header和ESP_Trailer所有帧210=无Network_Header1=Network_Header设备数据和视频数据帧200=无Association_Header1=Association_Header设备数据和视频数据帧19-18保留所有帧17-1600=无Device_Header01=16ByteDevice_Header10=32ByteDevice_Header11=64ByteDevice_Header设备数据和视频数据帧可选报头的长度和类型如下图所示:图4-4FC-2帧的内容域中可选报头和负载图4-4FC-2帧的内容域中可选报头和负载4.2命令集<OrderedSet>在FC-2命令集中的每条命令均由表示数据或专用符号的4个字符组成,每条命令均表示一定的含义。命令集提供有效性使获得的比特或字同步,同时命令集也用于建立字边界对齐。所有命令都以专用字符K28.5作为开始。在FC-2层有帧定界符、原始信号、原始序列三种主要的命令。帧定界符<FrameDelimiters>包括帧开始<SOF>和帧结束<EOF>命令集。用于表示一个帧的开始与结束,在交换拓扑和节点瑞口中由多个SOF和EOF定界符用于序列控制。例如:典型的SOF命令为K28.5D2l.5D23.0D23.0、EOF命令为K28.5D21.4D21.6D21.6。原始信号<PrimitiveSignals>包括空闲{Idle>和接收器准备<ReceiverReady,R-RDY>命令集。当一个可操作的节点端口准备好发送或接收数据时,一个表示空闲命令的原始信号会被发送;当接口缓冲区准备好接收数据帧时,一个表示接收器准备的原始信号会被发送。原始序列<PrimitiveSequence>是一组被连续地重复发送的命令集用于表示节点端口特定的状态或端口逻辑状态。当一个原始序列被节点端口接收或识别.节点端口恢复个相应的原始序列或空闲命令。识别一个原始序列需要连续地检测3个相同命令集的实例典型的原始序列有FC-l层的OLS、NOS、LR、LRR状态命令。4.3序列与交换序列<Sequence>序列是从一个节点端口向另外一个节点端口单向发送的一个或多个相关帧,每个帧都根据序列总数<SEQ-CNT>有一个在整个序列中唯一的序列标识<SEQ-ID>。通常序列边界的错误恢复与控制由上层协议完成。交换<Exchange>交换是由一个或多个用作两个节点端口之间单一操作的非并发序列组成的.交换可以是单向的也可是双向的。在单一交换中只能有一个序列在一个时间被激活.但是在不同交换之间可以有多个序列被同时激活。4.4协议FC一2层中还定义了一些协议<Protocols>用于上层服务:原始序列协议——基于原始序列,用于链路失败;交换网登录协议——在交换网络拓扑中,当一个节点端口登录交换网络时,节点端口与交换端口之间相互交换服务参数;节点端口登录协议——在点对点拓扑中,在传输数据之前,两个节点端口之间相互交换服务参数;数据传输协议——表述使用流控管理传输上层协议数据的方法;节点端口注销协议——一个节点端口请求撤消与另外一个节点端口的连接服务参数,断开与另外一个节点端口的连接。4.5分类服务和流控制分类服务<ServiceClasses>FC的服务类型是指FC提供不同的服务以满足不同的数据传输要求。FC一共定义了6种服务类型,基于FC的SCSI协议采用的是类型3的服务。用户可根据所作应用的传输特性,如:数据包的长度,传输持续时间等,选择相应的服务:<1>服务类型I<ClassI>可提供专用的连接,即有效的专用物理连接。一旦连接建立,交换拓扑网会维持和保证整个服务的连接这种服务能够保证两个节点端口之间的最大带宽的使用以及提供最高的吞吐量。接收端对每一个接收到的正确数据帧发一个确认帧给发送端。对不正确或丢失的数据帧,接收端发一个否认帧给发送端,发送端会重发。在服务类型I中数据帧是依照原始顺序被发送到目的节点端口的。下图描述了类型I服务的处理流程。图4-5类型I服务的处理流程<2>服务类型Ⅱ<ClassⅡ>是一种基于帧的交换,无连接的服务。服务类型Ⅱ允许一个或多个通道的带宽被多个源的多个数据帧所共享。交换拓扑网可能不保证数据帧的传送顺序。服务类型Ⅱ可用于连接建立时间大于等待时间的短时间数据流。服务类型I和服务类型Ⅱ都会发送确认消息<ACK>,确认数据帧的传送。如果数据帧因为拥塞而不能被适当地传送,接收端口会返回一个繁忙信号帧或拒绝信号帧给发送端.数据帧将被重新发送。类型Ⅱ服务中,数据发送端和接收端没有专用的通道,数据可能经过不同速度的中间连接,中间节点可能需要缓存来保存来不及发给下一个节点的数据。下图描述了类型Ⅱ服务的处理流程。图4-6类型Ⅱ服务的处理流程<3>服务类型Ⅲ<ClassⅢ>类似于服务类型Ⅱ,也是一种基于帧交换,无连接的服务,但是服务类型Ⅲ并不发送确认消息,这种类型的传输也称为数据报<Datagram>,因为不需要发送确认消息,所以可以提供更快速地传输。服务类型Ⅲ不关心数据的错误,由更高层负责进行错误回复和重排失序后的数据传输。服务类型Ⅲ可用于实时的数据传输。下图描述了类型Ⅲ服务的处理流程。图4-7类型Ⅲ服务的处理流程<4>服务类型Ⅳ<ClassⅣ>类似于服务类型Ⅰ,也是提供两个N端口之间专用的通信通道,保证数据传输固定的带宽,而且保证接收端接收的数据帧次序和发送端发出的次序一样,它与类型Ⅰ服务的不同之处是专用通信通道的带宽。类型Ⅰ服务中,两个N端口的全部通信带宽都用于类型Ⅰ的服务。例如100MB/s的N端口如果建立类型Ⅰ的服务,全部100MB/s带宽都会用于服务,也就是说类型Ⅰ服务建立的专用通道就是100MB/s的速度。而建立类型4服务时,N端口可以只用一部分带宽建立与另一N端口的专用通信通道。相对于两个N端口之间建立一个虚拟线路〔virtualcircuit。实际上是两个单向的虚拟线路,两个方向可能有不同的通信带宽。一个N端口可与多个N端口间建立多个类型4的服务。<5>服务类型Ⅴ<ClassⅤ>的服务在光纤通道标准中还没有完全定义好。<6>服务类型Ⅵ<ClassⅥ>的服务提供多播的功能。如果一个N端口想发数据给其他多个端口,它可以与多播服务器建立类型Ⅰ的服务。多播服务器再再这个发生数据的N端口和接收数据的多个N端口之间建立类型Ⅵ的服务。发送端把数据发送到多播服务器,多播服务器再负责把数据帧复制成多份,分别发送给多个接收端口。想接收多播数据的端口可以和别名服务器注册,多播服务器就会把数据发送到注册的端口。流控制<FlowControl>流控指的是FC-2层控制协调节点端口之间和节点端口与交换端口之间的接收帧数据流泛滥溢出。流控依靠于上层的分类服务,服务类型I的数据帧使用端对端的流控,服务类型Ⅲ使用缓冲对缓冲的流控,服务类型Ⅱ既使用端对端的流控.又使用缓冲对缓冲的流控。流控是由序列发起者<源>端口和序列接收者<目的>端口使用信任量<Credit>和信任总量<CreditCountCredit_CNT>来进行管理的。信任量指的是分配给发送端口的缓冲区数,信任总量指的是没有被序列接收者确认的数据帧数。端对端的流控用以协调节点端口之间的数据帧流,在这种情况下序列接收者通过返回一个确认帧给序列发起者,以表示接收到了合法的数据帧,当序列接收者的缓冲区相对于接收的数据帧不够时,也就是端对端信任量<EndtoEndCredit.EE_Credit>小于接收的数据帧数时.序列接收者会返回一个繁忙信号帧给序列发起者,而当序列接收者收到一个错误的数据帧时.序列接收者会返回一个错误信号帧给序列发起者,然后再由序列发起者返回一个端对端的信任总量<EndtoEndCreditCount.EE_Credit_CNT>。端对端流控的最初信任量是在节点端口登录时分配的。缓冲对缓冲的流控用于控制调节节点端口与交换端口之问或点对点拓扑中两个节点端口之间的的数据帧流。每个端口有责任管理缓冲对缓冲的信任总量<BuffertoBuffer.CreditCountBB-Credit_CNT>。缓冲对缓冲的信任量<BuffertoBufferCredit,BB-Credit>在节点端口登录交换网络时分配序列接收者通过向序列发起者发送接收器准备<R—RDY>信号帧,以通知序列发起者是否有空闲的缓冲区用于接收数据帧。4.6登录和服务参数登录程序是一个节点端口和另外一个节点端口或交换端口之间建立操作环境的一种方法。一个节点端口登录到另外一个节点端口,称为目的节点端口登录;一个节点端口登录到交换端口,称为交换网络登录。交换网络登录和目的节点端口登录都采用相似的程序,不同的目的标识<Destination-Identifiers,D-IDs>和尽可能不同的源标识<Source—Identifiers,S-IDs>。当节点端口请求登录其他节点端口或交换端口时,首先停止发送空闲帧<IDLE>,而改为发送一系列表明其登录及开始网络通信意图的帧,并通过登录建立端口地址,服务类型等参数。一旦登录成功,节点端口与交换端口之间或两个节点端口之间将保持长时间的连接。一个节点端口能和多少个其他节点端口建立登录连接,是由节点端口的功能和性能决定的。登录连接与服务类别I的专用连接之间没有直接的关系。5FC-3层FC-3层中定义了一组服务用于公共的单一节点中的多个端口交叉其中包括组搜寻<HuntGroups>和分组广播<Multicast>。组搜寻组搜寻指的是由多个节点端口<N-Port>回复同一个别名地址请求的能力。这能略降低节点端口繁忙的机会,从而有效地提高整个系统的效能。分组广播分组广播指的是将一个传输信息发送到多个节点端口<N—Port>.这些节点端口可以是整个交换拓扑中所有的节点端口,也可以是整个交换拓扑中的部分节点端口,此时也称为广播<Broadcast>。6FC-4<Mapping>层FC-4<Mapping>层是FC体系结构中的最高层,在FC-4层中定义了FC底层协议与高层协议之间的映射。·小型计算机系统接口<SCSI>·互联网协议<IP>·高性能并行接口<HIPPI>·异步传输模式<ATM>·智能外设接口-3<IPI-3>·单字节指令码集<SBCCS>由FC-4层是针对不同应用层协议的映射,因此具体的应用将具有具体的映射,存储系统将使用SCSI应用层协议,SCSI协议的映射是通过FCP来完成的,我们将在第九章分析对SCSI的FCP映射协议FCP。7FC拓扑结构7.1交换拓扑在交换网络拓扑中,节点之间的通信是通过交换网络登录、节点登录、地址分配、会话、登录注销五个阶段完成的,节点的加入和离开对网络中的其它通讯设备几乎没有影响。交换网络登录<FabricLogin>交换网络登录完成5个功能:·检测交换网络的存在或不存在:·如果交换网络存在,交换网络将提供一个专用的操作字符集;·如果交换网络存在,交换网络将分配或确认初始登录的本地节点端口标识;·如果交换网络不存在,节点端口将尝试进行点对点拓扑连接;·如果交换网络存在,交换网络将初始化缓冲对缓冲的信任量<BB_Credit>。明显的交换网登录<ExplicitFabricLogin>明显的交换网络登录,需要登录请求节点端口传输一个交换网络登录<FLOGI>链路服务序列,其中包含一个由节点端口分配的源交换标识<OX_ID>和目的标识<D_ID>,源标识、目的标识采用公认的交换端口地址FFFFFE,源标识采用0或0000yy。如果源标识S_ID=0,交换端口将在接受<ACC>回复序列中分配一个交换网络中唯一的节点端口标识给登录请求节点端口;如果源标识S_ID=0000yy,交换端口同样会在接受<ACC>回复序列中分配一个交换网络中唯一的节点端口标识给登录请求节点端口,但是只使用8~23比特位,0~7比特位用于校验数据;如果源标识是非法的S_ID,交换端口将返回一个错误代码标识的交换端口拒绝<Fabric_Port_Reject,F_RJT>。登录请求节点端口在接收到交换端口的ACC回复序列后,向交换端口发送服务类别请求参数序列以结束交换网络登录过程。节点登录<NPortLogin>交换网络中的节点登录是在交换网络登录完成后,紧接着进行的。如果一个状态正常的节点端口在登录前已经和其他节点端口建立了登录连接,那么首先必须要注销先前的登录连接。在登录处理过程中目的节点端口与其他节点端口之间的通信不再被接受。一旦登录成功,两个节点端口之间的通信即可开始。节点登录须完成的2个功能:·由目的节点端口提供一个专用的操作字符集:·初始化目的节点端口端对端信任量<EE-Credit>。源节点端口发送一个节点登录<PLOGJ>链路服务序列,其中包含一个由节点端口分配的源交换标识<OX_ID>、目的端口标识<D_ID=Y>,源端口标识<s_ID=X>和服务类型参数,X和Y在进行交换网络登录时获得。目的节点端口在收到登录链路服务序列后,回复一个包含目的交换标识<RX_ID>、目的端口标识<D_ID=X>、源端口标识<S_ID=Y>和服务类型参数为ACC的序列;登录请求节点端口在接收到交换端口的ACC回复序列后,向交换端口发送服务类别请求参数序列,以结束交换网络登录过程。地址分配在交换网络拓扑中,节点端口的地址是由FC交换机负责分配的,每个节点端口地址在网络中都是唯一的。节点端口地址长度为3个字节,在一个交换网络中最多可以包含1677万72l5个节点端口。会话在交换网络拓扑中节点端口之间的会话,在节点端口完成交换网络登录和节点登录后开始,节点端口之间的会话可以采用服务类型1、服务类型2和服务类型3中的任何一种。登录注销<Logout>登录注销用于释放两个节点端口之间用于维护会话服务的资源。源节点端口发送一个节点登录注销<LOGO>链路服务序列,其中包含一个由节点端口分配的源交换标识<OX_ID>、目的端El标识<D—ID=Y1、源端口标识<S_ID=X>和服务类型参数.目的节点端口在收到登录链路服务序列后.回复一个包含目的交换标识<RX_ID>、目的端口标识<D_ID=X>、源端口标识<S_ID=Y>和服务类型参数为ACC的序列以结束会话。7.2点对点拓扑节点登录<N_Port_Login>在点对点网络拓扑中,节点登录是在节点端口完成初始化后,紧接着进行的。点对点的节点登录须完成3个功能:·由目的节点端口提供一个专用的操作字符集;·初始化目的节点端口端对端信任量<EE—Credit>;·初始化节点端口缓冲对缓冲信任量<BB—Credit>源节点端口发送一个节点登录<PLOGI>链路服务序列,其中包含一个由节点端口分配的源交换标识<OX_ID>、目的端口标识<D_ID=Y>、源端口标识<D_lD=x>和服务类型参数.X≠Y目的节点端口在收到登录链路服务序列后,回复一个包含目的交换标识<RX—ID>、目的端口标识fD—ID=X1、源端口标识<S—ID=Y>和服务类型参数为ACC的序列,登录请求节点端口在接收到目的端口的ACC回复序列后,向目的端口发送服务类别请求参数序列以结束节点登录过程。在点对点网络拓扑中、节点端口的地址标识采用硬件地址。会话在点对点网络拓扑中节点端口之间的会话在节点端口节点登录后开始,节点端口之间的会话可以采用服务类型1、服务类型2和服务类型3中的任何一种。登录注销<Logout>点对点网络拓扑中,登陆注销阶段相同于交换网络拓扑中的登陆注销阶段。7.3仲裁环拓扑仲裁环网络拓扑利用仲裁策略代替了交换网络中的交换网络登录访问策略,因此,在仲裁环网络拓扑中,不需要进行交换网络登录节点之间的通讯是通过环初始化、仲裁选举、节点环口登录、会话、登录注销五个阶段完成的。环初始化在仲裁环网拓扑中,节点环口<NL—Port>通过环初始化获得端口地址.仲裁环网中的所有节点环口都有权利请求执行环的初始化,当有环E1离开仲裁环,或有端口加入仲裁环需要得到端口地址时,环初始化就会发生。因为环初始化过程包含了仲裁环网中的所有节点环口,所以,一旦有环初始化发生,任何正在进行的传输都会被强制中断,该传输需要在环初始化结束后恢复或重传。环初始化采用一系列专用指令序列.称为环初始化原语<LoopInitializationPrimitiveSequence,LIP>.仲裁环网中的任何节点环口都可以通过发送一个环初始化原语到仲裁环上的其他节点环口,来启动环初始化过程。环初始化过程要求环中的一个节点环口作为环控制器来管理整个仲裁环的初始化过程。环控制器的选举采用向相邻环口发送环初始化控制选择<LoopInitializationSelectMasterLISM>帧来完戍每个环口发送的LISM中都包含自己的端口名称,每个环口会检查收到的LISM帧,然后比较其中包含的端口名称,如果LISM帧中包含的端口名称小于自己的端口名称,那么就继续将此帧向下传递如果LISM帻中包含的端口名称大干自己的端口名称,那幺就改写LISM帧中包含的端口名称,然后继续将此帧向下传递:如果LISM帧中包含的端口名称是自己的端口名称,那此环口就被选为环控制器当环控制器选定后,环控制器首先创建一个仲裁环地址<ArbitratedLoopPhysicalAddress,AL_PA>位图环地址空间的映射,AL—PA位图长度为1个字节,代表环中所有l27个可用环口地址。然后,环控制器发送一个环初始化交换网络地址分配帧<LoopInitializationFabricAssigned,LIFA>在整个环上传递,当环上有交换环El<FL_PORT>存在时,它将交换网络分配绐它的地址填到LIFA帧中。当LIFA帧传回到环控制器时,如果环控制器看到交换环口的地址,那么此地址将不再分配。环控制器还会在发送环初始化前,将地址分配帧<LoopInitializationPreviouslyAcquired,LIPA>在整个环上传递如果某个环口还保留有先前的AL_PA,那么该环口将自己的AL_A填入LIPA中但是.并不是所有具有前AL—PA的环口都能够分配到先前的地址,尤其是在两个环合并,LIPA帧回到环控制器时.环控制器会继续发送一个环初始化硬地址分配帧<LOOPInitializationHardAssigned,LIHA>在整个环上传递以使环上所有的环口利用可选的硬件配置来声明自己的端口AL_PA地址。如果以上几步还不能确定环口的AL_PA地址那么环控制器会继续发送一个环初始化软地址分配帧<LoopInitializationSoftAssignedLISA>在整个环上传递,那么环上所有还没有分配到地址的环口都使用一种算法来获取AL_PA位图中剩余地址中的一个。当LISA帧返回到环控制器时,环上所有的环1:3就都分配到了一个AL_PA地址,这时在环中发送一个环初始化位置报告帧<LoopInitializationReportPosition,LIRP>,每一个环口都将分配自己的AL_PA地址和相对位置信息插人到LIRP帧中。当LIRP帧回到环控制器时,所有环口的地址分配和位置信息的确定也就完成了,此时环中要发送一个环初始化环位置帧<LoopInitializationLoopPosition,LILP>,在LILP中包含了环上所有环口的AL_PA地址和相对位置信息,每个环口在收到LILP帧后,都将LILP帧AL_PA地址和其他环口相对位置信息复制到自己的部寄存器当中,当LILP帧回到环控制器时就完成了整个环的初始化过程。仲裁选举在仲裁环网络中,当节点环口希望和其他节点环口通信时.它必须等到环可用.并发送一个包含自己AL_PA地址的仲裁帧,说明自己为一个仲裁参与者。当与之相邻的节点环口收到该帧后,会将其中包含的AL—PA地址与自己的AL_PA地址进行比较,如果自己的AL_PA地址具有更高的优先级,那么该环口就会决定自己是否参加仲裁、如果不想参加仲裁,那么它就会将此仲裁帧继续向下传递。如果它想参加仲裁,那么它就将仲裁帧中包含的AL_PA地址信息改为自己的AL_PA地址信息,然后继续向下传递此仲裁帧,直到此仲裁帧回到最初的发送环口,如果最初的发送环口发现仲裁帧中包含的AL_PA地址不是自己的,那,厶该环口知道自己没有赢得仲裁,它会继续向下传递此仲裁帧,如果该环口发现仲裁帧中包含的AL_PA地址是自己的那么该环口就赢得了环的控制权,随后它将向希望通信的节点环口请求节点登录。节点环口登录<NLPortLogin>在仲裁环网络拓扑中节点环口登录是在节点环口赢得仲裁后进行的。节点环口登录须完成的3个功能:·由目的节点端口提供一个专用的操作字符集;·初始化目的节点端口端耐端信任量<EE_CREDIT>;·初始化节点端口缓冲对缓冲信任量<BB_CREDIT>。源节点环口发送一个节点环口登录<PLOGI>链路服务序列,其中包含一个由节点环口分配的源交换标识<OX_ID>目的环口标识<D_ID=Y>、源环口标识<S_ID=X>和服务类型参数,x和Y为源环口和目的环口的AL_PA地址,目的节点环口在收到登录链路服务序列后,回复一个包含目的交换标识<RX_ID>、目的端口标识<D_ID=X>源环口标识<S_ID=Y>和服务类型参数为ACC的序列,登录请求节点环口在接收到目的口的ACC回复序列后.向目的环口发送服务类别请求参数序列以结束节点环口登录过程。会话在仲裁环网络拓扑中节点环口之间的会话,在节点环口登录后开始,节点环口之间的会话可以采用服务类型1服务类型2和服务类型3中的任何一种。登录注销<Logout>登录注销<Logout>登录注销用于释放两个节点环口之间用于维护会话服务的资源。源节点环口发送一个节点环口注销<LOGO>链路服务序列其中包含一个由节点环口分配的源交换标识<OX_ID>、目的环口标识<D_ID=Y>、源环口标识<S_ID=X>和服务类型参数、目的节点环口在收到登录链路服务序列后,回复一个包含目的交换标识<RX_ID>目的环口标识<D_ID=X>、源环口标识<S_ID=Y>和服务类型参数为ACC的序列以结束会话。8FC服务与管理8.1名称服务<NameServer>名称服务用于提供节点端口和环路节点端口属性在FC网络中的注册和发现。节点端口和环路节点端口属性只需注册一次,就可以提供给网络中的查询请求者在FC标准中没有定义节点端口和环路节点端口属性的注册,需要由厂商提供支持。FC名称服务共有3种类型的请求:对象查询请求<十六进制01xx>、对象注册请求<十六进制02xx>和对象注销请求<十六进制03xx>,其中"XX"表示相应的属性编号。节点端口和环路节点端口属性的注册、注销和查询请通过包含了一系列的请求通用传输信息单元<CommonTransportInformationUnit,CT_IU>和回复通用传输信息单元的协议命令来完成的。如果网络中存在区域<Zone>,那么名称服务将限制外部区域的请求。名称服务提供节点端口和环路节点端口属性主要有:所有对象<0>端1:3标识<1>端1:3名称<2>节点名称<3>服务类型<4>、节点IP地址<5>初始化处理成员<6>、FC-4层映射协议类型<7>、符号端口名称<8>符号节点名称<9>、端口类型<A>端1:3IP地址<B>交换端口名称<C>、硬件地址<D>、FC-4层协议描述<E>、FC-4层协议特性<F>名称服务通过请求类型和属性的结合命令来完成协议的交互.如命令"0x0112"表示查询端口名称。8.2管理服务<ManagementServer>FC管理服务用于提供光纤网络的单一管理访问点。管理服务包含三方面容:·交换网络配置服务,用于提供交换网络的配置和管理·未划分区域的名称服务.用于提供没有子区域的名称服务信息访问:·交换区域服务,用于提供区域信息的访问和控制。管理服务子类型见下表管理子类型值描述01交换网络配置服务02未划分区域的名称服务03交换区域服务04保留用于服务锁定E0-FF为厂商专用保留其它保留交换网络配置服务交换网络配置服务提供了一种管理应用程序发现光纤网络的拓扑和属性的方法。同名称服务一样,交换网络配置服务的访问也是通过包含了一系列的请求通用传输信息单元<CT_U>的协议命令来完成的一般提供交换网络配置服务的管理应用程序需要进行客户认证保护。未划分区域的名称服务未划分区域的名称服务被用于管理服务给交换网络配置服务管理应用程序提供所有区域的名称服务信息查询。例如:在围2中节点端口A只能看到节点端口B、C和z,因为它们被限制在了区域A中,而在区域中.节点端口M只能看到节点端口Q、R、P和Z但是如果在节点端口上运行管理应用程序,那幺节点端口可以通过管理服务提供的杀划分区域的名称服务看到所有的节点端口A、B、C、Q、P、R和Z。交换区域服务交换区域服务为客户程序提供了一种匹域名称服务信息的视图选择机制。这种技术类似于虚拟专用网络<VirtualPrivateNetwork>它能够将交换网络地址标识分组分配到一个区域中。系统管理员可以创建不同的交换区域,通过对不同用户和设备之间的访问控制,来增强光纤网络的安全性和保护数据的丢失或讹误交换区域的创建配置和管理,可以通过厂商提供的管理应用程序实现。对于一个节点端口或环路节点端口来说.它可以是一个区域的成员,也可以是多个区域的成员节点端口在一个区域中的标识可以通过端口名称和登录时分配的端口地址来进行区分。另外,交换区域服务可以将多个区域组成一个区域集,区域集中的区域成员可以是其他区域集中的成员,一个区域集中的区域可以是活跃的.也可以是不活跃,而且一个区域集中的区域可以通过FC交换机横跨过整个交换网络。8.3时间和别名服务时间服务<TimeServer>时间服务用于给管理服务提供管理截止时间信息,基本的时间服务是通过客户端向公认地址FFFFFB发出时间获取请求<GET_TIME>给时间服务器,时间服务器将时间信息回复络请求客户。时间服务也是通过包含了一系列的请求通用传输信息单元CT_IU>和回复通用传输信息单元的协议命令来完成的。别名服务<AliasServer>别名服务用于管理搜寻组<HuntGroups>和组播组<MulticastGroups>别名标识的注册和注销。别名服务并不提供搜寻组之间或组播组之间数据帻的路由。别名服务可以位于整个交换网络的部,也可以位于整个交换网络的外部,对于别名服务的访问可以向公认地址FFFFF8发送包含了一系列的请求通用传输信息单元<CT_IU>和回复通用传输信息单元的协议命令来完成。别名服务请求命令见下表:别名服务名称缩写描述0001INA加入别名组0002KMA离开别名组0003LSN开始监听0004SLSS停止监听0005KAG读取命名信息对于名称服务、管理服务、时间服务和别名服务均可用于任何光纤网络拓朴,并且没有限制或要求这些服务必须是光纤网络的一部分,或都必须包含所有的节点端口属性或区域、时间。分组信息。9FCP-4协议映射FCP-4协议是ANSIT10制定的FCP映射协议的第四版。FCP主要描述如何将SCSI协议的命令、数据、状态映射成能够在FC协议栈中传输的信息单元〔IU。9.1FCPI/O操作当应用客户端调用一个发送SCSI命令或任务管理的SCSI传输协议服务请求时,表示一个FCPI/O过程开始。发送SCSI命令的传输协议服务请求将来自于应用客户端的一个请求或一组连接请求传送到服务FCP服务传递子系统。每个请求都包含了用来处理一个SCSI命令或任务管理所必需的全部信息,主要有:本地存储地址和SCSI命令中传递的数据特性。FCPI/O操作过程描述如下:命令初始器FCP_Port通过发送一个包含FCP_CMNDIU负载、命令控制信息、地址信息和命令描述块〔CDB的可变长度命令IU来发起一次交换。当设备服务器解析出这个命令,并确认是一次写请求,它将立即发送一个包含FCP_XFER_RDYIU负载的数据描述IU到命令初始器,以指出需要接收的数据。初始器FCP_Port收到数据描述IU后,随即发送一固定的数据IU到目的端,该数据IU是包含被FCP_XFER_RDYIU所请求的FCP_DATAIU负载。包含FCP_XFER_RDYIU的数据传输请求和返回的FCP_DATAIU负载将一直交互传输,至到SCSI写命令请求的数据全部传送完毕。一个FCP_DATAIU负载将紧跟着一次FCP_XFER_RDYIU请求当设备服务器解析出这个命令,并确认是一次读请求,它将立即发送一个包含FCP_DATAIU负载的固定长度的数据到命令初始器FC_Port,FCP_DATAIU负载数据将连续传送到初始器的FC_Port,至到所有SCSI读请求的数据全部传送完毕。当设备服务器解析出这个命令,并确认是双向〔IN/OUT的传送请求,它将选择第一个被传输的FCP_DATAIU,这个IU可能是一个输入数据或输出数据传送。如果设备服务器首先选择了请求输出数据〔例如:写操作的传送,则按照一次写请求的方式传送。否则设备服务器首先选择了请求输入数据〔例如:读操作的传送,则按照一次读请求的方式传送。接下来设备服务器选择下一个FCP_DATAIU来传送,并执行适当的传输处理,数据传送持续进行,直到所有SCSI命令描述的数据传输完毕。协议标准中没有限制设备服务器执行输入数据和输出数据传送操作的顺序。当所有数据传送完毕之后,设备服务器将传送包含FCP_RSPIU负载的响应给初始器的FCP_Port。FCP_RSPIU包含了SCSI的状态信息,如果SCSI状态是CHECKCONDITION,表示描述条件的自动状态数据。FCP_RSPIU也表示了SCSI命令的完成。如果没有命令连接、差错恢复、确认完成等帧被请求,FCP_RSPIU就是一次交换中最后的帧序列。在FCPI/O操作过程中,设备服务器可以确定是否有附加的连接命令被执行,如果这是最后的,或仅有的命令被处理,则表示本次FCPI/O操作和交换结束。如果在命令处理过程中,发生一个FCP协议错误,FCP_RSPIU的负载将携带FCPResponse信息,以替代SCSI状态或自动状态数据。9.2FCP信息单元〔FCPIUFCP中每个FCPIU都被包含在一个帧序列中,每个承载FCPIU的帧序列只能包含一个IU,表9-1描述了从初始器端口到目标器端口发送的信息单元类型。表9-2描述了从目标器端口返回到初始器端口的信息单元类型。表9-1发送到目标端口的FCPIUIUSCSI原始命令数据块F/M/LSIM/OCATContentT1Command/TaskMgmtRqst6FCP_CMNDFTMT2Commandrequest6FCP_CMNDFHOT3Commandrequest<Linked>6FCP_CMNDMTOT4Commandrequest<Linked>6FCP_CMNDMHOT6Data-Outaction1FCP_DATAMTMT12Confirm3noneLTONotes:T5,T7,T8,T9,T10,与T11被废弃T2与T4仅用于传输准备IU不可达T3与T4仅用于有连接的SCSI命令T2与T4在写操作期间允许可选的序列流Key:IU:InformationUnitCAT:InformationcategoryofDevice_DataframescarryingthedatablockContent:Contents<payload>ofdatablockF/M/L:First/Middle/LastSequenceofExchange<FC-FS-2>F:FirstM:MiddleL:LastSI:SequenceInitiative:HeldorTransferred<FC-FS-2>H:HeldT:TransferredM/O:Mandatory/OptionalSequenceM:MandatoryO:Optional表9-2发送到初始器的信息单元IUSCSIprimitiveDatablockF/M/LSIM/OCATContentI1Datadeliveryrequest5FCP_XFER_RDY<Write>MTMI3Data-Inaction1FCP_DATAMHMI4Command/TaskMgmtResponse7FCP_RSPLTMI5Response<Linkedorconfirmrequest>7FCP_RSPMTONotes:I2,I6,与I7被废弃I5用于有连接的SCSI命令Key:IU:InformationUnitidentifierCAT:InformationcategoryofDevice_DataframescarryingthedatablockContentContents<payload>ofdatablockF/M/L:First/Middle/LastSequenceofExchange<FC-FS-2>F:FirstM:MiddleL:LastSI:SequenceInitiative:HeldorTransferred<FC-FS-2>H:HeldT:TransferredM/O:Mandatory/OptionalSequenceM:MandatoryO:OptionalFCP_CMNDIUFCP_CMNDIU既可承载一个SCSI命令,也可承载一个任务管理请求。如果在FCP_CMNDIU中设置了一个无效的位组合,目标器端口将应答一个把RSP_CODE字段设置为02H〔无效RSP的FCP_RSPIU。FCP_CMNDIU包含的值和控制字段的容如下表所示。表9-3表9-3FCP_CMNDIU字段结构逻辑单元号〔FCP_LUNFCP逻辑单元号字段包含了SCSI目标设备中的逻辑单元地址,详细容可参考SAM-3。在LUN中,LUN0是一个所有SCSI设备必须接受的地址,应用程序可以通过对LUN0的访问获取关于SCSI目标端设备以及其中各个逻辑单元的信息。命令参数号〔CRNCRN字段包含了一个由初始器端口发送的号,该号是用来对FC命令执行精确传递检查的。如果允许命令精确传递,当CRN字段被设置成非0值,则表示需要检查从特定初始器端口发送到特定设备逻辑单元的命令的接收过程和顺序;当CRN字段被设置成0值,则表示不需要检查命令的接收过程和顺序。如果不允许命令精确传递,则CRN字段将被设备服务端忽略。如果FCP_CMDIU表示的是任务管理功能,则CRN字段将被保留并设为0值,设备服务端在精确传递过程中将不对FCP_CMDIU进行检查。优先权<PRIORITY>PRIORITY字段是表示任务之间的先后进度,设备服务端对这个字段使用请参考〔SAM-3协议,如果TASKATTRIBUTE字段的容是除了"SIMPLE"以外的值,则优先权字段将作为保留字段。FCP_XFER_RDYIUFCP_XFER_RDYIU表示目标器FC_Port准备接收部分或全部写操作的数据。FCP_XFER_RDYIU包含了了由初始器端口请求的SAM-3数据的参数,包括:FCP_DATAIU的长度和偏移量。FCP_XFER_RDYIU的格式如下表所示:表9-4FCP_XFER_RDYIU的格式FCP_DATA_ROFCP_DATA_RO表示被请求的FCP_DATAIU中在参数字段描述的第一个数据字节的相对偏移〔参考FC-FS-2中帧头定义的PARAMETER字段容。FCP_BURST_LENFCP_BURST_LEN是用来表示目标端准备用来接收下一个FCP_DATAIU的缓存大小和初始器将要法送的FCP_DATAIU的长度。FCP_BURST_LEN值的大小与SCSI数据传送请求的字节数相同〔参考SAM-3相关部分。FCP_DATAIU一个与特定的FCPI/O操作相联系的数据和FCP_CMNDIU请在同一个交换中传送的。可以通过一个或多个数据传送请求来传输SCSI数据。如果SCSI数据是由多个FCP_DATAIU来传送,则帧头参数字段中相对偏移的值则用来确保SCSI数据可以按照正确的顺序重组。对于单向读/写操作在数据任何数据传送期间,初始器都将开辟一个由FCP_DL〔在FCP_CMNDIU中定义字段定义大小的缓存。如果是写操作,缓存中包含将要被传送到目标器的数据。如果是读操作,缓存就用来接收目标器发送过来的数据。目标器将不会请求或传送超过FCP_DL定义缓存大小的数据。如果命令请求的数据超过了缓存的大小,则设备服务器将把FCP_RSPIU中的FCP_RESID_OVER位设为1,并发送FCP_RSPIU。并按以下原则处理:正常处理命令,超过缓存区大小的数据将不被请求或传送。不传送数据,并且返回状态关键值为ILLEGALREQUEST以及附加状态码为INVALIDFIELD的UNITCHECKCONDITION状态;传送数据,并且返回状态关键值为ABORTEDCOMMAND以及附加状态码为INVALIDFIELD的UNITCHECKCONDITION状态。对于双向操作命令在一个双向命令执行期间,初始器端口总是采用由FCP_DL字段定义的缓存大小来向目标器端口传送数据。目标器端口将不请求超过初始器端口缓存大小的数据。同时,初始器端口总是采用由FCP_BIDIRECTIONAL_DL字段定义的缓存大小来接收来自目标器端口的数据。目标器端口将不传送超过初始器端口缓存大小的数据。如果命令请求的数据超过了缓存的大小,则设备服务器将把FCP_RSPIU中的FCP_RESID_OVER位设为1,并发送FCP_RSPIU。并按以下原则处理:正常处理命令,超过缓存区大小的数据将不被请求或传送。在任一方向上不传送数据,并且返回状态关键值为ILLEGALREQUEST以及附加状态码为INVALIDFIELD的UNITCHECKCONDITION状态;在任一方向上传送数据,并且返回状态关键值为ABORTEDCOMMAND以及附加状态码为INVALIDFIELD的UNITCHECKCONDITION状态。FCP_RSPIU表9-5FCP_RSPIU结构重试时延〔RETRYDELAYTIMER该字段包含重试的延迟时间〔详细描述请参考SAM-4。FCP_BIDI_RSP如果FCP_BIDI_RSP位的值为1,则FCP_BIDIRECTIONAL_READ_RESID域存在,FCP_BIDI_READ_RESID_UNDER和FCP_BIDI_READ_RESID_UNDER位有效;如果FCP_BIDI_RSP位的值为0,则FCP_BIDIRECTIONAL_READ_RESID域不存在,FCP_BIDI_READ_RESID_UNDER和FCP_BIDI_READ_RESID_UNDER位无效。FCP_BIDI_READ_RESID_UNDER如果FCP_BIDI_READ_RESID_UNDER位的值是1,则FCP_BIDIRECTIONAL_READ_RESID域有效,并且该域包含还没有被传送的数据的字节数。应用客户端将检查FCP_BIDIRECTIONAL_READ_RESID域的值,以确定是否有差错产生。FCP_BIDI_READ_RESID_OVER如果FCP_BIDI_READ_RESID_OVER位设置为1,则表示传送的数据容超过了FCP_BIDIRECTIONAL_READ_DL定义的缓存大小,FCP_BIDIRECTIONAL_READ_RESID字段将有效,并包含没有被传送的字节数。应用客户端将通过检查命令中FCP_BIDIRECTIONAL_READ_RESID域的容,以确定是否有差错发生。FCP_CONF_REQ如果FCP_CONF_REQ位设置为1,则初始器端口将发送FCP_CONFIU来确认收到设备端发来的FCP_RSPIU。如果FCP_CONF_REQ位设置为0,则初始器端口将不发送FCP_CONFIU确认信息。FCP_RESID_UNDER如果FCP_RESID_UNDER位设置为1,则FCP_RESID域有效,并包括希望传送的、却还没有被传送的字节数,应用客户端将通过检命令中FCP_RESID域的容,以确定是否有差错发生。FCP_RESID_OVER如果FCP_RESID_OVER位设置为1,则表示传送的数据容超过了CMDIU中FCP_DL域定义的缓存大小,FCP_RESID域将有效,并包含不能被传送的字节数。应用客户端将通过检查命令中FCP_BIDIRECTIONAL_READ_RESID域的容,以确定是否有差错发生。FCP_SNS_LEN_VALID如果FCP_SNS_LEN_VALID位设置为1,则FCP_SNS_INFO域将包含有效的容,FCP_SNS_LEN域有效,该域包含大小为FCP_SNS_INFO域信息长度的非0值。应用客户端将通过检查命令中FCP_SNS_INFO域的容,以确定是否有差错发生。如果FCP_SNS_LEN_VALID位设置为0,则FCP_SNS_LEN域无效,并被设置为0。FCP_RSP_LEN_VALID如果FCP_RSP_LEN_VALID位设置为1,则FCP_RSP_INFO域将包含有效的容,FCP_RSP_LEN域有效,该域包含大小为FCP_RSP_INFO域信息长度的非0值。应用客户端将通过检查命令中FCP_RSP_INFO域的容,以确定是否有差错发生。同时SCSISTATUSCODE域将不可用,将被应用客户端忽略。如果FCP_RSP_LEN_VALID位设置为0,则FCP_RSP_INFO域无效,并被设置为0。SCSISTATUSCODESCSISTATUSCODE域包括SCSI命令被执行完成的状态。FCP_RESID对于读操作和写操作而言,如果FCP_RESID_UNDER位被设置位1,则FCP_RESID域包含在FCP_DATAIU中没有被传送,而剩余的数据字节数。如果FCP_RESID_OVER位被设置为1,则表示传送的数据容超过了CMDIU中FCP_DL域定义的缓存大小,FCP_RESID域将有效,并包含不能被传送的字节数。对于双向的SCSI命令,如果FCP_RESID_UNDER位被设置位1,则FCP_RESID域包含在FCP_DATAIUs数据输出方向上,还没有被传送而剩余的数据字节的长度。如果FCP_RESID_OVER位被设置为1,则表示传送的数据容超过了CMDIU中FCP_DL域定义的缓存大小,FCP_RESID域将有效,并包含在FCP_DATAIUs数据输出方向上,不能被传送的字节数。如果一个FCPI/O操作成功的完成,FCP_RESID的值通常被置为0,并且无效。如果FCP_RESID_UNDER位被设置为1,FC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论