一种动态带宽分配系统及分配方法与流程

文档序号:12376452阅读:551来源:国知局
一种动态带宽分配系统及分配方法与流程

本发明涉及数据中心网络中的网络资源分配技术领域,特别涉及一种动态带宽分配系统及分配方法。



背景技术:

随着许多云平台的出现,云计算越来越受到企业的欢迎。像CPU和内存资源一样,对应用来说,网络带宽也是一种十分重要的资源,然而当前云数据中心的网络是由许多不相关的用户以尽最大努力的方式共享的,这样不能保证用户获得公平的网络份额。因此,如何对网络资源进行分配,以使用户获得公平的网络带宽,保证用户的应用具有可预期的网络性能,成为云数据中心亟待解决的问题。

当前,研究人员提出了许多的网络分配方案。其中,通过为用户的虚拟机预留固定带宽的方式可以保证应用的网络性能,但是这会造成网络资源的低利用率,因为虚拟机的网络需求是不断变化的。还有许多方案提出根据网络的状态变化,动态的调整虚拟机的带宽。然而,这些方案大多是在主机端为虚拟机分配带宽,而且主机多是采用试探的方式增加或减少虚拟机的带宽。这是因为主机仅知道非常少的网络状态信息,它们并不能明确计算出各虚拟机当前公平的带宽。然而采用试探的方式调整带宽,主机需要迭代很多次才能得到公平的分配。



技术实现要素:

本发明的目的在于提供一种动态带宽分配系统及分配方法,能够准确的计算出各虚拟机对的新的公平带宽,并实时地控制各虚拟机对的数据发送速率。

为实现上述目的,本发明提供一种动态带宽分配系统,所述系统构建在软件定义网络的不同控制器上,所述系统包括虚拟机监控模块、带宽分配模块以及速率控制模块,其中:所述虚拟机监控模块以虚拟机对作为监控实体,所述虚拟机对包括源虚拟机和目的虚拟机;所述虚拟机监控模块实时监控各个虚拟机对的状态,所述状态包括活跃态和非活跃态;当虚拟机对的状态发生变化时,通知所述带宽分配模块为所述虚拟机对的源虚拟机分配带宽;所述带宽分配模块用于为处于活跃态的虚拟机对计算公平的带宽;所述带宽分配模块还用于将处于非活跃态的虚拟机对的带宽份额按照预设策略分配给其他处于活跃态的虚拟机对;所述速率控制模块通过设置OpenFlow交换机的meter表项来控制虚拟机对的发送速率;当所述带宽分配模块计算出状态发生变化的虚拟机对的新带宽时,所述速率控制器更改与状态发生变化的虚拟机对相对应的交换机的meter表项。

进一步地,所述带宽分配模块包括链路管理子模块和虚拟机管理子模块,其中,所述链路管理子模块用于在各链路上进行带宽分配;所述虚拟机管理子模块用于管理各个虚拟机对的信息,并在不同链路之间同步带宽分配数据。

进一步地,所述虚拟机管理子模块还用于维护虚拟机对的信息,所述信息包括虚拟机对的状态、虚拟机对的通信路径包含的链路,以及虚拟机对当前在各链路上分别获得的带宽;当有虚拟机对的状态发生变化时,通知所述链路管理子模块;同步各链路对每个虚拟机对的带宽分配数据。

进一步地,所述链路管理子模块用于基于预设带宽分配方法以及事件进行带宽分配,所述链路管理子模块为每条链路维护一个事件池,当一条链路上有事件发生时,发生事件的链路的旧带宽分配处于非公平状态,所述链路管理子模块在发生事件的链路上重新进行带宽分配。

为实现上述目的,本发明还提供一种动态带宽分配方法,所述方法包括:利用虚拟机监控模块实时监控各个虚拟机对的状态,所述虚拟机对包括源虚拟机和目的虚拟机,所述状态包括活跃态和非活跃态;当虚拟机对的状态发生变化时,通知带宽分配模块为所述虚拟机对的源虚拟机分配带宽;利用所述带宽分配模块为处于活跃态的虚拟机对计算公平的带宽并将处于非活跃态的虚拟机对的带宽份额按照预设策略分配给其他处于活跃态的虚拟机对;利用速率控制模块通过设置OpenFlow交换机的meter表项来控制虚拟机对的发送速率;当所述带宽分配模块计算出状态发生变化的虚拟机对的新带宽时,利用所述速率控制器更改与状态发生变化的虚拟机对相对应的交换机的meter表项。

