一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于扩展raft算法的SDN控制器交互方法及系统

2022-05-08 05:16:14 来源:中国专利 TAG:

基于扩展raft算法的sdn控制器交互方法及系统
技术领域
1.本发明属于软件定义网络(sdn)技术领域。


背景技术:

2.sdn是一种新兴的网络技术,它将网络的转发与控制功能解耦分离,控制器负责网络的整体感知与管控,路由器专注于快速转发,以此以提高网络运行效率。当前对sdn的研究主要集中在域内地理小范围内集中管控的单个控制器,如何提高sdn的可扩展性,在大规模范围内实现多个sdn控制器的互联与控制协作,仍然处在起步阶段。
3.目前sdn控制器间交互的方式有直连模式、客户端/服务器模式、发布/订阅模式、分布式一致性模式。直连模式要求控制器间具有直连信道,实现起来比较困难,因此几乎没有实际应用;客户端/服务器模式和发布/订阅模式通过控制器与单台服务器间的通信实现交互,这对服务器的可靠性提出了较高的要求,一旦服务器崩溃,则所有控制器之间就无法交互,为了解决这一问题,大部分控制器间交互采用了分布式一致性模式,通过同时运行多台服务器,并使用分布式共识算法在服务器间进行数据同步,以提高容错能力和可拓展性。
4.raft是一种典型的分布式共识算法,raft节点通过领导选举分为组领导节点和跟随节点,利用日志复制实现分布式一致性,然而,在应用raft算法的sdn控制器交互机制中,仍然存在着以下问题:(1):raft算法中只有组领导节点能负责数据的串行写入,同时需要维持raft集群的一致性同步,在sdn网络中,网络数据量庞大且增长迅速,组领导节点容易过载,成为了多控制器sdn网络的性能瓶颈;(2):多raft集群下,用以确认节点正常运行的心跳包占用了大量带宽,影响了整体性能。


技术实现要素:

5.发明目的:为了解决上述现有技术存在的问题,本发明提供了一种基于扩展raft算法的sdn控制器交互方法及系统。
6.技术方案:本发明提供了一种基于扩展raft算法的sdn控制器交互方法,包括如下步骤:步骤1:数据进行二次切片:对数据先按照某一标准划分,再将相同标准下的数据按照另外一种标准划分,得到m组划分后的数据组;所述数据包括请求信令和sdn控制器所处网络中的网络数据;步骤2:在raft集群中设置m个共识组,每个共识组对应一个数据组,在每个raft节点中设置x个共识组;将具有相同共识组的raft节点作为一个分区组;将第i个raft节点作为该raft节点下的y个共识组的组领导节点,i=1,2,

