一种基于OpenFlow的SDN网络环境下分布式控制器系统的制作方法

文档序号:9306644阅读:352来源:国知局
一种基于OpenFlow的SDN网络环境下分布式控制器系统的制作方法【
技术领域
】[0001]本发明涉及一种基于OpenFlow的SDN网络环境下分布式控制器系统,属于互联网
技术领域
。【
背景技术
】[0002]SDN(即:软件定义网络)是一种新型网络创新架构,是未来网络发展的趋势。SDN强调网络设备的控制平面和数据平面想分离,控制平面的功能汇集到网络内的一个集中式控制器。SDN控制器实现网络拓扑的收集、路由的计算、流表的生成和下发、网络的管理与控制等功能,网络层设备仅仅负责流量的转发和策略的执行。[0003]转发与控制分离带来了控制逻辑集中,SDN控制器拥有网络的全局静态拓扑、全网的动态转发表信息、全网络的资源利用率、故障状态等,从而也开放了网络能力,通过集中的SDN控制器实现网络资源的统一管理、整合以及虚拟化后,采用规范化的北向接口为上层应用提供按需的网络资源及服务,实现网络能力开放,按需提供。[0004]OpenFlow作为实现SDN架构的控制器与SDNSwitch的南向接口协议,定义了一系列规范。SDN网络环境中单OpenFlow控制器虽然带来了控制上的便利性,但存在单点可靠性和性能问题。而本发明能够很好地解决上面的问题。【
发明内容】[0005]本发明目的在于针对现在OpneFlow的SDN网络环境下单控制器的单点故障问题和性能问题,提出了一种逻辑上集中但物理上分布的分布式控制器系统,解决了单点故障和性能的问题,该系统既解决了存在的单点故障和性能问题,又保持了单控制器的便利性。[0006]本发明解决其技术问题所采取的技术方案是:一种基于OpenFlow的SDN网络环境下分布式控制器系统,该系统包括决策器模块、控制器资源池、OpenFlow控制服务器和OpenFlow交换机。[0007]决策器模块的功能是整个系统功能的核心,该决策器模块是整个系统功能的核心,负责检测active_controller的工作情况,在其过载时将进行负载均衡决策,从资源池中调入新的控制器加入工作,并且周期性检查active_controller(即:处于工作状态的控制器)负载情况,完成控制器资源的回收。[0008]控制器资源池的功能是收集所有的empty_controller,S卩:处于空闲状态的控制器合集,资源池的动态增减由决策器控制;控制器和底层的OpenFlow交换机处于正常的工作状态中。[0009]OpenFlow控制服务器的功能是,除了完成传统OpenFlow控制器的功能外,要实时监测自身负载,过载时要将负载情况通知决策器;另外要监听决策器传输过来的命令,完成自身负载情况饿上报或者完成自身角色的切换。[0010]OpenFlow交换机的功能是完成数据的转发功能,并且在控制器过载时要参与负载均衡过程。[0011]本发明所述empty_controller,即:处于空闲状态的控制器与active_controller,即:处于工作状态的控制器的转换是完全由决策器控制,而OpenFlow交换机控制权的转移则由两个控制器之间按照切换流程完成。[0012]本发明所述控制器的负载,根据控制器的内存、CPU、10的使用情况定量计算得出,使得在后续负载均衡过程中,不会使得参与均衡过程的控制器过载。[0013]有益效果:[0014]1、本发明很好地解决了SDN网络单点故障和性能问题。[0015]2、本发明保证了每个控制器都处于正常工作状态中,不会发生控制器过载。[0016]3、本发明的控制器和底层交换机处于动态的映射,能实时进行控制器角色的切换【附图说明】[0017]图1为本发明的系统架构图。[0018]图2为本发明OpenFlow控制服务器与OpenFlow交换机之间的切换过程示意图。[0019]图3为本发明控制器过载时处理流程图。[0020]图4为本发明Decis1n负载均衡阶段一示意图。[0021]图5为本发明Decis1n负载均衡阶段二示意图。[0022]图6为本发明Decis1n负载均衡阶段三示意图。[0023]图7为本发明周期性负载均衡示意图。【具体实施方式】[0024]下面结合说明书附图对本发明创造作进一步的详细说明。[0025]实施例一[0026]本发明的MasterNode决策器(即:Decis1n),该Decis1n与每个OpenFlow控制服务器建立双向连接(即:TCP连接)。实际连接,处于工作状态的OpenFlow交换机的Controller称为active_controller,未连接OpenFlow控制器,空闲状态的控制器处于资源池中,称为empty_controller0[0027]每个控制器会统计自己的“内存、CPU使用率”,“进程数”、“10量”和各下层“OpenFlow交换机占用的资源比”,并且会依据此设置三个值:切换线、正常工作线、过载线。处于“切换线”下的active_controller可以被Decis1n选中参与负载均衡过程。当某个active_controller超过“过载线”后,则会向Decis1n发送Warning_pacekt,Decis1n会启动一系列步骤去完成loadbalance(即:负载均衡),在此过程中会用来Query_packet和Response_packet。最后Decis1n会回送Hand_ofT_packet。最终OpenFlow交换机在两个activecontroller之间完成切换。[0028]本发明的Decis1n能够控制OpenFlow交换机,在各个active_controller之间切换完成负载均衡,当active_controller不足时,Decis1n在资源池中启动新的OpenFlow控制器。当active_controller资源富足时,Decis1n会将多余的active_controller回收进资源池中。[0029]如图3所示,本发明的工作中的控制器称为active_controller,active_contro11er,根据其“内存、CPU使用率”,“进程数”、“1量”和各下层“OpenFlow交换机占用的资源比”各项统计数据完成一个负载指标的计算(即:负载指标越大证明active_controller越繁忙),本发明根据指标值设定三基准线:切换线、正常工作线、过载线。[0030]当active_controller处于“切换线”以下时,active_controller可参与Decis1n负载均衡调度。当active_controller处于“过载线”之上时,active_controller将向Decis1n发出Warning_packet指出本控制器已经过载工作,并且在Warning_packet中包含有自己的内存、CPU使用率,进程数和1量等计算值,为了避免active_controller的瞬时过载引起Decis1n的负载均衡调度,本发明设定一个last_time参数,在active_controller过载时间超过last_time时发出Warning_packet。[0031]Decis1n收到active_controller发出的Warning_packet时,将提取其中的内存、CPU使用率,进程数和10量等指标,并且Decis1n进入负载均衡阶段,在Decis1n负载均衡决策完成后,将向发起Warning_packet的active_controller回送Hand_off_packet。[0032]如果在Decis1n的一个负载均衡的某个阶段收到了另一个active_controller的Warning_packet,只有等待前一个处理完后,才能处理下一个。[0033]“内存、CPU使用率”,“进程数”、“10量”和各下层“OpenFlow交换机占用的资源比”各项统计数据的意义,前三项表示某个active_controller整体资源使用状况,最后的“OpenFlow交换机占用的资源比”是用来了解各个OpenFlow交换机占用active—controller总资源比率,这样决定哪些OpenFlow交换机可以转移到新的active_controller上,且不会引起新的active_controller过载情况的发生[0034]“过载线”的设定要满足以下一个条件,任何处于过载线的active_controller与empty_controller(未连接任何OpenFlow交换机的controller)的负载均衡是一定会成功的,既均衡后两个控制器都不会过载[0035]结合流程图,本发明详述整个系统工作流程,包括:[0036]如图3所不,当active_controller处于“过载线”之上时,active_controller将向Decis1n发出Warning_packet指出本控制器已经过载工作,并且在Warning_packet中包含有自己的内存、CPU使用率,进程数和1量等计算值(为了避免active_C0ntr011er的瞬时过载引起Decis1n的负载均衡调度,本发明设定一个last_time参数,在active_controller过载时间超过last_time时发出Warning_packet)[0037]如图4所示,本发明的Decis1n进入负载均衡阶段一,Decis1n(即:决策器)收到active_controller_A发送的Warning_packet,提取其中“内存、CPU使用率”,“进程数”、“10量”和各下层“OpenFlow交换机占用的资源比”等统计数据,然后Decis1n向所有(除发出此Warning_packet的active_controller之外)active_controller发出Query_packet用来请求控制器的以上数据,控制器收到Query_packet后回复Response—packet,其中包含Decis1n所请求的关于各个控制器的统计数据,Decis1n据此计算每个active_controller的负载指标,如果负载指标处于“正常工作线”以下,则将此active_controller加入loading_balance_table,否则忽略。[0038]等待所有active_controller的Response_packet。并且进行上述判断。[0039]所有active_controller回复处理完成后,判断loading_bala当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1