用于路由器的数据传输方法及系统与流程

文档序号:11623633阅读:447来源:国知局
用于路由器的数据传输方法及系统与流程

本发明涉及数据传输领域,具体涉及一种用于路由器的数据传输方法及系统。



背景技术:

路由器产品基于模块化思想,以组件作为基本功能单元。一个功能的实现往往需要多个组件之间的交互,组件之间的通信尤为重要。组件之间的通信一般采用tipc(transparentinterprocesscommunication,透明进程间通信技术)。与此同时,为了提高整个系统的性能,组件间的传输机制与底层的交互越少越好。

路由器的传输一般为2种:1、普通数据传输,即不同业务组件之间发送或接收消息;2、数据备份传输,即路由器包括主板和备板,备板用于主板的备份,当主板出现异常时(例如宕机),备板会迅速转备为主(转变成异常前主板的配置),以保证业务的无缝连接,备板数据完全依赖于主板的数据。

目前,路由器的传输机制为点到点单播通信机制,该通信机制不足以同时处理这两种传输场景,业务组件在调用该种传输机制时,实现比较复杂,需要业务自己考虑数据发送的时机和重传问题,因此,上述传输机制的适用范围比较单一,用户体验较差。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:如何自动观察和发送同步数据,本发明保证了数据同步的精准,能够广泛适用于多种数据传输场景,显著的提升了用户体验。

为达到以上目的,本发明提供的用于路由器的数据传输方法,包括以下步骤:

步骤a:发送端将需要传输的数据封装为ocm对象,对每个ocm对象标记对应的对象标识符和类型,类型包括普通数据传输类型和备份数据传输类型,创建3个链表:创建链表、更新链表和删除链表,更新链表中设置有更新游标,删除链表中设置有删除游标;

步骤b:发送端将ocm对象按照创建顺序添加至创建链表;

步骤c:当ocm对象需要更新时,发送端在更新链表的链尾添加更新的ocm对象,根据更新的ocm对象移动更新游标后,根据更新游标向接收端发送更新数据;

步骤d:当ocm对象需要删除时,定义删除的ocm对象为d1,在创建链表中确定d1的上一个ocm对象d2,将d2添加至删除链表中的链尾,根据d2移动删除游标,根据删除链表中的ocm对象创建删除开区间,将删除开区间发送至接收端,在创建链表中删除d1。

本发明提供的用于路由器的数据传输系统,包括对象链表创建模块、ocm对象添加模块、ocm对象更新模块和ocm对象删除模块;

对象链表创建模块用于:将需要传输的数据封装为ocm对象,对每个ocm对象标记对应的对象标识符和类型,类型包括普通数据传输类型和备份数据传输类型,创建3个链表:创建链表、更新链表和删除链表,更新链表中设置有更新游标,删除链表中设置有删除游标;

ocm对象添加模块用于:将ocm对象按照创建顺序添加至创建链表;

ocm对象更新模块用于:当ocm对象需要更新时,在更新链表的链尾添加更新的ocm对象,根据更新的ocm对象移动更新游标后,根据更新游标向接收端发送更新数据;

ocm对象删除模块用于:当ocm对象需要删除时,定义删除的ocm对象为d1,在创建链表中确定d1的上一个ocm对象d2,将d2添加至删除链表中的链尾,根据d2移动删除游标,根据删除链表中的ocm对象创建删除开区间,将删除开区间发送至接收端,在创建链表中删除d1。

与现有技术相比,本发明的优点在于:

(1)参见本发明的步骤a至步骤d可知,与现有技术中需要业务自己考虑数据发送的时机和重传问题,本发明能够实现自动观察数据变化和自动发送数据,不仅保证了数据同步的精准,而且使得业务组件无需再考虑何时发送数据。因此,本发明实施例能够广泛适用于多种数据传输场景,显著的提升了用户体验。

(2)本发明一次性批量更新和删除多条数据,工作效率较高,便于人们使用。

(3)本发明为每个ocm对象添加有头部控制信息,通过头部控制信息能够方便的找到每个ocm对象在创建、更新和删除链表中的位置,清晰的得知ocm对象的类型和传输机制,便于人们使用。

附图说明

图1为本发明实施例中用于路由器的数据传输方法的流程图;

图2为本发明实施例中s6的具体流程图;

图3为本发明实施例中s8的具体流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例中的用于路由器的数据传输方法,包括以下步骤:

