一种云计算网络中虚拟主机组播的分层复制传播方法与流程

文档序号:16847803发布日期:2019-02-12 22:28阅读:196来源:国知局
一种云计算网络中虚拟主机组播的分层复制传播方法与流程

本发明涉及计算机网络技术领域,尤其涉及一种云计算网络中虚拟主机组播的分层复制传播方法。



背景技术:

图1为位于物理网络之上的虚拟覆盖网络。如图1所示,在云计算网络中,物理主机和交换机构成支撑网络,物理主机虚拟化生成的虚拟主机及虚拟交换机在此基础上构成虚拟覆盖网络。

为了降低成本,云计算中心的接入交换机一般不支持组播功能,覆盖网络中虚拟主机的组播很难依赖于底层支撑网络的网络层组播功能,鉴于此,常用的方法是由虚拟主机或者虚拟交换机将组播报文转换为单播报文发送到所有目的节点,这导致以下几个方面的问题:

1)多份报文从源主机开始的网络发送到多个目的主机,会造成源主机的上行链路拥塞;

2)同样的报文在链路上重复发送,造成很大且不必要的网络负载;

3)源主机需要将报文多份拷贝后发送到多个目的主机,多次拷贝给源主机带来很大的负载,同时逐份对报文进行拷贝会造成很大延迟。



技术实现要素:

本发明针对上述现有技术的不足,提供了一种云计算网络中虚拟主机组播的分层复制传播方法,包括以下步骤:

虚拟交换机中的组播报文转发模块将虚拟主机和其所在的虚拟交换机加入或离开组播组的报文转发给控制器中的组成员管理模块;

所述组成员管理模块根据所述虚拟主机和其所在的虚拟交换机加入或离开组播组的报文更新组播成员表,并将更新后的组播成员表转发给所述控制器中的组播路由计算模块;

所述组播路由计算模块根据所述更新后的组播成员表中的各个虚拟交换机的信息构建组播树,并根据所述更新后的组播成员表中的各个虚拟主机的信息,向所述虚拟主机所在的虚拟交换机发送流控制命令;其中,利用云计算网络的结构选择相应的虚拟交换机构成所述组播树的节点;

所述组播报文转发模块根据所述流控制命令将相应的组播报文复制并传播到所述组播树中当前节点的子节点和当前节点下的对应所述组播组的虚拟主机;

其中,所述组播树的源节点将组播报文扩散到所述源节点邻近的d个子节点,再由所述d个子节点将组播报文逐层向最后一层子节点扩散,所述d值为所述组播树的扇出度数。

在一个实施例中,通过以下步骤构建组播树:

将源节点初始化为深度为0的发送节点,将所述组播组中的各个目的节点初始化为等待节点;

对每个pod和每个交换机分别进行参数计算;其中,所述参数包括:该pod或交换机的发送节点数、该pod或交换机的等待节点数、该pod或交换机中的发送节点在选择组播树下一层时需要选择的本地节点数以及该pod或交换机的本地输出链接数,所述pod为数据中心的一个管理单元,该管理单元包括独立的交换机和物理服务器;

为当前深度的每一发送节点选择下一层节点,并为当前深度下一层的每一发送节点继续选择下一层节点直至总等待节点数为0。

在一个实施例中,对每个pod和每个交换机通过表达式一计算该pod或交换机中的发送节点在选择组播树下一层时需要选择的本地节点数:

表达式一,

其中,表示podr或交换机r中的发送节点在选择组播树下一层时需要选择的本地节点数,表示podr或交换机r的等待节点数,l表示组播树的深度,n表示组播组中目的节点的数量,lr表示当前的发送节点位于组播树的层数;

通过表达式二计算podr或交换机r的本地输出链接数:

表达式二,

其中,表示podr或交换机r的本地输出链接数,表示podr或交换机r的发送节点数。

在一个实施例中,通过以下步骤为当前深度的发送节点m选择下一层节点:

