资源描述
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_CNT
i) 帧序列错误的检测
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-0
FC-0层涉及多种介质及能以不同速度工作的发送机和接受机。
FC-0层发送机接口
FC-0层接受机接口
2.2 FC-1
FC-1层为编码层,FC采用8b10b编码,编码后产生传输字符。
数据流转换示意图
3 有序集
FC-1层使用8b10b编码,通过光纤发送的信息应把一组8位数据转换为10位传输字符。数据值可以统一的表达为DX.Y或KX.Y,其中D表达为数据代码,K表达为特殊的命令代码。传输字由4个连续传输字符组成,这四个字符传输前和接受后应视为一个整体。
把4个特定的传输字符进行组合形成有序集,有序集由4个专用字符和数据字符组成,FC-PH 定义了如下有特殊意义的有序集:
RD初始值Running Disparity
有序集
定界符
SOFc1
负
K28.5
D21.5
D23.0
D23.0
SOFi1
负
K28.5
D21.5
D23.2
D23.2
SOFn1
负
K28.5
D21.5
D23.1
D23.1
SOFi2
负
K28.5
D21.5
D21.2
D21.2
SOFn2
负
K28.5
D21.5
D21.1
D21.1
SOFi3
负
K28.5
D21.5
D22.2
D22.2
SOFn3
负
K28.5
D21.5
D22.1
D22.1
SOFf
负
K28.5
D21.5
D24.2
D24.2
EOFt
负
K28.5
D21.4
D21.3
D21.3
正
K28.5
D21.5
D21.3
D21.3
EOFdt
负
K28.5
D21.4
D21.4
D21.4
正
K28.5
D21.5
D21.4
D21.4
EOFa
负
K28.5
D21.4
D21.7
D21.7
正
K28.5
D21.5
D21.7
D21.7
EOFn
负
K28.5
D21.4
D21.6
D21.6
正
K28.5
D21.5
D21.6
D21.6
EOFdti
负
K28.5
D10.4
D21.4
D21.4
正
K28.5
D10.5
D21.4
D21.4
EOFni
负
K28.5
D10.4
D21.6
D21.6
正
K28.5
D10.5
D21.6
D21.6
原语信号
Idle
负
K28.5
D21.4
D21.5
D21.5
R_RDY
负
K28.5
D21.4
D10.2
D10.2
原语序列
OLS无操作
负
K28.5
D21.1
D10.4
D21.2
NOS离线序列
负
K28.5
D21.2
D31.5
D5.2
LR 链路复位
负
K28.5
D9.2
D31.5
D9.2
LRR 链路复位响应
负
K28.5
D21.1
D31.5
D9.2
Ø 帧定界符:放在帧内容之前或之后的有序集。SOF是放在帧内容之前的有序集;EOF是放在CRC之后的有序集,表达序列内容的结束。
Ø 原语信号:
Idle 表达端口已做好帧传输和接受的准备。在没有发送数据帧、R_RDY或原语序列是应发送Idle。
R_RDY:表达收到一个1类服务请求帧、2类或3类帧,并且还可以接受更多的帧。R_RDY之前和之后应至少有2两个Idle,帧之间应至少有6个原语信号。
Ø 原语序列:原语序列是一个连续反复发送的序列集,当端口或一个端口的接受机逻辑碰到了特殊情况,应发送原语序列。当条件存在,原语序列应不断地发送。当收到一组原语序列,应根据端口的状态,回送相应的原语或Idle。原语序列辨认需要连续检测3个同样的原语序列,原语序列之间不能有其他数据。原语序列协议规定如下:
a) 链路初始化
b) 在线到离线转换
c) 链路失效
d) 链路复位
发送原语序列
发送条件
响应
NOS 无操作
检测到链路失效:
1) 不在离线状态时同步丢失超时
2) 不在离线状态时信号丢失
3) 链路复位期间超时
OLS
OLS离线序列
启动链路初始化
接受到NOS
进入离线状态
LR
LR 链路复位
启动链路复位
启动链路超时恢复
不能确认连接状态和恢复连接过程(1类N)
LRR
LRR链路复位响应
接受到LR
Idle
4 帧
帧分类
帧格式
链路控制帧
FC-0型帧
R_CTL 31~28 为
1100
确认帧
ACK_0
ACK_1
ACK_N
链路响应帧
忙 F_BSY P_BSY
拒绝 F_RJT P_RJT
链路命令帧
LCR
数据帧
FC-1型帧
R_CTL 31~28不为
1100
FC-4层设备数据帧
FC-4层 设备类型
IP、IPI-3、SCSI、SB
FC-4视频数据帧
FC-4层 视频类型
保存
链路数据帧
基本链路服务
ABTS、BA_ACC、BA_RJT、NOP、RMC
扩展链路服务
ABTX、ACC、ADVC、ECHO、ESTC、ESTS、FLOGI、LOGO、LS_RJT、PLOGI、RCS、RES、RLS、RRQ、RSI、RSS、RTV、TEST
FC-4链路服务
4.1 帧格式
N端口发送机发送帧之间最少有6个原语信号,接受机接受帧之前需接受到2个Idle,互换网可以插入或除去Idle。
Ø SOF:SOF是帧内容之前的一个有序集。
SOF类别
描述
SOFc1
用于请求一个1类连接
SOFi1
1类服务序列的第一帧
SOFn1
1类服务正常帧起始
SOFi2
2类服务序列的第一帧
SOFn2
2类服务正常帧起始
SOFi3
3类服务序列的第一帧
SOFn3
3类服务正常帧起始
SOFf
互换网起始帧
Ø 帧头:是帧内容的第一个字段,24个字节,紧跟着SOF。帧头用于控制链路操作、控制设备传输协议和检测丢失或无序的帧。
Ø 数据字段:数据字段在帧头之后。长度等于四字节的倍数。FC-0型帧数据段长度为零,FC-1型帧长度等于四字节的倍数,范围为0字节到2112个字节。ULP的有效载荷不能被4整除,应进行填充。
Ø CRC:为紧跟着数据字段的四个字节字段,用于检测帧头和数据字段的数据完整性。CRC校验中不涉及SOF,EOF
Ø EOF:为紧跟着CRC后的一个有序集。指明了帧内容的结束。
EOF类别
描述
帧内容有效
EOFn
帧内容结束
EOFdt
撤消1类专用连接
EOFt
表白该序列结束
帧内容无效
EOFni
互换网检测犯错误,用其替代EOFn或EOFt 表白帧内容无效
EOFdti
互换网检测犯错误,用其替代EOFdt 表白帧内容无效
帧内容遭破坏
EOFa
N端口/F端口用于表白内部故障
4.2 帧头
帧头
Ø R_CTL 路由控制
R_CRL是一个对帧功能进行分类的一个单字节字段,涉及路由选择字段和信息字段。
Bit31~bit28 路由选择字段
帧类型
Bit31~bit28 信息字段
描述
备注
0000
FC4层设备数据帧
0000
未分类信息
0001
请求数据Solicited Data
0010
自发控制Unsolicited Control
0011
请求控制Solicited Control
0100
自发数据Unsolicited Data
0101
数据描述符Data Descriptor
0110
自发命令Unsolicited Command
0111
命令状态Command Status
其他
未指定
0100
视频数据帧
同上
同上
0011
FC4层链路数据帧
同上
同上
0010
扩展链路数据帧
(TPYE应为
0000 0001)
同上
同上
1000
基本链路数据帧
(TPYE应为
0000 0000)
0000
NOP 无操作
基本链路服务命令
0001
ABTS 中止序列
0010
RMC 结束连接
0011
保存
0100
BA_ACC 基本接受
0101
BA_RJC 基本拒绝
其他
保存
1100
链路控制帧
出F_BSY外
TPYE 保存
0000
ACK_1
链路控制码
0001
ACK_0/ACK_N
0010
P_RTJ
0011
F_RTJ
0100
P_BSY
0101
F_BSY 对数据帧忙
0110
F_BSY 对链路控制帧忙
0111
LCR 链路信用复位
其他
保存
Ø F_CTL字段
F_CTL字段是一个与帧内容相关的包含控制信息的3字节字段
F_CTL字段格式
控制字段
位置bit
描述
互换前后关系
23
0:表达互换启动方
1:表达互换接受方
序列前后关系
22
0:表达序列启动方
1:表达序列接受方
第一个序列
21
0:互换的其他序列
1:互换的第一个序列
最后一个序列
20
0:互换的其他序列
1:互换的最后一个序列
结束序列
19
0:序列的其他数据帧
1:序列的最后一个数据帧
结束连接
18
0:连接
1:将结束连接
链序列
17
0:无链序列
1:表达链序列激活
序列积极权
16
0:保持序列积极权
1:转换序列积极权
X_ID重新分派
15
1:表达重新分派
X_ID无效
14
1:表达无效
保存
13~10
保存
重传序列
9
0:表达原始序列
1:表达重传序列
单向传输
8
0:双向传输
1:单向传输
后续序列
7~6
剩下的数据帧:
00:无信息
01:立即
10:不久
11:延迟
序列中止
5~4
00:异常中止,丢弃多个序列
01:异常中止,丢弃单个序列
10:带无限缓冲的解决策略
11:表达丢弃多个序列,并且立即重传
序列接受方ACK
00:继续序列
01:终止序列请求
10:停止序列(正常停止无需ABTS)
11:请求立即重传序列
相对偏移
3
0:参数字段无意义
1:参数字段为相对偏移
互换重组
2
为互换重组保存
填充数据字节
1~0
00:表达填充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_1
1) 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_ID
c) 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匹配。
基本接受有效载荷
项目
字节数
SEQ_ID有效 0x80有效0x00无效
1
最后一个序列的SEQ_ID可传送给ULP
1
OX_ID
2
RX_ID
2
SEQ_CNT高位
2
等于ABTS的SEQ_CNT
SEQ_CNT低位
2
最后一 可交付序列数据帧的SEQ_CNT
BA_RJT:告知链路服务请求方请求被拒绝,SEQ_ID重新分派,X_ID与ABTS匹配。有效载荷的前4个字节标示了拒绝因素码。
NOP:可以代替正常数据帧启动1类连接,启动序列,中止序列,结束1类连接。无确认序列。
RMC: 用于请求立即撤消一个1类连接。响应时请发送由EOFdt结束的ACK帧。使用RMC撤消连接,所有的开放的序列都异常终止,因此不能把该方法当作撤消连接的正常方式。无确认序列。
6.2 扩展链路服务
扩展链路服务规定目的端口实现一个功能或服务。每个请求或确认都由单独的序列构成。有效载荷的前4个字节表达了LS命令码
扩展链路服务帧 LS命令代码
0000 0001 --
LS_RTJ
链路服务拒绝
扩展链路服务应答序列
0000 0010--
ACC
接受
0000 0011--
PLOGI
N端口登录
0000 0100--
FLOGI
F端口登录
0000 0101--
LOGO
登出
0000 0110--
ABTX
中止互换
中止正在进行的互换
0000 0111--
RCS
读当前专用连接状态
了解其他N端口连接状态
0000 1000--
RES
读互换状态
0000 1001--
RSS
读序列状态
0000 1010--
RSI
请求序列积极权
转换互换双方序列积极权
0000 1011--
ESTS
建立流
用于EE_Credit信用评估
0000 1100--
ESTC
评估信用
0000 1101--
ADVC
建议信用
0000 1110--
RTV
读超时值
返回R-A-TOV E-D-TOV
0000 1111--
RLS
读链路状态
返回链路错误状态块
0001 0000--
ECHO
回送
应答有效载荷与ECHO相同
0001 0001--
TEST
测试
无确认序列
0001 0010--
RRQ
复位恢复限定符
恢复S_ID,D_ID,OX_ID,RX_ID,
SEQ_CNT低位和高位之间的SEQ_CNT
其他
--
保存
6.3 总结
Ø 基本链路服务命名由单个基本链路数据帧组成,作为互换的一部分。
Ø 扩展链路服务仅在单个互换内部执行。大多数扩展服务协议都是两个序列的互换。
Ø 基本和扩展确认帧和确认序列应按与请求同样的服务类。
Ø 假如登录不成功,因并发序列限制为1,所以不能发起第二个互换来执行扩展的链路服务。因此中止序列协议时恢复动作的首选。
Ø 假如登录不成功,则不能尝试ESTC,ESTS,ADVC(EE_Credit评估)。
Ø 假如登录成功,则对所有的扩展链路服务互换,互换发送方应使用丢失多个序列错误解决策略。
Ø 假如扩展链路服务互换发送方检测到互换的错误,那么就应中止该互换,同时使用另一个互换重试被中止的互换协议。
7 服务类
互换网和N端口提供3种服务类,互换网和N端口可以选择支持一种或多种服务类。
互换网收到的每个帧,应完毕下列各项中的一项:
a) 交付帧
b) 发送一个FBSY
c) 发送一个FRJT
d) 不发送任何响应丢弃帧
7.1 1类服务:专用连接
要建立1类连接需N端口向另一个N端口发送连接请求,另一个N端口回送ACK。互换网给两个N端口间分派回路。
一旦建立连接,在撤消连接之前互换网应保持两个N端口间的回路。
规则:
Ø 建立连接前应先登录,撤消连接前需一直保持连接,撤消连接前只能与连接的N端口通信;
Ø 发送方对每个数据帧分派递增的SEQ_CNT,每个帧都包含各自的S_ID、D_ID、OX_ID、RX_ID。互换网顺序交付;
Ø 已建立连接的两个N端口可发起多个互换,启动多个序列。
Ø N端口负责端到端流控制,目的端口对每个有效数据帧确认ACK。除SOFc1外,1类服务帧只有端到端流控制,SOFc1既参与端到端流控制,又参与缓冲区到缓冲区流控制。
Ø 互换网可拒绝1类连接请求或发送带因素的F_BSY。建立专用连接后,互换网不再干涉连接,目的N端口不能发送忙帧,但可发送拒绝帧。当第三个N端口把2类服务帧或3类服务帧发送到已经建立连接的N端口,互换网给2类服务帧回送一个FBSY,对3类服务帧丢弃。
Ø 1类帧、1类SOFc1帧与2类服务帧都参与EE_Credit控制。
Ø N端口和F端口应可以辨认所有服务类的SOF,并给出对的的响应。
7.2 2类服务:多路复用
2类服务是在两个N端口间提供带有未交付告知的无连接服务。
规则:
Ø 接受N端口,发送N端口要完毕登录;
Ø 目的端口对每个有效数据帧确认ACK。发送方对每个数据帧分派递增的SEQ_CNT,每个帧都包含各自的S_ID、D_ID、OX_ID、RX_ID。互换网不必顺序交付。
Ø N端口与F端口间执行缓冲区到缓冲区流控,N端口间执行端到端流控。
Ø 1类SOFc1帧、2类服务帧、3类服务帧参与BB_Credit控制
Ø N端口和F端口应可以辨认所有服务类的SOF,并给出对的的响应。
Ø 流控:2类服务使用两种流控。F端口给发送2类服务N端口发送R_RDY,表白F端口缓冲区可以接受其他帧。N端口给与之相连的F端口发送R_RDY,表白N端口缓冲区可以接受其他帧。使用ACK帧实现端到端流控。
7.3 3类服务:数据报
3类服务是在两个N端口间不提供交付/未交付告知的无连接服务和两个N端口端到端流控。
规则:
Ø 接受N端口,发送N端口要完毕登录;
Ø 目的端口对每个有效数据帧确认ACK。发送方对每个数据帧分派递增的SEQ_CNT,每个帧都包含各自的S_ID、D_ID、OX_ID、RX_ID。互换网不必顺序交付。
Ø N端口与F端口间实行缓冲区到缓冲区流控。R_RDY用于缓冲区到缓冲区的流控。1类SOFc1帧、2类服务帧、3类服务帧都参与BB_Credit控制。
Ø N端口和F端口应可以辨认所有服务类的SOF,并给出对的的响应。
7.4 混合服务
假如使用混合服务,互换网、接受N端口、发送N端口都应支持混合服务。
8 登录
N端口与互换网或与其他N端口建立操作环境的过程。登录前或登录后使用缺省的服务参数。缺省值如下:
Ø 并发序列数为1
Ø 并发序列总数为1
Ø EE_Credit为1
Ø BB_Credit为1
Ø 接受数据字段大小等于128
Ø 规定XID互锁
Ø 没有XID重新分派
Ø 使用ACK_1
Ø 丢弃多个序列错误策略
Ø 不使用相对偏移
Ø 不使用其他可选择支持的特性
可分为互换网登录和目的N端口登录,实现过程同样只是源/目的标记符不同。
8.1 互换网登录
Ø 拟定互换网是否存在,不存在可反馈已连接到一个点到点拓扑结构;
Ø 存在则能初始化BB_Credit;
1) 发送FLOGI序列 分派OX_ID ,D_ID目的地址标记符0XFFFFFE,S_ID源地址标记符为0;
2) 互换网发送ACC确认序列,分派S_ID,若不支持分派则返回带S_ID无效的F_RJT。
3) 发送S_ID 为X的FLOGI序列,若X无效,改变x值,直到收到ACC帧。
8.2 N端口登录
Ø 初始化目的端口的EE_Credit
Ø 初始化BB_Credit
1) 发送PLOGI序列 分派OX_ID 目的地址标记符Y 源地址标记符为X;
2) 目的N端口发送ACC确认序列,分派RX_ID,目的地址标记符X 源地址标记符为Y。ACC中有效载荷涉及N端口服务参数。
8.3 N端口服务参数
FLOGI 、 PLOGI 、 ACC有效载荷结构
16字节
8字节
8字节
16字节
16字节
16字节
16字节
16字节
通用服务参数
端口名
每个N端口唯一
节点/互换网名
每个N端口唯一
1类服务参数
2类服务参数
3类服务参数
保存
厂商标记符
N端口通用服务参数
参数
字
位
描述
最新版本
0
31~24
所支持的最新版本
最早版本
0
23~16
所支持的最老版本
BB_Credit
0
15~0
缓冲区到缓冲区信用
一般特性
1
31~16
-----------------------
连续增长
1
31
0表达不支持 连续增长的偏移值
1表达支持
随机相对偏移
1
30
0表达不支持 随机的相对偏移值
1表达支持
保存
1
29
0 表达无效
1 表达厂商标记符有效
N端口F端口
1
28
0表达N端口,1表达F端口
缓冲区到缓冲区接受数据字段大小
1
11~0
小于128 大于2112的值都是无效的,是4的整数倍,至少128,推荐256
N端口并发序列总数
2
31~16
表达N端口作为接受方对所有3种服务所支持的并发序列的总合
按信息类别的相对偏移
2
15~0
表达是否支持相应信息类的相对偏移
R_A_TOV
2
31~0
资源分派超时值 单位1ms
E_D_TOV
3
31~0
仅对点到点结构故意义,故障检测超时值 单位1ms
N端口服务类参数
参数
字
位
备注
有效性
0
31
0不支持的类
1支持的类
混合服务模式
0
30
0不支持混合服务
1 支持混合服务
堆栈连接请求
0
29~38
登录时无意义
连续发送
0
27
登录时无意义
X_ID重新分派
0
15~14
00 不支持X_ID互锁
01 支持X_ID互锁
11 规定X_ID重新赋值
发送方响应过程关联
0
13~12
00 不支持初始过程关联因子
01 支持初始过程关联因子
11 需要初始过程关联因子
发送方支持ACK_0
0
11
0表达不支持
1表达支持
发送方支持ACK_N
0
10
0表达不支持
1表达支持
接受方支持ACK_0
1
31
0表达不支持
1表达支持
接受方支持ACK_N
1
30
0表达不支持
1表达支持
X_ID互锁
1
29
1表达规定互锁
0表达不规定互锁
错误策略支持
1
28~27
00 表达只支持丢弃策略
10表达支持丢弃和解决策略
每个序列类别
1
25~24
00 每个序列1种类别
01 每个序列2种类别
11每个序列多于两种类别
互换网特性 保存
1
19~16
接受数据字段大小
1
15~0
规定了数据字段大小的最大值
并发序列
2
31~16
N端口EE_Credit
2
14~0
端到端信用 3类服务无
每个互换中开发序列数
3
31~16
8.4 F端口服务参数
参见8.3
9 互换/序列管理
序列是一组一个或多个相关数据帧及链路控制帧的集合。序列级的错误恢复应由FC-2层以上各层完毕。
互换是一个或多个相关序列的集合。互换可以是单向的也可以是双向的,对于一个启动方N端口,在任何一个时刻,一个互换内只能有一个序列活动,即序列发送方在启动另一个序列之前,应完毕当前序列的数据帧发送。在每个序列结束后,序列启动方可以把发送下一个序列的积极权转移给其他N端口,或保存发送下一个序列的积极权。
9.1 总体规则
互换是协调两个N端口或节点之间信息数据互相互换的基本机制。所有数据传输都是互换的组成部分。
互换管理规则:
Ø 在互换的整个生存期内,序列接受方以序列为基础将数据交付给FC-4层或更高层协议。
Ø 在丢弃多个序列错误策略中,序列应按发送顺序交付。假如序列正常完毕且之前序列可交付,则当前序列可交付。
Ø 在丢弃单个序列错误策略中,假如序列正常完毕,则当前序列可交付。
Ø 假如序列中所有有效的数据帧都没检测到可拒绝的错误,则该序列的数据内容是完整的。
Ø 在无限缓冲区策略中 序列的首帧,尾帧没有检测到可拒绝的错误。该序列可交付。
互换产生规则
Ø 登录完毕前的互换应合用缺省登录参数
Ø 要产生新的互换(非扩展链路服务)的条件
源N端口已完毕到目的N端口的登录
源N端口已具有OX_ID和互换资源
源N端口可以启动新的序列
Ø 互换中第一个序列的每个帧的F_CTL中的第一个序列位应置1
Ø 互换中第一个序列的第一个帧应在F_CTL中bit5~bit4设定互换错误策略
Ø 发送方应发送带指定OX_ID的数据帧,未指定的RX_ID为0xffff。若规定X_ID互锁则需等待带RX_ID的ACK。若不需互锁则可发送序列的其他帧。
Ø 在1类2类服务中,发起下个序列前至少收到前一个序列的一个ACK
序列定界符
Ø 序列应通过发送带有SOFix或SOFc1的第一帧来启动
Ø 中间帧使用SOFnx和EOFn
Ø 收到EOFt或EOFdt,序列结束。
序列启动规则
Ø 当满足下列3条件时可以启动新的序列
启动N端口具有序列积极权
启动N端口有可使用的SEQ_ID
启动N端口及接受N端口建立的活动序列总数不超过
a) 并发序列总数
b) 每种服务的并发序列总数
c) 每个互换的开放序列数
Ø 序列启动方指定一个唯一的SEQ_ID,不能与上一个序列相同
Ø 对于同一互换中的流序列互换启动方应使用X+1个SEQ_ID(X为互换序列总数),这样可使互换状态块中保存最后一个可交付序列的信息
序列计数
Ø 在一个数据帧序列中,使用SEQ_CNT标记序列的每个帧
Ø 互换的第一个帧的SEQ_CNT为0,序列中其它帧随后累计加1。
Ø 对于流序列后一序列第一帧SEQ_CNT为前一序列最后帧SEQ_CNT加1。
Ø 对于流序列后一序列第一帧SEQ_CNT可为前一序列最后帧SEQ_CNT加1,也可为0。
Ø 链路响应帧的序列计数SEQ_CNT应与其响应的序列一致。
正常ACK帧规则
Ø ACK_0 优先级大于ACK_N优先级大于ACK_1。同一序列中不可混合使用ACK。
Ø 在丢弃策略和错误解决策略中都可使用ACK_0,每个序列都可使用单个ACK_0表达序列发送成功,或把中止序列条件设立为一个不为00的值,请求中止序列。
Ø ACK帧可不按SEQ_CNT顺序而按数据帧的解决顺序发送,但参数地段的历史位应指明当前序列中前一个ACK帧的状态。
Ø 每个ACK帧应在E_D_TOV限定的时间内发送。使用ACK_0时应在接受到最后一个数据帧的时限内发送。
正常序列完毕规则:
Ø F_CTL的结束序列位bit19 置1、序列积极权位bit16置1。
Ø 若F_CTL中的连续序列位bit7~bit6 为11时,序列启动方一直等待最后的ACK帧,收到之后才启动下一序列。
Ø 在最后一个数据帧可转移序列积极权。ACK中积极权位为1,则积极权已转移到序列接受方。
Ø 1类序列最后一个数据帧的结束连接位为1,表达要结束连接。
Ø 在1类2类服务中,收到带EOFt或EOFdt的ACK时则认为序列可交付。
Ø 在3类服务中,发送方收到ABTS帧的接受响应或接受到读互换状态块请求的接受响应时,才认为序列是可交付的。
Ø 接受方在下列情况,认为一个1类2类序列可交付
所有数据帧都被接受
没有检测到序列错误
除最后一个确认,其他确认都已发送。
Ø 接受方在下列情况,认为一个3类序列可交付
所有数据帧都被接受
没有检测到序列错误
最后一个数据帧由EOFt结束
Ø 在1类2类中序列启动方发送的最后一个数据帧应以EOFn结束,在3类服务的最后一个数据帧应以EOFt结束。
互换终止规则
Ø 互换的最后序列的最后一个数据帧中的F_CTL的最后序列位应置为1。也可在最后序列其它帧设立,一旦设立不可改变。
Ø 当最后一个序列按正常规则结束时,互换终止。
Ø 可以使用ABTX扩展链路服务请求异常中止互换
Ø 互换中所涉及的N端口登出,则互换异常中止。
9.2 状态块
ESB Exchange Status Block
项目
字节数
OX_ID
2
RX_ID
2
发送方地址标记符
4
接受方地址标记符
4
E_STAT
4
保存
4
服务参数
112
第一个序列状态
8
中间序列状态
8*X
最后一个序列状态
8
接受方:所有序列都应记录
发送方:所有序列都应记录,但无需提供应外部
SSB Sequence Status Block
项目
字节数
SEQ_ID
1
保存
1
SEQ_CNT的低位
2
SEQ_CNT的高位
2
S_STAT
2
错误SEQ_CNT
2
展开阅读全文