2.2.3 SDN数据控制分离

数据和控制分离是SDN的核心思想之一。在传统的网络设备中,控制平面和数据平面在物理位置上是紧密耦合的,这样的耦合有利于两个平面之间数据的快速交互,从而实现网络设备性能的提升。然而,这种分布式的网络控制方式也带来了一些问题,例如,网络设备管理非常困难,只能逐个配置,任何错误都可能导致管理行为失效,并且难以排查与定位故障;另外灵活性也不够,当网络设备需求的功能越来越复杂时,在分布式平面上进行新功能部署的难度非常大,尤其对于类似数据中心这种变化较快、管控灵活的应用场景,当前数据和控制耦合的技术模式的缺点日益凸显。

下面举一个最简单的例子。一个企业级规模的传统网络,用户希望对时延敏感的声音视频流量提供一个相对更高的优先级来保证用户体验,那么基于传统网络架构技术可以利用转发帧中的某些特定字段来实现流量优先级,如通常可基于数据分组头的ToS(Type of Service)或DSCP(Differentiated Services Codepoint)等字段来标识优先级,但仔细分析后发现,这些字段必须在整个网络中被一致地标识并使用一致的规则,才能真正有效地来区隔这些网络流量。事实上,在传统多交换网络中实现这一功能并不简单,这是因为配置工作必须按照某种方式在每个单独的交换设备上重复、并无遗漏地完整做一遍,考虑到跨运营商场景以及网络规模动态变化等因素,在现实的互联网上实现这一功能事实上极其困难。尤其网络中的每个端口都被看成是一个管理点,这意味着每个端口都被单独的配置,这不仅费时而且难以发现配置错误的位置,这于网络管理来说是非常耗费时间和精力的工作模式。

为了解决这样的问题,SDN以网络设备的FIB表为界分割数据控制平面,其中交换设备只是一个轻量级的、哑的数据平面,仅保留FIB和高速交换转发能力,而上层的控制决策全部由远端的统一控制器节点完成,在这个节点上,网络管理员可以看到网络的全局信息,并根据该信息做出优化的决策,数据控制平面之间采用SDN南向接口协议相连接,这个协议将提供数据平面可编程性。

SDN的数据控制分离的特征与挑战主要体现在以下两个方面。

一是采用逻辑集中控制,对数据平面采用开放式接口。这个技术特点实际上和 ForCES 面临同样的挑战,即开放接口打乱了传统网络设备商的垄断地位,因此将面临巨大的阻力。然而与几十年前网络规模普遍较小、需求较为单一的情况不同的是,大型互联网服务商(如 Google、Amazon 等)的出现和快速成长使它们的需求成为了主要矛盾,设备商的市场定位也要由它们的需求决定,因此,也给了传统设备商向软件转型的动力。另外,通用处理器的能力也在不断提升,使逻辑集中成为可能。

二是需要解决分布式的状态管理问题。首先,逻辑上集中的路由控制器面临着分布式状态管理的挑战,一个逻辑上集中的控制器必须考虑冗余副本以防止控制器故障,但在整个副本中可能存在潜在的状态不一致。其次,为了获得更好的可扩展性,每个控制器实例可负责拓扑的一个单独部分,或一个单独功能,这些控制器之间的实例需要交换相互的路由信息,以确保一致的策略。此外,在分布式SDN控制器的背景下,仍然存在分布式控制器放置策略的挑战,以及支持任意应用这一更为普遍的问题,这些都需要更复杂的分布式状态管理解决方案。

虽然数据和控制平面的分离确实会让SDN在灵活性和优化性上占据优势,但同时这也是其最具争议的地方。事实上数据控制分离不是一个新的概念,如上文所述,当前网络设备的数据和控制平面在逻辑上也是分离的,这样有利于各个平面功能的独立开发与优化,但SDN的创举在于,它认为数据和控制平面可以运行在物理距离较远的两个设备上,并通过一个开放的接口协议相互连接。同时,这样的模型也会产生一些性能方面的问题,例如,转发前等待远程处理是否会影响转发效率,控制平面的可扩展性是否能得到保证等,这些都是数据控制分离特性中不可避免的部分。

为更加综合客观地评述SDN数据控制分离机制的优劣,我们下面再从技术演进发展的历程上去看待数据控制平面的分离。SDN的数据控制分离经历了两个阶段,在早期刚提出SDN概念时,SDN的代表协议仅是OpenFlow,此时定义的数据控制分离就是将控制平面从网络设备中完全剥离,放置于一个远端的集中节点,这个定义并未在可实现性和性能上探讨过多,仅描绘了一个理想的模式:远端集中节点上的全局调度控制结合本地的快速转发,可以使网络智能充分提升,使网络功能的灵活性最大化。主张这种模式的是以 OpenFlow 为代表的、期望网络产生革命式发展的研究团队(如Clean Slate等)。这些团队主要来自于高校、研究院所以及代表先进方向的网络创业公司。虽然这种控制平面严格集中的模式引发了相当的争议,但也说明了SDN思想的超前性。