根据当前深度的发送节点的ip地址计算其pod索引i和交换机索引j,节点m的剩余扇出度数de=d;

计算当前深度的发送节点在交换机j下选择的下一层节点数dl;

在交换机j下选择dl个下一层节点;

若de大于0且podi下有需要输入链接的交换机,则在podi中的交换机下选择下一层节点;

若de大于0且podi下不存在输出链接数小于0的交换机且有需要输入链接的除podi以外的pod,则在有需要输入链接的除podi以外的pod下选择下一层节点直到de等于0或者不存在输出链接数小于0的除podi以外的pod;

若不存在输出链接数小于0的pod且交换机j下还有等待节点,则继续在交换机j下选择下一层节点。

在一个实施例中,通过以下步骤计算当前深度的发送节点在交换机j下选择的下一层节点数dl:

若交换机j的输出链接数小于0,则设置当前深度的发送节点在交换机j下选择的下一层节点数dl为d;

若交换机j的输出链接数不小于0,则设置当前深度的发送节点在本地选择的下一层节点数dl为njl/njs;其中,njl表示组播树下一层需要选择的本地节点数,njs表示本地发送节点数。

在一个实施例中,通过以下步骤在交换机j下选择dl个下一层节点:

随机选择dl个节点作为当前深度的发送节点的子节点加入组播树;

交换机j的等待节点数dj减去dl,podi的等待节点数减去dl,de减去dl。

在一个实施例中,通过以下步骤在podi中的交换机下选择下一层节点:

选择podi下所有交换机中输出链接数小于0且最小的交换机的索引k;

在交换机k下随机选择一个节点作为下一层节点;

交换机k的等待节点数减去1,交换机k的输出链接数加1,交换机j的输出链接数减去1,de减去1。

在一个实施例中,通过以下步骤在有需要输入链接的除podi以外的pod下选择下一层节点直到de等于0或者不存在输出链接数小于0的除podi以外的pod:

选择输出链接数小于0且最小的pod的索引p;

选择podp下所有交换机中输出链接数小于0且最小的交换机的索引q;

在交换机q下随机选择一个节点作为下一层节点;

交换机q的等待节点数减去1,交换机q的输出链接数加1,podp的等待节点数减去1,podp的输出链接数加1,podi的输出链接数减去1,交换机j的输出链接数减去1,de减去1。

在一个实施例中,通过以下步骤继续在交换机j下选择下一层节点:

获取交换机j的等待节点数dj;

若dj大于0,随机选择min(de,dj)个节点作为当前深度的发送节点的子节点加入组播树;

交换机j的等待节点数减去min(de,dj),podi的等待节点数减去min(de,dj)。

在一个实施例中,通过以下步骤确定d值:

根据d值的取值范围中的每一备选d值构建组播树;

确定所述组播树的网络负载;

根据所述组播树的网络负载和所述组播组中目的节点的总个数确定所述组播树中单个目的节点的平均负载;

选择组播树中单个目的节点的平均负载最小的情况下所对应的的备选d值作为d值。

与现有技术相比,本发明的一个或多个实施例可以具有如下优点:

本发明利用云计算网络的结构特点选择相应的虚拟交换机构成所述组播树的节点,源节点将报文逐步扩散到邻近的d个节点,再由这d个节点逐步扩散,从而通过虚拟交换机实现了报文的组播,可以降低组播在网络中造成的流量负载、减低拥堵节点的负载以及保持网络链路负载均衡。

本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:

图1为位于物理网络之上的虚拟覆盖网络;

图2为本发明实施例的组播树的示意图;

图3为本发明实施例的虚拟主机组播方案的总体架构;

图4为本发明实施例的云计算网络中虚拟主机组播的分层复制传播方法的流程图;

图5为fat-tree云计算网络的结构和地址分配;

图6为本发明实施例的组播树的构建方法的流程图;

