一种采用共识协议栈同步网络状态的方法及系统

文档序号:25742009发布日期:2021-07-06 18:52阅读:114来源:国知局
一种采用共识协议栈同步网络状态的方法及系统

本发明涉及网络协议领域,尤其是涉及一种采用共识协议栈同步网络状态的方法及系统。



背景技术:

网络系统是利用网络节点和链路将地理位置不同、功能相互独立的端系统互联起来,实现端系统间资源共享和信息传递。在人-机-物互联时代,网络系统扮演着信息共享的桥梁,是信息化时代核心的信息基础设施。随着网络空间对抗加剧,针对网络系统的攻击日益显现,攻击手段和技术越来越高级,导致网络自身安全性问题层出不穷,如何构建高安全、高可靠的网络系统受到产业界和学术界的高度重视。

目前,网络系统通常采用分布式组网实现端到端传输。网络节点之间的状态同步采用gossip共识协议(流言传播共识协议),基于“完全信任、角色均等、最终一致”设计原则,通过网络节点之间接力传递网络状态,实现网络状态在所有网络节点上达成共识一致。gossip共识算法可以实时的传递网络状态,在网络节点和链路发生单点故障时,通过快速同步网络状态,促成路由快速收敛,有效避免传输路径中断时间过长等问题。这种方式存在主要弊端如下:网络节点在遭受节点劫持、信息篡改等安全风险时,gossip共识算法无法甄别其他节点的非法网络状态信息,直接将网络状态信息洪范到相邻节点,致使部分网络状态存在信息虚假、伪造、篡改等安全风险,进而导致网络系统中存在不可信、不可靠的传输路径。



技术实现要素:

本发明的目的在于提供一种采用共识协议栈同步网络状态的方案,以解决现有技术中基于gossip共识协议的网络状态同步机制存在信息虚假、伪造、篡改等安全问题。

本发明第一方面提供了一种采用共识协议栈同步网络状态的方法。

其中,所述共识协议栈基于共识协议栈装置实现,所述共识协议栈装置具体包括节点发现模块、节点维护模块、协议调度模块、共识协议库、状态输入输出模块、协议配置模块。

其中,所述方法包括:调用所述协议配置模块和协议共识库来初始化所述共识协议栈,以加载所述共识协议栈中的所有共识协议;调用所述节点发现模块和所述节点维护模块更新节点连接关系;调用状态输入输出模块、协议调度模块、共识协议库同步所述网络状态。

其中,调用状态输入输出模块、协议调度模块、共识协议库同步所述网络状态,具体包括:调用所述状态输入输出模块在接收到所述网络状态时,自动生成所述网络状态的同步需求,并将所述同步需求传递至所述协议调度模块;调用所述协议调度模块在接收到所述同步需求后,在所述共识协议库的所有共识协议中查询满足所述同步需求的共识协议作为目标共识协议;调用所述协议调度模块基于所述节点连接关系,将启动所述目标共识协议的请求信息发送至其他节点的协议调度模块,以在所有节点上启动所述目标共识协议;调用所述状态输入输出模块将所述网络状态发送至各个节点的目标共识协议中,以在所述所有节点上同步所述网络状态。

根据本发明第一方面提供的方法,调用所述协议配置模块和协议共识库来初始化所述共识协议栈,以加载所述共识协议栈中的所有共识协议,具体包括:调用所述协议配置模块将所述共识协议栈中的共识协议装载到所述共识协议库中,并配置所述共识协议的基本信息,所述基本信息包括协议名称、协议类型、最大支持节点规模;经由所述协议配置模块查询所述共识协议库的共识协议列表中是否包括所述共识协议的基本信息,若是,则表明所述共识协议加载成功;若否,则重新加载所述共识协议;依次加载所述共识协议库中的其他共识协议,直到加载完所述共识协议栈中的所有共识协议。

