2、SDN

一、SDN概述

传统网络最初只解决了连通的问题,网络的基础设施建设跟不上流量的爆炸性增长,提高网络的使用效率自然就成了有效缓解流量日益增长和网络建设滞后之间矛盾的一种可行思路。数据的转发路径由每个转发节点上的预配置决定,从指定的源到指定的目的,总是会经过固定的路径。这样的数据转发方式即使某条转发路径上出现拥塞,网络也无法动态、智能、自动地做出相应的调整。

二、传统网络面临的问题

转发平面转发流量,控制平面生成表项,管理平面监控设备。这样的架构对早期网络发展来说有个无法拒绝的优势:当一台网络设备故障后,其他的网络设备仍旧可以按照自己的大脑(控制平面)指挥,来执行转发报文的动作。但是当网络发展到一定规模后,网络管理员们发现需要管理的设备实在是太多了,设备互联互通也变得愈加复杂,网络变得难以驾驭。

  • 运维管理难:协议体系复杂,对维护人员的技能要求高,难以实现对业务的高效管理和对故障的快速排除。
  • 业务部署慢:需要逐台设备进行配置,效率低,无法提供新业务所需的动态配置、按需调用、自动负载均衡等需求。
  • 创新周期长:从概念提出,协议标准化到商用部署至少需要3到5年。
  • 系统复杂:行业门槛越来越高,产业生态不健康。

三、SDN思想诞生

2006年,斯坦福大学的学生提出了将网络设备的转发与控制分离。所有设备的控制平面集中到一个独立的控制器上,由控制器使用标准接口指导设备进行数据转发。这样不仅极大的简化了网络,更为网络的设计和管理提供了更多的可能性。受此思想的启发,业界进一步提出了软件定义网络(Software Defined Network,SDN)的概念。控制器作为新型网络的集中式管理平台,将网络中的所有被管资源抽象化,同时提供北向的标准可编程接口。用户可以基于这个平台开发各种应用软件,并进一步设计个性化的底层的逻辑拓扑,灵活满足业务对于网络资源的各种要求。

各个厂商的网络设备都有着不同的配置方式,要想通过同一个控制器软件来统一控制不同厂家的网络设备,采用传统的网管方式是非常困难的。SDN光有一个集中控制的指导思想还不够,还需要选择一种标准的通信接口,用于控制器指导设备进行数据转发。于是业界定义了一种全新的控制器与网络设备之间的通用交互标准,使得控制器能够通过下发简单的指令指导异构的网络设备识别流量并作出对应的转发动作。在最初发表转发和控制平面分离思想的同时,OpenFlow协议作为控制器与网络设备之间交互的标准也被提出。

1、SDN基本概念

1)OpenFlow协议

OpenFlow对于SDN来说就好比是x86的指令集对于计算机系统,OpenFlow定义了SDN控制转发的一种实现方式,即定义了控制平面与数据平面之间的南向接口。OpenFlow网络由OpenFlow交换机(OpenFlow Switch)和控制器(OpenFlow Controller)组成,两者之间通过OpenFlow通道(OpenFlow Channel)连接。OpenFlow网络设备作为转发平面承载报文转发,控制器作为控制平面,通过OpenFlow通道跟转发平面建立连接。控制器通过OpenFlow通道下发流表(Flow Table)给转发平面,转发平面依据OpenFlow流表做出转发行为。转发平面一般由多台OpenFlow交换机组成,这些OpenFlow交换机在物理上是分散的,每台OpenFlow交换机都会通过OpenFlow通道跟控制器建立连接,按照控制器统筹规划后下发的OpenFlow流表转发。这样整个网络的控制能力得以收在控制器手中,从而实现网络的集中控制和管理。

2)流表

流表是OpenFlow交换机的基本组成单元,流表包涵多个表项,每个表项就是一个转发规则。OpenFlow控制器通过设置流表项看来实现对OpenFlow交换机的控制,进入交换机的每个分组通过查询流表项来决定需要执行的操作与转发的端口。每个流表项由匹配字段、优先级、计数器、指令、计时器、Cookie、标识这7部分组成。其中对于数据转发比较关键的2个字段是匹配字段和指令。

  • 匹配字段:用于区分不同类型的数据分组,以便对不同的数据流执行不同的指令。匹配字段的内容除了设备端口,MAC层,网络层及传输层信息外,还包括VLAN ID,VLAN优先级等多项内容,相比传统网络主要依赖MAC地址表和IP路由表进行转发,OpenFlow交换机可以利用流表项丰富的匹配字段,在进行数据转发时可以使用更丰富的策略和规则。
  • 指令:是用来标识匹配成功之后需要执行的动作命令,如输出,即将数据转发到特定端口。
  • 优先级:定义了流表项之间的匹配顺序,优先级高的先匹配。
  • 计数器:统计有多少个报文和字节匹配到该流表项。
  • 计时器:用来记录流表项的超时时间,包括了ldleTime和HardTime。
  • Cookie:Controller下发的流表项的标识。
  • 标识:字段用来改变流表项的管理方式。