接下来,随着SDN的影响力的增加,越来越多的传统网络设备提供商也加入SDN 的研究阵营中,出于自身利益考虑,他们对 SDN 的数据控制分离有了新的解读:远端的集中控制节点是必要的,但是控制平面的完全剥离在实现上有难度,因此,控制平面功能哪些在远端、哪些在本地,应该是SDN发展道路上需要研究的主要内容之一。这个概念比上面的原始概念更加宽泛,不仅包含了激进的革命化思路,也涵盖了从当前网络设备的设计模式进行逐渐演化的思想,例如,当前大多数的管理平面功能就是在远端集中的,只需要将少量控制平面功能移至管理平面实现,就能够实现一个新的SDN架构,这对于传统网络设备商来说,是一个性价比更高的方案,同时也可以回避开放性问题。

事实上,虽然本书的基本出发点是探讨SDN的学术发展和技术革新,但是互联网是一个从来都没能离开商业应用的复杂系统,因此,在SDN的发展中,学术上理想的模型和普遍的商业认可都是不可或缺的。本书对这两种思路不置可否,而是将它们都呈现给读者,希望读者能够对SDN的各种思想有全面的了解。

最后,这里结合前面介绍的内容,总结一下SDN数据控制分离的特点,具体来讲,SDN数控分离的优点在于以下几点。

① 全局集中控制与优化:这是SDN的最主要优势,集中式的控制平面有利于实现更好的全局优化,可以高效解决传统网络中困难和复杂的问题[13]

② 灵活可编程与高速转发相结合:事实上,OVS和Click等软件路由器可编程性更好,但是 SDN 数控分离的设计更加平衡,以 FIB 为分界线实际上降低了SDN的编程灵活性,但是没有暴露商用设备的高速转发实现细节,因此也使得网络设备商相对来说更容易接受SDN的理念。

③ 开放性和IT化:数据控制分离在一定程度上可以降低网络设备和控制软件的成本。当前的网络设备是捆绑控制平面功能软件一起出售的,由于软件开发由网络设备公司完成,对用户不透明,因此网络设备及其控制平面软件的定价权完全掌握在少数公司手中,造成了总体价格高昂。在数据控制平面分离以后,尤其是使用开放的接口协议后,将会实现交换设备的制造与功能软件的开发相分离,这样可以实现模块的透明化,从而有效降低成本。虽然硬件价格降低后,相应的软件成本会增加,不过总体来说,IT化将会是一个有效的节约成本的方案。

当然,数据控制分离的属性也给SDN架构带来了一些待解决的问题,本书认为SDN数控分离目前还面临的问题包括以下几种。

① 可扩展性问题:这是SDN面临的最大问题,数据控制分离后,原来分布式的控制平面集中化了,即随着网络规模扩大,单个控制节点的服务能力极有可能会成为网络性能的瓶颈。因此控制架构的可扩展性是数据控制分离后的主要研究方向之一。

② 一致性问题:在传统网络中,网络状态一致性是由分布式协议保证的,在SDN数据控制分离后,集中控制器需要负起这个责任,如何快速侦测到分布式网络节点的状态不一致性,并快速解决这类问题,也是数据控制分离后的主要研究方向之一。

③ 可用性问题:可用性是指网络无故障的时间占总时间的比例,传统网络设备是高可用的,即发向控制平面的请求会实时得到响应,因此网络比较稳定,但是在 SDN 数据控制分离后,控制平面网络的延迟可能会导致数据平面可用性问题。

通过上述分析,我们可以将传统的网络类比为植物,分布式的交换机就是组成植物的根、茎、叶等各部分,植物的各部分能通过相互配合协调维持植物的生命,但是缺少一个统一的协调系统,所以植物大多数是静止的无法完成移动、奔跑等复杂的动作。而SDN中的控制器类似于动物的大脑,通过大脑协调各个部分的功能,动物可以完成移动、奔跑等复杂的动作。因此,SDN的创新之处就在于提供了一个控制系统可以控制网络的各个部分,无论是激进的全部集中式控制,还是演进式的部分集中式控制,要实现的都是一个由高级控制系统调度的智能网络。但是可以看到,目前全部集中式控制遇到了上述的诸多问题,因此整体分布、部分集中部分集中、部分分布有可能才是未来的发展趋势。正如动物的大脑只负责协调和下发高级的指令,各个器官还是要自身完成一些基本功能一样,SDN的集中式控制也最好只完成高级的控制功能来实现部分集中控制,然后通过下移部分基本控制功能到交换机来优化提升性能。

综上所述,SDN在数据控制分离方面对网络工作模式进行了创新,这种模式能否得到普遍认可还有待研究和市场的检验,但是可以肯定的是,SDN目前在某些特定的场景下已经有基于数据控制分离思想的商业使用案例,并已经得到了市场的认可,这些案例在本书后续章节会有详细介绍。