根据本发明第一方面提供的方法,调用所述节点发现模块和所述节点维护模块更新所述节点连接关系,具体包括:调用第一节点的节点发现模块周期地以广播方式发送节点探测请求消息;调用第二节点的节点发现模块基于接收到的所述节点探测请求消息,解析出所述第一节点的节点id,所述第二节点为所述第一节点的相邻节点;调用所述第二节点的节点维护模块判断所述节点id是否在所述第二节点的节点连接关系表中:若是,进一步确定节点信息是否一致,若不一致,则更新所述节点信息;若否,将所述节点id存储在所述节点连接关系表中;调用所述第二节点的节点维护模块发送完成维护消息至所述第二节点的节点发现模块,以生成节点探测响应消息,并以单播方式发送至所述第一节点的节点发送模块。

根据本发明第一方面提供的方法,所述协议调度模块基于所述节点连接关系,将启动所述目标共识协议的请求信息发送至其他节点的协议调度模块,以在所有节点上启动所述目标共识协议,具体包括:调用所述其他节点的协议调度模块基于所述请求信息,执行所述目标共识协议的代码,并初始化所述目标共识协议。

本发明第二方面提供了一种采用共识协议栈同步网络状态的系统。

其中,所述共识协议栈基于共识协议栈装置实现,所述共识协议栈装置具体包括节点发现模块、节点维护模块、协议调度模块、共识协议库、状态输入输出模块、协议配置模块。

其中,所述系统包括:第一处理单元,被配置为,调用所述协议配置模块和协议共识库来初始化所述共识协议栈,以加载所述共识协议栈中的所有共识协议;第二处理单元,被配置为,调用所述节点发现模块和所述节点维护模块更新节点连接关系;第三处理单元,被配置为,调用状态输入输出模块、协议调度模块、共识协议库同步所述网络状态。

其中,所述第三处理单元具体被配置为:调用所述状态输入输出模块在接收到所述网络状态时,自动生成所述网络状态的同步需求,并将所述同步需求传递至所述协议调度模块;调用所述协议调度模块在接收到所述同步需求后,在所述共识协议库的所有共识协议中查询满足所述同步需求的共识协议作为目标共识协议;调用所述协议调度模块基于所述节点连接关系,将启动所述目标共识协议的请求信息发送至其他节点的协议调度模块,以在所有节点上启动所述目标共识协议;调用所述状态输入输出模块将所述网络状态发送至各个节点的目标共识协议中,以在所述所有节点上同步所述网络状态。

根据本发明第二方面提供的系统,所述第一处理单元具体被配置为:调用所述协议配置模块将所述共识协议栈中的共识协议装载到所述共识协议库中,并配置所述共识协议的基本信息,所述基本信息包括协议名称、协议类型、最大支持节点规模;经由所述协议配置模块查询所述共识协议库的共识协议列表中是否包括所述共识协议的基本信息,若是,则表明所述共识协议加载成功;若否,则重新加载所述共识协议;依次加载所述共识协议库中的其他共识协议,直到加载完所述共识协议栈中的所有共识协议。

根据本发明第二方面提供的系统,所述第二处理单元具体被配置为:调用第一节点的节点发现模块周期地以广播方式发送节点探测请求消息;调用第二节点的节点发现模块基于接收到的所述节点探测请求消息,解析出所述第一节点的节点id,所述第二节点为所述第一节点的相邻节点;调用所述第二节点的节点维护模块判断所述节点id是否在所述第二节点的节点连接关系表中:若是,进一步确定节点信息是否一致,若不一致,则更新所述节点信息;若否,将所述节点id存储在所述节点连接关系表中;调用所述第二节点的节点维护模块发送完成维护消息至所述第二节点的节点发现模块,以生成节点探测响应消息,并以单播方式发送至所述第一节点的节点发送模块。

根据本发明第二方面提供的系统,所述第三处理单元具体被配置为:调用所述其他节点的协议调度模块基于所述请求信息,执行所述目标共识协议的代码,并初始化所述目标共识协议。

本发明第三方面提供了一种存储有指令的非暂时性计算机可读介质,当所述指令由处理器执行时,执行根据本发明第一方面的一种采用共识协议栈同步网络状态的方法中的步骤。

综上,本方案采用实现网络状态同步的共识协议栈在灵活性、重构性、安全性具有明显优势,可根据网络状态同步在安全性、实时性、可靠性等方面不同,共识协议栈提供并调用不同共识协议,满足网络系统中不同网络状态同步差异化的需求,为高安全网络系统中路由协议设计提供了一条切实可行的途径。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的共识协议栈装置的示意图;