进一步地,所述方法还包括:利用所述带宽分配模块为链路重新进行带宽分配,其中,所述链路为状态发生变化的虚拟机对经过的链路。

进一步地,利用所述带宽分配模块为链路重新进行带宽分配具体包括:初始化所述链路的剩余带宽;计算所述链路上带宽还未满足需求的处于活跃态的虚拟机对的权重和;根据所述剩余带宽和所述权重和,计算所述链路的单位权重剩余带宽;根据各个虚拟机对的权重,为所述各个虚拟机对分别分配新带宽;当虚拟机对的新带宽大于预设带宽上限时,将所述新带宽重新设置为所述预设带宽上限,并且收回多余的带宽,并将收回的带宽添加到所述链路的剩余带宽中;当所述链路的剩余带宽不为零时,将所述链路的剩余带宽分配给带宽未满足需求的虚拟机对;当所述链路上处于活跃态的虚拟机对的数量与带宽需求已经满足的虚拟机对的数量相同时,停止带宽分配的过程。

进一步地,所述方法还包括:为虚拟机对的每条链路维护一个事件池,其中,当一条链路上有事件发生时,发生事件的链路的旧带宽分配处于非公平状态;在发生事件的链路上重新进行带宽分配。

进一步地,在发生事件的链路上重新进行带宽分配具体包括:针对所述链路上发生的事件类型,对所述链路上发生的事件进行预处理;采用预设动态带宽分配算法在已选的链路上进行带宽分配;根据各个虚拟机对的带宽分配情况,判定是否生成与所述虚拟机对相关的带宽分配事件,以及确定生成的事件的类型。

进一步地,所述带宽分配模块包括链路管理子模块和虚拟机管理子模块;相应地,根据各个虚拟机对的带宽分配情况,判定是否生成与所述虚拟机对相关的带宽分配事件,以及确定生成的事件的类型具体包括:判断所述虚拟机管理子模块是否需要关于虚拟机对的带宽分配应答,如果需要则生成Rate-reply-v 事件,并将所述Rate-reply-v事件返回至所述虚拟机管理子模块;重新进行带宽分配的虚拟机对获得的新带宽是否大于之前分配的旧带宽,如果是,则生成Rate-increase-v事件,并将所述Rate-increase-v事件返回所述虚拟机管理子模块;判断所述新带宽是否小于所述旧带宽,如果是,则生成Rate-decrease-v事件,并将所述Rate-decrease-v事件返回所述虚拟机管理子模块;其中,所述Rate-reply-v事件、Rate-increase-v事件以及Rate-decrease-v事件为虚拟机对上预先定义的事件。

由上可见,本发明利用虚拟机监控模块维护的网络中各虚拟机对的状态视图,由带宽分配模块采用基于链路最大-最小公平的动态带宽分配方法在处于非公平状态的链路上进行带宽分配,并通过设置交换机上各虚拟机对的meter表项的速率参数来控制它们的发送速率。为了提高带宽分配的效率,带宽分配模块每次只处理一条链路上的带宽分配。因为带宽分配模块知道一条链路上的所有信息,包括链路存在哪些活跃虚拟机对,活跃虚拟机对的权重,活跃虚拟机对的瓶颈链路带宽信息,因此,它可以快速准确计算出各虚拟机对的公平带宽分配。同时,上述带宽分配方法是分布式的,可以有多个工作进程同时在不同的链路上进行带宽分配,这极大的提高了带宽分配的效率。另外,带宽分配模块包括链路管理子模块和虚拟机管理子模块,它们协作完成不同链路之间的带宽分配信息同步,从而保证了整个网络带宽分配的公平性,提高了网络的带宽利用率。

附图说明

图1是本发明中动态带宽分配系统的结构示例图;

