发明内容
针对上述问题,本发明提供了一种RSSP-I协议的双系数据同步方法、装置和系统,能够仅针对活动连接进行双系同步,及时释放内存和CPU资源。
本发明的一种RSSP-I协议的双系数据同步方法,包括以下步骤:
主系判断出全部连接中的活动连接;
主系获取所述活动连接所对应的数据包并同步至备系。
进一步地,所述的主系判断出全部连接中的活动连接具体是:
所述主系遍历所述全部连接,并根据通断状态判断出所述的全部连接中的活动连接;
其中,所述全部连接为基于UDP协议的连接。
进一步地,所述的主系获取所述活动连接所对应的数据包并同步至备系包括:
当判断一个连接为活动连接后,同时获取所述活动连接对应的数据包;
将获取的每个所述活动连接所对应的数据包添加至同步数据区;
获取所述同步数据区中所述活动连接的数量,并将所述活动连接的数量和所对应的数据包同步给所述备系;
其中,每个所述活动连接对应的所述数据包包括:所述活动连接所对应的数据结构体和连接索引。
本发明还提供一种RSSP-I协议的双系数据同步方法,包括以下步骤:
备系接收主系同步的数据包;
所述备系将所述数据包解析后写入;
其中,所述数据包为通过所述主系获得的活动连接所对应的数据包。
进一步地,所述的备系将所述数据包解析后写入包括:
所述备系接收到所述主系同步的数据包后,获取所述活动连接的数量;
遍历所有的所述活动连接,获取每个所述活动连接对应的连接索引;
按照所述连接索引找到每个所述活动连接对应的数据结构体,并将所述数据结构体的信息写入。
进一步地,所述活动连接的判断方法,包括步骤:
RSSP-I协议栈初始化时,按所述全部连接的数量分配安全层定时器和非安全层定时器;
一个同步周期开始时,每个连接对应的所述安全层定时器在调用应用接口发送函数时进行累加,并在调用RSSP-I安全层接收数据处理函数及发送数据函数时进行清零;
每个连接对应的所述非安全层定时器在调用应用接口接收函数时进行累加,并在调用RSSP-I非安全层接收数据处理函数及发送数据函数时进行清零;
所述同步周期结束时,根据所述安全层定时器或所述非安全层定时器的值判断所述连接是否为活动连接。
进一步地,所述的根据所述安全层定时器或所述非安全层定时器的值判断所述连接是否为活动连接包括:
将一个连接对应的所述安全层定时器或所述非安全层定时器的值与预设阈值比较:
若小于或等于所述预设阈值,判断所述连接为活动连接;
若大于所述预设阈值,则判断所述连接为非活动连接。
进一步地,当任一个活动连接在下一个同步周期被判断为非活动连接时,则继续在连续的预设个数的同步周期内将所述连接所对应的数据包同步至所述备系。
本发明还提供一种RSSP-I协议的双系数据同步装置,包括:
判断单元,用于判断出全部连接中的活动连接;
获取单元,用于获取所述活动连接所对应的数据包;
同步单元,用于将所述数据包同步至备系。
进一步地,所述判断单元对所述全部连接的通断状态进行判断,获取所述全部连接中的活动连接;其中,所述全部连接为基于UDP协议的连接。
进一步地,所述同步单元,用于:一个同步周期内,将每个所述活动连接所对应的数据包添加至同步数据区中;
再将所述同步数据区中的所述活动连接的数量和所述活动连接所对应的数据包同步给所述备系,其中每个所述活动连接所对应的所述数据包包括:所述活动连接所对应的数据结构体和连接索引。
本发明还提供一种RSSP-I协议的双系数据同步装置,包括:
接收单元,用于接收主系同步的数据包;
解析单元,用于对所述数据包进行解析;
写入单元,用于将数据包解析后的结果写入备系;
其中,所述数据包具体为通过所述主系判断出的活动连接所对应的数据包。
进一步地,所述数据包包括每个所述活动连接所对应的数据结构体和连接索引。
进一步地,包括查找单元,用于根据每个所述活动连接的连接索引查找所述数据结构体。
进一步地,包括确认单元,用于在数据同步完成后返回同步结果。
本发明还提供一种RSSP-I协议的双系数据同步系统,所述双系数据同步系统运行时,执行至少一种如前述的双系数据同步方法。
本发明还提供一种RSSP-I协议的双系数据同步系统,包括:至少一个如前述的双系数据同步装置。
本发明的一种RSSP-I协议的双系数据同步方法,包括步骤:主系判断出全部连接中的活动连接;主系获取所述活动连接所对应的数据包并同步至备系;提出“活动连接”的概念并提供了活动连接的判断方法,提供了一种采用只针对活动连接进行双系同步的处理策略,而不需要对全部连接进行同步,有效减少了同步数据区的数据量,有效减小了主系与备系之间的通信压力;能够解决现有技术中RSSP-I双系同步数据量庞大占用CPU资源的问题,实现释放CPU资源的效果。本发明还同时提供了基于本发明双系数据同步方法的双系数据同步装置和系统,具有本发明双系数据同步方法所具有的全部有益效果。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
RSSP-I安全通信协议栈(以下简称“协议栈”)是一种铁路信号设备应用间互相通信时采用的协议,对EN50159(欧洲铁路通信信号领域信息传输系统中安全通信标准)中列出的数据帧重复、数据帧插入、数据帧丢失、数据帧次序混乱、数据帧错误和数据帧传输延时6种封闭式传输系统中的安全通信威胁进行检测并提供充分的防护。
依照RSSP-I安全通信接口规范规定,该协议栈核心逻辑自上而下共包含SFM和CFM两层。各层功能相对独立,接口划分清晰,相邻层之间接口存在调用关系。
RSSP-I协议软件结构如图2中所示。参见图2,RSSP-I安全通信协议栈核心逻辑自上而下共包含SFM和CFM两层,SFM提供了封闭式传输系统的安全传输相关功能,CFM提供了冗余处理、数据传输及通道可用性监测功能,各层功能相对独立,接口划分清晰,相邻层之间接口存在调用关系。应用程序使用应用接口与应用适配层接口与协议栈进行信息交互;平台适配层用于移植平台上为系统适配层提供系统接口;网络适配层用于为CFM层提供网络适配服务,网络适配层与CFM层间的接口为网络接口;内部接口(D接口适配层),用于实现D原语缓存机制,用于SFM层与CFM层间进行信息交互。
参见图3,上部分为主系(对应图中的应用主系)和备系(对应图中的应用备系)之间数据同步的流程图;现有技术中,在主系获取同步数据并发送给备系的步骤(参见应用主系的步骤5)中,对应图3中下方的(1)获取同步数据接口的执行流程。具体操作是遍历全部连接获取同步信息,并为同步信息添加CRC(循环冗余校验),最后返回同步结果;获取同步成功后,将同步数据通过接口发送给备系。
应用备系接收到主系的同步数据,进行数据同步的步骤(参见应用备系的步骤5),对应图3中下方的(2)写入同步数据接口的执行流程。具体步骤是变量初始化及入参校验成功后,计算校验同步数据区的CRC再获取同步数据区中的连接数量,遍历全部连接写入同步信息,最后返回结果,应用通过返回结果判断备系数据同步是否成功。
主系和备系是互为冗余的关系,正常工作情况下,主系和备系均与外部设备进行数据交换,但是外部设备接收和执行主系的数据,为了保证备系和主系完全一致,确保主系和备系切换时备系能够完全替代主系,主系和备系之间会周期性进行数据同步。
上述同步方法中,同步数据/信息是指遍历全部连接获得的全部数据,即同一设备的主系的协议栈连接的信息:包括连接数、连接状态、每个连接的校验参数等,均需要同步给该设备的备系。在实际运用中,地面设备与车载设备的配置的RSSP-I连接数为几千个,如果采用既有同步处理策略,现有的方法对于连接长时间处于断开状态无法判断,而将所有的连接都进行数据同步,则导致RSSP-I双系同步数据量庞大占用CPU资源的缺陷,本申请是根据上述问题做出的改进,提出活动连接的概念,并提供一种只对活动连接进行双系同步的处理策略,能够一定程度上解决上述的问题。
如图1所示,为根据本发明实施例的RSSP-I协议的双系数据同步方法流程示意图。
其原理为:首先根据RSSP-I安全通信协议栈初始化最大连接个数分配安全层定时器和非安全层定时器,定时器的设置是用于判断基于UDP连接的通断状态。
由于考虑到实际中RSSP-I协议的SFM层和CFM层可能分离部署,即位于不同的设备上,每个连接对应的安全层定时器需在调用应用接口发送函数时进行累加;在RSSP-I安全层接收数据处理函数及发送数据函数中进行清0操作,通过安全层定时器值来判断该连接是否为活动连接。
由于考虑到RSSP-I协议的SFM和CFM分离部署的可能,每个连接对应的非安全层定时器需在应用接口接收函数(周期调用)进行累加;在RSSP-I非安全层接收数据处理函数及发送数据函数中进行清0操作,通过非安全层定时器值来判断该连接是否为活动连接。
根据本发明的一个具体实施例,主系的具体操作流程如下:
1-1:主系注册系统接口、协议栈初始化、注册网络接口,在协议栈初始化时根据协议栈初始化最大连接个数分配安全层定时器及非安全层定时器并对定时器进行初始化;
1-2:主系对SFM及CFM层进行初始化配置;
1-3:打开网络通道;
1-4:主系周期运行,与其它设备之间进行交互:接收和发送数据,其它设备指主系与备系所在的设备之外的其它设备;
此时在调用应用接口发送函数时对安全层定时器进行累加,即在应用接口发送出数据时对安全层定时器进行累加;
在调用应用接口接收函数时对非安全层定时器进行累加,即在应用接口接收到数据时对非安全层定时器进行累加。
1-5:在调用RSSP-I安全层接收数据处理函数及发送数据函数时进行清零,即在RSSP-I安全层接收到数据或者有数据发送时对安全层定时器清零;
在调用RSSP-I非安全层接收数据处理函数及发送数据函数时进行清零,即在RSSP-I非安全层接收到数据或者有数据发送时对非安全层定时器进行清零。
1-6:根据安全层定时器或非安全层定时器的值与预设的预设阈值比较并判断并获取活动连接,并获取所述活动连接对应的数据包,同步至备份。
备系的具体操作流程如下:
2-1:备系注册系统接口、协议栈初始化、注册网络接口,在协议栈初始化时根据协议栈初始化最大连接个数分配安全层定时器及非安全层定时器并对定时器进行初始化;
2-2:备系对SFM及CFM层进行初始化配置;
2-3:打开网络通道;
2-4:备系周期运行,与其它设备之间进行交互:接收和发送数据,其它设备指主系与备系所在的设备之外的其它设备;
2-5:在调用RSSP-I安全层接收数据处理函数及发送数据函数时进行清零,即在RSSP-I安全层接收到数据或者有数据发送时对安全层定时器清零;
在调用RSSP-I非安全层接收数据处理函数及发送数据函数时进行清零,即在RSSP-I非安全层接收到数据或者有数据发送时对非安全层定时器进行清零。
2-6:接收到所述主系同步的活动连接的数量和所述活动连接所对应的数据包,进行数据同步。
应当理解的是:主系和备系在切换之前,是热备用的关系,备系也会接收其它设备的数据并向其它设备发送数据,但是其它设备仅采用主系的数据,当主系备系切换时,备系升为主系,由备系与其它设备进行数据交互,为了确保主系和备系切换时备系能够完全替代主系,备系采用同步主系的数据来保持与主系的一致性,需要从主系中同步获取主系的安全通信会话参数,包括本地序列号和相应时间戳,以及从外部系统接收的序列号与相应时间戳等信息。因为主系和备系互为冗余,除了主系备系切换的应用场景,日常在主系和备系之间也会周期性进行数据同步,故主系和备系均配置安全层定时器和非安全层定时器。
参见图4,步骤1-6的具体判断流程为:
3-1:变量初始化,并进行入参校验;
3-2:判断是否为首次执行,若是,则按照全部连接数分配计数器,并进行初始化;
3-3:获取已配置的连接数,即前述的全部连接;
3-4:遍历全部连接:如果一个连接的定时器(安全层定时器或非安全层定时器)的值小于或等于预设的预设阈值,将该连接分配的计数器置为初值;
如果一个连接的定时器(安全层定时器或非安全层定时器)的值大于预设的预设阈值,将该连接分配的计数器的值减一;
3-5:如果一个同步周期内,一个连接的定时器(安全层定时器或非安全层定时器)的值小于或等于预设阈值,或者该连接的计数器值大于0,则均在该同步周期内将其作为“活动连接”处理,获取该连接所对应的数据包(包括连接索引和数据结构体),并对活动连接的数量进行累加。
针对基于UDP(无连接协议)的RSSP-I协议,如果某连接长时间无数据通信时,即由活动连接变为非活动连接,同样需将该通道的连接状态变化由主系同步至备系;对应到定时器则体现为:如果通过定时器值判断出连接为非活动连接,在进行数据同步时,根据上述策略此时该非活动连接的连接通断状态无法同步到备系,如果备系此时升为主系,无法知道该非活动连接的通断状态,无法沿用主系原安全通信会话,考虑到这个问题,因此本发明的一个具体实施方式中设计:在任一活动连接在下一个同步周期失效(有活动连接变为非活动连接状态)时,依旧将该连接按照活动连接进行数据同步,将其同步信息继续同步给备系几个同步周期,防止数据传输过程中丢失。
应当理解的是,这个周期是可以人为设定的,具体对应到流程图中为给计数器设定的初值;令备系得到该连接的通断状态,从而沿用主系原安全通信会话,本方法给与了一定范围内的容错,防止在数据同步过程中,出现丢失数据的情况。
3-6:将步骤3-5获取的活动连接数量添加至同步数据区,并将数据包信息添加CRC(循环冗余校验);
在主系获取同步数据时,按连接索引先获取对应定时器的值,如果小于等于预设阈值(预设的判定活动连接的数值),即认为该连接属于活动连接,获取该连接同步数据(包括连接索引),遍历全部连接后,获取活动连接数量加入同步数据区,将同步数据发往备系;
3-7:完成同步,返回同步结果。
参见图5,步骤2-6的具体判断流程为:
4-1:变量初始化,并进行入参校验;
4-2:计算并校验CRC;
4-3:从接收的同步数据中获取活动连接数;
4-4:遍历所有的活动连接,获取活动连接的连接索引,按照连接索引设置同步状态信息,即将获取的数据结构体写入;
4-5:返回同步结果。
备系收到主系的同步数据后,先获取同步区活动连接数量,轮询所有活动连接,获取对应活动连接索引,按连接索引获取同步数据,并将其写入相应的连接结构体变量中。
主系和备系在数据同步结束后均返回同步结果,应用通过返回结果判断备系数据同步是否成功。
根据图6,本发明还提供一种RSSP-I协议的双系数据同步装置,包括:
判断单元,用于判断出全部连接中的活动连接;
获取单元,用于获取活动连接所对应的数据包;
同步单元,用于将数据包同步至备系。
进一步地,判断单元对全部连接的通断状态进行判断,获取全部连接中的活动连接;其中,全部连接为基于UDP协议的连接。
进一步地,同步单元,具体用于:一个同步周期内,将每个活动连接所对应的数据包添加至同步数据区中;
再将同步数据区中的活动连接的数量和活动连接所对应的数据包同步给备系,其中每个活动连接所对应的数据包包括:该活动连接所对应的数据结构体和连接索引。
参见图7,本发明还提供一种RSSP-I协议的双系数据同步装置,包括:
接收单元,用于接收主系同步的数据包;
解析单元,用于对数据包进行解析;
写入单元,用于将数据包解析后的结果写入备系;
其中,数据包具体为通过主系判断出的活动连接所对应的数据包。
进一步地,数据包包括每个活动连接所对应的数据结构体和连接索引;即为每个数据包经过解析单元解析后获取的结果。
参见图8,是根据本发明的双系数据同步装置的一个较佳实施例,包括查找单元,用于根据每个活动连接的连接索引查找数据结构体;
参见图8,本发明的双系数据同步装置的一个较佳实施例还包括确认单元,用于在数据同步完成后返回同步结果。
本发明还提供一种RSSP-I协议的双系数据同步系统,双系数据同步系统运行时,执行至少一种前述本发明的数据同步方法。
本发明还提供一种RSSP-I协议的双系数据同步系统,包括:至少一个如图6所示的数据同步装置,和或至少一个如图7所示的数据同步装置。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。