1 FC结构和概念1.1 概述FC逻辑上是一个高性能的双向点到点的串行数据传输通道,在物理上它可以通过交换网互联连接多个通讯节点也就是N端口,也可以以点到点的形式连接。
FC协议由一系列的功能层组成,FC-PH由相关的功能层FC-0,FC-1,FC-2组成。
➢FC-0层(物理层)由传输介质、发送机和接收机及接口组成。
物理层规定了多种介质在不同速率下工作的驱动接收能力。
➢FC-1层(编码层)进行8B10B编码。
➢FC-2规定了端到端数据块的传输机制。
FC-2层协议应管理下列内容:a)交换的激活和终止b)序列的启动和终止c)X_ID分配和重新分配d)序列主动权e)SEQ_ID的分配f)分段和重组g)序列h)帧的序列计数SEQ_CNTi)帧序列错误的检测j)帧序列错误的报告(3类服务除外)➢FC-3层提供了一组FC节点上多个N端口的通用服务(基本链路服务,扩展的链路服务,F4层链路服务)➢FC-4层ULP到FC的映射组成FC-4层,是FC中的最高层FC节点一个FC节点node如上图所示,节点可支持一个或多个N端口和一个或多个FC-4层协议,每个N端口包括FC-0,FC-1,FC-2层的功能,FC-3层选择性的为多个N端口和FC-4层提供通用服务。
1.2 拓扑结构点到点结构交换网结构仲裁环结构NL端口:具有仲裁功能的N端口FL端口:具有仲裁功能的F端口1.3 交换网交换网的主要功能是从源N端口中接收帧,并按帧中给出的地址标识符寻找目的N端口。
每个N端口通过链路连接到交换网上。
每个N端口都有一个唯一的N端口地址标识符。
FC-2层定义了交换网与所连接的N端口间的协议。
交换网包括两个或更多的F端口,每个F端口可连接到一个N端口上。
连接交换子网用于在F端口间和F端口与N端口间建立专用连接。
无连接交换子网用于在F端口间和F端口与N端口间进行多路复用。
1.4 构造块FC-2层中定义的构造块有:帧,序列,交换,协议。
序列由一个或多个数据帧及其响应组成。
交换由一个或多个序列组成。
交换可以单向的,也可以是双向的。
ULP使用FC进行数据交换之前须完成登录,登录完成后,ULP就可以使用FC直到登录实效为止。
➢帧:分为数据帧和链路控制帧➢序列:由一组数据帧和链路控制帧组成,序列单向发送。
序列级的错误恢复由FC-2层以上的层完成。
每个序列都分配了一个SEQ_ID。
➢交换:由一个或多个非并发序列组成。
交换可以在一个1类专用连接中完成,也可以跨多个1类连接。
交换的双方都分配了一个交换标识符OX_ID ,RX_ID。
➢协议:提供的协议如下a)原语序列协议b)交换网登录协议c)N端口登录协议d)数据传输协议e)N端口登出协议2 FC-0/FC-1层2.1 FC-0FC-0层包括多种介质及能以不同速度工作的发送机和接收机。
100 – SM – LL - L速度100 50 25 12100MB/S 50MB/S 25MB/S 12MB/S介质SM M5 M6 TV 单模多模50微米多模62.5微米视频电缆MI TP 细电缆TP距离LIS长距离中距离短距离发送机LLSLLEEL长波长激光短波长激光长波LED电FC-0层发送机接口FC-0层接收机接口2.2 FC-1FC-1层为编码层,FC采用8b10b编码,编码后产生传输字符。
数据流转换示意图3 有序集FC-1层使用8b10b编码,通过光纤发送的信息应把一组8位数据转换为10位传输字符。
数据值可以统一的表示为DX.Y或KX.Y,其中D表示为数据代码,K表示为特殊的命令代码。
传输字由4个连续传输字符组成,这四个字符传输前和接收后应视为一个整体。
把4个特定的传输字符进行组合形成有序集,有序集由4个专用字符和数据字符组成,FC-PH 定义了如下有特殊意义的有序集:➢帧定界符:放在帧内容之前或之后的有序集。
SOF是放在帧内容之前的有序集;EOF是放在CRC之后的有序集,表示序列内容的结束。
➢原语信号:Idle 表示端口已做好帧传输和接收的准备。
在没有发送数据帧、R_RDY或原语序列是应发送Idle。
R_RDY:表示收到一个1类服务请求帧、2类或3类帧,而且还可以接收更多的帧。
R_RDY之前和之后应至少有2两个Idle,帧之间应至少有6个原语信号。
➢原语序列:原语序列是一个连续重复发送的序列集,当端口或一个端口的接收机逻辑遇到了特殊情况,应发送原语序列。
当条件存在,原语序列应不断地发送。
当收到一组原语序列,应根据端口的状态,回送相应的原语或Idle。
原语序列识别需要连续检测3个同样的原语序列,原语序列之间不能有其他数据。
原语序列协议规定如下:a)链路初始化b)在线到离线转换c)链路失效d)链路复位4 帧帧分类4.1 帧格式...Idle......Idle...节N 端口发送机发送帧之间最少有6个原语信号,接收机接收帧之前需接收到2个Idle ,交换网可以插入或除去Idle 。
➢ SOF :SOF 是帧内容之前的一个有序集。
➢ 帧头:是帧内容的第一个字段,24个字节,紧跟着SOF 。
帧头用于控制链路操作、控制设备传输协议和检测丢失或无序的帧。
➢ 数据字段:数据字段在帧头之后。
长度等于四字节的倍数。
FC-0型帧数据段长度为零,FC-1型帧长度等于四字节的倍数,范围为0字节到2112个字节。
ULP 的有效载荷不能被4整除,应进行填充。
➢ CRC :为紧跟着数据字段的四个字节字段,用于检测帧头和数据字段的数据完整性。
CRC 校验中不包括SOF ,EOF➢ EOF :为紧跟着CRC 后的一个有序集。
指明了帧内容的结束。
4.2 帧头字0字1字2字3字4字5帧头➢ R_CTL 路由控制R_CRL 是一个对帧功能进行分类的一个单字节字段,包括路由选择字段和信息字段。
➢F_CTL字段F_CTL字段是一个与帧内容相关的包含控制信息的3字节字段➢D_ID是目的N端口或F端口内的包含地址标识符的3个字节字段➢S_ID是源N端口或F端口内的包含地址标识符的3个字节字段➢TYPE字段是一个单字节字段,表示了数据帧的帧内容类型。
在F_BSY 帧中TYPE字段表示原因码。
➢SEQ_ID是一个由序列启动方分配的一个单字节字段。
当序列开放时,每对D_ID S_ID都由唯一的SEQ_ID。
➢DF_CTL是一个单字节字段,该字段规定了在设备数据帧或视频数据帧的数据帧的开始部分是否有可选帧头。
➢SEQ_CNT是一个两个字节字段,表示在同一个交换中的一个序列或多个连续序列中数据帧的传输顺序。
➢OX_ID由交换启动方分配的交换标识符,两个字节。
➢RX_ID由交换接收放分配的交换标识符,两个字节。
➢参数字段是一个四字节字段,对于链路控制帧,参数字段表示特定信息。
对于数据帧,参数字段用来规定相对偏移。
5 链路响应链路控制帧提供如下功能:a)交付成功提示b)交付不成功提示c)流控制和缓冲区管理反馈d)到N端口的底层控制命令成功交付的数据帧响应如下:➢对1类数据帧成功交付使用ACK_0, ACK_1, ACK_N;➢对2类数据帧成功交付使用ACK_0, ACK_1, ACK_N;➢对3类数据帧成功交付无响应。
不成功交付的数据帧响应如下:➢对1类数据帧不成功交付使用F_BSY、P_BSY、F_RJT、P_RJT相应;➢对2类数据帧不成功交付使用F_BSY、P_BSY、F_RJT、P_RJT相应;➢对3类数据帧不成功交付无响应。
R_RDY :表示接收到一个帧,且接收帧的接口缓冲区还可接收到更多的帧。
对于所有2类3类和1类连接请求帧端口间应发送R_RDY,R_RDY无响应。
ACK帧:ACK_0 优先于ACK_N优先于ACK_11)ACK_1帧所有N端口都支持ACK_1,ACK_1的SEQ_CNT应与确认帧的相匹配,参数字段ACK_CNT为1 R_CTL信息字段为0;2)ACK_0帧表示序列中的所有数据帧都已经确认。
参数字段ACK_CNT为0 R_CTL信息字段为1,ACK_0不参与EE_Credit控制3)ACK_N 接收方确认N个连续数据帧,参数字段ACK_CNT为所确认数据帧的个数,SEQ_CNT为确认的最后一个数据帧的SEQ_CNT。
F_BSY:➢1类服务中F_BSY只能响应1类SOFc1帧,在2类服务中F_BSY 可响应任何数据帧和ACK帧,在3类服务中不能使用忙响应。
➢对链路控制帧不能响应P_BSY,2类服务中,如果收到响应ACK帧的F_BSY,则应丢弃F_BSY。
➢R_CTL 信息字段为0110时表示对链路控制帧忙,信息字段为0101表示对数据帧忙。
TYPE字段表示了原因码。
P_BSY:➢表示接收N端口被临时占用,不能接收帧,1类服务中P_BSY只能响应1类SOFc1帧,在2类服务中P_BSY可响应任何数据帧和ACK 帧,在3类服务中不能使用忙响应。
➢对链路控制帧不能响应P_BSY,参数字段包含4个字节的动作码和原因码。
拒绝帧P_RJT\F_RJT:➢表示帧的交付被拒绝,参数字段包含4个字节的拒绝动作码和原因码。
➢在1类2类服务中,端口检测到数据帧错误,则应发送一个拒绝帧。
交换网在下列情况下可以发送拒绝帧:a)服务类不支持b)无效的S_ID或D_IDc)N端口临时或永久不可用➢N端口只有在收不到期望的ACK时才拒绝链路控制帧;在有效交换中检测到链路控制帧错误,则应启动中止序列协议;对无效交换忽略错误。
6 链路服务(FC-3层)6.1 基本链路服务基本链路服务命令有单个基本链路数据帧组成,使用基本链路服务命令之前不需要登录ABTS:➢用于序列启动方请求序列接收方中止一个或多个序列➢序列启动方或序列接收方请求ABTS接收方中止交换,SEQ_ID,X_ID 与最后一个序列的相同,该命令无有效载荷。
➢ABTS帧的SEQ_CNT应比最后一个序列的SEQ_CNT大1下列情况下ABTS启动方可发送ABTS帧:a)没有EECredit可使用b)没有序列主动权c)序列没有开放d)并发序列已达到了所支持的最大数目BA_ACC:通知链路服务请求方请求已完成,如果ABTS发送方有序列主动权,则应转化主动权。
SEQ_ID重新分配,X_ID与ABTS匹配。
BA_RJT:通知链路服务请求方请求被拒绝,SEQ_ID重新分配,X_ID与ABTS匹配。
有效载荷的前4个字节标示了拒绝原因码。
NOP:可以代替正常数据帧启动1类连接,启动序列,中止序列,结束1类连接。
无确认序列。
RMC:用于请求立即撤销一个1类连接。
响应时请发送由EOFdt结束的ACK帧。
使用RMC撤销连接,所有的开放的序列都异常终止,因此不能把该方法当作撤销连接的正常方式。
无确认序列。
6.2 扩展链路服务扩展链路服务要求目的端口实现一个功能或服务。
每个请求或确认都由单独的序列构成。