图2是本发明中交换机的流表示例图;

图3是本发明中虚拟机监控模块的示例图;

图4是本发明中速率控制模块的示例图;

图5是本发明中带宽分配模块的示例图;

图6是本发明中带宽分配模块中虚拟机管理子模块的示例图;

图7是本发明中虚拟机管理子模块一个worker的工作流程图;

图8是本发明中动态带宽分配方法流程图;

图9是本发明中带宽分配完成后针对各虚拟机对的事件生成流程图;

图10是本发明中虚拟机管理子模块关于不同事件的处理示例图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施方式,都应当属于本申请保护的范围。

本申请提供一种动态带宽分配系统,所述系统构建在软件定义网络的不同控制器上,所述系统包括虚拟机监控模块、带宽分配模块以及速率控制模块,其中:所述虚拟机监控模块以虚拟机对作为监控实体,所述虚拟机对包括源虚拟机和目的虚拟机;所述虚拟机监控模块实时监控各个虚拟机对的状态,所述状态包括活跃态和非活跃态;当虚拟机对的状态发生变化时,通知所述带宽分配模块为所述虚拟机对的源虚拟机分配带宽;

所述带宽分配模块用于为处于活跃态的虚拟机对计算公平的带宽;所述带宽分配模块还用于将处于非活跃态的虚拟机对的带宽份额按照预设策略分配给其他处于活跃态的虚拟机对;

所述速率控制模块通过设置OpenFlow交换机的meter表项来控制虚拟机对的发送速率;当所述带宽分配模块计算出状态发生变化的虚拟机对的新带宽时,所述速率控制器更改与状态发生变化的虚拟机对相对应的交换机的meter表项。

在本实施方式中,所述带宽分配模块包括链路管理子模块和虚拟机管理子模块,其中,所述链路管理子模块用于在各链路上进行带宽分配;所述虚拟机管理子模块用于管理各个虚拟机对的信息,并在不同链路之间同步带宽分配数据。

在本实施方式中,所述虚拟机管理子模块还用于维护虚拟机对的信息,所述信息包括虚拟机对的状态、虚拟机对的通信路径包含的链路,以及虚拟机对当前在各链路上分别获得的带宽;当有虚拟机对的状态发生变化时,通知所述链路管理子模块;同步各链路对每个虚拟机对的带宽分配数据。

在本实施方式中,所述链路管理子模块用于基于预设带宽分配方法以及事件进行带宽分配,所述链路管理子模块为每条链路维护一个事件池,当一条链路上有事件发生时,发生事件的链路的旧带宽分配处于非公平状态,所述链路管理子模块在发生事件的链路上重新进行带宽分配。

本发明还提供一种动态带宽分配方法,所述方法包括:

利用虚拟机监控模块实时监控各个虚拟机对的状态,所述虚拟机对包括源虚拟机和目的虚拟机,所述状态包括活跃态和非活跃态;当虚拟机对的状态发生变化时,通知带宽分配模块为所述虚拟机对的源虚拟机分配带宽;

利用所述带宽分配模块为处于活跃态的虚拟机对计算公平的带宽并将处于非活跃态的虚拟机对的带宽份额按照预设策略分配给其他处于活跃态的虚拟机对;

利用速率控制模块通过设置OpenFlow交换机的meter表项来控制虚拟机对的发送速率;当所述带宽分配模块计算出状态发生变化的虚拟机对的新带宽时,利用所述速率控制器更改与状态发生变化的虚拟机对相对应的交换机的meter表项。

在本实施方式中,所述方法还包括:

利用所述带宽分配模块为链路重新进行带宽分配,其中,所述链路为状态发生变化的虚拟机对经过的链路。

在本实施方式中,利用所述带宽分配模块为链路重新进行带宽分配具体包括:

初始化所述链路的剩余带宽;

计算所述链路上带宽还未满足需求的处于活跃态的虚拟机对的权重和;

根据所述剩余带宽和所述权重和,计算所述链路的单位权重剩余带宽;

根据各个虚拟机对的权重,为所述各个虚拟机对分别分配新带宽;

