一种SDN网络的链路负载均衡方法和SDN控制器与流程

文档序号:13450024阅读:214来源:国知局
一种SDN网络的链路负载均衡方法和SDN控制器与流程
本发明的实施例涉及通信领域,尤其涉及一种sdn(softwaredefinednetworking,软件定义网络)网络的链路负载均衡方法和sdn控制器。
背景技术
:随着互联网、网络技术的发展,应用业务、服务类型的日益丰富,不断增多的用户数量和用户对于服务质量要求的不断提高,对网络的稳定性、可靠性提出更高的要求。在当前的网络环境下,一般会同时存在多条链路到达同一目的地址的情况。但是,如果使用传统的路由技术,相同目的ip地址的数据包只能选择其中的一条路径完成转发,其他链路处于备份状态或无效状态,导致链路丢包和链路利用率较低,降低网络服务质量。为解决该问题,传统网络设备使用ecmp(equal-costmultipathrouting,等价多路径)等价路由算法,在多条等价链路情况下,可以同时使用多条数据链路。这种路由算法在数据流的路由选择上,采用哈希映射的方法,将每条数据流映射到ecmp组的不同出口链路上完成数据转发。在新型的网络架构sdn网络中同样存在多条不同链路到达同一目的地址的情况,然而sdn网络中没有定义该种情况下多链路负载均衡的方法。目前,sdn网络中还是使用ecmp算法来实现多链路的负载均衡和链路备份。ecmp算法的具体方法为:根据报文头中的头部信息(包含源ip地址、目的ip地址、l4端口号等字段)来计算hash值,并采用该hash值标识数据流,然后根据该hash值对ecmp组的成员个数取模,根据计算结果选取多条链路中一条链路对数据流进行转发。使用ecmp算法虽然能够利用多条链路进行转发,但是对于一条数据流来说,其报文头中的头部信息确定,即对应的出口链路也是一定的,ecmp算法实际上是静态选路,当一条链路已经处于拥塞状态时,数据流的选路结果可能还是该链路,进一步加剧网络丢包的可能。综上,在新型的sdn网络架构中,ecmp算法没有考虑链路上的负载和链路容量(最大负载)等因素,当ecmp组中的链路带宽不同时,会导致链路负载均衡出现问题,在一个ecmp组中,有些成员链路可能已经出现拥塞、丢包的情况,而其他一些链路负载可能很轻,甚至没有流量,导致无法充分利用网络链路转发数据流,降低了网络整体性能。技术实现要素:本发明的实施例提供一种sdn网络的链路负载均衡方法和sdn控制器,能够充分利用sdn网络的链路资源,提高网络整体性能。第一方面、提供一种sdn网络的负载均衡方法,包括:sdn控制器根据交换机上报的链路信息计算sdn网络可使用的数据链路,其中所述链路信息包含链路容量;所述sdn控制器将具有相同目的地址的数据链路对应的端口加入负载端口组,并根据各个数据链路的链路容量配置所述负载端口组中对应端口的权重,其中,所述对应端口的权重为端口数量;所述sdn控制器获取交换机发送的数据流的首报文,获取所述首报文的头部信息;所述sdn控制器根据所述头部信息进行哈希运算获取负载均衡因子;所述sdn控制器根据所述负载均衡因子和所述负载端口组中各端口的权重选择转发端口;所述sdn控制器根据所述转发端口生成转发流表,并将所述转发流表发送至交换机。第二方面,提供一种sdn控制器,包括:链路管理模块,用于根据交换机上报的链路信息计算sdn网络可使用的数据链路,其中所述链路信息包含链路容量;所述链路管理模块,还用于将具有相同目的地址的数据链路对应的端口加入负载端口组,并根据各个数据链路的链路容量配置所述负载端口组中对应端口的权重,其中,所述对应端口的权重为端口数量;报文处理模块,用于获取交换机发送的数据流的首报文,获取所述首报文的头部信息;路由控制模块,用于根据所述报文处理模块获取的所述头部信息进行哈希运算获取负载均衡因子;链路管理模块,还用于根据所述路由控制模块获取的负载均衡因子和所述链路管理模块获取的所述负载端口组中各端口的权重选择转发端口;所述路由控制模块,还用于根据所述链路管理模块选择的转发端口生成转发流表,并将所述转发流表发送至交换机。在上述方案中,sdn控制器根据交换机上报的包含链路容量链路信息计算sdn网络可使用的数据链路;然后将具有相同目的地址的数据链路对应的端口加入负载端口组,并根据各个数据链路的链路容量配置负载端口组中对应端口的权重,对应端口的权重为端口数量;获取交换机发送的数据流的首报文,获取首报文的头部信息;根据头部信息进行哈希运算获取负载均衡因子;根据负载均衡因子和负载端口组中各端口的权重选择转发端口;最后根据转发端口生成转发流表,并将转发流表发送至交换机,这样交换机可以根据该转发流表对数据流进行转发时;由于在确定转发流表时同时考虑了数据链路的链路容量,因此能够充分利用sdn网络的链路资源,提高网络整体性能。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的通信系统的结构图;图2为本发明实施例提供的一种sdn网络的链路负载均衡方法的流程图;图3为本发明另一实施例提供的一种sdn网络的链路负载均衡方法的流程图;图4为本发明实施例提供的一种sdn控制器的结构图;图5为本发明另一实施例提供的一种sdn控制器的结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例描述的系统架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。下面结合具体实施例对上述方法进行详细描述。参照图1所示,本发明的实施例应用于如下通信系统,包括:多台交换机,该通信系统应用于sdn网络因此本申请的实施例还包括至少一台sdn控制器,其中每台sdn控制器控制一台或多台交换机的数据流转发;如图1所示,交换机之间至少建立有两条数据链路(数据链路一和数据链路二),并且交换机与用户网络或者服务网络连接,以实现用户网络与服务网络之间的数据流传输。基于上述的通信系统,本发明的实施例提供一种sdn网络的负载均衡方法,参照图2所示,包括如下步骤:101、sdn控制器根据交换机上报的链路信息计算sdn网络可使用的数据链路,其中链路信息包含链路容量。在步骤101之前,sdn控制器与交换机之间利用openflow协议接口建立连接,sdn控制器使用lldp协议发现全局sdn网络拓扑,生成可视化的网络拓扑结构,基于该网络拓扑结构sdn控制器根据交换机上报的链路信息计算sdn网络可使用的数据链路,其中链路信息还可以包括端口状态等信息。102、sdn控制器将具有相同目的地址的数据链路对应的端口加入负载端口组,并根据各个数据链路的链路容量配置负载端口组中对应端口的权重,其中,对应端口的权重为端口数量。其中步骤102中,sdn控制器将具有相同目的地址的数据链路对应的端口加入负载端口组portgroup,且portgroup中的成员是可以配置的,最多只能包含8个端口,一个端口只能加入一个端口组。根据链路的链路容量配置负载端口组中对应端口的权重,根据端口的权重可以将负载端口组portgroup扩展为基于权重的扩展负载端口组weightportgroup,其中数据链路对应的端口数量按照权重的比值添加,且为离散添加。比如:一个portgroup包含两个端口,对应的链路容量分别为1m和2m,则其对应的权重值为1:2。具体如下表所示:基础负载端口组portgroup:包含两个端口:port1和port2,其中链路容量分别为1m的数据链路对应port1,链路容量分别为2m的数据链路对应port2;port1port2扩展负载端口组weightportgroup:对应的权重为1:2,包含三个端口port1port2port2这种端口组合,使得port2更容易被选作为出端口。即链路容量大的链路可以有更大的机会得到利用。103、sdn控制器获取交换机发送的数据流的首报文,获取首报文的头部信息。具体的,交换机将没有匹配到流表的数据流的首报文封装在packet_in消息中,发送给sdn控制器,其中,头部信息包含源mac、目的mac、源ip地址、目的ip地址、l4端口或其中任意组合,例如由上述元素构成三元组或五元组信息。此外在获取首报文的头部信息前还可以首先检测该数据流的首报文是否为合法报文,若是则解析首报文的头部信息,若否则丢弃该数据流的首报文。104、sdn控制器根据头部信息进行哈希运算获取负载均衡因子。105、sdn控制器根据负载均衡因子和负载端口组中各端口的权重选择转发端口。具体的,步骤105的方案为,sdn控制器将根据负载均衡因子和负载端口组中各端口的权重和计算得出的端口作为备选转发端口,检测备选转发端口在预定时长内的平均剩余带宽;若sdn控制器确定平均剩余带宽大于或等于设定的带宽阈值,则将备选转发端口设置为转发端口;否则检测负载端口组中的其他端口在预定时长内的平均剩余带宽,并将负载端口组中平均剩余带宽最大的端口设置为转发端口。例如:sdn控制器通过流量统计功能,检测一个或者多个检测周期内备用端口port1的流量统计,计算出该备用端口port1在预定时长t内的平均剩余带宽。若备用端口port1平均剩余带宽大于或等于带宽阈值t,则将该备用端口port1设置为数据流的转发端口,若备用端口port1平均剩余带宽小于带宽阈值t,则循环遍历portgroup中的其他端口,选取当前平均剩余带宽最大的端口,然后与带宽阈值t比较,若符合比较结果,则将该端口设置为转发端口,若遍历结束还是没有符合条件的备用端口,则选取当前平均剩余带宽最大的备用端口作为转发端口。具体的,sdn控制器使用负载均衡因子与权重的总和进行取模运算,根据结果选取weightportgroup中的端口编号,将该端口作为备选端口。比如通过报文首部5元组进行哈希运算得到一个报文的负载均衡因子为2,当port1和port2对应链路的容量分别为1m和4m,从而weightportgroup中端口的权重为1:4,共包含5个端口,根据端口顺序进行存储(不作具体限定),如下表所示。port1port2port2port2port2根据负载均衡因子与各端口权重之和进行取模运算,选择端口的结果为:2mod5=2,则根据weightportgroup中各端口的存储地址,选中端口port2。在本发明实施例中,根据端口权重的扩展,使得获取port2的概率加大,更容易使用带宽较大的链路。106、sdn控制器根据转发端口生成转发流表,并将转发流表发送至交换机。sdn控制器根据转发端口,将转发流表封转在packet_out消息中,发送给交换机,交换机将转发流表翻译写入到硬件资源,然后根据转发流表的指示的动作将将数据流转发。在上述方案中,sdn控制器根据交换机上报的包含链路容量链路信息计算sdn网络可使用的数据链路;然后将具有相同目的地址的数据链路对应的端口加入负载端口组,并根据各个数据链路的链路容量配置负载端口组中对应端口的权重,对应端口的权重为端口数量;获取交换机发送的数据流的首报文,获取首报文的头部信息;根据头部信息进行哈希(hash)运算获取负载均衡因子;根据负载均衡因子和负载端口组中各端口的权重选择转发端口;最后根据转发端口生成转发流表,并将转发流表发送至交换机,这样交换机可以根据该转发流表对数据流进行转发时;由于在确定转发流表时同时考虑了数据链路的链路容量,因此能够充分利用sdn网络的链路资源,提高网络整体性能。在另一实施例中,参照图3所示,还包括步骤107、sdn控制器监测负载端口组中各个端口的状态,当确定任一端口的状态为down,则将任一端口移出负载端口组,并删除任一端口对应的转发流表。由于删除了该任一端口对应的转发流表,因此当交换机再次接收到有无法转发的数据流时,sdn控制器确定需要重新选择转发端口,并执行步骤102之后的步骤。这样避免了端口状态对网络性能的影响。在如图3所示的一种实施例中,在步骤106之后还包括步骤108、sdn控制器监测转发端口的丢包率;当确定转发端口的丢包率大于丢包率阈值时,则重新选择转发端口,并删除转发端口对应的转发流表。在一段时间内进行通过监测转发端口的丢包率进行丢包统计,避免了因burst(突发)流量导致重新计算选路,导致tcp断连,降低网络性能。其中在步骤108种,一种示例性的方案中,重新选择转发端口,具体包括:sdn控制器获取被丢弃报文的头部信息;根据头部信息进行哈希(hash)运算获取新的负载均衡因子;根据新的负载均衡因子和负载端口组中各端口的权重重新选择转发端口。其中该过程具体实现方式与步骤103-105类似这里不再赘述。参照图4所示本发明的实施例提供一种sdn控制器,包括:链路管理模块41,用于根据交换机上报的链路信息计算sdn网络可使用的数据链路,其中所述链路信息包含链路容量;链路管理模块41,还用于将具有相同目的地址的数据链路对应的端口加入负载端口组,并根据各个数据链路的链路容量配置所述负载端口组中对应端口的权重,其中,所述对应端口的权重为端口数量;报文处理模块42,用于获取交换机发送的数据流的首报文,获取所述首报文的头部信息;路由控制模块43,用于根据所述报文处理模块42获取的所述头部信息进行哈希运算获取负载均衡因子;链路管理模块41,还用于根据所述路由控制模块43获取的负载均衡因子和所述链路管理模块41获取的所述负载端口组中各端口的权重选择转发端口;所述路由控制模块43,还用于根据所述链路管理模块41选择的转发端口生成转发流表,并将所述转发流表发送至交换机。可选的,如图5所示,sdn控制器还包括:所述链路管理模块41具体用于将根据所述负载均衡因子和所述负载端口组中各端口的权重和计算得出的端口作为备选转发端口,检测所述备选转发端口在预定时长内的平均剩余带宽;若确定所述平均剩余带宽大于或等于设定的带宽阈值,则将所述备选转发端口设置为转发端口;否则检测所述负载端口组中的其他端口在预定时长内的平均剩余带宽,并将所述负载端口组中平均剩余带宽最大的端口设置为转发端口。可选的,所述链路管理模块41,还用于监测所述负载端口组中各个端口的状态,当确定任一端口的状态为down,则将所述任一端口移出所述负载端口组,所述路由控制模块43还用于删除所述任一端口对应的转发流表。可选的,所述sdn控制器还包括:流量统计模块44,用于监测所述转发端口的丢包率;当确定所述转发端口的丢包率大于丢包率阈值时,则所述链路管理模块41用于重新选择转发端口,所述路由控制模块还用于删除所述转发端口对应的转发流表。此外,报文处理模块42还用于获取被丢弃报文的头部信息;所述路由控制模块43,还用于根据所述报文处理模块获取的所述被丢弃报文的头部信息进行哈希运算获取新的负载均衡因子;所述链路管理模块41,还用于根据所述路由控制模块获取的所述新的负载均衡因子和所述负载端口组中各端口的权重重新选择转发端口。在上述方案中,sdn控制器根据交换机上报的包含链路容量链路信息计算sdn网络可使用的数据链路;然后将具有相同目的地址的数据链路对应的端口加入负载端口组,并根据各个数据链路的链路容量配置负载端口组中对应端口的权重,对应端口的权重为端口数量;获取交换机发送的数据流的首报文,获取首报文的头部信息;根据头部信息进行哈希运算获取负载均衡因子;根据负载均衡因子和负载端口组中各端口的权重选择转发端口;最后根据转发端口生成转发流表,并将转发流表发送至交换机,这样交换机可以根据该转发流表对数据流进行转发时;由于在确定转发流表时同时考虑了数据链路的链路容量,因此能够充分利用sdn网络的链路资源,提高网络整体性能。此外,还提供一种计算可读媒体(或介质),包括在被执行时进行上述实施例中的方法的操作的计算机可读指令。另外,还提供一种计算机程序产品,包括上述计算机可读媒体(或介质)。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文简称:rom)、随机存取存储器(英文全称:randomaccessmemory,英文简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1