1 SDN 概述
1.1 SDN 概念
- SDN(Software Defined Network)是一种将网络控制功能与转发功能分离、实现控制可编程的新兴网络架构
- 这种架构将从控制层从网络设备转移到外部计算设备
- 使得底层的基础设施对于应用和网络服务而言是透明的、抽象的,
网络可被视为一个逻辑的或虚拟的实体。
ONRC(开放网络研究中心)的定义:“SDN是一种逻辑集 中控制的新网络架构,关键属性包括:数据平面与控制平面分离;控制平面与数据平面有统一的开放接口 OpenFlow”
ONF(开放网络基金会)认为:“SDN是一种支持动态、 弹性管理的新型网络体系结构,是实现高带宽、动态网络的理想架构。SDN将网络的控制平面与数据平面相分离,抽象了数据平面的网络资源,并支持通过统一的接口对网络直接进行编程控制。”
2006年,以斯坦福大学教授 Nike Mckewn 为首的团队提出了 OpenFlow 的概念
- 并基于OpenFlow技术实现网络的可编程能力(OpenFlow只是实现SDN的一个协议)
- 网络像软件一样灵活编程,SDN技术应运而生。
控制与转发分离,管理与控制分离只是满足SDN的一种手段,OpenFlow只是满足SDN的一种协议
3个特征:
- 网络开放可编程
- 控制平面与数据平面分离
- 逻辑上的集中控制
SDN旨在为公司提供稳定且适应性强的网络架构,本质上是将原有的分布式控制转变为集中式控制。
- 这个架构具备处理由云化及传统 IT 基础设施组成的复杂系统的能力,也具备操纵底层网络基础结构的能力
- 它能使网络控制可编程,且可以使用软件进行控制,实现更大的敏捷性。
- 从而摆脱硬件对网络架构的限制,这样便可以像升级、安装软件一样对网络进行修改,便于更多的应用程序能够快速部署到网络上
- 如果把现有的网络看成手机,那SDN的目标就是做出一个网络界的Android系统
可以在手机上安装升级,同时还能安装更多更强大的手机APP
身为管理员可以根据需要动态调整网络中的流量
- 可以从中央控制台调整流量,而无需接触网络中的各个交换机
- 无论服务器和设备之间的特定连接如何
- 集中式SDN 控制器都会指导交换机在任何需要的地方提供网络服务
- 因此, SDN 技术能够有效降低网络设备负载,协助网络运营商更好地智能化的管控基础设施
-
1.2 SDN 产生的原因
传统网络及其设备的只可配置、不可编程。
网络的分布式控制与管理架构带来的制约。
从互联网的鼻祖 APRANET 开始,传统网络就采用了分布式架构
- 在二层网络中,设备通过广播的方式传递设备间的可达信息
- 在三层网络中,设备间通过标准路由协议传递拓扑信息
- 这些模式要求每台设备必须使用相同的网络协议,保证各厂商的设备可以实现相互通信
随着业务的飞速发展,用户对网络的需求日新月异,一旦原有的基础网络无法满足新需求,就需要上升到协议制定与修改的层面,这样就会导致网络设备升级十分缓慢。
传统网络为了适应不同的需求和场景,发展也越来越复杂。
- 部署一个传统网络往往需要使用到很多协议,由于标准协议中往往存在一些未明确的地方,导致各厂商的实现有差异。
- 传统网络以单台设备为单位,以命令行的方式进行管理。网络管理和业务调度时效率低下,运维成本高。
- IP网络的生存能力很强,得益于其分布式架构
- IP的历史中当年美国军方希望在遭受核打击后,整个网络能够自主恢复
- 这样就不能允许网络集中控制,不能存在中心结点
但正是这种全分布式架构导致了许多问题:
看看现在的 IP 网络管理多复杂,举个运营商部署VPN的例子:
- 要配置MPLS、BFD、IGP、BGP、VPNV4、要绑定接口…且需要在每个PE上配置
当新增加一个PE时,还需要回去修改每个涉及到的PE
同时通过一系列网络协议传递可达信息。
- 一传十,十传百,从而实现互联互通。
- 这种结构最显著特点就是转发、控制合二为一:各节点决定自己的转发规则;
- 一旦有节点损坏或有新的节点加入,各节点通过网络协议重新学习、收敛,再次实现互通。
- ARP:地址解析协议,通过 IP 地址获取主机 MAC 地址
- OSPF:开放式最短路径优先,用于一个自治域内的一种基于链路状态的路由协议
- RIP:路由信息协议,用于一个自治域内的一种基于距离矢量的路由协议
- BGP:边界网关协议,用于不同自治域间交换路由信息
- 传统网络技术,实际上就是由一系列协议来构成的。把一系列相似功能的协议放在不同层次,构成我们熟悉的TCP/IP协议族
- 上世纪80年代出现的TCP/IP体系,已经“统治”了网络界三十多年。要问目前网络技术是由什么决定的?那就是一个个的协议。
- 如果一个网络协议有“缺陷”或者不适用了,那就再开发一个协议出来。比如路由协议,RIP最大的问题就是跳数的最大值为15,于是有了后来的OSPF;IGRP不行,就有了增强型的EIGRP。EGP不行,就有了BGP……
- 可以简单的说,传统网络实际上是“协议定义网络”
- 就拿路由协议来说吧,不管是OSPF、EIGRP还是BGP,都各自有各自的优点和弊端。
- 比如,OSPF支持大型网络,也能保证完全无环路,但是OSPF效率不够高,而且无法实现分流
- 在这个环境中,如果让R5和R6的Loopback 0互访走R1—R3的路径,Loopback 1互访走R2—R4的路径,用OSPF来实现如此的分流就比较麻烦,单区域OSPF根本没法实现。
- 在一张规模较大,功能较多的网络环境中,往往存在着多种路由协议并且还有重分发。
比如非Cisco网络环境要用OSPF,遇到分支分流又要用RIP,遇到骨干分流又要用BGP,这会使得网络的运维难度加大。对于充斥着2—3个路由协议大型的骨干网络运维,一般的网络工程师很难胜任。
这种 “各自为政” 的方式也有一定的优点,既能抵御部分节点失效的风险,又具有一定的可扩展性
- 但是,随着互联网的飞速发展,尤其是云计算、大数据等新兴技术的出现,传统网络的瓶颈也逐渐显现
比如:每个节点自主决定转发规则,缺乏整体观念;制定新的网络协议耗时过长等
各厂家的网络设备太复杂
- 如果准备成为某个厂商设备的百事通,你需要掌握的命令行超过10000条,而其数量还在增加
- 如果准备成为IP骨灰级专家,你需要阅读网络设备相关RFC 2500篇
- 如果一天阅读一篇,要看6年多
而这只是整个RFC的1/3,其数量还在增加。
此外,这些协议标准都是在解决各种各样的控制面需求
- 而这些需求都是需要经过需求提出、定义标准、互通测试、现网设备升级来完成部署
- 一般要个3~5年才能完成部署
- 这样的速度,已经承受不住网络上运营业务的OTT们的各种快速网络调整需求,必须想办法解决这个问题
- 一直以来,网络都是被一众运营商和一堆大佬厂商把持着,几乎是被垄断了。
- 但是随着互联网的飞速发展,传统网络越来越难以满足新业务的需求。
- 矛盾越来越难以调和,大佬们不得不出来通过添加新协议、新设备等手段来缓解问题,但是却成效甚微。
-
2 SDN 架构
2.1 SDN 的基本架构
SDN采用了集中式的控制平面和分布式的转发平面,两个平面相互分离
- 控制平面利用控制—转发通信接口对转发平面上的网络设备进行集中式控制,并提供灵活的可编程能力
具备以上特点的网络架构都可以被认为是一种广义的SDN。
在 SDN 架构中,控制平面通过控制—转发通信接口对网络设备进行集中控制
- 这部分控制信令的流量发生在控制器与网络设备之间,独立于终端间通信产生的数据流量
- 网络设备通过接收控制信令生成转发表,并据此决定数据流量的处理
- 不再需要使用复杂的分布式网络协议来进行数据转发,如下图所示。
- SDN 并不是某一种具体的网络协议,而是一种网络体系框架,这种框架中可以包含多种接口协议。
- 使用 OpenFlow 等南向接口协议实现 SDN 控制器与 SDN 交换机的交互
- 使用北向 API 实现业务应用与 SDN 控制器的交互
这样就使得基于 SDN 的网络架构更加系统化,具备更好的感知与管控能力,从而推动网络向新的方向发展。
2.2 ONF定义的SDN架构
ONF 定义的架构共由四个平面组成
- 即数据平面、控制平面、应用平面以及右侧的控制管理平面
- 各平面之间使用不同的接口协议进行交互
【数据平面】
- 由若干网元组成,每个网元可以包含一个或多个SDN Datapath。
- 每个SDN Datapath是一个逻辑上的网络设备,它没有控制能力,只是单纯用来转发和处理数据
- 它在逻辑上代表全部或部分的物理资源
- 一个SDN Datapath包含控制数据平面接口代理、转发引擎表和处理功能三部分。
- 基础设施层由网络中的物理交换机组成,这些交换机将网络流量转发到它们的目的地。
- 代表之一是开源社区的 Open vSwitch。值得一提的是,与 DPDK(由英特尔联合第三方软件开发公司推出的一款数据面开发套件)结合之后,Open vSwitch 在某些应用场合展示了优异的线性交换能力,逼近硬件的性能,而软件在可重配可扩展方面的潜力却是硬件无法比肩的,具有非常广阔的应用前景。
【控制平面】
- 即所谓的SDN控制器,充当软件定义网络的大脑
- 该控制器驻留在服务器上并管理整个网络的策略和流量
- SDN控制器是一个逻辑上集中的实体,它主要负责两个任务
- 一是将SDN应用层请求转换到SDN Datapath
- 二是为SDN应用提供底层网络的抽象模型(可以是状态、事件)
- 一个SDN控制器包含北向接口代理、SDN控制逻辑以及控制数据平面接口驱动三部分。
- SDN控制器只是要求逻辑上完整,因此它可以由多个控制器实例组成,也可以是层级式的控制器集群
- 从地理位置上讲,既可以是所有控制器实例在同一位置,也可以是多个实例分散在不同的位置。
- 比较著名的控制器有 OpenDayLight(目前成熟度最高的开源平台)和 ONOS(面向运营商领域,在集群、可靠性和性能方面做了增强)。
【应用平面】
- 由若干SDN应用组成,SDN应用时用户关注的应用程序。
- 它可以通过北向接口与SDN控制器进行交互,即这些应用能够通过可编程方式把需要请求的网络行为提交给控制器。
一个SDN应用可以包含多个北向接口驱动(使用多种不同的北向API),同时SDN应用也可以对本身的功能进行抽象、封装来对外提供北向代理接口,封装后的接口就形成了更为高级的北向接口。
应用层包含组织使用的典型网络应用或功能包括OSS(Operation support system 运营支撑系统)、OpenStack架构的云平台等,还可能包括入侵检测系统、负载均衡或防火墙。
传统网络将使用专用设备,例如防火墙或负载均衡器,而软件定义的网络则用使用控制器来管理数据平面行为的应用程序替换设备。
被 5G 网络架构采用是 SDN 发展史上的又一重要里程碑(虽然 3GPP 将会定义新的南向接口)。在 4G/LTE 设计之初,由于业务不丰富以及用户的数据需求不高,分组核心网被设计成以下架构。
- 从接入网涌入的数据统一汇入服务网关(S-GW)和分组数据网关(P-GW)。
- 随着 VR/AR,无人驾驶,无人机集群等新应用和新服务不断涌现,用户对数据获取不仅在量(即带宽)上要求更高,在质(即时延)上也提出了明确的要求。LTE 的这种架构已经明显阻碍了新应用和新服务被采用。为了应对这些挑战,3GPP 遵循 SDN“转发、控制分离” 这一基本原则,在设计 5G 网络架构时做出重大改变:数据面下沉 + 控制面集中。
- 在 LTE 时代,分组核心网关的数量屈指可数,而 5G 则会大量采用分布式网关(即上图中的 UPF)。我们在软件交换机 Open vSwitch 的基础上,增加了无线分组数据(主要是 GTP-U 隧道)的封装、解封装、转发以及其它网关功能,完成了业界第一台支持 5G 分布式网关的 SDN 软件交换机,有望在流量导出与分流,移动边缘计算,高可靠、低时延通信等业务中得到广泛应用。
【管理平面】
- 负责一系列静态的工作,这些工作比较适合在应用、控制、数据平面外实现
- 比如对网元进行配置、指定SDN Datapath的控制器
- 同时负责定义SDN控制器以及SDN应用能控制的范围。
【SDN控制数据平面接口(CDPI)(南向接口)】
- SDN CDPI是控制平面和数据平面之间的接口,它提供的主要功能包括:
- 对所有的转发行为进行控制、设备性能查询、统计报告、事件通知
- SDN一个很重要的价值就体现在CDPI的实现上
- 它应该是一个开放的、与厂商无关的接口
- 呈现 OpenFlow 一枝独秀的局面。OpenFlow 以流表作为配置对象,流表定义了对报文的基本处理,包括匹配(match)、计数(counter)和操作(action)等。高度抽象和易于实现是 OpenFlow 取得成功的关键 。
- SDN CDPI是控制平面和数据平面之间的接口,它提供的主要功能包括:
【SDN北向接口(NBI)】
- SDN NBI是应用平面和控制平面之间的一系列接口。
- 它主要负责提供抽象的网络视图,并使应用能直接控制网络的行为
- 其中包含从不同层对网络及功能进行的抽象
- 这个接口也应该是一个开放的、与厂商无关的接口
- (随着时间的推移,OpenDaylight 控制器的北向 API 可能会成为事实上的标准)
传统的IP网络同样具有转发平面、控制平面和管理平面,SDN网络架构也同样包含这3个平面
只是传统的IP网络是分布式控制的,而SDN网络架构下是集中控制的
3 SDN的核心概念
SDN的核心思想就是要分离控制平面与数据平面,并使用集中式的控制器来完成对网络的可编程任务
控制器通过北向接口和南向接口协议分别与上层应用和下层转发设备实现交互
正是这种集中式控制和数据控制分离(解耦)的特点使SDN具有了强大的可编程能力
- 这种强大的可编程性使网络能够真正地被软件所定义,达到简化网络运维、灵活管理调度的目标
同时为了使SDN能够实现大规模的部署,就需要通过东西向接口协议支持多控制器间的协同
3.1 数据控制分离
3.1.1 数控分离历史
(1)主动网络
- SwitchWare 是一种主动网络解决方案,它试图使用软件实时控制网络,动态修改流经网络的数据包
Click、XORP、Quagga 和 BIRD等传统计算机硬件上的软件路由套件,也试图在路由器中通过加载不同的或修改现有的路由软件来控制数据的传输。
- KOHLER E, MORRIS R, CHEN B, et al. The click modular router[J]. ACM Transactions on Computer Systems, 2000, 18(3):263-297.
- HANDLEY M, HODSON O, KOHLER E. XORP: an open platform for network research[J]. ACM SIGCOMM Computer Communication Review, 2003, 33(1):53-57.
- Free Software Foundation. Quagga Routing Software Suite[EB/OL]. [http://www.nongnu.org/q](http://www.nongnu.org/q)uagga/. [2020-09-23].
- FORST L, MACHEK P. The BIRD Internet Routing Daemon Project[EB/OL]. [http://bird.net](http://bird.net)work.cz/. [2021-01-15].
Caesar 等人首先在 2004 年提出了一个路由控制平台,该平台为降低全分布式路径计算的复杂性,使用集中式路由控制取代边界网关协议的域间路由。
- FEAMSTER N, BALAKRISHNAN H, REXFORD J, et al. The case for separating routing from routers[C]. New York: ACM, 2004.
(2)ForCES
- 2004 年 IETF 发布了转发和控制分离的网络框架,该框架将 ForCES 网络中的控制和分组转发功能分开。
一个满足 ForCES 规范的网络设备,其基本结构如图所示。
可以看出,一个ForCES的网络单元(NE)可以包含至少一个(或多个,用于冗余备份)控制单元(CE)和多达几百个转发单元(FE)。
每个FE包含一个或者多个物理介质接口 Fi/f,该接口用来接收从该网络单元外部来的报文或者将报文传输到其他的网络单元,这些FE接口的集合就是NE的外部接口。
在网络单元外部还有两个辅助实体:CE管理者(CEM)和FE管理者(FEM),它们用来在配置阶段对相应的CE和FE进行配置。
图中Fp为CE和FE间的接口(通信过程由ForCES协议的标准协议完成),其间可以经过一跳(Single Hop)或多跳(Multi-Hop)网络实现。
Fi表示FE间的接口,Fr表示CE间的接口,Fe表示CE管理者和CE间的接口,Ff表示FE管理者和FE间的接口,Fl表示CE管理者和FE管理者之间的接口。
ForCES的这种架构具有底层资源功能模块以及控制面与转发面分离的特点,为新一代网络提供了较好的功能灵活性。
(3)4D 项目
2005 年,Greenberg 等人提出了一种网络管理控制架构 4D
- GREENBERG A, HJALMTYSSON G, MALTZ D A, et al. A clean slate 4D approach to network control and management[J]. ACM SIGCOMM Computer Communication Review, 2005, 35(5): 41-54.
将路由决策模块与网络元素之间的交互协议分离开来
- 将控制管理功能分为“决策”、“传播”、“发现”和“数据”四个平面
4D 项目倡导 4 个主要平面:
- 数据平面基于决策平面产生的状态来处理报文。
- 发现平面用于在网络中发现物理网元并创建逻辑标识符识别它们,决策平面定义了标识符的范围和特久化,并执行彼此间的自动发现和管理。
- 扩散平面提供一个连接路由器或交换机的健壮、高效的通信基础结构,从而能够将决策面产生的状态扩散到数据面上,而自身不产生任何状态。
- 决策平面用于处理网络控制诸如可达性、负载均衡、访问控制、安全和接口配置等功能。
这样做的优势在于可以从分布式系统问题中独立出网络的控制逻辑,这种架构有助于实现更健壮、更安全的网络,同时便于对异构网络进行有效管理。
(4)新一代因特网
2006 年,在 MPLS 和 GMPLS 网络中,路径计算单元结构被提出,并被用于计算标签交换路径和实际的分组转发。
- YAN H, MALTZ D, NG T, et al. Tesseract: a 4D network control plane[C]. CA: USENIX Association, 2007.
2006 年,Martin Cascado 负责了一个与网络安全管理相关的项目 Ethane,该项目计划使用中心式的网络控制器,使网络管理人员可以便捷地自定义基于网络数据流的安全管理控制规则,并能将这些规则应用于网络中各种硬件设备,实现安全控制的网络通信。
- 2008 年,Nick McKeown 教授所带领的团队基于 Ethane 项目,提出了将数据转发与路由控制进行分离,通过控制器使用标准化的接口对不同网络设备进行管理与控制的网络架构,并于同年发表论文对 OpenFlow 的概念以及 OpenFlow 的几大应用场景进行了详细的介绍。
- 目前,OpenFlow 协议已成为 SDN 南向接口事实上的标准而被广泛应用。
- 2014 年 Gartner 的未来技术发展预测报告中,由 SDN 延展出的软件定义一切(Software Defined Everything,SDE)技术被列为第 7 个重要方向。
- 基于 SDN 技术的数据中心、无线基站、蜂窝小区等拓展技术被统称为 SDx。
有研究表明,SDN 技术在无线网络的应用能提升 5%-10%的链路利用率。
- ZHONG L, NAKAUCHI K, SHOJI Y. Performance analysis of application-based QoS control in software-defined wireless networks[C]. New York: IEEE, 2014
同时 SDN 技术也已被应用于无线传感网络
- 将 SDN 技术应用于无人机网络也是一个具有研究价值的课题。
(5)P4
(1)从功能实现来说,控制平面的主要功能是建立本地的数据集合,该数据集合一般被称为路由信息库(RIB),RIB需要与网内其他控制平面实例的信息保持一致,这一点通常使用分布式路由协议(如 OSPF)来完成。
(2)接下来,控制平面需要基于RIB创建转发表,用于指导设备出入端口之间的数据流量转发。转发表通常被称为转发信息库(FIB), FIB 需要经常在设备的控制和数据平面之间进行镜像,以保证转发行为与路由决策一致,因此,FIB实际上是两个平面之间连接的纽带。
(3)数据平面的主要功能是,根据RIB创建的FIB进行数据的高速转发。另外,数据平面还可以根据需要处理一些其他的服务功能,如较短的事件侦测时间等,这是因为某些服务有非常严格的性能需求,需要放在数据平面以保证快速执行。
3.1.3 SDN数控分离的优点
(1)全局集中控制和分布高速转发:这是SDN的最主要优势,一方面可以实现控制平面的全局优化;另一方面可以实现高性能的网络转发能力。
(2)灵活可编程与性能的平衡:SDN数控分离的设计更加平衡,以FIB为分界线实际上降低了SDN的编程灵活性,但是没有暴露商用设备的高速转发实现细节,因此也使得网络设备商更容易接受SDN的理念。
(3) 开放性和IT化:数据控制分离在一定程度上可以降低网络设备和控制软件的成本。当前的网络设备是捆绑控制平面功能软件一起出售的,由于软件开发由网络设备公司完成,对用户不透明,因此网络设备及其控制平面软件的定价权完全掌握在少数公司手中,造成了总体价格高昂。
在数据控制平面分离以后,尤其是使用开放的接口协议后,将会实现交换设备的制造与功能软件的开发相分离,这样可以实现模块的透明化,从而有效降低成本。
3.1.4 SDN数控分离面临的问题
(1)可扩展性问题:这是SDN面临的最大问题,数据控制分离后,原来分布式的控制平面集中化了,即随着网络规模扩大,单个控制节点的服务能力极有可能会成为网络性能的瓶颈(即单点故障)。
(2)一致性问题:在传统网络中,网络状态一致性是由分布式协议保证的,在SDN数据控制分离后,集中控制器需要负起这个责任,如何快速侦测到分布式网络节点的状态不一致性,并快速解决这类问题。
(3)可用性问题:可用性是指网络无故障的时间占总时间的比例,传统网络设备是高可用的,即发向控制平面的请求会实时得到响应,因此,网络比较稳定,但是在SDN数据控制分离后,控制平面网络的延迟可能会导致数据平面可用性问题。
3.2 抽象
ONF网络架构实现转发抽象、分布状态抽象和配置抽象。
(1)转发抽象是数据平面抽象成通用的转发模型,隐藏了底层的硬件实现,转发行为与硬件无关,如MAC表、MPLS标签表、路由表、ACL访问控制列表等抽象成统一的流表。
(2)分布状态抽象屏蔽分布式控制的实现细节,为上层应用提供全局网络视图。
(3)配置抽象是网络行为的表达通过网络编程语言实现,将抽象配置映射为物理配置。Overlay 网络架构实现对基础网络设施的抽象。
3.3 网络可编程
3.3.1 主动网络
传统网络根本没有可编程这个概念。
(1) 主动网络的基本结构
- 主动网络的基本思想是,打破传统网络只能被动传输信息的模式,允许网络中的节点在用户数据上执行用户所需的计算。
- 例如,主动网络的用户可以向网络中的主动节点(如路由器)发送一个定制化的压缩程序,并要求该节点收到相应的包时都执行这个压缩程序。
- DARPA主动网络架构可以划分成3个主要层次:主动应用(AA)、执行环境(EE)和节点操作系统(Node OS),如图所示
- 主动应用(AA)是一个协议的程序代码,它通过主动分组加载到主动节点中,并在主动节点中对分组进行转发和计算来完成某种通信功能。
- 执行环境(EE)是在Node OS上的一个用户级操作系统,它可以同时支持多个AA的执行,并负责AA之间的互相隔离。
- EE为AA提供了一个可调用的编程接口,一个主动网络节点可以具有多个执行环境,每一种执行环境完成一种特定的功能。
- 节点操作系统(Node OS)类似于一般操作系统的内核,它位于主动网络节点最底层的功能层次,管理和控制对主动网络节点硬件资源的使用。
- 因此,EE在Node OS中运行,一个Node OS可以并发地支持多个EE,协调EE对节点中可利用资源(内存区域、CPU 周期、链路带宽等)的使用。
(2)主动网络的数据类型
- 封装模型
- 节点的可执行代码被封装在数据分组内,为in-band方式。这种模型利用数据分组携带代码从而在网络中添加新的功能,同时使用缓存来改善代码分发的效率,而可编程路由器根据数据分组的分组头由管理员定义一系列的操作行为。
- 如图是主动网络封装报文的一种格式,其中包含了IP报文、可执行的程序码和用户数据,交换设备会根据原先的源目的地址来转发报文。
- 可以看到,每条消息甚至每个报文都携带了一段可执行的代码,当报文到达交换机或路由器后,报文中的代码就会被分发到每个交换机的可执行环境中,然后控制交换机的行为或者修改报文。
- 可编程路由器/交换机模型
- 节点的可执行代码被封装在数据分组内,为in-band方式。
- 这种模型利用数据分组携带代码从而在网络中添加新的功能,同时使用缓存来改善代码分发的效率,而可编程路由器根据可编程路由器/交换机模型数据分组的分组头由管理员定义一系列的操作行为。
- 如图是主动网络封装报文的一种格式,其中包含了IP报文、可执行的程序码和用户数据,交换设备会根据原先的源目的地址来转发报文。可以看到,每条消息甚至每个报文都携带了一段可执行的代码,当报文到达交换机或路由器后,报文中的代码就会被分发到每个交换机的可执行环境中,然后控制交换机的行为或者修改报文。
3.3.2 SDN可编程
(1)SDN可编程通过为开发者们提供强大的编程接口,从而使网络有了很好的编程能力。
对上层应用的开发者来说,SDN的编程接口主要体现在北向接口上,北向接口提供了一系列丰富的API,开发者可以在此基础上设计自己的应用而不必关心底层的硬件细节,就像目前在x86体系的计算机上编程一样,不用关心底层寄存器、驱动等具体的细节。
SDN南向接口用于控制器和转发设备建立双向会话,通过不同的南向接口协议, SDN 控制器就可以兼容不同的硬件设备,同时可以在设备中实现上层应用的逻辑。
SDN的东西向接口主要用于控制器集群内部控制器之间的通信,用于增强整个控制平面的可靠性和可拓展性。
(2)可编程能力体现在很多的层次上,从下往上依次为芯片可编程(如P4、POF)、FIB可编程(如OpenFlow)、RIB可编程(如BGP、PCEP)、设备OS可编程、设备配置可编程(如CLI、NETCONF/YANG、OVSDB)、控制器可编程和业务可编程(如GBP、NEMO)。
4 SDN的工作原理
4.1 基本原理
SDN 实际上包含很多种类型的技术:比如功能分离、网络虚拟化和通过可编程性实现的自动化。
最初,SDN 技术只专注于网络控制平面与数据平面的分离,当控制平面决定数据包应该如何流经网络时,数据平面将数据包从一个地方移动到另一个地方。
在经典的 SDN 场景中,数据包到达网络交换机,交换机专有固件中内置的规则告诉交换机将数据包转发到何处,这些数据包处理规则从集中控制器发送到交换机。
交换机(也称为数据平面设备)根据需要向控制器查询指导,并向控制器提供有关其处理的流量的信息。
交换机将每个数据包沿着相同的路径发送到相同的目的地,并以相同的方式处理所有数据包。
软件定义网络使用有时称为自适应或动态的操作模式,其中交换机向控制器发出路由请求,以获取没有特定路由的数据包。
此过程与自适应路由分开,自适应路由通过路由器和基于网络拓扑的算法而不是通过控制器发出路由请求。
SDN 的虚拟化方面通过虚拟覆盖发挥作用,虚拟覆盖是物理网络之上的逻辑独立网络,用户可以实现端到端的覆盖来抽象底层网络和分段网络流量。
这种微分段对于具有多租户云环境和云服务的服务提供商和运营商特别有用。因为,他们可以为每个租户提供具有特定策略的单独虚拟网络。
4.2 技术路线
经典的SDN技术路线强调控制面的剥离,希望能够将网络设备变为白盒设备,实现网络功能的自定义。
但在SDN的发展过程中,由于底层协议的复杂性、软件开发投入等多方面原因,厂商逐渐转向了以自动化运维为主要目标,弱化控制面剥离的SDN技术路线。
厂商们主张将操作系统以及大部分的软件仍放在硬件设备上进行,保留原有的网络设备形态,通过控制器实现与硬件设备、与网络配置管理工具的对接,由控制器在管理面的维度完成对硬件设备的统一管理和业务编排
下图为两种SDN技术路线的对比,经典的SDN技术路线又可以称为软件SDN,而弱化控制面剥离的SDN技术路线可以称为硬件SDN
4.3 SDN与SD-WAN
- SD-WAN 是一种技术,它使用 SDN 概念跨 WAN 分配网络流量
以自动确定最有效的方式来路由进出分支机构和数据中心站点的流量。
SDN 和 SD-WAN 有相似之处
例如,它们都将控制平面和数据平面分开,并且都支持额外的虚拟网络功能的实现。
然而,虽然 SDN 主要侧重于局域网内的内部操作
但 SD-WAN 侧重于连接组织的不同地理位置。这是通过将应用程序路由到 WAN 来完成的。
其它区别
- 客户可以对 SDN 进行编程,而供应商可以对 SD-WAN 进行编程。
- SDN 由封闭系统内的网络功能虚拟化 ( NFV )启用,另一方面,SD-WAN 提供虚拟运行或在 SD-WAN 设备上运行的应用程序路由。
- SD-WAN 在消费级宽带互联网上使用基于应用程序的路由系统,与对 SDN 至关重要的多协议标签交换 ( MPLS ) 相比,这可实现更好的质量性能和更低的每兆字节成本。
所以,这么来看,SDN 和 SD-WAN 是两种不同的技术,旨在实现不同的业务目标。
通常,中小型企业在其集中位置使用 SDN
而希望在其总部和外部站点之间建立互连的大型公司则使用 SD-WAN。
4.4 SDN与NFV
NFV也是一种网络架构,它将传统物理设备的网络功能封装成独立的模块化软件
- 通过在硬件设备上运行不同的模块化软件,在单一硬件设备上实现多样化的网络功能
- SDN和NFV的相似之处主要体现在如下方面:
- 都以实现网络虚拟化为目标,实现物理设备的资源池化。
- 都提升了网络管理和业务编排效率。
- 都希望通过界面操作或者编程语言来进行网络编排。
- SDN和NFV的不同之处参见下图:
- SDN抽象物理网络资源(交换机、路由器等),并将决策转移到虚拟网络控制平面。
- 控制平面决定将流量发送到哪里,而硬件继续引导和处理流量,无需依赖标准的硬件设备。
NFV的目标是将所有物理网络资源进行虚拟化,允许网络在不添加更多设备的情况下增长,这依赖于标准的硬件设备。
其实经典SDN架构也将硬件与软件解耦作为目标,但在实现过程中由于软件研发成本、设备替换等原因的影响,现行的SDN方案弱化了控制面的分离,仅以网络自动化运维为目标。
5 SDN的价值
5.1 网络业务快速创新
SDN的可编程性和开放性,使得我们可以快速开发新的网络业务和加速业务创新。如果希望在网络上部署新业务,可以通过针对SDN软件的修改实现网络快速编程,业务快速上线。
- SDN网络关键的地方是在网络架构中增加了一个SDN控制器,把原来的分布式控制平面集中到一个SDN控制器上,由这个集中的控制器来实现网络集中控制。SDN网络架构具备3个基本特征:转控分离、集中控制、开放接口。
- SDN通过在网络中增加一个集中的SDN控制器,可以简化网络和快速进行业务创新。但是其本质的技术原理是通过SDN控制器的网络软件化过程来提升网络可编程能力。通信平面仍包含管理平面、控制平面和数据平面,SDN网络架构只是把系统的三个平面的功能进行了重新分配
- 传统网络控制平面是分布式的,分布在每个转发设备上,而SDN网络架构则是把分布式控制平面集中到一个SDN控制器内,实现集中控制,而管理平面和数据平面并没有太多什么变化。
SDN网络具备快速网络创新能力,如果这个新业务有价值则保留,没有价值可以快速下线。不像传统网络那样,一个新业务上线需要经过需求提出、讨论和定义开发商开发标准协议,然后在网络上升级所有的网络设备,经过数年才能完成一个新业务。SDN使得新业务的上线速度从几年提升到几个月或者更快。
5.2 简化网络
SDN的网络架构简化了网络,消除了很多IETF的协议。协议的去除,意味着学习成本的下降,运行维护成本下降,业务部署快速提升。这个价值主要得益于SDN网络架构下的网络集中控制和转控分离。
- 因为SDN网络架构下的网络集中控制,所以被SDN控制器所控制的网络内部很多协议基本就不需要了,比如RSVP协议、LDP协议、MBGP协议、PIM组播协议等等。
原因是网络内部的路径计算和建立全部在控制器完成,控制器计算出流表,直接下发给转发器就可以了,并不需要协议。未来大量传统的东西向协议会消失,而南北向控制协议比如Openflow协议则会不断的演进来满足SDN网络架构需求
5.3 网络设备白牌化
基于SDN架构,如果标准化了控制器和转发器之间的接口,比如OpenFlow协议逐渐成熟,那么网络设备的白牌化将成为可能,比如专门的OpenFlow转发芯片供应商,控制器厂商等,这也正是所谓的系统从垂直集成开发走向水平集成。 | SDN产业链 | | | | —- | —- | —- | | 类别 | 厂商 | 现状 | | 芯片商 | 盛科、博通 | 盛科已经推出支持OpenFlow的交换机,并广泛应
用于国内科研机构,博通推出SDN芯片解决方案 | | 网络设备制造商 | 思科、华为、爱立信、阿朗 | 思科开放部分软件,推出针对性SON产品:华为在
硬件设备中增加对OponFlow支持 | | IT供应商 | IBM、HP | 推出控制器、支持OpenFlow | | 创新公司 | Nicira、Big Switch | Nicira走在最前列,基于VSwitch的网络虚拟平台已服务于AT&T,eBay,Fidelity,RackSpace等公司 |垂直集成是一个厂家供应从软件到硬件到服务。水平集成则是把系统水平分工,每个厂家都完成产品的一个部件,有的集成商把他们集成起来销售。水平分工有利于系统各个部分的独立演进和更新,快速进化,促进竞争,促进各个部件的采购价格的下降。
5.4 业务自动化
SDN网络架构下,由于整个网络归属控制器控制,那么网络业务网自动化就是理所当然的,不需要另外的系统进行配置分解。在SDN网络架构下,SDN控制器可以自己完成网络业务部署,提供各种网络服务,比如L2VPN、L3VPN等,屏蔽网络内部细节,提供网络业务自动化能力。
5.5 网络路径流量优化
通常传统网络的路径选择依据是通过路由协议计算出的“最优”路径,但结果可能会导致“最优”路径上流量拥塞,其他非“最优”路径空闲。当采用SDN网络架构时,SDN控制器可以根据网络流量状态智能调整网络流量路径,提升网络利用率。
6 SDN未来与挑战
6.1 存在问题
在数据中心领域,大多数大规模数据中心已经采用扁平化架构,这给网络设备的管理带来了极大的挑战。SDN带来的自动化运维、集中管理在数据中心的自动化调配以及扩容中有极大的应用空间。
- 在视频领域,由于SDN支持数据流的实时调配,使得网络能够承载更多的流量。
- 在机器学习和人工智能领域,SDN也会受到运营需求和软件创新的影响,提供更丰富、更新潮的网络体验
- 在未来的网络自动驾驶(ADN)中,SDN架构也能够发挥重要作用。
SDN并非没有缺点,与其他IT产品一样,SDN存在安全、扩展以及缺乏广泛合作、缺乏生态的问题。
集中管理的安全风险
- 虽然集中管理十分方便,但这也是一种安全风险。
- 集中管理的单节点被攻击,整个网络可能都会受到影响。
- SDN控制器的瓶颈
- 对于软件完全从硬件上分离的SDN思路来说
- 控制器的软件开发难度、控制器的计算压力都是巨大的挑战。
北向API缺乏统一标准
运营商和设备厂商大佬对SDN存在抵触。因为新的网络架构让网络彻底软件化,自己辛辛苦苦建立起来的基础设施彻底失去控制权,而沦为转发管道。
- 彻底丢失对网络的控制权,让自己研制的网络协议成为废纸,这是所有大佬都无法容忍的,但是思科、华为等大佬厂商毕竟纵横网络世界几十年,自然不可能坐以待毙。
- 这些大佬在网络协议方面的技术还是有明显优势,数据转发也是他们的老本行。SDN再牛,硬件上也无法离开思科、华为、H3C这些设备。
于是,这些大佬在考虑到不损失自己根本利益,又不至于被人说成是“为了利益阻碍SDN研究的绊脚石”,所以大佬们提出了SDN的另外一种方案,那就是 Overlay。
Underlay网络和Overlay网络这两个概念,分开讲就不好说了。
- 我们先看一下目前SDN的一种既能满足用户的需求,也能保证厂商利益的方案。
- 那就是底层网络(Underlay)仍然采用传统的架构,仍然跑着各种路由协议;
- 但是上层网络(Overlay)则是在底层网络之上,构建出来的一个逻辑的网络,这个架构大概是这个样子:
- 底层网络有规定的物理架构和协议,在物理网络之上建立一张逻辑的Overlay虚拟网络,底层是Underlay网络作为支撑。Overlay网络依赖于Underlay网络,但是又不受Underlay的束缚。
- 对于网络中的各个终端来说,物理网络到底是什么样子它们不需要知道。只需要知道的是这个物理网络是基于IP转发的,所以报文要到哪里去,提供目标IP地址就可以了。
- 举个例子来看,Server-A要访问Server-B,连接在不同的Leaf设备下,但是IP网段却相同:
- 那么,在 Server-A 访问 Server-B 的报文之前,封装的源IP地址应该是10.112.98.25,目标IP地址应该是10.112.98.26。先封装一个普通的报文:
- 第二件事情就是要告知物理网络,把数据报文送到Server-B那里,于是向物理网络提供目标IP地址是10.112.98.26。在Overlay网络中,可能没有直接到10.112.98.26的路由,于是就在原来的三层报文外面,再加一层IP网络的封装,就像这样:
- Overlay Head包头外层再封装一个外层的IP包头。
- 在Overlay网络中,就按照外层的IP包头记录的目标地址进行转发。
- 如果出了Overlay网络,则Overlay Head之前的就全部剥离,Server-B收到的还是原始的三层报文
- 在包头面前在增加一个外层包头,其实就是Overlay的基本思想。
Overlay网络可以继承转控分离的思想,又不用对底层Underlay物理网络进行伤筋动骨地修改,既能满足用户的特殊需求,也不会伤害到厂商们的利益。
我们再来总结一下overlay技术,可以看到,实际上,物理网络成了一个工具,进行单纯的IP转发,而实际的逻辑网络再也不用看物理网络的脸色了,我想怎么部署就怎么部署,后面转发的时候我给你物理网络封装一个IP报头, 你帮我转发就行了。
- 这个封装和解封装的过程可以放在服务器上通过软件实现。不管物理网络是基于IP、基于MPLS、或者基于其他,都不要紧,你是基于什么转发,我就给你外面加一个你需要报头就可以了。
- 所以overlay技术很大程度的提高了网络的灵活性,并且不用对现有物理网络做任何变动。
同时,封装的过程和内容可以通过软件实现,这就是为什么大佬们认为overlay技术也继承了SDN的思想,并且相对openflow有其优势。这种方案不像openflow那样激进,属于对现有网络的改良。
但是对于坚持推送Openflow的这一批革命派”,坚定的是支持基于Openflow的转控分离,从根本上改变目前的网络架构,他们认为Overlay仍然是换汤不换药。
- 目前,也有一些厂商推出了Openflow控制器和基于Openflow的白盒交换机,但是总体来说,这个路线目前不够成熟,解决方案也不成体系。
- 而且,Openflow目前也没有定义出完善的流量转发模型,连流表都不统一,控制器的兼容也不好。
- 而SDN目前只是定义的控制面和转发面,对于设备网管的问题却一直没有解决。
- 还有,不管是用Linux还是Windows做SDN的控制器,也容易遭遇攻击,安全性不敢保证。
- 所以,SDN真正想”革命”成他们想要的样子,即控制器+白盒机,还需要走很长一段路。
总的来说,这种革命极有可能走当年ISO/OSI七层模型要”革命”TCP/IP五层协议族一样,ISO/OSI七层模型弄得太完美, 完美到完全无法落地使用。
而对于这次Overlay的“改良派”,他们通过一系列网络虚拟化技术提升的网络的灵活性、缓解了传统网络的顽疾。软件Overlay一类的技术自己也是可以编程的,在Overlay网络中,也可以用控制器来决定数据流在Underlay网络中的传递路径。
但是,这毕竟不是彻底的“转控分离”,Overlay上的转控分离还是受到了Underlay的限制,所谓”根基不牢”。同时,overlay技术本身也并不是完美无瑕, 其在和传统二层网络互通, 网关处理方面也同样存在一些缺陷。
7 SDN的学习路线
SDN的学习路线是“先有基础,再学其架构体系,后应用于特定场景”
“软件”无非就是要学习一门编程语言,如Java、Python啥的。
- 而“网络”环境原来都是设备厂商专有操作系统,现在语言构建的包大多运行在Linux环境上,这就涉及到部署软件如何在Linux上。
- 比如:网络APP是一个Web应用,那么就需要了解如何部署语言环境、容器以及如何修改配置文件等。
- 虽然 SDN 已经能够弥补传统网络技术的不足,但是其在实际应用的过程中仍存在一定的问题。
比如:控制器接口不规范、运算任务相对繁重、安全性得不到保障、整体稳定性较差等。
SDN 技术在 2011 年左右与 OpenFlow 协议一起推出时受到了很多炒作。
- 从那个时候开始,SDN的采用速度相对放缓了很多,尤其是在网络较小且资源较少的企业。
不少企业都认为SDN 部署的成本不菲。
SDN 部署在每个行业中都可以找到,但该技术在技术相关领域和金融服务方面的效果更好。
- 虽然前段时间开始流传着“SDN已死”的说法
但随着工业 4.0 带动企业的数字化转型, SDN 的发展道路会越发宽广,企业对其的依赖程度会逐步提升。
8 参考资料
- 关于SDN的理解
- 【思唯网络】SDN介绍
- 什么是SDN?为什么需要SDN?
- 什么是软件定义网络SDN
- 5G 网络变革的推手——SDN 的前世今生
- SDN是真有用还是噱头