1 FC结构和概念1.1 概述FC-4 映射层FC-3 通用服务FC-2 信号协议FC-1 传输协议FC-0 接口/介质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端口间的协议。
连接交换子网无连接交换子网R xT xR x T x……..……..交换网F 端口F 端口F 端口F 端口BUFFERBUFFER交换网包括两个或更多的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位传输字符。
数据值可以统一的表示为或,其中D表示为数据代码,K表示为特殊的命令代码。
传输字由4个连续传输字符组成,这四个字符传输前和接收后应视为一个整体。
把4个特定的传输字符进行组合形成有序集,有序集由4个专用字符和数据字符组成,FC-PH 定义了如下有特殊意义的有序集:LR 链路复位负LRR 链路复位负响应帧定界符:放在帧内容之前或之后的有序集。
SOF是放在帧内容之前的有序集;EOF是放在CRC之后的有序集,表示序列内容的结束。
原语信号:Idle 表示端口已做好帧传输和接收的准备。
在没有发送数据帧、R_RDY或原语序列是应发送Idle。
R_RDY:表示收到一个1类服务请求帧、2类或3类帧,而且还可以接收更多的帧。
R_RDY之前和之后应至少有2两个Idle,帧之间应至少有6个原语信号。
原语序列:原语序列是一个连续重复发送的序列集,当端口或一个端口的接收机逻辑遇到了特殊情况,应发送原语序列。
当条件存在,原语序列应不断地发送。
当收到一组原语序列,应根据端口的状态,回送相应的原语或Idle。
原语序列识别需要连续检测3个同样的原语序列,原语序列之间不能有其他数据。
原语序列协议规定如下:a)链路初始化b)在线到离线转换c)链路失效d)链路复位发送条件响应发送原语序列NOS 无操作检测到链路失效:OLS4 帧帧分类4.1 帧格式SOF 帧头数据CRC EOF...Idle......Idle...可选帧头可填充字节数据载荷帧内容通用帧格式N端口发送机发送帧之间最少有6个原语信号,接收机接收帧之前需接收到2个Idle,交换网可以插入或除去Idle。
SOF:SOF是帧内容之前的一个有序集。
SOF类别描述SOFc1用于请求一个1类连接SOFi11类服务序列的第一帧SOFn11类服务正常帧起始SOFi22类服务序列的第一帧SOFn22类服务正常帧起始SOFi33类服务序列的第一帧SOFn33类服务正常帧起始SOFf交换网起始帧帧头:是帧内容的第一个字段,24个字节,紧跟着SOF。
帧头用于控制链路操作、控制设备传输协议和检测丢失或无序的帧。
数据字段:数据字段在帧头之后。
长度等于四字节的倍数。
FC-0型帧数据段长度为零,FC-1型帧长度等于四字节的倍数,范围为0字节到2112个字节。
ULP的有效载荷不能被4整除,应进行填充。
CRC:为紧跟着数据字段的四个字节字段,用于检测帧头和数据字段的数据完整性。
CRC校验中不包括SOF,EOFEOF :为紧跟着CRC 后的一个有序集。
指明了帧内容的结束。
EOF 类别描述帧内容有效 EOFn 帧内容结束EOFdt 撤销1类专用连接 EOFt 表明该序列结束帧内容无效 EOFni 交换网检测出错误,用其替代EOFn 或EOFt 表明帧内容无效EOFdti 交换网检测出错误,用其替代EOFdt 表明帧内容无效帧内容遭破坏EOFa N 端口/F 端口用于表明内部故障4.2 帧头Bit31~24Bit23~16Bit15~8Bit7~0R_CTL D_ID S_ID rrrrrrrr TYPE F_CTLSEQ_IDDF_CTL SEQ_CNT RX_ID0X_ID参数字段字0字1字2字3字4字5帧头R_CTL 路由控制R_CRL 是一个对帧功能进行分类的一个单字节字段,包括路由选择字段和信息字段。
Bit31~bit28 路由选择字段 帧类型Bit31~bit28 信息字段 描述 备注0000 FC4层设备数据帧0000 未分类信息0001 请求数据Solicited Data0010自发控制Unsolicited Control0011请求控制SolicitedControl0100自发数据UnsolicitedData0101数据描述符DataDescriptor0110自发命令UnsolicitedCommand0111命令状态CommandStatus其他未指定0100视频数据帧同上同上0011FC4层链路数据帧同上同上0010扩展链路数据帧(TPYE应为0000 0001)同上同上1000基本链路数据帧(TPYE应为0000 0000)0000NOP 无操作基本链路服务命令0001ABTS 中止序列0010RMC 结束连接0011保留0100BA_ACC 基本接受0101BA_RJC 基本拒绝其他保留1100链路控制帧出F_BSY外TPYE 保留0000ACK_1链路控制码0001ACK_0/ACK_N0010P_RTJ0011F_RTJ0100P_BSY0101F_BSY 对数据帧忙0110F_BSY 对链路控制帧忙0111LCR 链路信用复位其他保留F_CTL字段F_CTL字段是一个与帧内容相关的包含控制信息的3字节字段相对偏移30:参数字段无意义1:参数字段为相对偏移交换重组2为交换重组保留填充数据字节1~000:表示填充0个字节01:表示填充1个字节10:表示填充2个字节11:表示填充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。