当虚拟机对的新带宽大于预设带宽上限时,将所述新带宽重新设置为所述预设带宽上限,并且收回多余的带宽,并将收回的带宽添加到所述链路的剩余带宽中;

当所述链路的剩余带宽不为零时,将所述链路的剩余带宽分配给带宽未满足需求的虚拟机对;

当所述链路上处于活跃态的虚拟机对的数量与带宽需求已经满足的虚拟机对的数量相同时,停止带宽分配的过程。

在本实施方式中,所述方法还包括:

为虚拟机对的每条链路维护一个事件池,其中,当一条链路上有事件发生时,发生事件的链路的旧带宽分配处于非公平状态;

在发生事件的链路上重新进行带宽分配。

在本实施方式中,在发生事件的链路上重新进行带宽分配具体包括:

针对所述链路上发生的事件类型,对所述链路上发生的事件进行预处理;

采用预设动态带宽分配算法在已选的链路上进行带宽分配;

根据各个虚拟机对的带宽分配情况,判定是否生成与所述虚拟机对相关的带宽分配事件,以及确定生成的事件的类型。

在本实施方式中,所述带宽分配模块包括链路管理子模块和虚拟机管理子模块;相应地,根据各个虚拟机对的带宽分配情况,判定是否生成与所述虚拟机对相关的带宽分配事件,以及确定生成的事件的类型具体包括:

判断所述虚拟机管理子模块是否需要关于虚拟机对的带宽分配应答,如果需要则生成Rate-reply-v事件,并将所述Rate-reply-v事件返回至所述虚拟机管理子模块;

重新进行带宽分配的虚拟机对获得的新带宽是否大于之前分配的旧带宽,如果是,则生成Rate-increase-v事件,并将所述Rate-increase-v事件返回所述虚拟机管理子模块;

判断所述新带宽是否小于所述旧带宽,如果是,则生成Rate-decrease-v事件,并将所述Rate-decrease-v事件返回所述虚拟机管理子模块;

其中,所述Rate-reply-v事件、Rate-increase-v事件以及Rate-decrease-v事件为虚拟机对上预先定义的事件。

具体地,请参阅图1,带宽分配系统构建在控制器上,系统主要包括三个模块:带宽分配模块,虚拟机监控模块和速率控制模块。其中,虚拟机监控模块监测网络中各虚拟机对的状态,带宽分配模块负责为各个虚拟机对计算公平的带宽分配,而速率控制模块则根据带宽分配模块计算的带宽来控制各虚拟机对的发送速率。在本实施方式中采用分布式带宽分配方案,带宽分配系统由多个子系统构成,分别安装在不同的控制器上,这样可以提高系统的可扩展性和带宽分配效率。

请参阅图2。一个虚拟机对的数据流会经过若干个OpenFlow交换机,在每个交换机上为该虚拟机建立了一个流表项。每个流表项的匹配字段为源IP和目的IP,属于一个虚拟机对的所有数据流都会匹配到同一个流表项上,交换机按照匹配字段转发数据包。每个流表项会连接一个meter表项,用于限制虚拟机对的数据发送速率。

请参阅图3,虚拟机监控模块采用sflow技术来监测虚拟机对的状态,在每个交换机中配置一个sflow代理,在监控模块中配置一个sflow收集器。Sflow代理以预设的频率(如1/100)对数据包随机采样,并将采样的数据包头发送到sflow收集器。Sflow收集器根据收到的数据包头,可以计算出各虚拟机对的数据发送速率。当一个虚拟机对的数据发送速率超过一个阈值,就表明虚拟机对的状态为活跃状态,否则为非活跃状态。当有虚拟机对的状态发生变化,虚拟机监控模块会通知带宽分配模块。

请参阅图4,速率控制模块通过设置交换机的meter表项来控制虚拟机对的发送速率。当带宽分配模块为虚拟机对分配的带宽发生变化时,速率控制器就会更改相应交换机的meter表项。我们在虚拟机对的第一跳交换机设置它的meter表项,meter表项有一个速率参数,当虚拟机对的发送速率超过这个速率参数,它就会将超过的数据丢弃。

