2.2 数据控制分离

2.2.1 基本概念

数据控制分离是SDN自提出以来业界广泛认同的核心特征之一。为了能够更好地理解这个概念,本节首先介绍一下当前网络体系架构中的控制与数据平面情况以及它们的基本组件和行为,并详细分析一下它们在功能和工程实现上的特点,以及它们可能会部署在什么样的场景,为后续详细介绍SDN数据控制平面分离打下基础。

首先我们先提一个问题,传统互联网设备的数据平面和控制平面是一体的还是分离的?对于这个问题,大部分读者都会认为当然是一体的,因为数据平面和控制平面都集成在网络设备(交换机、路由器)中,它们通过分布式的协议实现了相应的控制决策。但是,如果我们把任意一个传统网络设备打开研究一下,那么这个问题似乎又是另外一个答案了,图 2-4 是网络设备的内部控制平面和数据平面的架构示意图,不难看出,在传统网络节点内部,数据平面与控制平面一直以来都是相互分离的,控制平面的执行在独立的处理器或存储卡上,而数据平面的执行则一般在另一个处理器或存储卡上,只不过,这种分离在物理上并没有距离很远,一般情况下两者被放置在同一个网络设备的机箱中。数据平面与控制平面在机箱中设计的区别在于:控制平面由于要完成更多更灵活的功能,因此经常运行在网络节点中可编程性良好的通用处理器上;而数据平面需要保证高速的交换能力,因此,通常运行在网络节点中具备高速硬件转发能力的线卡上,两者之间一般通过高速总线互连,或者在有些设备中也通过专门的光纤互连,以保证高速连接。

图2-4 传统网络设备中数据与控制平面示意图

这一架构说明,虽然在当前传统网络设备中,控制平面和数据平面在物理距离上非常近,但他们实质上已经是相互分离的,并分别执行各自擅长的功能,这一点为SDN的可行性奠定了基础。

从功能实现来说,控制平面的主要功能是建立本地的数据集合,该数据集合一般被称为路由信息库(Routing Information Base,RIB),RIB需要与网络内其他控制平面实例的信息保持一致,这一点通常使用分布式路由协议(如OSPF、BGP等)来完成。接下来,控制平面需要基于RIB创建转发表,用于指导设备出入端口之间的数据流量转发。转发表通常被称为转发信息库(Forwarding Information Base,FIB),FIB 需要经常在设备的控制和数据平面之间进行镜像,以保证转发行为与路由决策一致,因此,FIB 实际上是两个平面之间连接的纽带。在此基础上,数据平面就可以根据RIB创建的FIB进行数据的高速转发。

当然这只是对控制平面和数据平面最简化的说明,具体情况将会更复杂一些,下面将进一步对两个平面的具体功能作详细介绍,以便读者建立较为完整的基础概念。

(1)控制平面

传统网络设备的控制平面依据功能层面细分来讲,可以分为二层控制平面、三层控制平面以及跨二/三层控制平面等几类。

二层控制平面主要关注硬件或物理地址(MAC地址)。在二层网络中,学习MAC地址的行为、保证无环图的机制(如最小生成树协议(STP))、对BUM(广播、未知单播和多播)流量的泛洪等行为均在自身的可扩展性方面面临着挑战,从反面讲也透露出其在可扩展性方面的局限性。为了解决这些问题,业界提出了多种二层控制协议并进行了广泛应用,例如电气和电子工程师协会(IEEE)的SPB (Shortest Path Bridging,最短路径桥接)以及互联网工程任务组(IETF)的TRILL (多链接透明互联)协议等。在可扩展性问题上,由于二层网络中存在大量终端主机,在使用广播协议的情况下扩展性较差,这也导致二/三层的解决方案总是混杂在一起。这些问题的核心是终端主机在网络之间迁移时,会导致转发表的大规模失效,因此必须以足够快的速度更新转发表才能保证数据流的正常传输不被中断。在二层网络中,转发更关注 MAC 地址的可达性,因此二层网络控制平面主要实现了 MAC 地址的存储与管理,但是由于大型企业网络中存在大量主机,使得主机的MAC数目十分巨大,因此这些地址在交换机中的管理就变得非常困难。

