1. SDN的由来
2. SDN的基本概念
1. SDN的由来
计算机产业的发展:
从 1946 年第一代电子管计算机面世到如今,计算机的形态也发生了翻天覆地的变化。从大型机到个人 PC,计算机在不断地推陈出新,且创新发展的势头越加猛烈。究其原因,我们发现计算机产业从大型机的软硬件一体化逐渐走向了标准、开放的一套软硬件架构:
标准的硬件架构:例如大多数计算机或服务器采用的 X86 架构来设计硬件,并满足X86 指令集的要求,这使得服务器在硬件层面实现了标准化。
开放的操作系统:例如操作系统部署在 X86 等通用硬件上,屏蔽了底层硬件的复杂性从而使得用户无需关心底层硬件的实现。同时操作系统提供了开放的接口,使得用户按需快速定制应用,满足千变万化的市场需求
传统的网络架构:
从一台网络设备的组成来说,同样可以类似于 X86 服务器那样分为硬件、操作系统和应用,不幸的是,网络产业仍旧处于软硬件一体化的时代,我们从网络设备厂商购买到的网络设备仍旧是高度定制化的不可分割的单一功能产品。
传统网络被设计成了“分布控制,协同工作”的架构,在这个被我们所熟知的架构中,网络设备是独立的,他们之间通过链路连接实现互联互通。对于一台网络设备而言,决定如何转发的大脑与执行转发动作的身体是合二为一的,每台网络设备都有一个自己的大脑,也就是说每台网终设备存在独立的转发平台、控制平面和管理平面。
转发平面提供高速无阻塞数据通道,实现各个业务模块之间的业务交换功能。交换机的基本任务是处理和转发交换机各不同端口上各种类型的数据。
控制平面完成系统的协议处理、路由运算、转发控制、业务调度、流量统计、系统安全等功能,提供了转发平面数据转发前所必须的各种网络信息和转发查询表项。
管理平面完成系统的运行状态监控、环境监控、日志和告警信息处理、系统加载和升级等功能,网络管理人员可以使用 WEB 或远程登录等方式来进入管理平台来管理设备,并支持、理解和执行管理人员对于网络设备各种网络协议的配置命令。
这样的架构对早期网络发展来说有个无法拒绝的优势:当一台网络设备故障后,其他的网络设备仍旧可以按照自己的大脑(控制平面) 指挥,来执行转发报文的动作。但是当网络发展到一定规模后,网络管理员们发现需要管理的设备实在是太多了,设备互联互通也变得愈加复杂,网络变得难以驾驭。
传统网络面临的问题:
随着网络进入万物互联时代,网络规模不断扩大,网络设备需要具备的功能越来越多,本身也愈加复杂,传统网络的弊端逐渐暴露出来。
运维管理难:传统网络采用的是分布式控制平面,控制协议数量多,标准数量数以千计,如此庞大的控制协议体系,使得网络的管理运维变得复杂,对维护人员的技能要求高。同时,设备厂商在实现这些标准协议时,都进行了一些特定的私有扩展,使得设备的操作维护变得更加复杂,进一步加剧了网终管理员操作维护网终的难度,同时大幅增加了网络的运维成本。这种管理模式随着网终规模的扩大和新业务的引入,很难实现对业务的高效管理和对故障的快速排除。
业务部署慢:新业务部署或业务调整涉及设备配置修改,需要逐台设备进行配置,效率低;当前网络在部署一个全局业务策略时,需要逐一配置每台设备。随着网络规模的扩大和新业务的引入,管理运维愈加复杂。并且随着云计算业务的发展和大数据服务的兴起,传统网络技术及架构无法提供新业务所需的动态配置、按需调用、自动负载均衡等需求
系统复杂:IP 技术使用“打补丁”式的演进策略,随着业务发展对网络设备功能要求越来越多,网终协议也越来越多,代码越来越多,复杂度显著增加。这也造成网终行业门槛越来越高,由少数几家网络巨头把持,产业生态不健康。
创新周期长:分布式网络控制机制使得任何一个新技术的引入都需要建立相关的标准和协议,实现设备间的协同,从相关概念提出,协议标准化,开发软件,优化硬件到商用部署至少需要 3 到 5 年,严重制约网络的演进发展
SDN思想的诞生:
2006 年,斯坦福大学的学生提出了将网络设备的转发与控制分离。所有设备的控制平面集中到一个独立的控制器上,由控制器使用标准接口指导设备进行数据转发。这样不仅极大的简化了网络,更为网络的设计和管理提供了更多的可能性。受此思想的启发,业界进一步提出了软件定义网络 (Software Defined Network,SDN) 的概念。控制器作为新型网络的集中式管理平台,将网络中的所有被管资源抽象化,同时提供北向的标准可编程接口。用户可以基于这人平台开发各种应用软件,并进一步设计个性化的底层的逻辑拓扑,灵活满足业务对于网络资源的各种要求。
各个厂商的网络设备都有着不同的配置方式,要想通过同一个控制器软件来统一控制不同厂家的网络设备,采用传统的网管方式是非常困难的。SDN 光有一个集中控制的指导思想还不够,还需要选择一种标准的通信接口,用于控制器指导设备进行数据转发。于是业界定义了一种全新的控制器与网络设备之间的通用交互标准,使得控制器能够通过下发简单的指令指导异构的网络设备识别流量并作出对应的转发动作。在最初发表转发和控制平面分离思想的同时,OpenFlow 协议作为控制器与网络设备之间交互的标准也被提出。
2. SDN的基本概念
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 流表转发。这样整人网络的控制能力得以收束在控制器手中,从而实现网络的集中控制和管理。
流表:
流表是 OpenFlow 交换机的基本组成单元,流表包涵多个表项,每个表项就是一个转发规则。OpenFlow 控制器通过设置流表项看来实现对 OpenFlow 交换机的控制,进入交换机的每个分组通过查询流表项来决定需要执行的操作与转发的端口。每个流表项由匹配字段、优先级、计数器、指令、计时器、Cookie、标识这 7 部分组成。其中对于数据转发比较关键的 2 个字段是匹配字段和指令。
匹配字段用于区分不同类型的数据分组,以便对不同的数据流执行不同的指令。匹配字段的内容除了设备端口,MAC 层,网络层及传输层信息外,还包括 VLANID,VLAN优先级等多项内容,相比传统网络主要依赖 MAC 地址表和 IP 路由表进行转发,OpenFlow 交换机可以利用流表项丰富的匹配字段,在进行数据转发时可以使用更主富的策略和规则。
指令是用来标识匹配成功之后需要执行的动作命令,如输出,即将数据转发到特定端!。
优先级定义了流表项之间的匹配顺序,优先级高的先匹配
计数器统计有多少个报文和字节匹配到该流表项。
计时器用来记录流表项的超时时间,包括了 ldle Time 和 Hard Time。
Cookie: Controller 下发的流表项的标识。
标识字段用来改变流表项的管理方式。
传统网络与SDN网络转发方式的对比:
在传统网络中,网络设备通过控制平面之间的交互来学习、生成控制信息,包括路由表、MAC 表等,这些控制信息会通过网络操作系统下发至转发平面的二、三层转发表项,数据报文依靠硬件的二、三层转发表项进行转发。路由器或交换机的控制平面只能从自身节点在拓扑中的位置出发,看到一个自治区域网络拓扑中一个位置的视图。然后,从已建立的路由表中找出从这个节点到达目的网络与目的主机的最佳输出路径,再由数据平面将分组转发出去。
在 SDN 网络中,网络设备之间不再进行控制信息的交互,统一由 SDN 控制器下发控制信息至网络设备。控制器可以从全网络视角,根据动态的流量、延时、服务质量与安全状态,决定各个节点的路由和分组转发策略,然后将控制指令即流表推送到路由器与交换机,动态调整数据转发路径
SDN的定义及特点:
Software Defined Network) 软件定义网络并非一个具体的技术,而是一种网络的SDN设计理念。这种设计理念将网络规划成了各个组成部分(包括软件、硬件、转发平面和控制平面) 以及各个部分之间的关联互动关系,其特征属性包括下面几点:
控制平面与转发平面分离:传统网络的控制能力分散在每一台网络设备中。通过协议标准抽象,传统网络设备分散的控制能力被抽离集中,形成控制器,而网络协议和网络硬件等设备能力被标准化,通过标准的协议接口与控制器通信。
开放的可编程接口:SDN 集中控制器对网络设备而言使用标准的协议接口对接,而对上层应用而言使用 RESTful 风格的 API(Application Programming Interface) 接口对接。这些 RESTfulAPI 使得 SDN 控制器的功能被开放出来,第三方可以通过调用AP实现网终的定义和编排。
集中化的网络控制:通过控制层面集中化,SDN 控制器将原本分散的各个网络设备的控制能力集中起来,从而能够在全网范围内对网络进行集中控制管理。
网络业务的自动化应用程序控制: 通过将网络设备的控制能力集中,以及对上层云平台等应用的开放接口,SDN 控制器能够让网络具备业务的自动化部署和快速上线的能力。
SDN网络架构:
SDN 体系架构定义了三层结构及相应接口:
最底层的是转发层,也是仍旧由硬件网络设备承担的层面,该层面主要负责底层数据报文的转发。在 SDN 网络的转发平面中,网络设备之间不再进行控制信息的交互,所有的控制信息都由 SDN 控制器计算生成,网络设备本身不再需要复杂的计算能力,硬件资源得以解放,网络设备得以更专注于转发能力的提升。
第二层是控制层,也就是把传统硬件网络设备的控制能力抽离出来形成的一层,负责协议报文的处理、全网转发路径的计算和下发,同时控制层将底层网络资源抽象成可操作的信息模型,提供给应用层,能够根据应用程序的网络需求发出操作指令。控制层是整个架构的核心,主要由 SDN 控制器担当,控制器与转发层之间通过标准的南向接口协议对接。
最上层是应用层,又叫做编排层,为业务应用或更复杂的需求提供统一入口。在云计算数据中心中,应用层一般由云平台担任,云平台为客户提供计算、存储和网络资源的统一管理和服务,并可按租户的需求进行一定程度的业务编排。应用层主要通过 SDN 控制器的北向接口与 SDN 网络进行对接,由 SDN 控制器接受应用层的网络资源申请,通过南向接口转换成网络设备可以理解的语言,在底层网络中实现租户的网络需求。
NBI北向接口: 北向接口为控制器对接协同应用层的接口,SDN 控制器能够提供标准的北向Java API或 RestAPI接口供应用程序调用,用户能够以自身业务为驱动,开发出最适合自己的云平台或者 APP
SBI 南向接口:南向接口为控制器与设备交互的协议,包括 NETCONF、SNMP、OpenFlow、OVSDB 等。
SDN网络价值:
SDN 的本质诉求是让网络更加开放、灵活和简单。它的实现方式是为网络构建一个集中的大脑,通过全局视图集中控制,实现或业务快速部署、或流量调优、或网络业务开放等目标。相比传统网络,SDN 网络的价值主要体现在以下几点:
快速上线: 通过集中化的控制平面,SDN 网络得以实现自动化,从而业务快速上线成0为可能。在 SDN 网络中,只需要应用层发起网络资源申请,SDN 控制器就能自行进行业务上线的评估,并自动完成底层网络的部署和网络资源的分配
动态优化: SDN 控制器能根据整网的流量情况对网络转发路径进行灵活调整和调度在链路质量发生变化时进行基于应用的路径优选,同时可基于应用优先级对全网流量转发路径和服务质量进行优化。
统一管理:当控制平面集中化后,网络的管理也实现了集中化,特别是当网络支持搭载大数据智能引擎后,能做到应用故障诊断和网络故障自愈。降低成本:屏蔽技术细节,降低网络复杂度。
SDN网络演进:
网络产业正处于几十年来发展变化最剧烈的时刻,从 2008 年 OpenFlow 提出至今,SDN的含义也在发展过程中发生了变化。当初 SDN 几乎等同于 OpenFlow,人们对 SDN 的认识局限于转控分离、集中控制等概念,而现在抽象和可编程成为 SDN 的核心。从未来网络的演进道路上来看,SDN 网络具有无可比拟的优势,而这一切优势都是 SDN 要求的开放的可编程接带来的。
首先,从目前的发展趋势来看,人们对网络设备的需求更加向统一、标准靠拢,人们希望网络设备像计算机一样拥有开放、标准的接口,实现不同厂商网络设备的对接。而 SDN 控制器天然支持基于 RFC 的标准南向接口,这为 SDN 控制器管理不同广商设备提供了无限的可能性;同时,SDN 控制器对上层应用提供北向 API接口,对上层应用而言,通过北向 API 接口的调用和编程可以实现对网终的自定义编排。
其次,未来网络可能会通过标准的南向接口彻底实现网络设备的白盒化,不同厂商的白盒设备实现少数几个南向的标准协议,并由 SDN 控制器统一管理和调度。SDN 的分层解耦以及接口的开放和标准化,打破了原有的供需关系,为新兴厂商进入相对封闭的通信设备市场提供了更多的机会,促进了网络设备的创新。SDN 开放的北向接口为上层业务应用更高效的使用网络资源奠定了基础,激发了业务创新活力,有助于建立更加丰富的产业生态。
另外,从网络创新的角度来说,SDN 通过开放的可编程接口构建了从上层应用到网络设备硬件的开发架构,北向 API 接口提供的业务编排能力能更好的适用于业务新需求的快速上线,司时全网架构的开放和标准大大缩短了网络创新功能的实现周期。