图2为根据本发明实施例的一种采用共识协议栈同步网络状态的方法的流程图;

图3为根据本发明实施例的一种采用共识协议栈同步网络状态的系统的结构图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明第一方面提供了一种采用共识协议栈同步网络状态的方法。

所述共识协议栈基于共识协议栈装置实现,图1为根据本发明实施例的共识协议栈装置的示意图,如图1所示,所述共识协议栈装置具体包括节点发现模块、节点维护模块、协议调度模块、共识协议库、状态输入输出模块、协议配置模块。其中节点发现模块和节点维护模块属于节点维护层,协议调度模块和共识协议库属于状态同步层,状态输入输出模块和协议配置模块属于输入输出层。

在一些实施例中,在网络节点中安装共识协议栈装置(或者软件)。共识协议栈装置(或者软件)包括节点发现模块、节点维护模块、协议调度模块、共识协议库、状态输入输出模块、协议配置模块。其中,节点发现模块按照固定时间周期以广播方式向相邻网络节点发送节点探测请求消息,并接收处理节点探测响应消息,形成节点连接关系信息;节点维护模块负责存储节点连接关系信息,以及在节点连接关系发生改变时更新或删除节点连接关系信息;协议调度模块根据网络状态同步需求,启动共识协议的执行代码,并初始化共识协议;共识协议库用于存储共识协议基本信息以及共识协议的执行代码;状态输入输出模块负责网络状态同步的发送与接收工作,包括将网络状态发送到特定的共识协议以及从共识协议读取同步的网络状态;协议配置模块用于装载/卸载共识协议库中共识协议的执行代码,以及配置共识协议基本信息(例如,共识协议名称、类型、最大支持节点规模、时间戳等信息)

所述方法包括:(1)调用所述协议配置模块和协议共识库来初始化所述共识协议栈,以加载所述共识协议栈中的所有共识协议;(2)调用所述节点发现模块和所述节点维护模块更新节点连接关系;(3)调用状态输入输出模块、协议调度模块、共识协议库同步所述网络状态。其中,(3)调用状态输入输出模块、协议调度模块、共识协议库同步所述网络状态,具体包括:调用所述状态输入输出模块在接收到所述网络状态时,自动生成所述网络状态的同步需求,并将所述同步需求传递至所述协议调度模块;调用所述协议调度模块在接收到所述同步需求后,在所述共识协议库的所有共识协议中查询满足所述同步需求的共识协议作为目标共识协议;调用所述协议调度模块基于所述节点连接关系,将启动所述目标共识协议的请求信息发送至其他节点的协议调度模块,以在所有节点上启动所述目标共识协议;调用所述状态输入输出模块将所述网络状态发送至各个节点的目标共识协议中,以在所述所有节点上同步所述网络状态。

在一些实施例中,(1)调用所述协议配置模块和协议共识库来初始化所述共识协议栈,以加载所述共识协议栈中的所有共识协议,具体包括:调用所述协议配置模块将所述共识协议栈中的共识协议装载到所述共识协议库中,并配置所述共识协议的基本信息,所述基本信息包括协议名称、协议类型、最大支持节点规模;经由所述协议配置模块查询所述共识协议库的共识协议列表中是否包括所述共识协议的基本信息,若是,则表明所述共识协议加载成功;若否,则重新加载所述共识协议;依次加载所述共识协议库中的其他共识协议,直到加载完所述共识协议栈中的所有共识协议。

具体地,用户通过协议配置模块装载共识协议的执行代码到共识协议库中,并配置共识协议基本信息,包括共识协议名称n、类型t、最大支持节点规模m等。用户通过协议配置模块查询共识协议库中共识协议列表,查询共识协议(n、t、m)是否在共识协议列表中:如果在,表明共识协议加载成功;否则,表明共识协议加载不成功,重新加载。用户依次加载其他共识协议,直至成功加载完所有共识协议。