图7为本发明实施例的组播的传输时延和拷贝时延的曲线图;

图8为本发明实施例的组播的传输负载的曲线图;

图9为本发明实施例的上行链路的负载熵值的曲线图;

图10为本发明实施例的下行链路的负载熵值的曲线图;

图11为本发明实施例的组播容量的曲线图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

本发明实施例的云计算网络中虚拟主机组播的分层复制传播方法,采用sdn架构实现和控制覆盖网络中的虚拟交换机,使其完成组播功能,不需要对云计算网络中的硬件交换机进行任何修改。具体地,如图2所示,采用源虚拟交换机将组播报文逐步扩散到邻近的d个虚拟交换机,再由这d个交换机逐步扩散的策略;同时在扩散节点的选择上充分利用云计算网络的结构特点。下面进行详细说明。

图3为虚拟主机组播方案的总体架构。如图3所示,包括:组成员管理模块10、组播路由计算模块20和组播报文转发模块30。其中,组成员管理模块10和组播路由计算模20在控制器中实现,组播报文转发模块30在虚拟交换机中实现。

基于图3所示的虚拟主机组播方案的总体架构,本发明实施例提出了一种云计算网络中虚拟主机组播的分层复制传播方法。图4为本发明实施例的云计算网络中虚拟主机组播的分层复制传播方法的流程图,如图4所示,可以包括步骤s410至s440。

在步骤s410中,组播报文转发模块30将虚拟主机和其所在的虚拟交换机加入或离开组播组的报文转发给组成员管理模块10。该报文内容包含虚拟主机地址和组播组操作(加入/离开)。

在步骤s420中,组成员管理模块10根据虚拟主机和其所在的虚拟交换机加入或离开组播组的报文更新组播成员表,并将更新后的组播成员表转发给组播路由计算模块20。

在步骤s430中,组播路由计算模块20根据更新后的组播成员表中的各个虚拟交换机的信息构建组播树,并根据更新后的组播成员表中的各个虚拟主机的信息,向虚拟主机所在的虚拟交换机发送流控制命令;其中,利用云计算网络的结构选择相应的虚拟交换机构成组播树的节点。流控制命令遵循openflow协议标准,包括流信息(流是按某些ip报头字段对报文的归并,常用的5元组构成的流指具有相同源ip地址、目的ip地址、源端口、目的端口、协议的报文)及对应的操作。

在步骤s440中,组播报文转发模块30根据流控制命令将相应的组播报文复制并传播到组播树中当前节点的子节点和当前节点下的对应本组播组的虚拟主机。

如何构建组播树是本实施例的关键,下面具体介绍在组播树构建中选择下一层子节点时,如何选择组播树的扇出度数(也称扩散粒度)d值及下一层扩散的目的节点,从而获得较低的负载。

(1)组播树的扇出度数d值的选择方法

首先,根据d值的取值范围中的每一备选d值构建组播树。在本实施例中,d值的取值范围为2~10,从实验数据可以看到该范围的d值对应较优的性能参数。

其次,确定组播树的网络负载t。

假设一个报文穿越一个链路产生的负载为1,下面介绍基于该单位的相对负载来计算网络负载t的具体计算方案。

网络负载t:将组播报文传播到所有目的节点在网络链路上产生的负载。完成组播产生的负载为组播树上的每一跳对应的底层支撑网络的负载:

其中,t表示网络负载,n表示组播组中目的节点的数量,mi表示第i个节点,li表示从源节点到mi节点的组播树的路径长度,表示mi节点所在的组播路径上的第li-1层节点,表示mi节点所在的组播路径上的第li层节点,表示从节点到的距离(即从节点到节点的传输实际需要经过的底层支撑网络的跳数)。

再次,根据组播树的网络负载和组播组中目的节点的总个数确定组播树中单个目的节点的平均负载t/n。

最后,选择组播树中单个目的节点的平均负载最小的情况下所对应的的备选d值作为最终的d值。

