具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进一步进行清楚、完整、详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
为了更好地进行网络虚拟化和应用的创新,可以将软件定义网络的思想应用到数据中心网络中。传统的软件定义网络依赖于一个中心化的控制器,这个控制器的性能和可扩展性都有限。虽然最近有一些想法,想要使用多个控制器来控制一般的网络,但是SDDN还缺乏一个可扩展的和可靠的数据平面。当引入多个控制器到SDDN时,将会带来一个新的问题,我们叫做控制器的覆盖问题,包括最小覆盖问题与最小容错覆盖问题。
最小覆盖问题是来找到最少数量的足够的控制器和它们的位置,从而确保每个交换机至少被一个控制器控制。为解决最小覆盖问题,我们首先阐述了单个控制器的覆盖模型和对SDDN中控制器的最小覆盖问题进行了建模。这需要找到最小数量的有效地控制器和它们应该被部署的位置,并且确保每个交换机至少被一个控制器控制。可以证明,这个问题是一个NP完全问题,不存在最优解,因此我们在Jellyfish拓扑下提出了一个近似算法。需要说明的是,在SDDN中控制器并非越多越好,更多的控制器不仅仅会引发额外的花费,而且会增加控制器之间同步时的复杂性,反而使SDDN的工作效率下降。
最小容错覆盖问题是来找到最小数量的控制器和它们的位置,从而确保每个交换机至少被两个控制器控制,这样,当主控制器失效的时候,它所控制的每一个交换机将被另一个控制器所接管。最小容错覆盖问题通常是针对数据中心里常见的失效所设计的,任何由主服务器或者是相关的交换机或者是连接到交换机的链路所引发的失效都将使一个控制器不能正常的工作,而被这些失效的控制器覆盖的交换机将不能处理到达的新流。为了抵御控制器的失效而提出的SDDN中控制器的最小容错覆盖问题也是一个NP完全问题,因此在Jellyfish的拓扑下,我们进一步的设计了一个近似算法。
大量地模拟实验与评估结果表明,我们的方法能有效地所需的控制器的数量,改善控制平面的容错能力以及减少状态同步的花费与负载。需要指出的是,本文中公开的方法稍加修改便可应用到其它的网络结构是以交换机为中心的数据中心网络中。
如图1所示,根据本发明的实施例提供的基于软件定义数据中心网络的控制器的最小覆盖部署方法包括:
步骤S101,在软件定义数据中心网络中构建Jellyfish拓扑,生成交换机的随机正则图,确定交换机之间的链接关系;
步骤S103,确定每个控制器的能力限制、一个交换机到它的支配交换机的传播时延限制、交换机的覆盖限制;
步骤S105,根据交换机的总数目、交换机之间的链接关系、每个控制器的能力限制、一个交换机到它的支配交换机的传播时延限制、交换机的覆盖限制,计算出最小覆盖的控制器集合。
其中,确定交换机之间的链接关系、确定每个控制器的能力限制、一个交换机到它的支配交换机的传播时延限制、交换机的覆盖限制包括:获取软件定义数据中心网络中交换机的总数、软件定义数据中心网络中每个交换机的可用端口数、每个交换机用于与其它交换机互联的端口数,构建Jellyfish拓扑的随机正则图;根据数据中心里交换机的集合、随机正则图中交换机之间链路的集合,获得交换机之间的拓扑无向图;根据交换机之间的拓扑无向图,获得表示一个交换机是否是一个支配交换机的二元向量、表示一个交换机是否覆盖另一个交换机的二元向量、表示从一个交换机到另一个交换机的传播时延的时延矩阵、表示一秒内从一个交换机发往另一个交换机的平均流的数量的流量矩阵、每个交换机每秒能处理的流的最大数量、从一个交换机到支配交换机允许的传播时延;根据表示一个交换机是否是一个支配交换机的二元向量、表示一个交换机是否覆盖另一个交换机的二元向量、表示从一个交换机到另一个交换机的传播时延的时延矩阵、表示一秒内从一个交换机发往另一个交换机的平均流的数量的流量矩阵、每个交换机每秒能处理的流的最大数量、从一个交换机到支配交换机允许的传播时延,获得最小覆盖的限制条件。
其中,计算出最小覆盖的控制器集合包括:得到每个交换机的邻居交换机;按照宽度优先搜索的方式依次检查每个交换机,如果一个交换机还没有被任何控制器控制,它被选作一个支配交换机,与一个控制器直接相连;对支配交换机进行判定,如果支配交换机覆盖的交换机的数量超过了控制器的能力,则终止对支配交换机的搜索,继续检索下一个交换机;选择支配交换机的一个邻居交换机,并对支配交换机进行判定,如果支配交换机的邻居交换机到支配交换机的时延超出了时延所允许的跳数,则跳过邻居交换机,继续检索下一个邻居交换机;否则,支配交换机覆盖邻居交换机,并且支配交换机的控制器能力将减少1,继续检索下一个邻居交换机,直到邻居交换机都被检测。
为了改善数据中心传统的类似树的拓扑,一些扁平化的拓扑已经被提出,本方法使用一个有代表性的以交换机为中心的扁平拓扑Jellyfish作为基本的软件定义的数据中心网络。在Jellyfish拓扑中,所有的交换机形成一个随机正则图。设每一个交换机包括k个可用端口,k个端口中的r个与其它的交换机进行互联,剩余的k-r个端口被用来连接服务器进行数据交换工作,其中0<r<k。图3示出的是一个有12个交换机的Jellyfish的拓扑图,每一个交换机使用3个端口来连接其它的交换机。一个随机正则图可以被表示成RRG(N,k,r),其中N是交换机的数量。
我们将一个与控制器直接相连的交换机称为一个支配交换机。支配交换机覆盖这个控制器所控制的所有交换机,包括它本身。如果一个交换机到一个支配交换机的距离是c跳,而且这个支配交换机覆盖了这个交换机,我们称这个支配交换机能c-覆盖该交换机。
将数据中心网络的功能应用到SDDN的前提条件是每一个交换机至少被一个控制器所控制。前文已经阐明,由于控制器的能力有限,在大规模的数据中心里使用一个控制器来控制所有的交换机是不实际的,一个控制器只能控制数据中心里的一部分交换机。如果一个控制器控制了太多的交换机,该控制器将变成网络应用的瓶颈。也就是说,控制器的能力决定了它所能控制的交换机的数量。
传播时延从另一个方面限制了控制器能控制的交换机的数量。通常可以认为,传播时延由控制器的支配交换机到一个普通交换机的距离所决定。对于给定的一个阈值c,一个交换机到控制器的支配交换机的距离在c跳以内、且控制器的容量是足够的时候,这个交换机才有可能会被这个控制器所控制,在这种情况下,这个支配交换机能c-覆盖这个交换机。图4示出的是一个有12个交换机的Jellyfish的1-覆盖拓扑图,在图4中时延的限制是1跳,且每个控制器可以同时控制4个交换机,连接线箭头指向方向为控制器的控制方向。对于支配交换机switch1,switch1的连接线箭头指向switch1、switch2、switch3和switch9,即switch1的控制器1-覆盖switch1、switch2、switch3和switch9。这说明传播时延和控制器的能力共同限制了一个控制器所能控制的交换机的个数。
根据单个控制器的覆盖模型,SDDN应该提供一个由多个控制器构成的分布式的控制平面。SDDN中控制器的最小覆盖问题是决定控制器的个数和它们的位置,从而确保每个交换机被至少一个控制器控制。我们已经确定,一个支配交换机能够覆盖被这个相应的控制器所控制的所有交换机,包括它自身。因此,控制器的最小覆盖问题被转换成了寻找支配交换机所构成的最小集合。在图4中,所有支配交换机以方块表示,一般交换机以圆表示,则如图4所示{switch1、switch4、switch6、switch7、switch10}是这个支配交换机的最小集合,这个集合能1-覆盖数据中心里的所有交换机。给定最小交换机的集合,则控制器的部署位置能按照一种简单的方式找到。每一个支配交换机分配与它相连的服务器中的一个座位控制器的主服务器。很明显,最小覆盖是充分必要的:支配交换机中的任何一个交换机被移除后,将会有一些交换机不能被覆盖;同样地,如果任何一个支配交换机被另一个替代了,比如,用switch8替代switch1后会无法保证每一个交换机都被控制;已经满足最小覆盖之后,也没有必要来部署更多的控制器。
为了形式化控制器的最小覆盖问题,我们可以用N来表示数据中心里交换机的集合,E代表交换机之间链路的集合。这样,交换机之间的拓扑被建模成一个无向图G(N,E)。使用二元向量X=<x1,x2,...,x|N|>来表示是否一个交换机是一个支配交换机。如果xj=1,表示switchj是一个支配交换机;否则,switchj不是一个支配交换机。定义另一个二元向量Y=[yij]|N|×|N|,yij=1表示switchj是一个支配交换机并且switchj覆盖switchi。T=[tim]|N|×|N|表示一个流量矩阵,tim代表一秒内从switchi发往switchm的平均流的数量。同时,给定每个控制器的能力,k表示每个交换机每秒能处理的流的最大数量。定义D=[dij]|N|×|N|表示时延矩阵,dij表示从switchi到switchj的传播时延。我们还假设,从switchi到支配交换机switchj允许的传播时延是ε。
该覆盖问题的优化目标是最小化控制器的数量,也就是支配交换机的数量,表示如式(1):
min∑f∈Nxf (1)
同时,为了确保一个可行的解,下面的限制条件(2)到(7)应该被满足。
不等式(2)能够保证控制器可以处理他所控制的所有交换机的流路径的计算请求;不等式(3)可以保证从一个交换机到它的支配交换机的传播时延不会超过给定的阈值;不等式(4)和(5)可以确保每个交换机至少被一个控制器所控制;公式(6)和(7)展现了两个二维变量xj和yij。
上述的优化问题是一个整数线性规划问题,而整数线性规划问题是一个著名的NP完全问题,该问题不能在多项式时间内被解决。因此我们设计了一个专用的方法来近似该问题的最优解。
本方法所述的SDDN中的最小覆盖问题区别于传统的支配问题和覆盖问题。传统的支配问题指的是支配集中的点能支配它的1跳邻居;传统的覆盖问题指的是点能覆盖与它相连的边。对于SDDN中的最小覆盖问题,一个支配交换机,除了覆盖它的1跳邻居交换机,它还可以覆盖在它的覆盖范围内的更远的交换机,即每个控制器的控制范围可能多于1跳。而且,即使传播时延的限制可以被满足,但如果控制器没有足够的能力,那么那些交换机也不能被该控制器所控制。也就是说,SDDN中的最小覆盖问题有更多的限制需要满足。因此,通过简单地使用传统的支配问题和覆盖问题的解决方法,并不能很好地解决该问题。
因此,基于所有的交换机都必须被控制,我们提出了一个近似算法,表示为ACC。算法ACC的输入包括,Jellyfish的拓扑G,交换机的数目N,每个交换机用来与其它交换机互联的端口数d,能够满足时延限制的跳数r,每个控制器的能力u。注意,一个控制器的能力通过它所控制的交换机的数目来表示。每条流的时延限制,通过交换机到相应的控制器的跳数来表示。
算法ACC可用伪代码表示如下:
正如算法ACC所展示的,我们首先从数据中心的拓扑G中得到每个交换机的邻居交换机。然后,我们依次检查每个交换机。如果一个交换机还没有被任何控制器控制,它被选作一个支配交换机和将与一个控制器直接相连。该支配交换机通过调用函数Control将递归地覆盖一些交换机,函数Control按照宽度优先搜索的方式执行。如果递归的深度超出了时延所允许的跳数或者是覆盖的交换机的数量超过了控制器的能力,函数Control的搜索将被终止。在每一个递归周期里,支配交换机的每一个j跳邻居将被依次检查。j表示递归的深度。如果一个j跳邻居的交换机还没有被控制,这个支配交换机将覆盖它,并且相应控制器的能力将减少1。
可以证明,算法ACC能保证数据中心里的每个交换机都至少被一个控制器所覆盖。显然地,我们的算法ACC执行期间,每一个交换机都将被检查。如果一个交换机还没有被控制,一个控制器将被部署到该交换机所连接的一台服务器上,该交换机将变成一台支配交换机,而这个新的支配交换机覆盖了它本身以及其它的一些交换机。按照这种方式,算法ACC能保证,当算法结束时,所有的交换机都将被控制。
对于算法ACC,在软件定义的数据中心里,让h表示一个控制器实际控制的交换机的最大数量。函数Control的时间复杂度是O(h)。主函数有一个循环,时间复杂度为O(N),N代表数据中心里交换机的个数。因此,算法ACC的时间复杂度为O(N×h)。
模拟结果表明,算法ACC具有良好的性能。我们在所需的控制器数量方面,评估算法ACC和随机算法的性能。在每种配置下,这两个算法操作100多轮,我们比较它们所使用的控制器的平均数量。随机算法背后的思想是随机选择控制器的位置,它能覆盖模型控制所有交换机部分。如果至少有一个交换机没有被控制的时候,一个新的控制器将被随机部署。该算法重复,直到每一个开关在数据中心已经由至少一个控制器控制。
首先,我们评估了算法ACC在数据中心规模变化时的性能。结果表明,无论数据中心的规模大小,算法ACC总是利用比随机算法少得多的控制器。
很明显,一个控制器的能力直接影响到所需数量的控制器。1500台服务器的集群展示中值流到达率是每秒100k,在一个服务器上一个流的平均产生率是每秒67。当一个交换机带有24个端口其中有8个与其他交换机互联,一个开关可以连接16个服务器,中值流到达率是每秒1072个。此外,独个的控制器可以处理每秒至少30k流。因此,很容易计算出控制器的能力是27。也就是说,一个控制器可以控制27个交换机。此外,一个控制器最远能够控制2跳远的交换机,如此以满足传播延迟的约束。
图6表明,当每个交换机保留8个端口来连接其他交换机时,无关于交换机的数量,算法ACC总是部署比随机算法要少的控制器。此外,算法ACC部署了的控制器的数量接近一个下界。该下界是交换机的总数对一个控制器的能力之比。控制器的控制范围可能重叠,因此最佳的解决方案所需的控制器的数量比下界还要多。因此,算法ACC的解决方案也接近最优解。所需数量的控制器在交换机的数量从100到1000变化时增加,即数据中心规模从1600增加到16000。为了测量端口分配策略的影响,我们进一步使每个交换机保留12个端口连接交换机,可以从图7看出,算法ACC仍然优于随机算法,无关交换机的数量。此外,算法ACC的控制器数量更接近理论下限。当连接交换机的端口的数量设置为其他值时,也取得了类似的结果。
其次,我们评估算法ACC在控制器不同能力下的性能。我们发现算法ACC总是利用的控制器比随机算法少得多,不管一个控制器的能力如何。
给定一个Jellyfish结构带有1000个交换机的数据中心,控制器能力从10到50变化。也就是说,一个控制器可以控制的交换机的数量范围从10到50。为了满足传播延迟的约束,每个控制器的覆盖范围是最多2跳。在每个交换机分配8或12个端口来连接其他的交换机的条件下,我们评估算法ACC和随机算法的性能。
图8表明,当每个交换机保留8个端口来连接其他交换机时,算法ACC总是利用比随机算法更少的控制器。此外,当控制器的控制范围能力从10到60变化时,我们的算法和随机算法所需的控制器的数量都会随之减少。然而,当一个控制器的能力增加到50,所需的控制器的数量不会继续下降,原因在于,每个控制器的覆盖范围成为了主要的影响因素。虽然一个控制器有足够的能力,其他距离这个控制器太远的交换机不满足传播延迟的约束。为了测量端口的分配策略的影响,我们让每个交换机分配12个端口连接交换机,从图9可以看到,算法ACC仍然优于随机算法,不管每个控制器的能力如何。当连接交换机的端口数量设置为其他值时,类似的结果也会出现。
由此可知,算法ACC总是部署比随机算法更少的控制器。此外,当一个控制器的能力超过一个阈值,影响控制器数量的主要因素成为连接交换机端口的数量和传播延迟的约束。
根据本发明的一个实施例,提供了一种基于软件定义数据中心网络的控制器的最小容错覆盖部署方法。
如图2所示,根据本发明的实施例提供的基于软件定义数据中心网络的控制器的最小容错覆盖部署方法包括:
步骤S201,在软件定义数据中心网络中构建Jellyfish拓扑,生成交换机的随机正则图,确定交换机之间的链接关系,获得随机正则图的1-覆盖控制器的最小集合;
步骤S203,确定每个控制器的能力限制、一个交换机到它的支配交换机的传播时延限制、交换机的2-覆盖限制、之前的控制器继续有效限制;
步骤S205,根据交换机的总数目、交换机之间的链接关系、每个控制器的能力限制、一个交换机到它的支配交换机的传播时延限制、交换机的2-覆盖限制、1-覆盖控制器的最小集合,计算出最小容错覆盖的控制器集合。
其中,确定每个控制器的能力限制、一个交换机到它的支配交换机的传播时延限制、交换机的2-覆盖限制、之前的控制器继续有效限制包括:获取软件定义数据中心网络中交换机的总数、软件定义数据中心网络中每个交换机的可用端口数、每个交换机用于与其它交换机互联的端口数,构建Jellyfish拓扑的随机正则图;根据数据中心里交换机的集合、随机正则图中交换机之间链路的集合,获得交换机之间的拓扑无向图与1-覆盖控制器的最小集合;根据交换机之间的拓扑无向图与1-覆盖控制器的最小集合,获得表示一个交换机是否是一个支配交换机的二元向量、表示一个交换机是否覆盖另一个交换机的二元向量、表示从一个交换机到另一个交换机的传播时延的时延矩阵、表示一秒内从一个交换机发往另一个交换机的平均流的数量的流量矩阵、每个交换机每秒能处理的流的最大数量、从一个交换机到支配交换机允许的传播时延、已部署了控制器的支配交换机集合;根据表示一个交换机是否是一个支配交换机的二元向量、表示一个交换机是否覆盖另一个交换机的二元向量、表示从一个交换机到另一个交换机的传播时延的时延矩阵、表示一秒内从一个交换机发往另一个交换机的平均流的数量的流量矩阵、每个交换机每秒能处理的流的最大数量、从一个交换机到支配交换机允许的传播时延、已部署了控制器的支配交换机集合,获得最小容错覆盖的限制条件。
其中,计算出最小容错覆盖的控制器集合包括:得到每个交换机的邻居交换机;按照宽度优先搜索的方式依次检查每个交换机,如果一个交换机已经被两个支配交换机覆盖且该交换机本身不是支配交换机,则跳过此交换机检查下一个交换机;如果一个交换机已经被两个支配交换机覆盖且该交换机本身是支配交换机,且此支配交换机覆盖的交换机的数量超过了控制器的能力,则跳过此交换机检查下一个交换机;如果一个交换机已经被两个支配交换机覆盖或只被一个支配交换机覆盖,且该交换机本身是支配交换机,且此支配交换机覆盖的交换机的数量尚未超过控制器的能力,则在此交换机的邻居交换机中进行检索尚未被支配交换机覆盖或只被一个交换机覆盖的一个邻居交换机,如果支配交换机的邻居交换机到支配交换机的时延超出了时延所允许的跳数,则跳过邻居交换机,继续检索下一个邻居交换机否则,支配交换机覆盖邻居交换机,并且支配交换机的控制器能力将减少1,继续检索下一个邻居交换机,直到邻居交换机都被检测;如果一个交换机尚未被覆盖或只被一个支配交换机覆盖,且该交换机本身不是支配交换机,它被选作一个支配交换机,与一个控制器直接相连,并在此交换机的邻居交换机中进行检索尚未被支配交换机覆盖或只被一个交换机覆盖的一个邻居交换机,如果支配交换机的邻居交换机到支配交换机的时延超出了时延所允许的跳数,则跳过邻居交换机,继续检索下一个邻居交换机否则,支配交换机覆盖邻居交换机,并且支配交换机的控制器能力将减少1,继续检索下一个邻居交换机,直到邻居交换机都被检测。
近年来,设计现代数据中心的一个趋势是利用普通的商用设备,包括服务器和交换机。由于硬件、软件、链路以及能量的问题,大量的设备面临各种各样的失效问题。正如上文中所提到的,数据中心的设备失效非常常见。由于控制器是具有软件功能的构件部署在一台普通交换机上,在SDDN中每一个部署的控制器也同样面临潜在的失效问题。一个控制器的失效将直接导致它所控制的所有交换机失去软件定义网络的功能——而SDDN中控制器的最小容错覆盖问题则是这个问题的一种解决方案。
最小容错覆盖问题的基本的想法是找出最少数量的控制器及其位置,使得每个交换机被至少两个控制器控制,当主控制器失效时,它所控制的每一个交换机都能被另一个控制器接管。我们称这个问题为2-覆盖,即每个交换机都是由两个支配交换机覆盖,这意味着每个支配交换机还将由另一个支配交换机覆盖。很明显,2-覆盖实现了基本容错的功能。
在2-覆盖之外,显然还存在3-覆盖等更强的容错覆盖模型,可以更好的应对控制器的失败。然而,这些模型需要部署更多的控制器,并消耗额外的硬件成本,其性价比低于2-覆盖模型,因此本发明的实施例采用2-覆盖模型作为最小容错覆盖问题的解决方案。然而,我们提出的覆盖方法同样能够应用于其他的容错覆盖模型。
在前述的最小覆盖部署方法中,即1-覆盖模型中,我们已经部署一套控制器来保证每个交换机已经由至少一个控制器控制。如图5所示,在最小覆盖部署方法中已经将5个控制器设置于switch1,switch4,switch6,switch7,switch10。为了解决2-覆盖问题,一些额外的控制器需要被进一步部署。图5所示出的圆表示交换机,方块表示在1-覆盖模型中添加了控制器的支配交换机,三角表示为使2-覆盖模型成立需要进一步添加控制器的支配交换机。如图5所示,三个新的控制器部署到位置switch2、switch5、switch8。用这种方法,这些控制器可以保证每个交换机可以由两个控制器联合控制。对于图5中的任何一般控制器,均包括一个指向该控制器的实线箭头与一个指向该控制器的虚线箭头,其中,实线箭头的另一端是主控制器所在交换机,虚线箭头的另一端是从控制器所在交换机。由图5可知,对于一个普通交换机switch9,它的主、从控制器分别连接到switch1和switch8。
最小容错覆盖问题,即本实施例中的最小2-覆盖问题,是为了找到满足2-覆盖的控制器的最小集合。
SDDN的最小2-覆盖问题可以被表达成一个如下的优化问题。前述的1-覆盖问题中,不等式(4)强加了一个约束,每个交换机被至少一个控制器控制。然而,对于2-覆盖问题,每个交换机应该由至少两个控制器控制。因此,不等式(4)更新为下述的不等式(8)。此外,方程(2),(3),(5),(6)和(7)是仍然有效。我们将引入另一个二元向量C=[c1,c2,...,c|N|]。对于1≤j≤|N|,cj=1。根据算法ACC,意味着一个控制器已部署到一台连接到交换机j的主机。方程(9)引入了一个新的约束,以确保这些之前由算法ACC决定的控制器继续是有效的:
最小2-覆盖问题的输出是最小化新增的控制器的数量,并且确保每个交换机由两个控制器控制,可以表示如(10)所示:
min∑j∈N(xj-cj) (10)
此优化问题也是一个具有NP完全难度的整数线性规划问题,在多项式时间内不存在最优的解决方案。因此,我们提出了一个专用的算法来近似最优解。
算法ACC已经部署了一些控制器来实现在SDDN里控制器的基本1-覆盖。在此基础上,我们需要部署额外的最小数量控制器来实现2-覆盖,它具备容错能力。也就是要找到最小数量的新的支配交换机。这个近似算法我们成为ABC算法。
算法ABC可用伪代码表示如下:
算法ABC首先基于数据中心的拓扑和这些已有控制器C,派生出交换机之间的关系,然后检查数据中心中的每个交换机的状态。如果一个交换机是支配交换机,连接它的控制器在有余力的情况下仍然可以继续控制其他交换机。此外,如果当前的支配交换机只由自己控制,该算法用如下方法为它找到一个从控制器。算法在它的相邻r跳的交换机里选择一个非支配交换机作为一个支配交换机,并且把从控制器连到这个选中的交换机。当交换机是一个非支配交换机和只被一个控制器控制,它将被选择作为一个新的支配交换机来覆盖其本身和周围其他的交换机。ABC算法可以保证,在数据中心里,每个交换机至少由两个控制器控制。
可以证明,对于给定初始控制器集合C,然后执行算法ABC过程中每个交换机依次被检查。在此设置中,每个交换机的状态一定是以下三种之一:(1)它已经被两个控制器控制;(2)只由一个控制器控制,该控制器的主服务器连接到当前的交换机,即现在的交换机是一个支配交换机;(3)它是由一个控制器控制,而且该交换机不是一个支配交换机。在第二种情况下,算法ABC将为其找到一个从控制器。第三类情况下,当前的交换机被选择为支配交换机,并部署一个新的控制器到连接的服务器。到目前为止,当前的交换机将由两个控制器控制。因此,算法ABC完成后能保证每个交换机由两个控制器控制。
算法ABC的时间复杂度是O(N×h),其中N是交换机的数量,h表示一个控制器实际控制交换机的最大数量。
模拟结果表明,算法ABC具有良好的性能。与ACC算法相同,我们在所需的控制器数量方面,评估算法ABC和随机算法的性能。算法ACC和ABC分别处理在SDDN中控制器的1-覆盖和2-覆盖问题。算法ABC的目标是把最小数量的新控制器添加到现有的由算法ACC确定的控制器集合里。我们在不同大小的数据中心里,就新控制器的数量方面比较了算法ABC和随机算法。
考虑到解决1-覆盖问题的控制器集合,随机算法会随机进一步部署一些新的控制器,直到约束2-覆盖被满足。我们对交换机的数量范围从100到1000进行评估。算法ABC的输入,包括算法ACC产生的控制器的集合与其他继承自算法ACC的输入变量。在每种设置的100轮实验以后,我们计算两个算法要的新控制器的平均数量。
图10示出的是当每个交换机分配8个端口互连时,算法ABC所需的新控制器的数量,远低于随机算法。此外,当数据中心的交换机的数量增加时,算法ABC的好处更突出。为了测量不同的端口分配策略的影响,我们为交换机增加互联端口的数量,每个交换机的互联端口数从8变到12如图11所示。因为新部署的控制器更少,而且保证了2-覆盖的需求,所以算法ABC总是优于随机算法。另外,在同样的数据中心规模下,当每个交换机有更多的端口连接其它的交换机时,需要的新控制器的数量将会减少。无论数据中心的规模大小,确保2-覆盖的需求前提下,我们的算法所需的新控制器数量总是小于随机的算法。
我们还通过无效的控制器的影响评估2-覆盖的重要性和有效性,其中每个交换机由两个控制器控制。评价结果表明,2-覆盖比起1-覆盖可以显著提高容错能力。需要注意的是,1-覆盖问题意味着每个交换机由1个控制器控制。在Jellyfish数据中心实验中设置使用1000个交换机,每一个交换机都有24个端口。每个控制器的能力和覆盖范围和前述的评估算法ACC使用的控制器相同。在评估中,给定的控制器会被随机选择成为无效的控制器,然后我们观察在1-覆盖和2-覆盖的条件下,无效的交换机的数量,也就是不被任何控制器控制的交换机的数量。
图12表明在两种算法下,随着失败交换机的增加,无效的交换机也增加。然而,相同数量的失败的控制器——不论具体是多少——与1-覆盖相比在2-覆盖下会产生更少的无效交换机。当每个交换机用于分配给交换机互连的端口数从8增加到12后,如图13所示也能得出类似的结论。此外,如果有相同数量失败的控制器,而每个开关使用了更多端口来进行交换机互连时,无效的交换机的数量会增加。这意味着在两种算法下,当交换机的互联端口数增加时,无效控制器的影响会更为严重。因此,2-覆盖的容错能力远远超过1-覆盖。
综上所述,借助于本发明的上述技术方案,通过使用算法ACC满足最小覆盖问题的限制条件,部署最少数量的控制器,确保所有的交换机都至少被一个控制器所覆盖,所有交换机都处于控制器的控制之下;使用算法ABC满足最小容错覆盖问题的限制条件,部署最少数量的控制器,确保所有的交换机都至少被两个控制器所覆盖,当一个交换机的主控制器失效时,该交换机可以被另一个控制器接管。上述方法构成了一套完整的交换机控制平面上多控制器协作的解决方案,使交换机控制平面免受单控制器的能力小、可靠性低以及可扩展性差等影响,且具有较高的普适性,本方法可以应用到其它的以交换机为中心的数据中心里。
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。