在一些实施例中,(2)调用所述节点发现模块和所述节点维护模块更新节点连接关系,具体包括:调用第一节点的节点发现模块周期地以广播方式发送节点探测请求消息;调用第二节点的节点发现模块基于接收到的所述节点探测请求消息,解析出所述第一节点的节点id,所述第二节点为所述第一节点的相邻节点;调用所述第二节点的节点维护模块判断所述节点id是否在所述第二节点的节点连接关系表中:若是,进一步确定节点信息是否一致,若不一致,则更新所述节点信息;若否,将所述节点id存储在所述节点连接关系表中;调用所述第二节点的节点维护模块发送完成维护消息至所述第二节点的节点发现模块,以生成节点探测响应消息,并以单播方式发送至所述第一节点的节点发送模块。

具体地,节点发现模块按照固定时间周期(ti)以广播方式发送节点探测请求消息;相邻节点中节点发现模块接收到节点探测请求消息,解析出节点id号,并传递给节点维护模块;节点维护模块接收到id号,检查id号是否在节点连接关系表中:如果命中且节点信息一致,表明该节点连接关系已存储;如果命中但节点信息不一致,表明该节点信息发生改变,更新节点连接关系表中id信息;否则,将节点id存储在节点连接关系表中,并将完成维护消息传递给节点发现模块。

附加地,节点发现模块在执行上述过程的同时,监听其他节点探测响应消息;节点发现模块接收到节点探测响应消息,解析出节点id号,并传递给节点维护模块;节点维护模块接收到id号,检查id号是否在节点连接关系表中:如果命中且节点信息一致,表明该节点连接关系已存储;如果命中但节点信息不一致,表明该节点信息发生改变,更新节点连接关系表中id信息;否则,将节点id存储在节点连接关系表中,并将完成维护消息传递给节点发现模块;节点发现模块接收到完成维护消息后,继续监听节点探测响应消息。节点发现模块接收到完成维护消息后,生成节点探测响应消息,并以单播方式将其发送出去。

在一些实施例中,(3)调用状态输入输出模块、协议调度模块、共识协议库同步所述网络状态,具体包括:调用所述状态输入输出模块在接收到所述网络状态时,自动生成所述网络状态的同步需求,并将所述同步需求传递至所述协议调度模块;调用所述协议调度模块在接收到所述同步需求后,在所述共识协议库的所有共识协议中查询满足所述同步需求的共识协议作为目标共识协议;调用所述协议调度模块基于所述节点连接关系,将启动所述目标共识协议的请求信息发送至其他节点的协议调度模块,以在所有节点上启动所述目标共识协议;调用所述状态输入输出模块将所述网络状态发送至各个节点的目标共识协议中,以在所述所有节点上同步所述网络状态。

其中,所述协议调度模块基于所述节点连接关系,将启动所述目标共识协议的请求信息发送至其他节点的协议调度模块,以在所有节点上启动所述目标共识协议,具体包括:调用所述其他节点的协议调度模块基于所述请求信息,执行所述目标共识协议的代码,并初始化所述目标共识协议。

具体地,状态输入输出模块在接收到网络状态s时,自动生成网络状态s的同步需求,传递给协议调度模块;协议调度模块接收到状态同步需求,查询共识协议库中共识协议p,如果命中,表明满足该同步需求的共识协议p存在;否则,表明不存在满足该同步需求的共识协议。

本节点中协议调度模块执行共识协议p的执行代码,并初始化共识协议p;本节点中协议调度模块查询节点维护模块中节点连接关系表,将启动共识协议p的请求消息以单播的方式发送给其他节点的协议调度模块;其他节点中协议调度模块接收到共识协议p的请求消息,执行共识协议p的执行代码,并初始化共识协议p,生成共识协议p的响应消息,传递回请求的协议调度模块;

本节点中协议调度模块接收到共识协议p的响应消息,表明共识协议p启动成功,将启动成功消息传递给状态输入输出模块;状态输入输出模块接收到启动成功消息后,将网络状态s传递给共识协议p;本节点中共识协议p接收到网络状态s后,同步到其他节点上共识协议p;其他节点共识协议p接收到网络状态s后,并存储下来,向其他节点发送网络状态s已正常存储;本节点中共识协议p接收到网络状态s已正常存储的消息后,生成网络状态s成功同步消息,并传递给状态输入输出模块;状态输入输出模块接收到网络状态s成功同步消息,从而完成一次网络状态同步。