s1:发送端通过ocm(objectclassmanagement,对象类型管理技术)将需要传输的数据封装为ocm对象。对每个ocm对象标记对应的oid(objectidentifier,对象标识符)和类型,类型包括普通数据传输类型和备份数据传输类型。通过ocm创建3个链表:创建链表、更新链表和删除链表,更新链表中设置有更新游标,删除链表中设置有删除游标,转到s2。

s2:为每个ocm对象添加头部控制信息,同步控制信息包括传输机制、ocm对象位于创建链表、更新链表和删除链表中的位置,转到s3。

s2的目的为:通过头部控制信息能够方便的找到每个ocm对象在创建、更新和删除链表中的位置,清晰的得知ocm对象的类型和传输机制,便于使用。

s3:发送端将ocm对象按照创建顺序添加至创建链表,转到s4。

s4:发送端将头部标识节点分别添加至更新链表和删除链表,转到s5。

s5:若ocm对象需要更新,转到s6,若ocm对象需要删除,转到s7。

s6:发送端在更新链表的链尾添加更新的ocm对象,根据更新的ocm对象移动更新游标后,根据更新游标向接收端发送更新数据。

参见图2所示,s6中根据更新的ocm对象移动更新游标后,根据更新游标向接收端发送更新数据的具体流程为:

s601:定义ocm对象更新后为u1,更新前为u2;判断更新游标是否为空,若是,则证明更新链表中未存在ocm对象(即未发生过更新),将更新游标指向u1,转到s604;否则证明更新链表中已存在更新的ocm对象(即已发生过更新),转到s602。

s602:判断更新游标是否指向u2,若是,则证明当前ocm对象再次更新,转到s603,否则证明更新链表中存在不同的ocm对象(即发生过多次更新),保持更新游标的位置,转到s604。

s603:在更新链表中判断u2的下一个ocm对象是否为空,若是,则证明更新链表中只有1个ocm对象更新,此时保持更新游标的位置,转到s604;否则证明更新链表中发生过多次更新,将更新游标指向u2的下一个ocm对象,在更新链表中删除u2(u2与u1的对象标识符相同,删除u2是为了保证准确传输u1),转到s604。

s604:发送端将更新游标指向的ocm对象、以及之后的ocm对象进行打包后发送至接收端。

s601~s603举例如下:

第一次更新的ocm对象的对象标识符为1,更新游标为空,将更新游指向更新链表中的1(对应s601中更新游标为空的处理);

第二次更新的ocm对象的对象标识符为2,更新游标之前已指向1(对应s602中更新游标未指向u2),此时需要更新1和2,更新顺序为1、2,因此保持更新游标的位置即可(对应s602中更新游标未指向u2的处理);

第三次更新的ocm对象的对象标识符为1,更新游标之前已指向1,更新链表中的ocm对象排列顺序为第一次更新的1、2和第三次更新的1,此时需要更新2和第三次更新的1,更新顺序为2、1,因此将更新游标指向2(即下一个ocm对象,对应s602中更新游标指向u2、且s603中下一个ocm对象不为空的处理)。与此同时,由于第一、三次更新的1对象标识符相同,因此为了保证准确传输第三次更新的1,需要在更新链表中将第一次更新的1删除。

根据s6的具体流程可知,本实施例能够一次性发送多次更新的数据,进而达到批量更新的目的,工作效率较高,便于人们使用。

s7:定义删除的ocm对象为d1,在创建链表中确定d1的上一个ocm对象d2,将d2添加至删除链表中的链尾,根据d2移动删除游标,根据删除链表中的ocm对象创建删除开区间,将删除开区间发送至接收端(接收端根据删除开区间删除数据)。在创建链表和更新链表将d1删除,d1肯定存在于创建链表,若d1之前发生过更新,则d1也会存在于更新链表中,若更新链表中没有d1,则只删除创建链表中的d1。

s7中根据删除链表中的ocm对象创建删除开区间,将删除开区间发送至接收端的具体流程为:根据删除链表中的每一个ocm对象创建删除开区间,根据一个ocm对象创建删除开区间的流程为:将当前ocm对象作为删除开区间的左区间,在创建链表中确定当前ocm对象的下一个ocm对象,作为删除开区间的右区间,将删除开区间内的ocm对象作为需要删除的ocm对象。

例如:

第一次删除的ocm对象的对象标识符为4,删除链表中会添加3,此时删除游标为空,则将删除游标指向3,删除开区间为(3,5),删除开区间的对象即为4。

