本发明涉及移动通讯技术领域,具体为一种基于SDN的加权轮询系统及算法。
背景技术:
软件定义网络(SoftwareDefinedNetwork,SDN),是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。传统IT架构中的网络,根据业务需求部署上线以后,如果业务需求发生变动,重新修改相应网络设备(路由器、交换机、防火墙)上的配置是一件非常繁琐的事情。在互联网/移动互联网瞬息万变的业务环境下,网络的高稳定与高性能还不足以满足业务需求,灵活性和敏捷性反而更为关键。SDN所做的事是将网络设备上的控制权分离出来,由集中的控制器管理,无须依赖底层网络设备(路由器、交换机、防火墙),屏蔽了来自底层网络设备的差异。而控制权是完全开放的,用户可以自定义任何想实现的网络路由和传输规则策略,从而更加灵活和智能。
SDN是下一代IP网络管理架构设计的代表,这种思路强调拆分控制层面与转发层面,用“流交换”替换“包转换”,用“集中管理”取代单独配置。OpenFlow则是实现这种思路时,用网络集中管理平台的流表(FlowTable,更通用的词是NIB,即NetworkInformationBase)取代网络设备路由表(RIB,RoutingInformationBase)的协议。
SDN网络包括SDNController(SDN控制器)和SDN交换机。SDN控制器是软件定义网络(SDN)中的应用程序,负责流量控制以确保智能网络。SDN控制器是基于如OpenFlow等协议的,允许服务器告诉交换机向哪里发送数据包。SDN控制器是整个SDN网络的控制中心,SDN交换机通过OpenFlow协议,依靠SDN控制器下发各种流表进行报文转发。SDN网络中,支持OpenFlow的SDN交互机依靠流表进行业务转发,SDN交互机中的流表是SDN控制器生成并一条条下发给SDN交互机。
随着访问流量快速增长,业务量不断提高,服务器往往工作在超负荷状态,因此用户无法得到不间断可用性及较快的系统反应时间。现有解决方法是通过负载均衡技术,传统的负载均衡集中在一个负载均衡设备中,负载均衡设备负责根据已配置均衡策略将用户请求在服务器群组中分发。而控制粒度是基于负载均衡设备的端口设置的,使得控制粒度过大,且整个配置是分布式的(整个网络存在多台负载均衡设备),配置复杂且容易出错。且用户业务很多时,SDN控制器会生成大量流表项,通过OpenFlow协议本身的流表下发机制,配置SDN交换机的流表速度比较慢,因此生成流表很多,流表下发速度慢,导致业务完全生效时间会很长,影响用户体验。
技术实现要素:
本发明针对现有技术存在的问题,提出了一种基于SDN的加权轮询系统及算法,所有的配置都集中于控制器,而且SDN交换机可以自动感知服务器并通知控制器,配置方便而简单,由控制器统一控制,控制器根据上报的服务器信息制定加权轮询策略,并下发流表,从而实现负载分担功能。
本发明解决其技术问题所采用的技术方案是:
一种基于SDN的加权轮询系统,包括:
客户端模块,用于发送客户请求;
服务器模块,用于接收并处理所述客户端模块发送的客户请求;
SDN交换机模块,用于动态检测所述服务器模块,并将检测结果上报给SDN控制器模块;
SDN控制器模块,用于根据所述SDN交换机模块上报的检测结果生成加权轮询策略表,并根据所述加权轮询策略表为所述客户端模块的客户请求分配服务器,以及根据服务器分配结果给所述SDN交换机模块下发流表。
作为优选,所述SDN交换机模块包括:
PING报文发送单元,用于向接口发送PING报文以获取活跃服务器的IP地址;
FTP请求报文构造单元,用于构造FTP请求报文以获取活跃FTP服务器地址;
HTTP请求报文构造单元,用于构造HTTP请求报文以获取活跃WEB服务器地址;
报文上报单元,用于将所述PING报文发送单元、所述FTP请求报文构造单元及所述HTTP请求报文构造单元获取的服务器信息以Experimenter报文形式上报给所述SDN控制器模块。
作为优选,所述SDN控制器模块包括:
报文接收单元,用于接收所述SDN交换机模块上报的Experimenter报文;
报文解析单元,用于解析所述报文接收单元接收的Experimenter报文以获取服务器信息;
加权轮询策略表生成单元,用于根据报文解析单元获取的服务器信息生成加权轮询策略表;
服务器分配单元,用于根据加权轮询策略表获得每一服务器的权重和使用次数,并根据每一服务器的权重和使用次数为相应服务器分配客户端;
流表下发单元,用于根据所述服务器分配单元的服务器分配结果计算转发路径,并根据所述转发路径向所述SDN交换机模块下发流表。
作为优选,所述SDN控制器模块还包括:
阈值设置单元,用于设置流表项的阈值;
阈值检测检测,与所述阈值设置单元相连,用于检测所述SDN控制器生成的流表项的数量是否超过预设的阈值;
流文件单元,与所述阈值检测单元相连,用于在所述SDN控制器生成的流表项的数量超过预设的阈值时生成包含所述流表项的流文件;
流表信息发送单元,与所述流文件单元相连,用于向所述SDN交换机发送包含所述流文件信息的流表消息。
作为优选,所述SDN控制器中还包括:
反馈信息接收单元,用于判定在预设时间内已收到所述SDN交换机反馈的用于确认已获取流表项并已下发流表的反馈信息。
一种采用上述系统的加权轮询算法,包括以下步骤:
1)通过客户端模块发送客户请求;
2)通过SDN交换机模块动态检测服务器模块,并将检测结果上报给SDN控制器模块;
3)通过SDN控制器模块根据所述SDN交换机模块上报的检测结果生成加权轮询策略表,并根据所述加权轮询策略表为所述客户端模块的客户请求分配服务器,以及根据服务器分配结果给所述SDN交换机模块下发流表;
4)通过服务器模块接收并处理所述客户端模块发送的客户请求。
作为优选,所述步骤2)具体包括:
21)通过PING报文发送单元向接口发送PING报文以获取活跃服务器的IP地址;
22)通过FTP请求报文构造单元构造FTP请求报文以获取活跃FTP服务器地址;
23)通过HTTP请求报文构造单元构造HTTP请求报文以获取活跃WEB服务器地址;
24)通过报文上报单元将所述PING报文发送单元、所述FTP请求报文构造单元及所述HTTP请求报文构造单元获取的服务器信息以Experimenter报文形式上报给所述SDN控制器模块。
作为优选,所述步骤3)具体包括:
31)通过报文接收单元接收所述SDN交换机模块上报的Experimenter报文;
32)通过报文解析单元解析所述报文接收单元接收的Experimenter报文以获取服务器信息;
33)通过加权轮询策略表生成单元根据报文解析单元获取的服务器信息生成加权轮询策略表;
34)通过服务器分配单元根据加权轮询策略表获得每一服务器的权重和使用次数,并根据每一服务器的权重和使用次数为相应服务器分配客户端;
35)通过流表下发单元根据所述服务器分配单元的服务器分配结果计算转发路径,并根据所述转发路径向所述SDN交换机模块下发流表。
作为优选,所述SDN控制器的加权轮询算法还包括以下步骤:
41)通过阈值设置单元设置流表项的阈值;
42)通过阈值检测单元检测所述SDN控制器生成的流表项的数量是否超过预设的阈值;
43)通过流文件单元用于在所述SDN控制器生成的流表项的数量超过预设的阈值时生成包含所述流表项的流文件;
44)通过流表信息发送单元向所述SDN交换机发送包含所述流文件信息的流表消息。
作为优选,所述SDN控制器的加权轮询算法还包括以下步骤:
通过反馈信息接收单元判定在预设时间内已收到所述SDN交换机反馈的用于确认已获取流表项并已下发流表的反馈信息;
在预设时间内未收到所述SDN交换机反馈的反馈信息时,所述流表下发单元向所述SDN交换机下发包含所述流表项的流表。
本发明的有益效果是:
基于SDN架构,加权轮询的策略基于整个网络,提供端到端的服务,SDN交换机具备定时感知服务器的功能,并通过Experimenter报文上报给SDN控制器,控制器根据上报的服务器信息制定加权轮询策略,并下发流表,从而实现负载分担功能。
附图说明
图1为本发明基于SDN的加权轮询系统的结构示意图;
图2为本发明基于SDN的加权轮询算法的示意图;
图3为本发明基于SDN的加权轮询算法的总流程图;
图4为本发明SDN交换机模块的处理流程示意图;
图5为本发明SDN控制器模块的处理流程示意图;
图6为本发明SDN控制器模块的加权轮询示意图。
具体实施方式
以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
如图1-2所示,一种基于SDN的加权轮询系统,包括:
客户端模块,用于发送客户请求,包括若干客户端设备。
服务器模块,用于接收并处理所述客户端模块发送的客户请求。包括若干服务器,多台服务器组成一个群组,它们通过网络设备相连接,这些服务器提供相同或相似的网络服务。
如图4所示,SDN交换机模块,用于动态检测所述服务器模块,并将检测结果上报给SDN控制器模块。所述SDN交换机模块包括,PING报文发送单元,用于向接口发送PING报文以获取活跃服务器的IP地址;FTP请求报文构造单元,用于构造FTP请求报文以获取活跃FTP服务器地址;HTTP请求报文构造单元,用于构造HTTP请求报文以获取活跃WEB服务器地址;报文上报单元,用于将所述PING报文发送单元、所述FTP请求报文构造单元及所述HTTP请求报文构造单元获取的服务器信息以Experimenter报文形式上报给所述SDN控制器模块。
如图5-6所示,SDN控制器模块,用于根据所述SDN交换机模块上报的检测结果生成加权轮询策略表,并根据所述加权轮询策略表为所述客户端模块的客户请求分配服务器,以及根据服务器分配结果给所述SDN交换机模块下发流表。通过控制器感知服务器群组,根据加权轮询的策略,将用户请求在服务器群组中的分发,为用户提供服务,并对服务器可用性进行维护。加权轮询的策略基于整个网络,提供端到端的服务,SDN交换机具备定时感知服务器的功能,并通过Experimenter报文上报给SDN控制器,控制器根据上报的服务器信息制定加权轮询策略,并下发流表,从而实现负载分担功能。
控制器应支持基于SDN的控制平面硬件限流配置任务序列,应包括:基于SDN的控制平面硬件限流功能打开或关闭,硬件限流策略表。配置项包括基于SDN的加权轮询功能,用于打开或关闭基于SDN的加权轮询功能和加权轮询策略表,加权轮询策略表由上报的Experimenter报文创建,可由用户静态修改配置。
Experimenter报文的字段包括服务器IP地址,此字段定义服务器IP地址;服务器类型,此字段定义服务器类型,1为FTP服务器,2为WEB服务器;交换机ID,此字段指定连接服务器的交换机ID;交换机端口,此字段指定连接服务器的交换机的端口;权重,此字段指定服务器的权重;使用次数,此字段指定服务器被使用的次数。
从SDN交换机模块到SDN控制器模块的私有扩展Experimenter报文的格式中,Experimenter值为255需要向ONF组织申请,Experimenter type值为1表明是从SDN交换机到控制器方向。当服务器检测结束以后,私有扩展Experimenter报文由SDN交换机上报给控制器。其中服务器信息包括:服务器IP地址和服务器类型。
所述SDN控制器模块包括,报文接收单元,用于接收所述SDN交换机模块上报的Experimenter报文;报文解析单元,用于解析所述报文接收单元接收的Experimenter报文以获取服务器信息;加权轮询策略表生成单元,用于根据报文解析单元获取的服务器信息生成加权轮询策略表;服务器分配单元,用于根据加权轮询策略表获得每一服务器的权重和使用次数,并根据每一服务器的权重和使用次数为相应服务器分配客户端;流表下发单元,用于根据所述服务器分配单元的服务器分配结果计算转发路径,并根据所述转发路径向所述SDN交换机模块下发流表。
当用户业务很多时,SDN控制器模块会生成大量流表项,通过OpenFlow协议本身的流表下发机制,配置SDN交换机模块的流表速度比较慢,因此生成流表很多,流表下发速度慢,导致业务完全生效时间会很长,影响用户体验。因此,所述SDN控制器模块还包括,阈值设置单元,用于设置流表项的阈值,流表项的阈值可根据网络负载能力、网络速度等进行设定。通过SDN控制器模块向SDN交换机模块下发流表,进一步提高了服务器的分配效率。
阈值检测检测,与所述阈值设置单元相连,用于检测所述SDN控制器生成的流表项的数量是否超过预设的阈值。当流表项的数量没有超过阈值时,SDN控制器模块继续以传统流表下发方式到SDN交换机模块,即SDN控制器模块生成流表并一条条下发给SDN交换机模块。当SDN控制器模块生成的流表项的数量超过预设的流表项的阈值,则所述流文件单元生成包含所述流表项的流文件。
流文件单元,与所述阈值检测单元相连,用于在所述SDN控制器生成的流表项的数量超过预设的阈值时生成包含所述流表项的流文件。流表信息发送单元,与所述流文件单元相连,用于向所述SDN交换机发送包含所述流文件信息的流表消息。在生成包含所述流表项的流文件后,所述流表信息发送单元向所述SDN交换机发送包含所述流文件信息的流表消息,其中所述流表信息中至少包括流文件标识和流文件的名称。
所述SDN交换机模块还包含:流表信息接收单元,流表项获取单元以及配置下发单元。所述流表信息接收单元用于从SDN控制器模块接收包含流文件信息的流表消息;所述流表项获取单元与所述流表信息接收单元相连,用于根据接收到的所述流表消息以预设的网络访问方式从所述SDN控制器模块获取所述流文件中的流表项。
此外,在向所述SDN交换机模块发送包含所述流文件信息的流表消息之后,为确保SDN交换机模块已经获取流文件中的流表项,所述SDN控制器模块发送一询问消息询问所述SDN交换机模块是否已经获取流文件中的流表项。因此,所述SDN交换机模块内还包含:反馈信息发送单元,与所述配置下发单元相连,用于向所述SDN控制器模块发送用于确认已获取流表项并已下发流表的反馈信息。所述SDN控制器中还包括,反馈信息接收单元,用于判定在预设时间内已收到所述SDN交换机反馈的用于确认已获取流表项并已下发流表的反馈信息。反馈信息接收单元在预设时间内未收到所述SDN交互机反馈的反馈信息时,所述流表下发单元向所述SDN交换机模块下发包含所述流表项的流表。也就是说,所述反馈信息接收单元在预设时间内未收到所述反馈信息发送单元反馈的用于确认已获取流表项并已下发流表的反馈信息时,SDN控制器模块继续以传统流表下发方式到SDN交换机模块,即SDN控制器模块生成流表并一条条下发给SDN交换机模块。
如图3所示,一种加权轮询算法,其包括以下步骤:
1)通过客户端模块发送客户请求;
2)通过SDN交换机模块动态检测服务器模块,并将检测结果上报给SDN控制器模块。所述步骤2)具体包括,21)通过PING报文发送单元向接口发送PING报文以获取活跃服务器的IP地址;22)通过FTP请求报文构造单元构造FTP请求报文以获取活跃FTP服务器地址;23)通过HTTP请求报文构造单元构造HTTP请求报文以获取活跃WEB服务器地址;24)通过报文上报单元将所述PING报文发送单元、所述FTP请求报文构造单元及所述HTTP请求报文构造单元获取的服务器信息以Experimenter报文形式上报给所述SDN控制器模块。
3)通过SDN控制器模块根据所述SDN交换机模块上报的检测结果生成加权轮询策略表,并根据所述加权轮询策略表为所述客户端模块的客户请求分配服务器,以及根据服务器分配结果给所述SDN交换机模块下发流表。
所述步骤3)具体包括,31)通过报文接收单元接收所述SDN交换机模块上报的Experimenter报文;32)通过报文解析单元解析所述报文接收单元接收的Experimenter报文以获取服务器信息;33)通过加权轮询策略表生成单元根据报文解析单元获取的服务器信息生成加权轮询策略表;34)通过服务器分配单元根据加权轮询策略表获得每一服务器的权重和使用次数,并根据每一服务器的权重和使用次数为相应服务器分配客户端;35)通过流表下发单元根据所述服务器分配单元的服务器分配结果计算转发路径,并根据所述转发路径向所述SDN交换机模块下发流表。
4)通过服务器模块接收并处理所述客户端模块发送的客户请求。
所述SDN控制器的加权轮询算法还包括以下步骤,41)通过阈值设置单元设置流表项的阈值;42)通过阈值检测单元检测所述SDN控制器生成的流表项的数量是否超过预设的阈值;43)通过流文件单元用于在所述SDN控制器生成的流表项的数量超过预设的阈值时生成包含所述流表项的流文件;44)通过流表信息发送单元向所述SDN交换机发送包含所述流文件信息的流表消息。
所述SDN控制器的加权轮询算法还包括以下步骤,通过反馈信息接收单元判定在预设时间内已收到所述SDN交换机反馈的用于确认已获取流表项并已下发流表的反馈信息;在预设时间内未收到所述SDN交换机反馈的反馈信息时,所述流表下发单元向所述SDN交换机下发包含所述流表项的流表。也就是说,所述SDN控制器模块在预设时间内未收到所述SDN交换机模块反馈的用于确认已获取流表项并已下发流表的反馈信息时,SDN控制器模块继续以传统流表下发方式到SDN交换机模块,即SDN控制器模块生成流表并一条条下发给SDN交换机模块。
SDN控制器模块负责对整个SDN网络(Software Defined Network,软件定义网络)的集中化控制,对于把握全网资源视图、改善网络资源交付质量具有非常重要的作用。单一的控制器无法应对跨越多个地域的SDN网络问题;需要有多台控制器形成的分布式集群,避免单一的控制器节点造成的可靠性、扩展性、性能等方面的问题。
因此,所述SDN交换机模块还包括通信处理单元,所述SDN控制器模块包括:第一SDN控制器、至少一个第二SDN控制器、及配置管理单元。所述第一SDN控制器,用于同所述SDN交换机模块的通信处理单元建立主连接;所述第二SDN控制器,用于同所述SDN交换机模块的通信处理单元建立辅连接;所述配置管理单元,用于在所述主连接失效的情况下,在所述SDN交换机模块的各所述辅连接中选定的新主连接。所述新主连接的SDN控制器与旧主连接的SDN控制器间保持数据同步,所述SDN控制器模块中失去活性(例如出现故障而使主连接失效)的SDN控制器的负载根据预设的负载分担算法被平均分配至其他具有活性的SDN控制器。
为了使SDN交换机模块可以从旧主连接切换至新主连接,所述SDN交换机模块和SDN控制器模块之间需存在对应的通信交互。具体的,所述配置管理单元的在所述SDN交换机模块的各所述辅连接中选定的新主连接,包括:接收包含所述SDN交换机MAC地址的第一Experimenter报文,并根据所述SDN控制器模块的IP地址和所述MAC地址进行计算来确定各SDN控制器与所述SDN交换机模块的连接类型,所述连接类型为所述主连接或辅连接,然后,向所述SDN交换机模块发送第二Experimenter报文,每个所述第二Experimenter报文包含所述SDN控制器模块内的一个SDN控制器的IP地址和连接类型。
所述SDN控制器间的同步分为实时同步和周期同步,实时同步是增量同步,引起实时同步的因素包括四点:统计信息变化、编排器变化、北向应用变化和OF消息变化等;周期同步是全数据库的同步,由于花费时间较长,应后台处理。除了连接状态信息,各个SDN控制器的数据库中的数据内容可保持完全一致。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。