第一方面的方法采用实现网络状态同步的共识协议栈在灵活性、重构性、安全性具有明显优势,可根据网络状态同步在安全性、实时性、可靠性等方面不同,共识协议栈提供并调用不同共识协议,满足网络系统中不同网络状态同步差异化的需求,为高安全网络系统中路由协议设计提供了一条切实可行的途径。

本发明第二方面提供了一种采用共识协议栈同步网络状态的系统。

所述共识协议栈基于共识协议栈装置(如图1所示,同上)实现,所述共识协议栈装置具体包括节点发现模块、节点维护模块、协议调度模块、共识协议库、状态输入输出模块、协议配置模块。

图3为根据本发明实施例的一种采用共识协议栈同步网络状态的系统的结构图,如图3所示,所述系统300包括:第一处理单元301,被配置为,调用所述协议配置模块和协议共识库来初始化所述共识协议栈,以加载所述共识协议栈中的所有共识协议;第二处理单元302,被配置为,调用所述节点发现模块和所述节点维护模块更新节点连接关系;第三处理单元303,被配置为,调用状态输入输出模块、协议调度模块、共识协议库同步所述网络状态。

其中,所述第三处理单元303具体被配置为:调用所述状态输入输出模块在接收到所述网络状态时,自动生成所述网络状态的同步需求,并将所述同步需求传递至所述协议调度模块;调用所述协议调度模块在接收到所述同步需求后,在所述共识协议库的所有共识协议中查询满足所述同步需求的共识协议作为目标共识协议;调用所述协议调度模块基于所述节点连接关系,将启动所述目标共识协议的请求信息发送至其他节点的协议调度模块,以在所有节点上启动所述目标共识协议;调用所述状态输入输出模块将所述网络状态发送至各个节点的目标共识协议中,以在所述所有节点上同步所述网络状态。

根据本发明第二方面提供的系统,所述第一处理单元301具体被配置为:调用所述协议配置模块将所述共识协议栈中的共识协议装载到所述共识协议库中,并配置所述共识协议的基本信息,所述基本信息包括协议名称、协议类型、最大支持节点规模;经由所述协议配置模块查询所述共识协议库的共识协议列表中是否包括所述共识协议的基本信息,若是,则表明所述共识协议加载成功;若否,则重新加载所述共识协议;依次加载所述共识协议库中的其他共识协议,直到加载完所述共识协议栈中的所有共识协议。

根据本发明第二方面提供的系统,所述第二处理单元302具体被配置为:调用第一节点的节点发现模块周期地以广播方式发送节点探测请求消息;调用第二节点的节点发现模块基于接收到的所述节点探测请求消息,解析出所述第一节点的节点id,所述第二节点为所述第一节点的相邻节点;调用所述第二节点的节点维护模块判断所述节点id是否在所述第二节点的节点连接关系表中:若是,进一步确定节点信息是否一致,若不一致,则更新所述节点信息;若否,将所述节点id存储在所述节点连接关系表中;调用所述第二节点的节点维护模块发送完成维护消息至所述第二节点的节点发现模块,以生成节点探测响应消息,并以单播方式发送至所述第一节点的节点发送模块。

根据本发明第二方面提供的系统,所述第三处理单元303具体被配置为:调用所述其他节点的协议调度模块基于所述请求信息,执行所述目标共识协议的代码,并初始化所述目标共识协议。

本发明第三方面提供了一种存储有指令的非暂时性计算机可读介质,当所述指令由处理器执行时,执行根据本发明第一方面的一种采用共识协议栈同步网络状态的方法中的步骤。

综上,本发明各个方面的技术方案,通过主动发现机制来实现不同网络节点中共识协议栈的自主发现,以及每个共识协议栈建立并维护节点间连接关系表。在此基础上,当网络状态同步时,先根据网络状态同步需求从共识协议库选择所需的共识协议,并启用并初始化网络节点中共识协议,最后将需要同步的网络状态传递到共识协议,实现一次网络状态的同步工作。根据网络状态同步在安全性、实时性、可靠性等方面不同,共识协议栈提供并调用不同共识协议,满足网络系统中不同网络状态同步差异化的需求。采用本发明提出的实现网络状态同步的共识协议栈在灵活性、重构性、安全性具有明显优势,为高安全网络系统中路由协议设计提供了一条切实可行的途径。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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