第二次删除的ocm对象的对象标识符为3,删除链表中会添加2,此时删除游标指向2,去除删除链表中的3(因为已被删除),删除开区间为(2,5),即需要删除3和4。

第三次删除的ocm对象的对象标识符为1,删除链表中会添加0,此时删除游标指向2,删除链表中存在2和0,删除开区间为(2,5)和(0,2),即需要删除3、4和1。

第四次删除的ocm对象的对象标识符为5,删除链表中会添加2(因为3和4已被删除,所以创建链表中5的前一个ocm对象是2),此时删除游标指向0,取出删除链表中之前已存在的2,删除链表中存在0和2,删除开区间为(0,2)和(2,6),即需要删除1、3、4和5。

参见s7的流程可知,本实施例能够一次性根据删除开区间批量删除数据,工作效率较高,便于人们使用。

参见s6和s7可知,与现有技术中需要业务自己考虑数据发送的时机和重传问题,本发明能够实现自动观察数据变化和自动发送数据,不仅保证了数据同步的精准,而且使得业务组件无需再考虑何时发送数据,只需通过调用传输机制对外接口api实现组件间数据通信,实现普通数据传输和数据备份功能。因此,本发明实施例能够广泛适用于多种数据传输场景,显著的提升了用户体验。

在s4之后,还包括以下步骤:

s8:接收端创建老化链表,将接收的ocm对象添加至老化链表,发送端下线后,接收端根据老化链表删除ocm对象。

参见图3所示,s8中接收端根据老化链表删除ocm对象的具体流程为:

s801:发送端在所有ocm对象生成后,向接收端发送老化事件,转到s802。

s802:当发送端下线后,接收端将老化游标指向老化链表的链尾,转到s803。

s803:接收端接收老化事件时开启老化分时定时器(老化分时定时器能够将老化工作分时执行,以避免长时间占用cpu),判断定时器是否超时,若是,转到s804,否则转到s805。

s804:接收端进行对象老化更新,将更新的对象从老化链中摘除,再插入老化链表的链尾。

s805:遍历老化链表删除对象,直至老化游标处,当发送端未上线时删除数据服务端(上线时跳出即可)。

本发明实施例中的用于路由器的数据传输系统,包括对象链表创建模块、头部控制信息设置模块、ocm对象添加模块、ocm对象更新模块和ocm对象删除模块。

对象链表创建模块用于:将需要传输的数据封装为ocm对象,对每个ocm对象标记对应的对象标识符和类型,类型包括普通数据传输类型和备份数据传输类型,创建3个链表:创建链表、更新链表和删除链表,更新链表中设置有更新游标,删除链表中设置有删除游标。

头部控制信息设置模块用于:在对象链表创建模块工作完成后,为每个ocm对象添加头部控制信息,同步控制信息包括传输机制、ocm对象位于创建链表、更新链表和删除链表中的位置。

ocm对象添加模块用于:将ocm对象按照创建顺序添加至创建链表。

ocm对象更新模块用于:当ocm对象需要更新时,在更新链表的链尾添加更新的ocm对象,根据更新的ocm对象移动更新游标后,根据更新游标向接收端发送更新数据,具体流程为;

步骤一:定义ocm对象更新后为u1,更新前为u2;判断更新游标是否为空,若是,将更新游标指向u1,转到步骤四;否则转到步骤二;

步骤二:判断更新游标是否指向u2,若是,转到步骤三,否则保持更新游标的位置,转到步骤四;

步骤三:在更新链表中判断u2的下一个ocm对象是否为空,若是,保持更新游标的位置,转到步骤四;否则将更新游标指向u2的下一个ocm对象,在更新链表中删除u2,转到步骤四;

步骤四:发送端将更新游标指向的ocm对象、以及之后的ocm对象进行打包后发送至接收端。

ocm对象删除模块用于:当ocm对象需要删除时,定义删除的ocm对象为d1,在创建链表中确定d1的上一个ocm对象d2,将d2添加至删除链表中的链尾,根据d2移动删除游标,根据删除链表中的ocm对象创建删除开区间,将删除开区间发送至接收端,在创建链表和更新链表(若存在)中删除d1;具体流程为:根据删除链表中的每一个ocm对象创建删除开区间,根据一个ocm对象创建删除开区间的流程为:将当前ocm对象作为删除开区间的左区间,在创建链表中确定当前ocm对象的下一个ocm对象,作为删除开区间的右区间,将删除开区间内的ocm对象作为需要删除的ocm对象。

进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1