第三章FC-FS协议分析
FC-FS协议对FC协议层次中FC-0、FC-1、FC-2层的功能进行了详细描述。其中,FC-0层描述了两个端口之间物理链路的规范;FC-1层描述了8B/10B编码/解码方案,并规定了端口接收机和发射机的状态;FC-2层规定了数据块传送的规则和机制,包括协调端口间通信所需要的登录/登出服务,可能支持的服务类及不同服务类中的连接和信用管理规则,帧的格式、类型及不同类型的帧的响应,确保链路和数据完整性的差错检测和超时管理;此外,该协议还对光纤通道中的部分一般类服务做了简单介绍。以下是对FC-1及FC-2层的主要内容所作的整理和总结。
3.1 端口状态
3.1.1 接收机状态机
图3-1 接收机状态图
图3-1为接收机的状态转换图,其中,对各个状态转换条件的定义为:
a)转换1:上电;
b)转换2:获得字同步;
c)转换3:检测到一个无效传输字;
d)转换4:检测到信号丢失;
e)转换5:检测到两个连续的无效传输字;
f)转换6:强制接收机复位;
g)转换7:退出接收机复位情况;
3.1.2 端口状态机
图3-2端口状态机
图3-2为FC端口的状态机,对各状态的说明如下。
激活状态:端口完成链路初始化或链路复位协议之后进入该状态,并在该状态下传送和接收帧与原语信号。
链路恢复状态:支持1类服务的端口不能确定自己连接状态并想中止所有专线连接时进入该状态,以复原一条链路,例如当N端口A确定已与B建立连接时却接收到N端口C发送过来的带有SOFc1、SOFi1或SOFn1的帧;分为LR发送(LR1)、LR接收(LR2)、LRR接收(LR3)三个状态。
LR原语序列的传输因服务类的不同而不同。1类服务中,撤销专用连接,端到端信用(N 端口管理)复位到登录值,本地F端口进入LR接收状态,并通知远程F端口向连接的另一N端口发送LR原语序列。2类和3类服务中,N端口或F端口中缓冲区到缓冲区信用复位到登录值,F端口应处理或丢弃与连接到N端口的输出光纤的接收缓冲区中的任何1类连接请求帧、2类或3类帧,2类的端到端信用不受影响。
链路故障状态:端口检测到严重错误条件,例如不在离线状态时同步丢失超时,不在离线状态时信号丢失,或在链路复位期间R_T_TOV超时的时候进入该状态,分为NOS接收(LF1)、NOS发送(LF2)两个状态,这两个状态下的端口更新链路错误状态块中相应的错误计数器。LF1状态下的F端口撤销专用连接,并通知远程F端口向连接的另一N端口发送LR原语序列。
离线状态:在接通电源或内部复位后链路初始化协议完成之前,第一个OLS有序集发送之后,OLS原语序列接收并识别之后端口进入该状态,该状态下的端口不记录接收机错误,分为OLS发送(OL1)、OLS接收(OL2)和OLS等待(OL3)三个状态。在下一步操作前,端
口应发送至少5ms 的OLS 原语序列,超过该时间后端口根据进入OLS 发送状态的原因来决定是按照链路初始化协议还是在线到离线转换协议所规定的步骤进行处理。OL2状态下的F 端口撤销专用连接,并通知远程F 端口向连接的另一N 端口发送LR 原语序列。
3.1.3 链路初始化
FC 端口的链路初始化过程见图3-3。接通电源时,发射机不发送任何数据,接收机检测出这个“信号丢弃”后进入LF2状态并将连续传送NOS 原语序列。原语序列的位流转换成通过光纤传送的连续的“亮”和“灭”的信号驱动接收机按照输入数据流的频率和相位调整其时钟以实现发送机和接收机之间的位同步。接受到的位流被串并转换为每10位一组的字符,接收机在这些字符中连续查找K28.5字符,检测到该字符时就把其第一位标识为一个字节和字的边界,在该字符之后的每第10位为一个编码字节的开始,每第40位为一个编码字的开始。建立起字节和字同步后,每个10位编码字符都由10B/8B 解码器解码为带有“数据”或“特殊”表示的8位字节。解码后的8位字节经8位/32位转换后进入另一套电路系统以寻找有序集。当检测到三个连续的有序集时,端口将根据当前状态和接收到的有序集转换到下一个状态。两端口间的状态转换采用全互锁握手协议不断尽心直至两端口都处于激活状态并连续传送空闲(IDLE )原语信号为止。这时发送机和接收机都不断发送空闲原语信号以保持链路同步,并可随时应答来自FC-2或更高层的数据传送请求。
端口状态链路失效2
链路失效1
离线2
链路恢复
激活
端口状态链路失效2链路失效1离线2链路恢复链路恢复激活链路恢复LR 最后状态:激活最后状态:激活
传输的原语序列传输的原语序列接通电源
rcv NOS
rcv OLS
rcv LR
rcv LRR
rcv IDLE rcv IDLE rcv LRR rcv LR rcv OLS rcv NOS 接通电源事件
事件
图3-3 链路初始化
3.2 登录
登录过程是指N 端口与交换网(如果有)或与之通信的目的N 端口建立操作环境的方法,
一个N端口可以登录的并行N端口的数量由N端口设备决定,在登录和1类服务专用连接之间不存在一一对应的关系,不论支持何种服务类,所有N端口都需要登录到交换网,对于支持1类或2类服务的N端口,它应与要通信的每一个目的N端口登录。
3.2.1 交换网登录
交换网登录完成以下功能:(1)向交换网提供一组特定的操作特性,包括N端口名及其所在的节点名;(2)提供与整个交换网相关的一组特定的操作特性,包括F端口名及交换网名;(3)选择分配或确认启动登录的N端口的本地N端口标识符;(4)初始化缓冲区到缓冲区信用。
直接交换网登录过程应在交换中传输登录链路服务(FLOGI)序列,该交换带有一个N 端口分配的OX_ID,目的标识符为通用F端口地址FFFFFE,源标识符为二进制0,相应的F 端口应执行以下二者之一:(1)在ACC应答序列中分配唯一的N端口标识符给N端口。(2)如果交换网不支持N端口标识符的分配,则返回一个带有原因码为S_ID无效的F_RJT。N 端口应通过FC-PH中没有定义的其它方法分配本地N端口标识符,并以S_ID=X重试FLOGI 序列。当S_ID=X时,F端口应执行以下二者之一:(1)返回带有D_ID=X(确认标识符)的ACC应答序列。(2)如果X无效,返回一个带有原因码为S_ID无效的F_RJT。如果F端口拒绝S_ID=0和S_ID=X,N端口应尝试通过其它的X值重新登录,或通过FC-PH中没有定义的方法确定X的有效值。
FLOGI链路服务序列的有效载荷包括发送该序列的N端口的服务参数。由F端口发出的对FLOGI序列的正常应答序列是一个交换中的接受(ACC)链路服务序列,该交换带有登录请求的OX_ID和交换网分配的RX_ID,目的标识符D_ID为F端口分配给N端口的标识符,源标识符S_ID为通用F端口地址标识符(FFFFFE),有效载荷包含交换网的服务参数。启动N端口根据支持的服务类选择1类SOFc1(SOFi1)、2类SOFi2或3类SOFi3,如果接收到表明不正确类的拒绝(F_RJT、P_RJT),就用上述的下一个定界符重试登录过程;当要求多种服务类时,在登录成功的第一时间,应处理所有可用的服务类的服务参数;登录只对登录的服务类和数值更大的服务类有效(如1类、2类和3类)。
3.2.2 N端口登录
N端口登录完成以下功能:(1)提供一套与目的N端口相关的具体的操作特性;(2)初始化目的端到端信用;(3)在点到点拓扑结构中,初始化缓冲区到缓冲区信用。如果N 端口(A)向N端口(B)完成了PLOGI请求,并且N端口(B)发送了ACC应答序列,那么(A)和(B)都可以启动其它协议的通信;只有在想使现有的登录参数无效或改变时,N端口(B)才需要发送PLOGI请求序列到N端口(A)。如果(A)发送PLOGI到(B),在从(B)收到ACC