SDN vs. NFV纠缠不清的SDN和NFV
Posted 从善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDN vs. NFV纠缠不清的SDN和NFV相关的知识,希望对你有一定的参考价值。
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
文章目录
本文阅读完成,您可以知道什么是SDN?什么是NFV?都强调软硬件分离那么它们之间的本质区别是什么?
什么是SDN?什么是NFV?既然它们都强调软硬件分离,那么它们有什么本质区别呢?
SDN
传统网络体系结构存在的问题
当前的网络需求在不断的增长。例如,当前企业正在快速地向公有云和私有云迁移;海量数据集需要在上千台服务器上并行处理,这些服务器之间的互联程度较高,因此,数据中心的网络容量需求呈现持续较快的增长;公司员工通过智能手机、平板电脑、笔记本等个人移动设备访问企业网资源的数量也在不断的增加,这些设备支持复杂的应用,而这些应用会产生大量的图片和视频流量,会给企业网带来新的负担。
流量模式更为复杂。一些发展和变化导致企业数据中心,本地和区域性企业网、承载网内的流量模式动态性和复杂性都异常高,这些变化主要包括:
- 客户机/服务器类应用通常会访问若干数据库和服务器,而这些数据库和服务器之间需要相互通信,这就产生了大量服务器与服务器之间的 “横向” 流量和服务器和客户机之间的 “纵向” 流量;
- 语音、视频等大量多媒体数据流量在网络中汇集,使得流量模型变得更加难以预测;
- 移动设备可以在任意时间任意地点来访问公司的数据和应用;
- 公有云的广泛使用使得很多企业以前的本地流量都转移到广域网中,这给企业的路由器增加了很大的负载,而且这些负载常常很难预测;
即使采用了更高容量的传输机制和性能更好的网络设备,传统网络体系结构在面对不断增加的复杂性、动态性以及负载数量时还是变得越来越不适用。根据这些特征,开放网络基金会(ONF)指出了传统网络体系结构存在的局限性:
- 静态且架构复杂:为了响应不同级别的QoS、高且波动大的通信量以及安全等需求,网络技术已经变得更加复杂和难以管理。 这导致了许多独立定义的协议,每个协议都满足网络需求的一部分。 一个例子便是添加或移动设备, 网管人员需要使用设备级管理工具对多个交换机、路由器、防火墙、web认证门户等的配置参数进行修改。 这些更新包括访问控制列表(ACL)、虚拟局域网设置、众多设备的QoS设置以及其他协议相关的调整。 另一个例子是调整QoS参数以满足不断变化的用户需求和流量模式。 必须使用手动程序来配置每个供应商的设备,每个应用程序,甚至每个会话。
- 策略不一致:为了实现一个网络范围的安全策略,管理人员可能需要对数千个设备进行配置更改。在大型网络中,当一个新的虚拟机被激活时,可能需要花费数小时甚至数天的时间来重新配置整个网络中的ACL。
- 扩展性不足:对网络容量和多样性的需求一直在增长。但是由于网络的复杂和静态特性,增加更多涉及多个厂商的交换机和传输带宽是困难的。企业采用的一种策略是基于预测的流量模式进行超额订购,但是随着虚拟化使用的不断增加和多媒体应用的日益多样化,流量模式变得越来越难以预测。
- 厂商依赖性:企业和运营商需要快速部署新功能和服务,以响应不断变化的业务需求和用户需求。但由于网络功能缺乏开放的接口,使得企业受到供应商设备相对缓慢的产品周期的限制。
现代网络的主要需求
开放数据中心联盟(ODCA)列出了下面几个需求:
- 适配性:网络必须能够根据应用需求、业务策略和网络条件进行动态调整和变化;
- 自动化:策略的变化必须能够自动地扩散,以减少手工操作和失误;
- 可维护性:新特性和功能(软件升级、补丁)的引入应当能够无缝实现,从而使操作中断最小化;
- 模型管理:网络管理软件应当允许在抽象层级进行网络管理,而不是通过对单个网络单元进行重配置来实现设计上的变化;
- 移动性:控制功能必须能顺应移动性要求,包括移动用户设备和虚拟服务器;
- 集成安全性:网络应用应当将安全性以核心服务的形式无缝集成进来,而不是作为附加功能;
- 按需缩放:具体的实现应当具备扩展和缩小网络和服务规模的能力,从而支持按需请求。
SDN体系结构
首先我们先看一下早期的计算模式。在早期的计算模式中,想IBM等厂商提供完全集成的产品,这些产品有专用的处理器硬件、专用的操作系统、专用的汇编语言、专用的应用程序。在这种环境中,特别是大客户,会被捆绑在一个厂商上。
现在,计算环境已经变的非常开放和灵活。大部分单机系统的计算硬件由X86以及与X86兼容的处理器组成,而对于嵌入式系统大部分是ARM处理器,这使得使用C、C++、JAVA等开发的操作系统非常容易移植,即使是像IBM 的zEnterprise这样的大型机等私有硬件体系结构,也可以提供标准化的编译器和编译环境,还能轻松运行Linux等开源操作系统。因此,为Linux或其它开源操作系统开发的应用程序可以方便地从一个厂商的平台移植到另一个平台,甚至Winodws和Mac OS等操作系统开提供了编译环境使得这种应用程序移植变得更为简单。此外,他还推动了虚拟机的发展,虚拟机可以从一个服务器迁移到其它服务器上,即使这些服务器的硬件平台和操作系统都不一样。
现在的网络环境面临着与早期计算模式类似的问题,但是这里的问题不是如何开发能够在多个平台运行的应用程序,而是应用程序和网络基础设施之间缺少融合(integration)。
这时,SDN的思想应运而生。
SDN是一种大规模网络设计、构建和运维方法,它利用了中央服务器种的软件对路由器和交换机的转发决策进行编程。SDN与传统网络不同,传统网络需要对每台设备都进行独立的配置,而且所依赖的协议无法进行修改
SDN的核心概念是让开发者和网络管理员可以对网络设备有相同的控制方式。SDN将交换功能分为数据平面和控制平面,每个平面运行在不同的设备上(如下图)
其中数据平面只负责转发分组,而控制平面可以 “智能” 地设计路由、设置优先级和路由策略参数来满足Qos和QoE需求,以应对变化的流量模式。
SDN的控制平面可以有一个或多个SDN控制器,而SDN控制器则对SDN数据平面的数据流进行定义,网络中的每条流也都由控制器来进行配置,控制器会根据网络策略来判定是否允许此次通信。如果控制器允许某条流访问端系统,那么它会为这条流计算出一条路由,并将对应的流表项添加到路由所涉及的所有交换机上。由于所有的复杂工作都交给了控制器,因此交换机只需要对流表进行简单的管理,而流表中的表项只能由控制器来修改。
上图中展示了更多SDN体系结构的细节。数据平面由物理交换机和虚拟交换机组成,在这种情况下,交换机只负责转发分组。缓存、优先级参数以及其它转发相关的数据结构的内部实现都取决于厂商,但是每个交换机都必须实现与SDN控制器统一且开放的分组转发模型或者抽象,该模型被定义为控制平面和数据平面之间的南向接口。上图中的OpenFlow是一个最有名的南向接口,它定义了控制平面和数据平面之间通信的协议,同时也定义了数据平面功能的逻辑结构规范。
SDN控制器可以直接在服务器或虚拟服务器上实现,OpenFlow或其他南向接口协议用于对数据平面的交换机进行控制,此外,控制器还会用到从数据流经过的网络设备处获取的容量和需求信息,利用这些信息可以形成一个全局抽象的网络资源视图,进而更 “智能” 的配置数据平面。
SDN控制器还开放了北向接口,这使得开发者和网络管理员可以部署大量现有的和定制的网络应用。目前很多厂商采用REST(Representational State Transfer) API 来提供SDN控制器的可编程接口。
还有东向/西向接口,这类接口的目的是让控制器之间可以通信、协作和状态同步以达到更高的实用性。
对于应用平面,SDN应用是可以利用网络抽象视图进行决策的程序,这些应用会通过北向接口将它们的网络需求和所期望的网络行为传递给SDN控制器。
SDN的特征
- 控制面和数据面解耦,数据面设备只负责数据的转发功能;
- 控制面在集中式的控制器或一组协作的控制器上实现,SDN控制面拥有网络或它所控制网络的全局视图,可以基于这张全局视图对转发面进行编程。同时,控制器是可移植的软件,可以运行在通用商用服务器上;
- 控制面与数据面之间的南向接口已经明确定义;
- SDN控制器可以为上层应用提供一个抽象的全局网络资源视图,应用可以基于这个视图对网络进行编程。
SDN的数据平面
SDN数据平面在ITU-T的Y.3300中被称为资源层,也常被称为基础设施层,是网络转发设备根据SDN控制平面的决策进行数据传输和处理的地方。SDN网络中网络设备的重要特点是,这些设备只完成简单的转发功能,而不需要内嵌软件来执行自治决策。
数据平面的主要功能
- 控制支撑功能:与SDN控制层进行交互,从而通过南向接口支持可编程特性;
- 数据转发功能:从其它网络设备或者端设备接收到达的数据流,并将它们沿着计算和建立好的数据转发路径转发出去,转发路径主要根据SDN应用定义的规则决定。
网络设备使用的转发规则体现在转发表中,转发表反映了特定类别分组的下一跳路由。除了简单地转发分组以外,网络设备还可以对分组的首部进行修改,或者丢弃该分组。如上图,到达的分组被放置在输入队列中,等待网络设备的处理,而分组在完成转发之后通常会放置于输出队列,等待传输。
上图中的网络设备有3个输入/输出端口:一个提供了与SDN控制器之间的控制通信,另外两个分别是输入和输出。图中只是一个简单的例子,网络设备可以有多个端口与多个SDN控制器通信,也可以有不止两个输入/输出端口来处理分组的到达和离开。
SDN的控制平面
SDN控制平面将应用层服务请求映射为特定的命令和正式指令并送达数据平面交换机,并且向应用程序提供数据平面拓扑和活动性的信息。
控制平面的功能
上图中给出了SDN控制器的基本功能:
- 最短路径转发:使用从交换机收集到的路由选择信息,创建优先的路径;
- 通告管理器:将发生的事件接收、处理以及转发给应用。例如,安全性告警、状态改变等;
- 安全性机制:在应用程序和服务之间提供一个隔离且安全的环境;
- 拓扑管理器:建立和维护交换机互联拓扑信息;
- 统计管理器:收集经过交换机上的流的数据信息;
- 设备管理器:配置交换机参数和属性,并且管理流表。
其实SDN控制器提供的功能可以看作一个NOS(网络操作系统),通过SDN NOS 将底层设备抽象,开发人员能够定义网络策略和管理网络,而不必关注网络设备的细节(这些网络设备可以是异构的,动态变化的)。
SDN总结
SDN关注的重点是控制面和数据面如何分离的问题。SDN打破垂直行业的垄断(如下图),形成一个水平的生态环境,为创新提供更多的机会。
NFV
NFV提出的背景
NFV源于众多网络管理人员和通信公司在高容量多媒体时代如何改善网络运维这一问题而引发的讨论。这些讨论促成了NFV白皮书的出版,即《Network Functions Virtualization: An Introduction, Benefits, Enablers, Challenges & Call for Action》。在这份白皮书中,NFV的总体目标是利用标准IT虚拟化技术,将许多不同类型的网络设备整合到行业标准的大容量服务器、交换机和存储设备上,这些设备可以位于数据中心、网络节点和终端用户场所。
白皮书中指出这种新方法产生的原因是网络中有大量并且数目仍在不断增加的私有硬件设备,这种现象导致以下负面结果的产生:
- 新的网络服务可能需要其他不同类型的硬件设备,腾出足够的空间和电力来容纳这些设备变得越来越难;
- 新硬件的出现会带来额外的资金开销;
- 每当有新的硬件设备开始应用,网络管理人员就需要学习新的技能来使用这些设备,产生了额外的人力开销;
- 硬件设备很快就会结束它的生命周期,这就使得大部分采购-设计-集成-部署周期不断重复,并且无法带来收益和回报;
- 为了快速满足以网络为中心的IT发展需求,需要加快技术和服务创新,同时也促使和这些技术或者服务相关的新硬件设备的出现,然而采购、部署这些新设备的成本,使得本来有利可图的网络服务变得无利可图。
NFV的定义
网络功能虚拟化(Network Functions Virtualization)被定义为运行在虚拟机上且利用软件实现网络功能的虚拟化技术。
NFV与传统设计、部署和管理网络服务的方法有很大的不同,它将网络地址转换(NAT)、防火墙(Firewall)、入侵检测(IDS/IPS)、域名服务(DNS)、高速缓存等网络功能从专用的硬件设备中分离开来,以软件的形式在虚拟机中运行和实现。NFV建立在标准的虚拟机技术之上,并将它们的应用范围扩展到网络邻域。
在传统网络中,所有的设备都部署在私有/封闭的平台上,所有网络单元都是密封的盒子,这些硬件无法被共享。每台设备都要求额外的硬件来增加其功能,但是当系统负载较低时,硬件就都空闲起来了。而有了NFV,网络单元就成了独立的应用程序,这些应用程序可以灵活的部署在由标准服务器、存储设备、交换机等构成的统一平台上。这样软件和硬件就分离开来了(如下图),而每个应用程序的处理能力则会随着分配给它的虚拟资源数量而相应地提高或降低。
NFV基本术语
术语 | 定义 |
---|---|
NF(网络功能) | 网络基础设施内的功能模块,包括定义良好的外部接口和功能行为,通常是物理网络结点或其它物理设施 |
网络功能虚拟化(NFV) | 利用虚拟硬件抽象将网络功能从硬件中分离出来的原则 |
网络功能虚拟化基础设置(NFVI) | 部署了虚拟化网络功能的环境中的所有硬软件。NFVI可以跨越多个区域(也即多个入网点),连接这些不同区域的网络设施也属于NFVI的一部分 |
NFVI结点 | 以独立实体形式部署和管理的物理设备,它提供了支持VNF运行环境的NFVI功能 |
NFVI入网点 | 可以将网络功能作为VNF进行部署的网络入网点 |
网络入网点(N-PoP) | 将网络功能以PNF和VNF形式实现的场所 |
物理网络功能(PNF) | 采用紧耦合软硬件系统实现的网络功能,通常是私有的系统 |
虚拟化的网络功能(VNF) | 能在NFVI中部署的网络功能的实现 |
VNF转发图(VNF FG) | 连接VNF结点的逻辑链路图,用于描述网络功能之间的数据流 |
VNF集 | VNF集合,这些VNF之间没有规定是否连通 |
NFV架构
下图是ISG NFV定义的NFV架构,这个架构支持将网络功能由软件VNF来实现。
NFV框架由以下三个操作域组成:
- 虚拟化的网络功能:由软件实现的VNF集合,运行在NFVI之上;
- NFV基础设施(NFVI):创建能部署VNF环境的软硬件资源。NFVI 将物理的计算、存储和网络进行了虚拟化,并将它们放置在资源池中;
- NFV 的管理和编排:对NFV环境中的所有资源进行管理和编排的框架,这里的资源包括计算、存储、网络和虚拟机资源。
NFV使用案例
下图中(a)展示了与服务提供商及用户相关的网络功能,网络功能与端结点之间的连接用虚线描述,表示这些连接是逻辑链路。这些逻辑链路实际上是通过基础设施网络(有线和无线)中的物理链接连通起来的。
图(b)描述了如何在图(a)的物理配置之上实现虚拟化的网络服务配置。VNF-1 提供了端点A到网络的连接,VNF-2 提供了端点B到网络的连接,图中还描绘了一个嵌套的VNF转发图(VNF-FG-2),该VNF转发图由其它VNF构成(VNF-2A、VNF-2B和VNF-2C)。所有这些VNF都运行在虚拟机上,这些虚拟机所在的主机也就是PoP点。此外,还有几个需要重点说明的地方,首先,即使穿越VNF2-FG-2 的流量全部都直接从VNF-1到VNF-3,VNF-FG-2中仍然有三个VNF,这是因为这三个VNF在同时执行三个独立且不同的网络功能。例如,某些数据流需要受流量策略或整形功能的约束,这时就要通过VNF-2C来实现。因此,某些流会被路由到VNF-2C,而其它流则不需要执行这些网络功能。
其次,VNF-FG-2中有两个虚拟机运行在同一个物理机上。由于这两台虚拟机执行的是不同的功能,因此对不同的虚拟机根据其业务需求配置不同的虚拟资源。同时为了保证虚拟机的性能,网络管理功能可以将其中的一个虚拟机迁移到其它的物理主机上。
NFV 的基本要素
如上面的例子中描述的,VNF 是用来创建端到端网络服务的构建块,而在架设实际的网络服务时,会涉及三个 NFV 基本要素:
- 服务链:VNF 是可组合的模块,每个 VNF 都只能提供有限的功能。对于特定应用程序中的某条特定数据流,服务提供商通过多个VNF来对流进行管控,从而完成它们所期望的网络功能,这也称为服务链;
- 管理与编排(MANO):主要包括在VNF实例的生命周期期间的部署和管理,例如 VNF 实例的创建、VNF 服务链、监视、迁移、关机和计费等。MANO 还对NFV的基础设施单元进行管理;
- 分布式架构:一个VNF 可以由一个或多个 VNF组件(VNFC)构成,而每个 VNFC都是VNF的功能子集。每个VNFC 可以部署在一个或多个实例中,这些实例则部署在独立的、分布式的主机上,从而保证可扩展性和冗余性。
NFV的技术优势
NFV能够发挥出一些传统网络无法达到的技术优势,以下几个方面最为重要:
- 可以减少资产开支。通过使用商用的服务器和交换器、裁并各种设备、扩大规模经济、支持按增长付费模式等方法可以消除超额配给的浪费,这是NFV发展的主要驱动力;
- 从能源消耗及空间利用的角度说,可以减少运维支出。这类开支的节省主要通过使用商用服务器和交换机、裁并各种设备、扩大规模经济、减少网络管理和控制开支来实现。降低资产开支和运维开支也是NFV发展的主要驱动力;
- 具有快速创新和推广服务的能力。这项优势减少了部署新的网络服务以支持业务需求改变、占领新兴市场、改善新服务投资回报的时间,这就使得服务提供商能方便地对服务进行测试和改进,从而找出最能满足用户需求的服务;
- 具有良好的互操作特性,因为NFV采用的都是标准和开放的接口;
- 可以使单一的平台为不同的应用程序、用户和租户提供服务,这一特点使得网络管理员能跨服务和用户库来共享资源;
- 具有较强的灵活性,能通过快速地扩大或缩小服务的规模来解决需求变化问题;
- 使基于地理或客户群的服务布设成为可能,可以根据需求快速地扩大或缩小服务规模;
NFV总结
NFV关注的重点在于如何用软件实现的网络功能+虚拟化技术+通用的商用服务器或者交换机 来代替传统的专用网络设备(例如,NAT、DNS、IDS/IPS、Firewall等)。
SDN与NFV的关系
NFV和SDN有许多共同的特征,它们的目标都是:
- 将功能迁移到软件中实现;
- 使用商用硬件平台来替代专用平台;
- 使用标准化或开放的应用程序编程接口(API);
- 支持更高效的网络功能演化、部署和位置调整。
但是它们也有不同:
SDN | NFV | |
---|---|---|
目的 | 强调控制面和转发面解耦 | 强调软件和硬件解耦 |
ISO层级 | 网络和数据链路层 | 传输、会话、表示、应用层 |
SDN和NFV是独立而又互补的机制。SDN将网络流量控制的数据面和控制面分离,使得数据流的控制和路由变得更加灵活和高效。而NFV则利用虚拟化技术将网络功能从特定硬件平台分离出来,从而使这些功能更加高效灵活地实现。将虚拟化技术应用到路由器的数据转发功能或者其它的网络功能上,包括SDN控制器的功能等,这样两种技术既可以单独使用,也可以结合起来取得更大的收益。
SDN 与 NFV 之间的关系可以看作是SDN推动了NFV的落地。因为NFV的一大难题是如何更好地让用户配置网络,从而使得运行在服务器上的 VNF 能连接到网络的合适位置,与其它VNF之间保持合适的连通性,并得到想要的服务质量。有了SDN之后,用户和编排软件就能够动态的配置网络以及VNF的分发和互联。如果没有SDN,NFV就不得不采用更多人工干预的方式,特别是当超出NFVI范畴的资源(PNF)也是整个环境的一部分时,情况就变得更加复杂了。
ETSI认为NFV和SDN可以通过以下方法进行互补:
- SDN控制器与NFVI网络域的网络控制器概念相融合;
- SDN在NFVI物理和虚拟资源编排中发挥着重要作用,并实现配给、网络连接配置、宽带分配、自动化操作、监管、安全保障和策略控制等功能;
- SDN提供网络虚拟化,以满足NFVI支持多租户的需求;
- 利用SDN控制器实现转发图从而提供自动的服务链配给,同时确保安全和其它政策能够有力且一致的实现;
- SDN控制器以VNF的形式运行,并作为包含其他VNF的服务链的一部分。
这里是从善若水的博客,感谢您的阅读📕📕📕
以上是关于SDN vs. NFV纠缠不清的SDN和NFV的主要内容,如果未能解决你的问题,请参考以下文章