,l;其中l为raft节点的总个数,y≤x<m;步骤3:启动raft集群和sdn控制器,主机向交换机传输各类请求信令和网络数据,
交换机将收到的数据转发至sdn控制器,所述sdn控制器将收到的数据按照步骤1的方法进行二次切片,为切片后的数据加上数据头信息;步骤4:sdn控制器根据带有数据头信息的切片数据,确定该切片数据对应的共识组a,从而得到共识组a的组领导节点,则得到对应的raft节点,计算该raft节点的负载值,如果负载值小于等于预设的门限值,则将该带有数据头信息的切片数据同步至对应的raft节点下的共识组a中,否则,sdn控制器向组领导节点发送强制停止指令,重新为共识组a选择组领导节点;所述raft节点的负载值为y与x之比;所述重新为共识组a选择组领导节点具体为:在均具有共识组a的区分组中,选择负载值最小的raft节点作为共识组a的组领导节点;步骤5:切片数据被传送至组领导节点后,组领导节点将该切片数据加入日志中,并将日志发送至均具有共识组a的其他raft节点,所述其他raft节点为在均具有共识组a的区分组中除共识组a的组领导节点以外的raft节点。
7.进一步的,所述步骤1中,先将数据按照类型划分,然后将同一种类型下的数据按照时间长度划分。
8.基于扩展raft算法的sdn控制器交互系统,包括主机,sdn控制器,交互机;所述sdn控制器中设有代理模块和存储单元;所述存储单元内设有raft集群,所述主机向交换机传输各类请求信令和网络数据,交换机将收到的数据转发至sdn控制器,所述sdn控制器对收到的数据进行二次切片,并对切片后的数据加上数据头信息,然后传送至代理模块,所述代理模块根据数据头信息判断切片后的数据对应的raft节点,并判断该raft节点的负载是否小于等于预设的门限值,如果是,则代理模块将切片后的数据同步至存储单元中对应的组领导节点中;否则重新选择组领导节点后再进行数据同步。
9.进一步的,每个raft节点中都设有节点管理模块,用于采集该raft节点中所有共识组的心跳,每个raft节点中的管理模块将采集到的心跳进行交互。
10.有益效果:相较于现有技术,本发明提出的方案通过采用扩展raft算法,在单个raft集群内扩展出多个共识组,且各组独立工作,具有不同的组领导节点,将单一raft领导节点的写入负载分散到所有的raft节点中,同时引入负载均衡机制,大大降低了raft节点的过载几率。为了应对可能出现的大规模共识组间心跳包占用大量带宽的问题,在raft节点层面引入管理模块,通过对节点内各共识组心跳包的统一管理,降低节点间带宽消耗。
附图说明
11.图1是本发明方法的工作流程图;图2是本发明的整体架构图。
具体实施方式
12.构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
13.如图1本实施例提供了一种基于扩展raft算法的sdn控制器交互方法,该方法具体为:
步骤一:预定义共识组。首先需要对可能传入raft集群的数据进行共识组的划分,每个节点可以容纳x个共识组,如图2所示的5个raft节点组成的集群包含有4个共识组。划分方式为二次切片,该二次切片分为两阶段,第一阶段以内容为标准进行划分,对网络数据进行分类标识,如拓扑数据、链路数据、设备数据等等,第二阶段以时间段的长度进一步切分数据,得到m组划分后的数据组,将二次切分后属于同一组的数据放入同一个共识组。可能传入raft集群的数据包括请求信令和sdn控制器所处网络中的网络数据。
14.步骤二:raft集群配置与分区组配置。在sdn控制器开始交互数据前,需要对raft集群先进行配置,每个raft节点需要获取同一集群内其他节点的ip信息,并根据业务需求进行分区组的划分,分区组的划分依赖于共识组。具体为:将具有相同共识组的raft节点作为一个分区组;如图2所示,raft节点1、raft节点2和raft节点3均包含共识组1和共识组2。而其余raft节点并不包含共识组1或共识组2,这代表raft节点1、raft节点2和raft节点3此时被划分为一个分区组。在完成raft集群相关配置后,运行各集群节点,通过初始化协议进行节点发现,组成集群。
15.步骤三:sdn控制器采集数据并预切片。在raft集群启动后,sdn控制器及其网络随之启动。在网络层中,不同的交换机与sdn控制器相连,主机与交换机相连,主机向交换机传输各类请求信令和网络数据,交换机负责对主机产生的数据进行转发,转发的规则由与交换机相连的sdn控制器决定。由于单个sdn控制器能够控制的交换机数量有限,因此除了控制交换机的转发规则,sdn控制器还需要与其他sdn控制器(在具体应用中,sdn控制器个数根据交换机的个数确定)进行网络数据的交互,以实现跨管控域的视图交换与协作控制。在sdn控制器中部署有周期性获取交换机各类网络信息的应用模块,应用模块按照步骤一中的二次切分对获取的网络数据进行预切片,并为切片后数据加上数据头信息,便于后续的传输。
16.步骤四:sdn控制器中还包括代理模块,应用模块将加上数据头信息的切片后的数据发送至代理模块,在本实施例中,与传统的sdn架构不同的是,在控制层增加了一个数据代理模块,在传统的使用分布式一致性进行控制器交互的架构中,需要进行数据同步的sdn控制器会直接将数据发送至共识节点,且不经过数据预切片,这是因为所有数据会默认传输至组领导节点进行共识,而本发明对数据进行了分类切片,属于不同共识组的数据需要发送至不同的节点,因此需要先将预切片数据发送至代理模块。
17.步骤五:数据代理模块根据带有数据头信息的切片数据,以及raft节点在sdn控制器的存储单元中维护的各共识组对应的数据头信息,即可确定数据将要送往的raft节点,并判断当前raft节点的负载情况。
18.步骤六:数据代理模块指令协调单元读取存储单元中与共识组有关的数据,计算出各raft节点负载值:raft节点领导的共识组的个数与该raft节点下所有共识组的个数之比(若第i个raft节点作为该raft节点下的y个共识组的组领导节点,也即第i个raft节点领导该y个共识组,y≤x,则负载值为y与x之比,也即y/x);本实施例中若raft节点负载值小于等于预设的门限值,则认定负载正常,否则认定负载过高;本实施例中预设的门限值为0.5;若当前数据发往的raft节点负载正常,立即进行数据传输(也就将数据同步至相应的raft节点的共识组中)。举例说明:如图2所示,数据代理模块需要将数据发送至共识组1进行一致性共识(数据同步),假设共识组1的组领导节点所在的raft节点为raft节点1,协
调单元读取raft节点1的共识组信息,发现raft节点1包含有共识组1、共识组2和共识组4,且raft节点1仅为共识组1的组领导节点,则负载正常,将数据传输至raft节点1的共识组1中。
19.若raft节点负载过高,则进行负载均衡,具体为向组领导节点发送强制停止指令,如果当前组领导节点正在进行同步过程,等到同步过程完成后,立刻开始对相应的共识组重新选择组领导节点:在均具有该相应的共识组的区分组中,选择负载值最小的raft节点作为该共识组的组领导节点。举例说明:数据代理模块需要将数据发送至共识组1进行一致性共识,假设共识组1的组领导节点所在的raft节点为raft节点1,协调单元读取raft节点1的共识组信息,发现raft节点1包含有共识组1、共识组2和共识组4,且所有共识组的组领导节点均为raft节点1,则负载过高,通过查询包含共识组1的其他raft节点,发现raft节点2不是任何一个共识组的组领导节点,于是协调单元指定raft节点2为共识组1的下一轮任期的组领导节点,当raft节点2成为共识组1的组领导节点后,将数据传输至raft节点2的共识组1中。
20.步骤七:数据被传输至raft节点内部的共识组后,进入日志复制阶段。组领导节点将该数据请求加入日志中,并将日志发送至包含相应共识组内的其他raft节点内,其他节点接收到日志消息后会返回复制成功的消息,当组领导节点接收到大部分跟随节点(所述跟随节点为在同一个分区组中,若raft节点1为共识1的组领导节点,则针对共识组1,raft节点2和raft节点3均为跟随节点)复制成功的消息后,组领导节点便将收到的消息返回给数据代理模块。
21.步骤七描述的是一个理想的日志复制流程,而实际情况中,会出现某些组跟随节点崩溃失效,当失效节点数量过半时,就无法达成一致性共识,或是组领导节点崩溃失效,共识组直接停止工作,现有技术解决该问题的方法是组领导节点定时向跟随节点发送心跳包,然而在扩展raft算法中,raft节点间心跳包数量随着共识组数量的提升而提升,继续沿用心跳包机制会使得心跳包占据节点间大量的通信带宽,为此本实施例在各raft节点中引入节点管理模块,用于采集相应raft节点中所有共识组的心跳,每个raft节点中的管理模块将采集到的心跳进行交互。
22.另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献