上述方案仅为d值选择的一个实施例,在具体实施中,还可以采用其他方案来选择d值。

方案一,影响d值的因素包括:组播节点的分布、数据中心的网络结构、组播节点的性能和负载以及网络传输时延。一方面,增加d值可以减少覆盖网络的路径长度,减少传播时延;另一方面,d值的增大也会导致中间节点需要对报文进行复制传播的次数增多,给链路造成较大的负载,引起链路拥塞;而且复制操作会消耗服务器的cpu和网络资源。因此在构建组播树时需要综合考虑各种因素,合理选择d值。d值为n实际上就对应传统的从源节点到目的节点的逐份拷贝。

方案二,在覆盖网络中从i节点到j节点的传输实际需要经过底层支撑网络的传输,dis(i,j)是其对应底层支撑网络的跳数。该跳数值一方面影响到对支撑网络实际构成的负载,另一方面也会影响到实际的传输时延,在构建组播树时选择dis(i,j)较小时的d值。

本实施例在计算该跳数值时充分利用了云计算网络的结构特点,通过合理设计主机地址计算得到。

典型的如云计算网络常用的fat-tree结构,如图5所示,不同主机之间的路径跳数可以很容易地计算。具体地,位于同一个交换机下的2个主机之间的路径跳数为2。pod为数据中心的一个管理单元,该管理单元包括独立的交换机和物理服务器。位于同一个pod且在不同交换机下的2个主机之间的路径跳数为4。位于不同pod下的2个主机之间的路径跳数为6。可以通过给网络主机分配有规律的地址,从而使得通过地址可以很容易地判断主机之间的距离。在实际分配地址时,可以采用ip地址的第i到j位(二进制位)代表对应的pod,第k到l位代表对应的交换机的方法。

(2)组播树的构建思想分析

在给定d值的情况下,本实施例提出的组播树的构建方法,可以最小化组播树的深度,减少组播树的网络负载。

组播树中的每一跳由支撑网络的多个链路组成,尽量保持每一跳的报文复制在同一个交换机下或者同一个pod下的服务器之间,可以减少传播时延并减少链路负载。因此在本实施例中,只有在必要的情况下才进行交换机或者pod之间的报文传播。

分析一个podr的情况,每个组播节点处于3种情况之一:

完成节点:在组播树中,并且已经用完了它的复制度数,设其数量为

发送节点:在组播树中,并且正在寻找子节点,设其数量为

等待节点:还没有加入到组播树中的节点,设其数量为

本实施例采用宽度优先算法,当前的发送节点位于组播树的lr层,并且在寻找lr+1层的子节点。

在第lr+1层组播树中,每个发送节点,其子树能够覆盖的子节点数为:

其中,l表示组播树的深度,

为了保证组播树能够覆盖本pod的所有等待子节点,在选择lr+1层子节点时,必须选择在本pod中的节点数为:

因此,本pod中的节点可以选择的其他pod子节点数为:

其中,称为podr的输出链接数。

如果说明本pod需要来自其他pod的帮助,并且需要-个来自其他pod的输出链接(由其他pod传播组播报文到本pod的节点);否则说明本pod可以帮助其他pod。

当有多个pod需要帮助时,首先选择最需要帮助的pod,即最小的pod。

在没有其他pod需要帮助的情况下,在进行下一层子节点选择时可以选择更多的本地节点。

pod的这些评估参数同样适用于交换机。

(3)组播树的具体构建方法

图6为本发明实施例的组播树的构建方法的流程图。如图6所示,可以包括步骤s610至s670。

在步骤s610中,将源节点初始化为深度为0的发送节点,将组播组中的各个目的节点初始化为等待节点。当前深度lc=0,使用等待节点数n计算组播树的最小深度值:

在步骤s610执行后,总发送节点数ns=1,总等待节点数nw=n-1。