2、传统网络与SDN网络转发方式对比

在传统网络中,网络设备通过控制平面之间的交互来学习、生成控制信息,包括路由表、MAC表等,这些控制信息会通过网络操作系统下发至转发平面的二、三层转发表项,数据报文依靠硬件的二、三层转发表项进行转发。路由器或交换机的控制平面只能从自身节点在拓扑中的位置出发,看到一个自治区域网络拓扑中一个位置的视图。然后,从已建立的路由表中找出从这个节点到达目的网络与目的主机的最佳输出路径,再由数据平面将分组转发出去。

在SDN网络中,网络设备之间不再进行控制信息的交互,统一由SDN控制器下发控制信息至网络设备。控制器可以从全网络视角,根据动态的流量、延时、服务质量与安全状态,决定各个节点的路由和分组转发策略,然后将控制指令即流表推送到路由器与交换机,动态调整数据转发路径。

3、SDN的定义及特点

SDN并非一个具体的技术,而是一种网络的设计理念。这种设计理念将网络规划成了各个组成部分(包括软件、硬件、转发平面和控制平面)以及各个部分之间的关联互动关系,其特征属性包括下面几点。

  • 控制平面与转发平面分离:传统网络的控制能力分散在每一台网络设备中。通过协议标准抽象,传统网络设备分散的控制能力被抽离集中,形成控制器。而网络协议和网络硬件等设备能力被标准化,通过标准的协议接口与控制器通信。
  • 开放的可编程接口:SDN集中控制器对网络设备而言使用标准的协议接口对接,而对上层应用而言使用RESTful风格的APl(Application Programming Interface)接口对接。这些RESTfuI API使得SDN控制器的功能被开放出来,第三方可以通过调用API实现网络的定义和编排。
  • 集中化的网络控制:通过控制层面集中化,SDN控制器将原本分散的各个网络设备的控制能力集中起来,从而能够在全网范围内对网络进行集中控制管理。
  • 网络业务的自动化应用程序控制:通过将网络设备的控制能力集中,以及对上层云平台等应用的开放接口,SDN控制器能够让网络具备业务的自动化部署和快速上线的能力。

4、SDN网络架构

SDN网络架构包含转发层、控制层、应用层、NBI北向接口、SBI南向接口,详细内容如下。

  • 最底层的是转发层,也是仍旧由硬件网络设备承担的层面,该层面主要负责底层数据报文的转发。在SDN网络的转发平面中,网络设备之间不再进行控制信息的交互,所有的控制信息都由SDN控制器计算生成,网络设备本身不再需要复杂的计算能力,硬件资源得以解放,网络设备得以更专注于转发能力的提升。
  • 第二层是控制层,也就是把传统硬件网络设备的控制能力抽离出来形成的一层,负责协议报文的处理、全网转发路径的计算和下发,同时控制层将底层网络资源抽象成可操作的信息模型,提供给应用层,能够根据应用程序的网络需求发出操作指令。控制层是整个架构的核心,主要由SDN控制器担当,控制器与转发层之间通过标准的南向接口协议对接。
  • 最上层是应用层,又叫做编排层,为业务应用或更复杂的需求提供统一入口。在云计算数据中心中,应用层一般由云平台担任,云平台为客户提供计算、存储和网络资源的统一管理和服务,并可按租户的需求进行一定程度的业务编排。应用层主要通过SDN控制器的北向接口与SDN网络进行对接,由SDN控制器接受应用层的网络资源申请,通过南向接口转换成网络设备可以理解的语言,在底层网络中实现租户的网络需求。
  • NBI北向接口:北向接口为控制器对接协同应用层的接口,SDN控制器能够提供标准的北向Java API或Rest API接口供应用程序调用,用户能够以自身业务为驱动,开发出最适合自己的云平台或者APP。
  • SBI南向接口:南向接口为控制器与设备交互的协议,包括NETCONF、SNMP、OpenFlow、OVSDB等。

5、SDN网络的价值

相比传统网络,SDN网络的价值主要体现在以下几点。

  • 快速上线:通过集中化的控制平面,SDN网络得以实现自动化,从而业务快速上线成为可能。在SDN网络中,只需要应用层发起网络资源申请,SDN控制器就能自行进行业务上线的评估,并自动完成底层网络的部署和网络资源的分配。
  • 动态优化:SDN控制器能根据整网的流量情况对网络转发路径进行灵活调整和调度在链路质量发生变化时进行基于应用的路径优选,同时可基于应用优先级对全网流量转发路径和服务质量进行优化。
  • 统一管理:当控制平面集中化后,网络的管理也实现了集中化,特别是当网络支持搭载大数据智能引擎后,能做到应用故障诊断和网络故障自愈。
  • 降低成本:屏蔽技术细节,降低网络复杂度。