三层控制平面则侧重完成网络层寻址与转发,主要关注网络地址,如IPv4/IPv6 地址。在三层网络中,转发主要关注网络地址的可达性,具体来说是一个可达的目的IP前缀,这包括关于单播和多播的多个地址簇网络前缀。在当前常见的情况下,三层网络主要用于分割或连通二层网络,从而解决二层网络规模受限的问题。具体来说,一些代表IP子网的二层交换机通常是与三层路由器连接在一起以形成较大规模的网络,这些较大规模的网络间通过网关路由器连接。然而,在大多数情况下,路由器仅在三层网络之间传递数据流量,只有得知报文已经到达目标主机所在的三层网络时,才会在二层将数据转发给特定的目标主机。

此外,还有一些著名的跨二、三层协议,例如 MPLS(多协议标签交换)协议、EVPN(Ethernet Virtual Private Network,以太网虚拟专用网络)协议和LISP (Locator ID Separation Protocol,位置标识分离协议)等。MPLS协议是一个协议族,它既集成了二层交换的性能(ATM 创新的快速分组交换技术),同时又集成了三层路由的智能(IP所采用的灵活且复杂的路由信令技术),因此,MPLS是一种三层路由结合二层交换的技术。EVPN 协议尝试解决第二层网络可扩展问题,它将距离较远的二层网桥通过MPLS(或GRE)设备打通连接在一起,然后通过这些隧道进行二层寻址和可达性信息交换,因此,不会影响基本的三层网络的可扩展性。另一个值得一提的跨层协议是LISP,它主要试图解决控制平面分布式模型固有的缺点,例如多宿主场景、新增地址域或封装控制和转发协议等方面。在大规模数据中心的需求下,基于三层基础网络的虚拟租户网络成为了主要解决方案之一,一方面可以通过三层解决终端数量多的问题,另一方面可以通过规模可控的租户网络提升网络的弹性,但是这个方案要求使用三层以上的网络虚拟化封装技术,例如VXLAN等。

(2)数据平面

数据平面的首要工作是通过一系列链路级操作采集传入的数据分组,并执行基本的完整性检查。接下来,数据平面将查找FIB表(FIB表已通过控制平面生成,并通过镜像复制到数据平面),识别数据分组的目的地址,这样的流程被称为快速数据分组处理。这里的快速数据分组处理主要体现在不再需要每次都到控制平面进行查询匹配,从而有效节省了处理时间。当然,当报文不能匹配已有规则时,这些数据分组将会被发送到控制平面进行处理。

数据平面的查表采用硬件查表和通用处理器查表两类技术,依性能需求而定。首先,在对高带宽有明确需求的网络设备设计过程中,主要使用硬件查表技术,这是由于硬件查表具有更高的数据分组转发性能。当然,硬件转发的设计目标主要是针对数据分组维持线速转发,在设计时需要考虑多种因素,包括板卡和机架的空间、预算、电源利用率和吞吐量等,在这些因素条件下设计出来的数据平面会存在可扩展性的差异,例如不同的转发表数、不同的转发表项数等。其次,在中低性能需求的场景下,可以使用通用处理器进行查表,这样可以在定制功能时节约成本,考虑到通用处理器的 I/O 能力近年正在大幅提升,因此,基于通用硬件的数据平面设计与应用也成为一个重要的发展方向。

从数据平面进行查找后的下一步典型动作是转发(也存在特殊情况,例如多播时下一个动作是复制)、丢弃、重新标记、计数和排队,这些动作也可以组合或链接在一起。在某些情况下,转发判决返回一个本地端口,说明流量目的地是本地控制平面运行的进程,例如OSPF或BGP。这些数据分组由此离开了数据平面,使用内部通信信道转发到路由器的处理器。这个路径通常是较低吞吐量的路径,因为它不适合高吞吐量的数据分组转发。当然,也有一些设计通过简单地添加一个额外的光纤以连接内部交换结构,从而实现盒内接近线速率的转发。

除正常转发功能外,数据平面还可以根据特殊需要处理一些特定的辅助服务功能,例如访问控制列表和QoS策略等。此外由于一些服务有非常严格的性能需求,例如较短的事件侦测时间,需要放在数据平面以保证快速执行,不需要通过本地的控制平面进行决策。这些功能既可以使用独立的表,也可以借助增加转发表条目数量来执行,不同的设计可以实现不同的功能和转发操作顺序。图 2-5 是一种典型的转发操作顺序,这样的实现要求硬件的支持,而硬件转发的处理流程往往是设备厂商的核心商业机密,因此,将会影响SDN灵活可定义的转发芯片的设计,在后文将进一步详细分析。

图2-5 在传统网络设备上进入功能应用的通用实例