光纤通道FC协议栈行业市场发展分析研究报告Word文件下载.docx
《光纤通道FC协议栈行业市场发展分析研究报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《光纤通道FC协议栈行业市场发展分析研究报告Word文件下载.docx(48页珍藏版)》请在冰豆网上搜索。
100
1063
1
200
2126
2
400
4252
4
FC系统中设备的连接有三种拓扑方式:
点对点方式(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接收器状态转换
接收器的操作状态包括同步获得状态(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发送器状态转换图
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的帧格式
●帧报头格式
每个帧含有一个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帧报头格式
路由控制字段:
R_CTL
提供不同类型帧之间第一层的区别,起到归类帧的作用,路由控制(R_CTL)是1个字节字段,它包括两个四位的子字段,即:
路由子字段和信息子字段,路由控制字段R_CTL类别码如下表所示。
表4-1R_CTL类别码
路由
帧类型
设备数据帧
扩展链路服务
3
FC-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_CTL格式
控制字段
位
描述
交换上下文
23
0交换发起端
1交换响应端
序列上下文
22
0序列发起端
1序列响应端
第一个序列
21
0交换的其它序列
1交换的第一个序列
最后一个序列
20
1交换的最后一个序列
结束序列
19
0序列的其它数据帧
1序列的最后一个数据帧
结束连接
(Class1或Class6)
18
0连接激活
1连接挂起结束
(Class1或Class6中有效,在其它类型中忽略)
CS_CTL/优先级
17
0字1的31~24位表示CS_CTL
1字1的31~24位表示优先级
序列Initiative
16
0保持序列Initiative
1传输序列Initiative
废弃
15
14
ACK形式
(Class1,Class2,Class6
有效)
13-12
00b不需要额外提供
01b需要Ack_1
10b保留
11b需要Ack_0
数据压缩(废弃)
11
数据加密(废弃)
10
序列重传
(Class1,Class6有效)
9
0初始序列重传
1序列重传
单向传输
0双向传输
1单向传输
连续序列条件
(当结束序列=1,序列Initiative=0时有效)
7~6
00b无信息
01b实时序列
10b快速序列
11b延迟序列
终止序列条件
5~4
接收端响应帧
00b连续序列
01b异常终止序列,按异常中止处理
10b停止序列
11b实时序列重传请求
数据帧
00b异常中止,丢弃多个序列
01b异常中止,丢弃一个序列
02b无限缓存处理策略
11b丢弃多个序列,立即重传
相对偏移
0一些帧定义的参数字段
1参数字段,相对偏移
交换重组
交换重组保留
填充字节
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帧内容
帧数据段中的可选报头是提供给FC-4层使用的,可选报头头的类型是由帧报头的DF_CTL字段决定的。
DF_CTL字段的长度是一个字,对应位与所定义的附加报头如下表所示。
表4-3附加报头
字段对应位Bit(s)
可选报头
可应用范围
23
保留
所有帧
22
0=无ESP_Header和ESP_Trailer
1=ESP_Header和ESP_Trailer
所有帧
21
0=无Network_Header
1=Network_Header
设备数据和视频数据帧
20
0=无Association_Header
1=Association_Header
19-18
17-16
00=无Device_Header
01=16ByteDevice_Header
10=32ByteDevice_Header
11=64ByteDevice_Header
可选报头的长度和类型如下图所示:
图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序列与交换
●序列(Se