从传统网络向软件定义网络(SDN)的范式转变在现代计算机网络中具有重要意义。分离控制平面和数据平面已被证明对于集中控制和管理底层基础设施非常有效,提供了可编程性、灵活性和可扩展性[1]。此外,引入了应用平面以高效地提供网络服务。这些平面通过使用各种应用程序编程接口(API)(即北向和南向API)进行交互。应用平面和控制平面通过北向API进行通信,而控制平面和基础设施平面通过南向API进行通信。重要的是要认识到,基础设施平面执行控制平面的数据包转发指令,而控制平面作为网络的大脑,做出数据包转发决策。SDN的通信接口OpenFlow协议[2]被控制平面用来分配这些任务。虽然集中控制有许多优点,但SDN架构也变成了单点故障[3],[4]。OpenFlow最初是为单一控制器设计的;然而,随着网络需求的增长,单一控制器设置遇到了可扩展性和性能问题[5],[6]。
为了解决这些问题,引入了多种多控制器设置[7]。这些多个控制器协同做出转发决策,从而在大型网络中创建了多个域。控制器被放置在每个域的各个位置,如图1所示,并被分配用于控制和监控交换机。这些域也可以称为为提高网络性能和服务质量而创建的大型网络的子集,同时保持每个控制器的全局视图。这种方法通过将负载分布在控制器之间本质上提高了网络性能,但在它们之间平衡负载是一个挑战[8]。此外,由于消除了单一控制器带来的单点故障,它提供了更高效和可扩展的网络。
尽管有许多好处,但在网络中引入多个控制器也为网络管理带来了新的挑战,包括控制器放置问题(CPP)。CPP最初由Heller等人提出[9],他们提出了两个基本问题:(i)需要多少控制器,以及(ii)它们的放置位置。此外,还必须评估将交换机分配给特定控制器以形成子网络的问题。
需要根据网络的需求使用各种目标来回答这些问题。目标可能是减少延迟、提高可靠性、改善可扩展性、负载均衡、成本优化或这些目标的组合[10]。例如,在广域网(WAN)中,交换机-控制器(S-C)和控制器-控制器(C-C)之间的延迟是一个重要问题,因为节点分布在较大的地理区域内。鉴于WAN的CPP,建议的方法可以有效地确定控制器的最佳数量,将它们分配给交换机,并在满足延迟和控制器负载均衡标准的同时安排它们的拓扑结构。贡献的概述如下:
•提出了一种改进的基于贪婪模块化的社区检测算法,用于从大规模网络拓扑中找到理想的子网络数量。
•在提出的算法中引入了负载均衡约束,有效地找到了平衡的分区。
•使用提出的算法引入了控制器部署方案,最小化了平均和最坏情况下的S-C延迟。
•提出了一种结合S-C和C-C延迟的平衡指标,以及控制器部署算法。
•提出的控制器部署方案避免了在放置过程中陷入局部最优解的风险,因为控制器是按子网络逐一放置的,使其成为一个单一控制器放置问题。
•在真实网络拓扑上进行了性能评估,结果表明提出的GMCD可以在合理的时间内找到最小数量的控制器分配和放置,同时保持负载均衡性能并最小化延迟要求。
本文的其余部分组织如下:第2节描述了关于控制器部署的相关工作。第3节提出了CPP的数学公式,第4节介绍了分区算法和部署技术。第5节解释了发现和讨论,第6节讨论了整体分析和进一步工作的建议。