第三章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 NOSrcv OLSrcv LRrcv LRRrcv 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之前收到来自(B)的PLOGI,(A)应象从没发送过PLOGI一样对其作出响应。
保存与N端口通信的目的N端口的服务参数需要N端口的资源。
2类帧的N端口登录协议如图3-4所示。
图3-4 2类帧N端口登录协议3.2.3 登出目的登出过程撤消两个N端口间的服务,释放用于维持与目的N端口服务相关的资源。
由于交换网没有专门用于N端口的资源,因此不需要直接交换网登出,间接登出可在N端口和交换网之间进行。
如果N端口接收或发送了NOS或OLS原语序列,那么它应是从交换网(如果存在交换网)或者相连的N端口(点到点拓扑)间接登出。
在交换网的重新登录期间,如果N端口检测到F端口名称发生变化,那么N端口在启动或接受与其它N端口的通信前,应等待一个R_A_TOV超时周期(即间接N端口登出)并重新登录到其它已经登出的N端口。
3.3 帧处理3.3.1 差错检测光纤通道将错误恢复限制在序列层次上,由漏帧、坏帧引起的差错在序列级检测和/或恢复,而交换机服务于分层体系结构最底层,其进行信息交换的基本单位是帧,比帧更高层的序列、交换等概念不可见,所以交换机只需通过更新EOF将帧级的差错,包括含有无效传输字、CRC校验错误等,通知N端口并交由上层按照特定的差错策略执行差错恢复。
链路差错是在比帧更细的粒度上检测出的差错,包括信号丢弃、同步丢失和没有帧活动时的链路超时差错。
链路差错的恢复通过原语序列的传送和接收按照原语序列协议(包括链路初始化、链路故障、链路复位、在线到离线的转换)来完成。
3.3.2 交换网忙对于接收到的所有有效帧,交换网都应能够根据当前的操作环境和链路状态给出适当的链路响应。
交换网可能给出的响应帧有F_BSY和F_RJT。
交换网发送F_BSY响应的原因有:(a)交换网由于其内部原因不能把帧交付给目的N端口;(b)目的N端口正在处理1类连接请求,交换网不能交付帧。
3.3.3 交换网拒绝发送F_RJT响应的条件如图3-5所示。
由于使用基本链路服务命令之前不需要登录,所以对基本链路服务命令不需要检测登录标志,图中用蓝色边框标识。
而交换网只可能在以下情况下才可能拒绝一个链路控制帧:不支持的服务类、无效D_ID/S_ID、需要登录、N端口不可用,图中用红色字体标识。
图3-5 交换网拒绝条件检测3.4 连接管理3.4.1 服务类1类服务通过建立专用连接,保证两个N端口间的最大带宽。
一个N端口逻辑上可以在任意时间完成与其它N端口的点到点通信,不管是否有交换网。
一个节点中的多N端口能够同时与在一个或多个节点中的单个或多个N端口进行并行数据传输。
2类服务是一种无连接服务,允许交换结构在帧边界处对帧复用。
交换结构不一定保证数据帧和确认信息的传送能够按照它们被源和目的N端口发送的次序进行,但可以确保就传送和不能传送发出响应。
3类服务也是无连接服务,但仅支持无确认的传送,即目的N端口不对成功或不成功的帧传送回送任何响应。
在2类和3类服务中,一个N端口可以把数据帧同时发送到多个N端口,或从多个N端口同时接收数据帧。