基于CNAPS的流水号管理方法
关键词:CNAPS SB分行系统 资金清算 流水号 套接口
商业银行(Special Bank)之间的资金收、付交易,必须经过政府授权的中央银行进行资金清算,以发挥中央银行的宏观调控功能,从而稳定货币、稳定市场。CNAPS系统即是由各级中央银行组成, 因此SB分行系统必须和CNAPS系统通信,通过CNAPS系统完成资金的最终清算。CNAPS系统的可靠、有效运行,将关系到企业、个人的资金是否实现有效、及时、可靠的转移,对维护和健全银行体系,完善金融市场是至关重要的。
CNAPS系统中数据的传送是全双工的。一方面是CNAPS向SB发送信息或文件;另一方面SB也向CNAPS发送信息或文件。以下着重分析CNAPS向SB发送信息或文件时的情况,SB向CNAPS发送信息或文件时的情况与此类似。
1 目前CNAPS系统的一些不完善之处
目前在CNAPS向SB发送信息或文件的路径上存在以下不足之处:接收端不能得到独立的信息或文件;文件请求响应时间过长;传输层能提供的可靠性有限。
1) 不能得到独立的信息和文件
两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不在字节流中插入记录标识符。我们将这称为字节流服务(byte stream service)。如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。收方可以分4次接收这80个字节,每次接收20个字节。一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。TCP对字节流的内容不作任何解释。对字节流的解释由TCP连接双方的应用层解释。当CNAPS向SB发送信息或文件时,SB得到的只是无记录标识的字节流,而无法还原出独立的信息或文件。
2)文件请求响应时间过长
在CNAPS系统中,SB作为客户机,CNAPS作为服务器运行,客户是指主动发起通信请求的应用程序,而服务器是被动等待接收通信请求的应用程序。所以在CNAPS向SB发送信息或文件的路径上,CNAPS不会主动向SB发送信息或文件,它必须首先收到SB的请求。
在CNAPS向SB发送信息或文件的路径上,SB向CNAPS发出信息或文件请求的同时启动一个定时器,当定时器超时(仍未接收到正确的信息或文件)SB则认为这个请求丢失或损伤因而进行重传。当CNAPS与SB传送的数据单元是文件时,由于文件数据量很大,正常情况下都要经过很长的时延才能从CNAPS端全部传送到SB端, 因此定时器的时间应设置为比较大的值,SB往往要等待很长的时间才能判断是否重发请求,SB的响应时间很长。特别是当CNAPS发送的文件有一小部分出错,SB端TCP检查到效验和出错时就会抛弃整个文件,接着SB定时器超时,SB重发请求,CNAPS再次重发整个文件,SB从发出第一次请求开始,需要经历很长的时间才能接收到完全正确的文件。
3)传输层能提供的可靠性是有限的
CNAPS系统的传输层采用的是TCP传输控制协议,理论上TCP协议是可靠的,然而实际的传输服务并非毫无错误,但在不可靠的网络之上提供可靠的服务正是传输层要实现的目标。
传输层是增强网络层提供的服务质量,它必须弥补应用层用户要求与网络层所提供的服务之间的差别。用户在建立连接时对各种服务参数(如残余误码率)指定希望的、可接受的最低限度的值,传输层根据网络服务的种类或它能够获得的服务来检查这些参数,决定能否提供所要求的服务。当传输层发现服务质量参数的某些值是无法到达的,传输层甚至不去与目的机器连接,便直接通知应用层连接请求失败。因此传输层能提供的可靠性是有限的。
2 CNAPS系统性能改善方法--流水号管理
改进了的CNAPS系统在CNAPS发送信息或文件的路径上都增加了流水号管理的通信处理机制,进一步增强CNAPS系统可靠性,并缩短了文件请求/发送的响应时间。
一、 对接收方信息或文件不能独立和文件请求响应时间过长的解决
在CNAPS发送信息或文件的路径上,发送数据在CNAPS端,为保证SB端接收到独立的信息或文件,通信上采用SB请求一次,CNAPS发送一次的办法。
CNAPS给它生成的每个信息分配一个流水号,以标识该信息在CNAPS数据流中的位置。通信上SB请求一个流水号,CNAPS才发送流水号为对应值的信息。这样各个信息就能分开。
在CNAPS向SB发送信息路径上流水号的处理过程可分成三步:
1)当系统开始,链路建立后SB向CNAPS发初始化流水号请求,随后CNAPS向SB发送初始化流水号回答,把SB的流水号初始化为0。不是系统开始,如出现故障链路断开再次建立,链路建立后SB会向CNAPS发证实流水号请求,如CNAPS判断SB的流水正确,CNAPS会发出证实流水号回答。
2)接着SB开始不断地向CNAPS发送信息请求并从CNAPS接收信息,直到接收到CNAPS端无信息发送电文为止。当SB端接收到CNAPS的无信息发送电文,隔一段时间