3.5 信用管理
3.5.1 EE_Credit和BB_Credit
端到端流量控制发生在一对N端口之间。在1类端到端流控制中,除了对SOFc1帧,其它帧的F_BSY、F_RJT和P_BSY都不会出现;在2类端到端流控制中,对于任何数据帧F_BSY、F_RJT或P_BSY都可能出现,每个响应都应用到端到端和缓冲区_缓冲区流控制。对于1类服务,每个序列接收方可以给它登录的N端口分配相同的信用,该信用的值可以是序列接收方支持的最大值;对于2类服务,每个序列接收方给它登录的N端口分配一定数量的接收缓冲区,所有分配的缓冲区的总和可以超过序列接收方支持的2类缓冲区的总和,多个源N端口共享在序列接收方N端口的2类端到端缓冲区。如果接收到的2类帧不带信用且接收方没有缓冲区来接收,那么接收方可以丢弃该帧而不回送P_BSY或P_RJT。
缓冲区到缓冲区流量控制发生在源 N端口和本地F端口、远程F端口和目的N端口之间。对于无连接的服务,每个端口把无连接缓冲区的总数分配给与其直接连接的端口,2类、3类和1类/SOFC1帧共享无连接缓冲区。对于接收到的1类/SOFc1、2类、3类帧,每个端口都发出一个R_RDY ,用于缓冲区到缓冲区流控制的同步机制。BB_Credit代表端口(N端口或F端口)支持的接收缓冲区的数目。BB_Credit计数定义为尚未确认的或正等待来自于相关端口之间的R_RDY响应的重要帧的数目,代表在相关端口占用的接收缓冲区个数。
为了避免信用问题(包括缓冲区到缓冲区之间和端到端之间),N端口要在数据帧发送之前发送R_RDY和链路控制帧。为响应一个数据帧(2类帧和1类服务的连接请求帧)要求R_RDY和链路控制帧(ACK,BSY,RJT)都要求发送时,R_RDY应在链路控制帧之前被发送。
3.5.2 BB_Credit管理规则
缓冲区到缓冲区流控制模型如图3.7所示, FC端口管理BB_Credit计数的过程总结如下:
a) 每个端口(N端口或F端口)负责管理BB_Credit计数;
b) 除非分配的BB_Credit大于0并且BB_Credit计数小于BB_Credit,发送N端口或F
端口都不传输2类、3类或1类/SOFc1帧。为了避免接收机过载,每个端口必须使得BB_Credit计数小于BB_Credit;
c) 每个端口在交换网登录或者重登录结束后,将BB_Credit计数值设置为0; d) 对于每个传输的2类、3类或1类/SOFc1帧,每个端口将BB_Credit计数加1;对于
每个接收到的R_RDY,BB_Credit计数减1;
e) 接收到每个2类、3类或者带SOFc1的1类帧时,每个端口都发出一个R_RDY。
3.5.3 BB_Credit恢复
如果两个FC端口在登录过程中指定的BB_SC_N值均不为0,则BB_Credit恢复过程可在这两个FC端口之间进行,且BB_SC_N值取其中的较大值。支持BB_Credit恢复的FC端口应按照以下步骤进行操作:
a) 如果在开始通信或上一个BB_SCs原语发送之后已有2发送,则发送BB_SCs原语;
b) 如果在开始通信或上一个BB_SCr 原语发送之后已有2则发送BB_SCr原语;
c) 每接收到一个R_RDY,BB_RDY_N加1。如果BB_RDY_N等于2清0;
d) 每接收到一个帧,BB_FRM_N加1。如果BB_FRM_N等于2BB_SC_NBB_SC_NBB_SC_NBB_SC_N个需要BB_Credit帧被
个R_RDY原语被发送,
,则将BB_RDY_N
,则将BB_FRM_N清0;
e) 如果接收到BB_SCr原语,则根据下式计算丢失的BB_Credit:
丢失的BB_Credit=(2BB_SC_N-BB_RDY_N)/ 2BB_SC_N。然后将BB_Credit_CNT的值
减去丢失的BB_Credit值,且使BB_RDY_N在接收下一个R_RDY之前清0; f) 如果接收到BB_SCs 原语, 则根据下式计算对方FC端口丢失的BB_Credit:
对方FC端口丢失的BB_Credit=(2BB_SC_N-BB_FRM_N)/ 2BB_SC_N。然后为每个丢
失的BB_Credit发送一个R_RDY,且使BB_FRM_N在接收下一个帧之前清0。
序列发送方 BB_Credit0 +1 -1 0 BB_信用 本地交换网端口 远端交换网端口 0 0 +1 -1 +1 -1 +1 -1 BB_信用 序列接收方 BB_Credit0 +1 -1 0 II类、III类或I类/SOFc1帧 II类、III类或I类/SOFc1帧 R_RDR_RDP_BSY/P_RJT ACK F_BSY(DF)/F_RJT P_BSY/P_RJT ACK R_RDF_BSY(LC) R_RDY R_RDY 无连接服务的RCV缓冲区 图3-7 缓冲区到缓冲区流控制模型
3.6 超时管理 3.6.1 超时定义
R_T_TOV:接收发送超时,被接收机用来检测同步丢失,其值为100ms。
E_D_TOV:错误检测超时,默认值为10s。在以下三种情况下用作上限:单个序列中连续数据帧的传输,对F_BSY或P_BSY进行响应时2类帧的重传,ACK帧的传输。其他情况下应作为上限,如链路超时,序列超时。
R_A_TOV:资源分配超时,用于决定何时进行恢复限定符恢复,其值为E_D_TOV加上最大交换网延迟的两倍,默认值为120s。
CR_TOV:连接请求超时,在启动堆栈连接请求时,连接启动方,连接接收方和交换网应对所传输的堆栈连接请求帧进行计时以控制连接请求的处理过程。
CR_TOV在交换网登录过程中作为类服务参数由F端口指定,其值最小应等于R_A_TOV,最大值由交换网设定。交换网根据该值来确定可以保留一个堆栈连接请求帧的最长时间。
3.6.2 超时检测
链路故障超时:当同步丢失或链路复位协议(端口处于LR1、LR2或LR3的时间)大于R_T_TOV大于R_T_TOV时,即检测到链路故障。链路故障的其它条件还包括接收到NOS原语序列。检测到链路故障时,应更新LESB,可通过执行链路故障协议来恢复。
链路超时:一个专用连接期间的所有活动序列均超时,或缓冲Credit_CNT达到0后,在E_D_TOV时间内没有接收到一个或多个R_RDY,则检测到链路超时。可通过链路复位协议来恢复。对于该超时值的设定,应考虑交换网处理一个1类连接请求的时间和2、3类帧由与所有延迟相关的最坏路径传输时所需的最大时间。
序列超时:在一个序列完成之前,序列发送端和接收端的期望事件应在E_D_TOV时间内发生,否则即被检测为序列超时。在1、2类服务中,发送端的期望事件是接收到所发送数据帧的ACK帧或链路控制响应,或所发送链路控制帧的下一个数据帧。接收端的期望事件是接收到同一活动且未完成的序列中的另一个数据帧。在3类服务中,接收端的期望事件是接受到接收到同一序列中的另一个数据帧。
OLS传输超时:执行在线到离线协议时,端口将连续发送OLS,若在5ms时间内没有收到相连端口的原语序列响应,即可自行进入离线状态。
连接请求超时:交换网接收到堆栈连接请求帧时应启动CR_TOV定时器。如果交换网没有在CR_TOV时间内将堆栈连接请求帧传送到连接接收方,那么交换网应丢弃该连接请求帧,并向连接启动方发送F_BSY帧。
3.7 别名服务 3.7.1 建立别名组
一个N端口不仅可以通过其端口标识符来识别,还可以通过一个或多个别名标识符来识别。N端口通过向别名服务器(FFFFF8h)注册来成为一个组的成员,目前已定义的别名有:HG_ID(搜索组标识符)和MG_ID(多播组标识符)。图3-8描述了启动方N端口,成员N端口,别名服务器,目录服务器以及交换网控制器建立一个别名组的流程。