在步骤s620中,判断当前深度的总等待节点节点数nw是否为0,若是,转入步骤s660,若否,转入步骤s630。

在步骤s630中,对每个pod和每个交换机分别进行参数计算;其中,所述参数包括:该pod或交换机的发送节点数、该pod或交换机的等待节点数、该pod或交换机中的发送节点在选择组播树下一层时需要选择的本地节点数以及该pod或交换机的本地输出链接数。

具体地,首先,对每个pod和每个交换机分别计算发送节点数和等待节点数。

其次,对每个pod和每个交换机分别计算该pod或交换机中的发送节点在选择组播树下一层时需要选择的本地节点数:

其中,表示podr或交换机r中的发送节点在选择组播树下一层时需要选择的本地节点数,表示podr或交换机r的等待节点数,l表示组播树的深度,n表示组播组中目的节点的数量,lr表示当前的发送节点位于组播树的层数。

最后,对每个pod和每个交换机分别计算本地输出链接数:

其中,表示podr或交换机r的本地输出链接数,表示podr或交换机r的发送节点数。

在步骤s640中,为当前深度的每个发送节点选择下一层节点,当前处理的发送节点简称为节点m。

下面具体介绍如何为当前深度的节点m选择下一层节点。为当前深度的其他节点选择下一层节点的具体步骤与下述子步骤类似,不再赘述。

第一子步骤,根据当前深度的节点m的ip地址计算其pod索引i和交换机索引j,节点m的剩余扇出度数de=d。

第二子步骤,计算当前深度的节点m在交换机j下选择的下一层节点数dl。

具体地,若交换机j的输出链接数小于0,则设置当前深度的发送节点在交换机j下选择的下一层节点数dl为d;

若交换机j的输出链接数不小于0,则设置当前深度的发送节点在本地选择的下一层节点数dl为njl/njs;其中,njl表示组播树下一层需要选择的本地节点数,njs表示交换机j下本地发送节点数。

第三子步骤,在交换机j下选择dl个下一层节点。

具体地,首先,随机选择dl个节点作为当前深度的发送节点的子节点加入组播树。

其次,交换机j的等待节点数减去dl,podi的等待节点数减去dl,节点m的剩余扇出度数de减去dl。

判断de是否小于等于0,若是,转入第七子步骤,若否,转入第四子步骤。

第四子步骤,若de大于0且podi下有需要输入链接的交换机,则在podi中的交换机下选择下一层节点。

具体地,首先,选择podi下所有交换机中输出链接数小于0且最小的交换机的索引k。

其次,在交换机k下随机选择一个节点作为下一层节点。

最后,交换机k的等待节点数减去1,交换机k的输出链接数加1,交换机j的输出链接数减去1,剩余扇出度数de减去1。

判断de是否小于等于0,若是,转入第七子步骤;若否,判断podi下是否有需要输入链接的交换机,若是,转入第四子步骤,若否转入第五子步骤。

第五子步骤,若de大于0且podi下不存在输出链接数小于0的交换机且有需要输入链接的除podi以外的pod,则在有需要输入链接的除podi以外的pod下选择下一层节点直到de等于0或者不存在输出链接数小于0的除podi以外的pod。

具体地,首先,选择输出链接数小于0且最小的pod的索引p。

其次,选择podp下所有交换机中输出链接数小于0且最小的交换机的索引q。

再次,在交换机q下随机选择一个节点作为下一层节点。

最后,交换机q的等待节点数减去1,交换机q的输出链接数加1,podp的等待节点数减去1,podp的输出链接数加1,podi的输出链接数减去1,交换机j的输出链接数减去1,剩余扇出度数de减去1。

判断de是否小于等于0,若是,转入第七子步骤;若否,判断是否有需要输入链接的除podi以外的pod,若是,转入第五子步骤,若否,转入第六子步骤。

第六子步骤,若不存在输出链接数小于0的pod且交换机j下还有等待节点,则继续在交换机j下选择下一层节点。

