1 SDN简介
1.1 前言
SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。
软件定义网络SDN(Software Defined Network)是由美国斯坦福大学CLean Slate研究组提出的一种新型网络创新架构,可通过软件编程的形式定义和控制网络,其控制平面和转发平面分离及开放性可编程的特点,被认为是网络领域的一场革命,为新型互联网体系结构研究提供了新的实验途径,也极大地推动了下一代互联网的发展。
发展到今天也是门派众多,百花齐放。以重量级选手ODL、ONOS为代表的站在数据中心的高度对物理网络和虚拟网络进行云网一体化管理的,也有以DragonFlow、OVN为代表的蝇量级选手专注于数据中心虚拟网络管理的。
1.2 传统网络概念和结构体系
1.2.1 传统网络数据控制与转发
传统网络是分布式控制的架构:
- 这里的分布式控制指在传统IP网络中,用于协议计算的控制平面和报文转发的数据平面位于同一台设备中。
- 路由计算和拓扑变化后,每台设备都要重新进行路由计算过程,并称为分布式控制过程。
- 在传统IP网络中,每台设备都是独立收集网络信息,独立计算,并且都只关心自己的选路。
- 这种模型的弊端就是所有设备在计算路径时缺乏统一性。
1.2.2 传统网络架构
传统网络也可以分为管理平面、控制平面和数据平面:
- 管理平面,主要包括设备管理系统和业务管理系统,
- 设备管理系统负责网络拓扑、设备接口、设备特性的管理,同时可以给设备下发配置脚本,例如SNMP协议。
- 业务管理系统用于对业务进行管理,比如业务性能监控、业务告警管理等。
- 控制平面负责网络控制,主要功能为协议处理与计算。比如路由协议用于路由信息的计算、路由表的生成。例如常见路由协议IGP、BGP等。
- 数据平面是指设备根据控制平面生成的指令完成用户业务的转发和处理。例如路由器根据路由协议生成的路由表对接收的数据包从相应的出接口转发出去。
1.2.3 传统网络局限性
- 流量路径的灵活调整能力不足。
- 流量路径的调整需要通过在网元上配置流量策略来实现,但对于大型网络的流量进行调整,不仅繁琐而且还很容易出现故障;
- 当然也可以通过部署TE隧道来实现流量调整,但由于TE隧道的复杂性,对于维护人员的技能要求很高。
- 网络协议实现复杂,运维难度较大。
- 传统网络协议较复杂,有IGP、BGP、MPLS、组播协议等,而且还在不断增加。
- 设备厂家除标准协议外都有一些私有协议扩展,不仅设备操作命令繁多,而且不同厂家设备操作界面差异较大,运维复杂。
- 网络新业务升级速度较慢。
- 传统网络中由于设备的控制面是封闭式的,且不同厂家设备实现机制也可能有所不同,所以一种新功能的部署可能会造成周期较长;
- 且如果需要对设备软件进行升级,还需要在每台设备上进行操作,大大降低了工作效率。
- 传统网络通常部署网管系统作为管理平面,而控制平面和数据平面分布在每个设备上运行。
1.2 SDN特点
SDN是对传统网络架构的一次重构,由原来分布式控制的网络架构重构为集中控制的网络架构。SDN网络体系架构的三层模型:
- 控制平面与数据平面的分离:
- 此处的分离是指控制平面与数据平面的解耦合。
- 转发平面由受控转发的设备组成,转发方式以及业务逻辑由运行在分离出去的控制面上的控制应用所控制。控制平面和数据平面之间不再相互依赖, 两者可以独立完成体系结构的演进, 双方只需要遵循统一的开放接口进行通信即可。
- 控制平面与数据平面的分离是 SDN 架构区别于传统网络体系结构的重要标志,是网络获得更多可编程能力的架构基础。
- 网络开放可编程: SDN 建立了新的网络抽象模型,为用户提供了一套完整的通用 API,使用户可以在控制器上编程实现对网络的配置、 控制和管理, 从而加快网络业务部署的进程。
- 逻辑上的集中控制:
- 主要是指对分布式网络状态的统一集中管理。
- 在 SDN 架构中,控制器会担负起收集和管理所有网络状态信息的重任。
- 逻辑集中控制为软件编程定义网络功能提供了架构基础,也为网络自动化管理提供了可能。
- 逻辑上集中的控制平面可以控制多个转发面设备,也就是控制整个物理网络,因而可以获得全局的网络状态视图,并根据该全局网络状态视图实现对网络的优化控制。
在这三个特征中,控制平面和数据平面分离为逻辑集中控制创造了条件,逻辑集中控制为开放可编程控制提供了架构基础,而网络开放可编程才是 SDN 的核心特征。
1.3 SDN优势
- 硬件只需关注转发和存储能力,与业务特性解耦,可以采用相对廉价的商用的架构来实现。
- 网络设备的种类及功能由软件配置而定,对网络的操作控制和运行由服务器作为网络操作系统(Network OS)来完成。
- 对业务响应相对更快,可以定制各种网络参数,如路由、安全、策略、QoS等,并实时配置到网络中,开通具体业务的时间将缩短。
2 SDN架构
SDN是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。
传统网络世界是水平标准和开放的,每个网元可以和周边网元进行互联。而在计算机的世界里,不仅水平是标准和开放的,同时垂直也是标准和开放的,从下到上有硬件、驱动、操作系统、编程平台、应用软件等等,编程者可以很容易地创造各种应用。从某个角度和计算机对比,在垂直方向上,网络是“相对封闭”和“没有框架”的,在垂直方向创造应用、部署业务是相对困难的。但SDN将在整个网络(不仅仅是网元)的垂直方向变得开放、标准化、可编程,从而让人们更容易、更有效地使用网络资源。
因此,SDN技术能够有效降低设备负载,协助网络运营商更好地控制基础设施,降低整体运营成本,成为了最具前途的网络技术之一 1 。
2.1 设计思想
利用分层的思想,SDN将数据与控制相分离。在控制层,包括具有逻辑中心化和可编程的控制器,可掌握全局网络信息,方便运营商和科研人员管理配置网络和部署新协议等。在数据层,包括哑的交换机(与传统的二层交换机不同,专指用于转发数据的设备),仅提供简单的数据转发功能,可以快速处理匹配的数据包,适应流量日益增长的需求。两层之间采用开放的统一接口(如OpenFlow等)进行交互。控制器通过标准接口向交换机下发统一标准规则,交换机仅需按照这些规则执行相应的动作即可。
软件定义网络的思想是通过控制与转发分离,将网络中交换设备的控制逻辑集中到一个计算设备上,为提升网络管理配置能力带来新的思路 3 。SDN的本质特点是控制平面和数据平面的分离以及开放可编程性。通过分离控制平面和数据平面以及开放的通信协议,SDN打破了传统网络设备的封闭性。此外,南北向和东西向的开放接口及可编程性,也使得网络管理变得更加简单、动态和灵活。
2.2 SDN 网络体系架构
SDN的整体架构由下到上(由南到北)分为数据平面、控制平面和应用平面,主要包括 SDN 网络应用、北向接口、 SDN 控制器、南向接口和 SDN 数据平面共五部分,具体下图所示。
其中,数据平面由交换机等网络通用硬件组成,各个网络设备之间通过不同规则形成的SDN数据通路连接;控制平面包含了逻辑上为中心的SDN控制器,它掌握着全局网络信息,负责各种转发规则的控制;应用平面包含着各种基于SDN的网络应用,用户无需关心底层细节就可以编程、部署新应用。
控制平面与数据平面之间通过SDN控制数据平面接口(control-data-plane interface,简称CDPI)进行通信,它具有统一的通信标准,主要负责将控制器中的转发规则下发至转发设备,最主要应用的是OpenFlow协议。控制平面与应用平面之间通过SDN北向接口(northbound interface,简称NBI)进行通信,而NBI并非统一标准,它允许用户根据自身需求定制开发各种网络管理应用。
SDN中的接口具有开放性,以控制器为逻辑中心 1 ,南向接口负责与数据平面进行通信,北向接口负责与应用平面进行通信,东西向接口负责多控制器之间的通信。最主流的南向接口CDPI采用的是OpenFlow协议。
OpenFlow最基本的特点是基于流(Flow)的概念来匹配转发规则,每一个交换机都维护一个流表(Flow Table),依据流表中的转发规则进行转发,而流表的建立、维护和下发都是由控制器完成的。针对北向接口,应用程序通过北向接口编程来调用所需的各种网络资源,实现对网络的快速配置和部署。东西向接口使控制器具有可扩展性,为负载均衡和性能提升提供了技术保障。
2.3 数据控制分离
数据控制分离是SDN的主要特征之一,如下图所示
从功能角度来说,控制平面主要是建立本地的数据集合,即路由信息库(RIB)。控制平面是基于RIB创建转发表(也称转发信息库(FIB)),用于指导设备出入端口之间的数据流量转发。数据平面主要是根据RIB创建的FIB进行数据的高速转发,当然也有一些其他的服务功能。FIB为了保证转发行为和路由决策一致,需要在控制和数据平面之间进行镜像,因此FIB实际是两个平面之间的连接纽带。
控制平面依据功能层面可分为二层控制平面、三层控制平面和跨二/三层控制平面等。其主要关注硬件或物理层地址,在二层网络中转发更加关注MAC地址的可达性,因此控制平面主要实现了MAC地址的存储与管理。三层控制平面侧重完成网络层寻址,主要关注网络地址,转发主要关注网络地址的可达性。
数据平面的首要工作是快速数据分组处理。数据查表采用硬件查表和通用处理器查表两类技术,依性能需求而定。查找后的下一步动作是转发、丢弃、重新标记、计数和排队等动作,这些动作也可以组合在一起。当然其也有一些辅助功能,如访问控制列表、QoS策略等。
3 关键技术
3.1 数据平面关键技术
在SDN中,数据转发与规则控制相分离,交换机将转发规则的控制权交由控制器负责,而它仅根据控制器下发的规则对数据包进行转发。为了避免交换机与控制器频繁交互,双方约定的规则是基于流而并非基于每个数据包的。SDN数据平面相关技术主要体现在交换机和转发规则上。
SDN交换机的数据转发方式大体分为硬件和软件两种。硬件方式相比软件方式具有更快的速度,但灵活性会有所降低。为了使硬件能够更加灵活地进行数据转发操作,Bosshart等人提出了RMT模型,该模型实现了一个可重新配置的匹配表,它允许在流水线阶段支持任意宽度和深度的流表。从结构上看,理想的RMT模型是由解析器、多个逻辑匹配部件以及可配置输出队列组成。具体的可配置性表现为:通过修改解析器来增加域定义,修改逻辑匹配部件的匹配表来完成新域的匹配,修改逻辑匹配部件的动作集来实现新的动作,修改队列规则来产生新的队列。所有更新操作都通过解析器完成,无需修改硬件,只需在芯片设计时留出可配置接口即可,实现了硬件对数据的灵活处理。
另一种硬件灵活处理技术FlowAdapter采用交换机分层的方式来实现多表流水线业务。FlowAdapter交换机分为三层,顶层是软件数据平面,它可以通过更新来支持任何新的协议;底层是硬件数据平面,它相对固定但转发效率较高;中层是FlowAdapter平面,它负责软件数据平面和硬件数据平面间的通信。当控制器下发规则时,软件数据平面将其存储并形成M段流表,由于这些规则相对灵活,不能全部由交换机直接转化成相应转发动作,因此可利用FlowAdapter将规则进行转换,即将相对灵活的M段流表转换成能够被硬件所识别的N段流表。这就解决了传统交换机与控制器之间多表流水线技术不兼容的问题。
与硬件方式不同,软件的处理速度低于硬件,但软件方式可以提升转发规则处理的灵活性。利用交换机CPU或NP处理转发规则可以避免硬件灵活性差的问题。由于NP专门用来处理网络任务,因此在网络处理方面,NP略强于CPU。
在传统网络中,转发规则的更新可能会出现不一致现象,SDN也如此。针对这种问题的一种解决方案是将配置细节抽象至较高层次以便统一更新。一般采用两段提交的方式来更新规则。首先,当规则需要更新时,控制器询问每个交换机是否处理完对应旧规则的流,确认后对处理完毕的所有交换机进行规则更新;之后当所有交换机都更新完毕时才真正完成更新,否则撤销之前所有的更新操作。然而,这种方式需要等待旧规则的流全部处理完毕后才能进行规则更新,会造成规则空间被占用的情况。增量式一致性更新算法可以解决上述问题,该算法将规则更新分多轮进行,每一轮都采用二段提交方式更新一个子集,这样可以节省规则空间,达到更新时间与规则空间的折中。
3.2 控制平面关键技术
控制器是控制平面的核心部件,也是整个SDN体系结构中的逻辑中心。随着SDN网络规模的扩展,单一控制器结构的SDN网络处理能力受限,遇到了性能瓶颈,因此需要对控制器进行扩展。当前存在两种控制器的扩展方式:一种是提高自身控制器处理能力,另一种是采用多控制器方式。
最早且广泛使用的控制器平台是NOX 1 ,这是一种单一集中式结构的控制器。针对控制器扩展的需求,NOX-MT提升了NOX的性能,具有多线程处理能力。NOX-MT并未改变NOX的基本结构,而是利用了传统的并行处理技术来提升性能。另一种并行控制器是Maestro,它通过良好的并行处理架构,充分发挥了高性能服务器的多核并行处理能力,使其在大规模网络情况下的性能明显优于NOX。
但在多数情况下,大规模网络仅仅依靠单控制器并行处理的方式来解决性能问题是远远不够的,更多的是采用多控制器扩展的方式来优化SDN网络。控制器一般可采用两种方式进行扩展:一种是扁平控制方式,另一种是层次控制方式。(如图2所示)
在扁平控制方式中,各控制器放置于不同的区域,分管不同的网络设备,各控制器地位平等,逻辑上都掌握着全网信息,依靠东西向接口进行通信,当网络拓扑发生变化时,所有控制器将同步更新,而交换机仅需调整与控制器间的地址映射即可,因此扁平控制方式对数据平面的影响很小。在层次控制方式中,控制器分为局部控制器和全局控制器,局部控制器管理各自区域的网络设备,仅掌握本区域的网络状态,而全局控制器管理各局部控制器,掌握着全网状态,局部控制器间的交互也通过全局控制器来完成。
3.3 SDN网络部署方式
- Underlay的网络
所有的转发行为都由控制器通过OpenFlow协议或定制的BGP协议将转发表下发给转发器,转发器仅仅执行动作,没有单独控制面。
- Overlay的网络
这种网络的转发器一般都是传动设备,不支持OpenFlow,或者私有定制协议不能部署时,就要用隧道技术,基础网络还是传统网络形式,通过路由协议打通各个节点,但是在服务器接入点,采用隧道技术将数据报文进行封装或者解封装。对传统网络来说见到的就是普通数据报文,转发即可。隧道技术实际上就是报文的马甲,迷惑网络设备,让设备以为时自己人,但实际上报文的心是虚拟化的心。现一般采用Vxlan,GRE,NVGRE等隧道技术,而这些新增的协议,也需要升级现有网络设备才能支持(不支持上述协议的网络设备)。穿马甲纵然能够在不进行大改造的情况下增加新的功能,但无疑会降低网络性能。
4 SDN的价值
4.1 网络业务快速创新
SDN的可编程性和开放性,使得我们可以快速开发新的网络业务和加速业务创新。如果希望在网络上部署新业务,可以通过针对SDN软件的修改实现网络快速编程,业务快速上线。
SDN网络关键的地方是在网络架构中增加了一个SDN控制器,把原来的分布式控制平面集中到一个SDN控制器上,由这个集中的控制器来实现网络集中控制。SDN网络架构具备3个基本特征:转控分离、集中控制、开放接口。
SDN通过在网络中增加一个集中的SDN控制器,可以简化网络和快速进行业务创新。但是其本质的技术原理是通过SDN控制器的网络软件化过程来提升网络可编程能力。通信平面仍包含管理平面、控制平面和数据平面,SDN网络架构只是把系统的三个平面的功能进行了重新分配,传统网络控制平面是分布式的,分布在每个转发设备上,而SDN网络架构则是把分布式控制平面集中到一个SDN控制器内,实现集中控制,而管理平面和数据平面并没有太多什么变化。
SDN网络具备快速网络创新能力,如果这个新业务有价值则保留,没有价值可以快速下线。不像传统网络那样,一个新业务上线需要经过需求提出、讨论和定义开发商开发标准协议,然后在网络上升级所有的网络设备,经过数年才能完成一个新业务。SDN使得新业务的上线速度从几年提升到几个月或者更快。
4.2 简化网络
SDN的网络架构简化了网络,消除了很多IETF的协议。协议的去除,意味着学习成本的下降,运行维护成本下降,业务部署快速提升。这个价值主要得益于SDN网络架构下的网络集中控制和转控分离。
因为SDN网络架构下的网络集中控制,所以被SDN控制器所控制的网络内部很多协议基本就不需要了,比如RSVP协议、LDP协议、MBGP协议、PIM组播协议等等。原因是网络内部的路径计算和建立全部在控制器完成,控制器计算出流表,直接下发给转发器就可以了,并不需要协议。未来大量传统的东西向协议会消失,而南北向控制协议比如Openflow协议则会不断的演进来满足SDN网络架构需求.
4.3 网络设备白牌化
基于SDN架构,如果标准化了控制器和转发器之间的接口,比如OpenFlow协议逐渐成熟,那么网络设备的白牌化将成为可能,比如专门的OpenFlow转发芯片供应商,控制器厂商等,这也正是所谓的系统从垂直集成开发走向水平集成。
垂直集成是一个厂家供应从软件到硬件到服务。水平集成则是把系统水平分工,每个厂家都完成产品的一个部件,有的集成商把他们集成起来销售。水平分工有利于系统各个部分的独立演进和更新,快速进化,促进竞争,促进各个部件的采购价格的下降。
4.4 业务自动化
SDN网络架构下,由于整个网络归属控制器控制,那么网络业务网自动化就是理所当然的,不需要另外的系统进行配置分解。在SDN网络架构下,SDN控制器可以自己完成网络业务部署,提供各种网络服务,比如L2VPN、L3VPN等,屏蔽网络内部细节,提供网络业务自动化能力。
4.5 网络路径流量优化
通常传统网络的路径选择依据是通过路由协议计算出的“最优”路径,但结果可能会导致“最优”路径上流量拥塞,其他非“最优”路径空闲。当采用SDN网络架构时,SDN控制器可以根据网络流量状态智能调整网络流量路径,提升网络利用率。
参考链接
OVS那些事儿之基础功能篇_Kenelite的博客-CSDN博客_ovs和dvs
软件定义网络
SDN 是什么? - 知乎
《SDN(软件定义网络)基础与提升》 导论视频课程【共4课时】_数据安全课程-51CTO学堂
SDN介绍(什么是SDN)_AtlanSI的博客-CSDN博客_sdn
SDN:什么是SDN?(what?) - 知乎
(一)SDN基本架构_竹杖芒鞋轻胜马,一蓑烟雨任平生的博客-CSDN博客_sdn架构
OpenStack中SDN泛谈4 (SDN发展与架构) - 简书
理解OpenStack与SDN控制器的集成_筋斗云计算的博客-CSDN博客_openstack sdn
OpenStack与SDN控制器的集成 | SDNLAB | 专注网络创新技术
《重识云原生系列》专题索引:
- 第一章——不谋全局不足以谋一域
- 第二章计算第1节——计算虚拟化技术总述
- 第二章计算第2节——主流虚拟化技术之VMare ESXi
- 第二章计算第3节——主流虚拟化技术之Xen
- 第二章计算第4节——主流虚拟化技术之KVM
- 第二章计算第5节——商用云主机方案
- 第二章计算第6节——裸金属方案
- 第三章云存储第1节——分布式云存储总述
- 第三章云存储第2节——SPDK方案综述
- 第三章云存储第3节——Ceph统一存储方案
- 第三章云存储第4节——OpenStack Swift 对象存储方案
- 第三章云存储第5节——商用分布式云存储方案
- 第四章云网络第一节——云网络技术发展简述
- 第四章云网络4.2节——相关基础知识准备
- 第四章云网络4.3节——重要网络协议
- 第四章云网络4.3.1节——路由技术简述
- 第四章云网络4.3.2节——VLAN技术
- 第四章云网络4.3.3节——RIP协议
- 第四章云网络4.3.4节——OSPF协议
- 第四章云网络4.3.5节——EIGRP协议
- 第四章云网络4.3.6节——IS-IS协议
- 第四章云网络4.3.7节——BGP协议
- 第四章云网络4.3.7.2节——BGP协议概述
- 第四章云网络4.3.7.3节——BGP协议实现原理
- 第四章云网络4.3.7.4节——高级特性
- 第四章云网络4.3.7.5节——实操
- 第四章云网络4.3.7.6节——MP-BGP协议
- 第四章云网络4.3.8节——策略路由
- 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
- 第四章云网络4.3.10节——VXLAN技术
- 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
- 第四章云网络4.3.10.3节——VXLAN隧道机制
- 第四章云网络4.3.10.4节——VXLAN报文转发过程
- 第四章云网络4.3.10.5节——VXlan组网架构
- 第四章云网络4.3.10.6节——VXLAN应用部署方案
- 第四章云网络4.4节——Spine-Leaf网络架构
- 第四章云网络4.5节——大二层网络
- 第四章云网络4.6节——Underlay 和 Overlay概念
- 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
- 第四章云网络4.7.2节——virtio网络半虚拟化简介
- 第四章云网络4.7.3节——Vhost-net方案
- 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
- 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
- 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
- 第四章云网络4.7.8节——SR-IOV方案
- 第四章云网络4.7.9节——NFV
- 第四章云网络4.8.1节——SDN总述
- 第四章云网络4.8.2.1节——OpenFlow概述
- 第四章云网络4.8.2.2节——OpenFlow协议详解
- 第四章云网络4.8.2.3节——OpenFlow运行机制
- 第四章云网络4.8.3.1节——Open vSwitch简介
- 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
- 第四章云网络4.8.4节——OpenStack与SDN的集成
- 第四章云网络4.8.5节——OpenDayLight
- 第四章云网络4.8.6节——Dragonflow