请参阅图5,宽带分配模块负责为活跃的虚拟机对分配带宽。它包括两个子模块:链路管理子模块和虚拟机管理子模块。链路管理子模块负责在链路上进行带宽分配,而虚拟机管理子模块负责管理虚拟机对的信息,并在各链路上同步带宽分配信息。

虚拟机管理子模块和链路管理子模块都是基于事件进行工作的。发生在虚拟机对上的事件共有五种:Flow-start-v、Flow-end-v、Rate-increase-v、Rate-decrease-v、Rate-reply-v。其中,前两种是虚拟机监控模块发送的虚拟机对状态变化事件,后两种是链路管理子模块发送的带宽分配事件。发生在链路上的事件有4种:Flow-start-l、Flow-end-l、Rate-increase-l、Rate-decrease-l。当链路发生这些事件后,它们的状态会变为非公平状态,需要重新进行带宽分配。

请参阅图6,链路管理子模块为每一条链路维护了一个事件池,发生在这条链路的事件都会放到它的事件池中。当一条链路的事件池不为空时,这条链路的带宽分配就处于非公平状态。链路管理子模块有多个woker,一个worker每次选择一条处于非公平状态的链路,对链路重新进行带宽分配,并生成带宽分配时间发送给虚拟机管理子模块。

请参阅图7,该worker每次选择一个处于非公平状态的链路进行带宽分配,工作流程包括以下步骤:

1)对发生在该链路上的事件进行预处理。

2)采用基于链路最大-最小公平的动态带宽分配算法在已选的链路上进行带宽分配。

3)根据各个虚拟机对的带宽分配情况,决定是否生成关于该虚拟机对的带宽分配事件,以及生成何种类型的事件,并将生成的事件交给虚拟机管理子模块。

具体的,步骤1)对发生在该链路上的事件进行预处理,下面是这四种事件的预处理方式:

11)Flow-start-l事件,在引发此事件的虚拟机对上设置待回复标志,当带宽分配完成后,生成Rate-reply-v事件。在为该虚拟机分配带宽时,不存在带宽上限rbot

12)Flow-end-l事件,在进行带宽分配时,不再为产生该事件的虚拟机对分配带宽。

13)Rate-increase-l事件,在引发此事件的虚拟机对上设置待回复标志,当带宽分配完成后,生成Rate-reply-v事件。在为该虚拟机对分配带宽时,它的带宽上限是Rate-increase-l事件附带的带宽rbot

14)Rate-decrease-l事件,在为产生该事件的虚拟机对分配带宽时,它的带宽上限是Rate-decrease-l附带的带宽rbot

请参阅图8,步骤2)中带宽分配算法主要包括以下步骤:

21)初始化链路的剩余带宽Rl=Cl

22)计算出链路l上还未满足的活跃虚拟机对的权重和,其中,Γ表示链路l上的活跃虚拟机对,Φ表示带宽需求已经得到满足的虚拟机对集合。如果Φ=Γ,表明所有虚拟机对都得到满足,则算法结束。

23)计算链路的单位权重剩余带宽δ=Rl/wsum

24)根据各虚拟机对的权重来增加它们的带宽,对于每一个未满足的活跃虚拟机对i,增加它的带宽

25)对于每个虚拟机对i,如果它有一个带宽上限而且步骤24)为它分配的新带宽大于那么要将设置为并且收回多出的带宽,添加到链路的剩余带宽中然后将虚拟机对i加入到需求满足的虚拟机对集合Φ中。而如果虚拟机对i并没有上限,则不做处理。

26)经过步骤25),如果链路的剩余带宽Rl不等于零,那么需要将Rl分配给仍未满足的虚拟机对,跳回步骤22);否则,算法结束。

请参阅图9,对于每个虚拟机对,处理过程主要包括以下步骤:

31)虚拟机管理子模块是否需要关于虚拟机对i的带宽分配应答,如果需要则生成Rate-reply-v事件,并返回。

32)新分配中虚拟机对i获得的带宽是否大于旧分配中虚拟机对i获得的带宽如果是,则生成Rate-increase-v事件,并返回。

33)是否小于如果是,则生成Rate-decrease-v事件。返回。