具体地,首先,若dj大于0,随机选择min(de,dj)个节点作为当前深度的发送节点的子节点加入组播树。

其次,交换机j的等待节点数dj减去min(de,dj),podi的等待节点数减去min(de,dj)。

第七子步骤,更新参数,设置该发送节点为完成节点。

步骤s650,设置当前深度为lc+1,初始化上一层组播树中新加入的子节点为下一层组播树中的发送节点,计算总发送节点数和总等待节点数,转入步骤s620。

步骤s660,组播树构建完成。

(4)组播算法的性能评估

对本实施例的组播算法在云计算网络中的性能进行模拟,为了模拟不同的组播节点分布情况,这里采用s来表示组播目标节点分布的均匀度,s是组播目标节点在不同交换机的zipf分布值,k表示云计算网络的大小,对应k=16,云计算网络中实际可以接入的物理服务器节点数为1024。

性能评估参数包括:组播树的时延、平均负载、负载熵值和组播容量。

下面对上述参数进行分析。

1)组播树的时延

对于组播树中第i个节点mi,假设其在组播树中的经过的父节点依次为r1,r2...rj...,定义以下符号:

n:组播组中的目的节点数量;

mi:组播树路径上的第i个节点;

mi节点所在的组播路径上的第j层节点;

li:从源节点到mi节点的组播树的路径长度;

l:组播树的深度;

di:mi节点的扇出度数;

ri(i,j):如果在组播树中i为j的父节点,ri(i,j)表示从mi节点到mj节点的复制索引;将i的子节点进行排序,ri(i,j)为j节点的排序,值的范围为1到di;

dis(i,j):从i到j的距离,即从i节点到j节点的传输实际需要经过的底层支撑网络的跳数;

dr:复制时延,进行一次报文复制操作的时延;

dt:传输时延,在支撑网络上报文经过一条链路的时延;由于云计算网络的结构特点,这里假定每条链路的时延相同。

对于节点mi,li为从源节点到mi节点的组播树的路径长度,该路径上的节点为r0(源节点),r1,r2...rj...。

mi为组播树路径上的第i个节点,其时延构成包括复制时延和传输时延2部分,时延为:

2)网络负载

假设一个报文穿越一个链路产生的负载为1,基于该单位的相对负载来计算网络负载t,组播树中单个目的节点的平均负载为t/n。

3)负载熵值

链路负载的均衡度用熵来表示,设g为链路的数量,ti为第i个链路的负载。熵定义为:熵值越大,表示链路负载越均衡。

4)组播容量

组播容量表示组播能够达到的速度。对应每个链路,其组播容量为链路容量ci除以一个组播产生的负载ti。容量最小链路的值即为整个网络的组播容量。

通过对本实施例的组播算法的性能评估结果进行如下分析:

从图7可以看到,随着组播组的增大,传输时延和拷贝时延的增长速度很慢。

从图8可以看到,本实施例的平均负载要低于1到n拷贝的方法,尤其是随着n值的增大,本方法的平均负载会降低很多。

从图9、图10可以看出,本方法上行链路和下行链路(pod、switch、local三种)的负载熵值要高于1到n拷贝的方法,说明负载更均匀。

从图11可以看出,本实施例组播容量随n增大基本保持不变,但是1到n拷贝的方法会急剧下降。

由以上实验数据可以看到,本实施例的各项性能参数优于1到n拷贝的方法,而且随着n的增大,不会导致负载急剧增加,因此该方法具有良好的可扩展性。

综上,本发明实施例利用云计算网络的结构特点选择相应的虚拟交换机构成所述组播树的节点,源节点将报文逐步扩散到邻近的d个节点,再由这d个节点逐步扩散,从而通过虚拟交换机实现了报文的组播,可以降低组播在网络中造成的流量负载、减低拥堵节点的负载以及保持网络链路负载均衡。

虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。

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