请参阅图10。虚拟机管理子模块有三个功能,一是维护虚拟机对的信息,包括各虚拟机对的状态,各虚拟机对的通信路径包括的链路,以及它们当前在各链路上分别获得的带宽;二是当有虚拟机的状态发生变化,通知链路管理子模块;三是同步各链路对每个虚拟机对的带宽分配。其中后面两个任务,是通过事件处理例程来实现的。发生在虚拟对上的事件共有5种:Flow-start-v、Flow-end-v、Rate-increase-v、Rate-decrease-v、Rate-reply-v。其中,前2种事件是由虚拟机监控模块引起的,后3种是由链路管模块引起的。下面详细介绍这5种事件产生的原因及处理方法:

1)Flow-start-v事件,该事件由虚拟机监控模块产生的,它检测到一个虚拟机对的状态变为活跃状态。虚拟机管理子模块会将Flow-start-l事件放入该虚拟机对的3条链路的事件池中,请求链路管理子模块为该虚拟机对分配带宽,见图10(a)。

2)Flow-end-v事件,该事件也是有虚拟机监控模块产生的,它检测到一个虚拟机对的状态变为非活跃状态。虚拟机管理子模块会将Flow-end-l事件放入该虚拟机对的3条链路的事件池中,请求链路管理子模块为该虚拟机对分配带宽,见图10(b)。

3)Rate-increase-v事件,当虚拟机对的瓶颈链路在一次带宽分配中可以为它分配更多的带宽时,会产生该事件。虚拟机管理子模块会将Rate-increase-l事件放入其他非瓶颈链路的事件池中,请求各链路为该虚拟机对增加带宽,见图10(c)。需要注意的是,部分非瓶颈链路可能并不能增加那么多的带宽,那么能增加的带宽最少的链路会成为该虚拟机对的新瓶颈链路。

4)Rate-decrease-v事件,当虚拟机对的一条链路在一次带宽分配后可以为它分配的带宽减少是,会产生该事件。虚拟机管理子模块会将Rate-decrease-l事件放入其他链路的事件池中,其他链路会收回减少的带宽,见图10(d)。这时,该链路会成为虚拟机对的新瓶颈链路。

5)Rate-reply-v事件,对于发生了上面的事件1)和事件3)的虚拟机对来说,都需要各链路回复它们为该虚拟机对分配的带宽。当一个虚拟机对收到所有的回复后,它会选择最小的带宽作为发送带宽,并向其他链路的事件池中放置Rate-decrease-l事件。

由上可见,本发明利用虚拟机监控模块维护的网络中各虚拟机对的状态视图,由带宽分配模块采用基于链路最大-最小公平的动态带宽分配方法在处于非公平状态的链路上进行带宽分配,并通过设置交换机上各虚拟机对的meter表项的速率参数来控制它们的发送速率。为了提高带宽分配的效率,带宽分配模块每次只处理一条链路上的带宽分配。因为带宽分配模块知道一条链路上的所有信息,包括链路存在哪些活跃虚拟机对,活跃虚拟机对的权重,活跃虚拟机对的瓶颈链路带宽信息,因此,它可以快速准确计算出各虚拟机对的公平带宽分配。同时,上述带宽分配方法是分布式的,可以有多个工作进程同时在不同的链路上进行带宽分配,这极大的提高了带宽分配的效率。另外,带宽分配模块包括链路管理子模块和虚拟机管理子模块,它们协作完成不同链路之间的带宽分配信息同步,从而保证了整个网络带宽分配的公平性,提高了网络的带宽利用率。

上面对本申请的各种实施方式的描述以描述的目的提供给本领域技术人员。其不旨在是穷举的、或者不旨在将本发明限制于单个公开的实施方式。如上所述,本申请的各种替代和变化对于上述技术所属领域技术人员而言将是显而易见的。因此,虽然已经具体讨论了一些另选的实施方式,但是其它实施方式将是显而易见的,或者本领域技术人员相对容易得出。本申请旨在包括在此已经讨论过的本发明的所有替代、修改、和变化,以及落在上述申请的精神和范围内的其它实施方式。

本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。

虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

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