SDN入门基础

Breeze Shane大约 40 分钟WebWeb

SDN的概念

ONF组织给出的定义

SDN architecture decouples the network control and forwarding functions enabling the network control to become directly programmable and the underlying infrastructure to be abstracted for applications and network services. The OpenFlow protocol is a foundational element for building SDN solutions.

ON.LAB组织给出的定义

SDN's key attributes include: sepatation of the data and control planes; a uniform, vendor-agnostic interface(called OpenFlow) between control and data planes; alogcally centralized control plane that offers a consistent, network wide view to programmers or operators.

维基百科的定义

软件定义网络 (英语:Software-Defined Networking,缩写作 SDN )是一种新型网络架构。它利用OpenFlow协议将路由器的控制平面(Control Plane)从数据平面(Data Plane)中分离,改以软件方式实现,从而使得将分散在各个网络设备上的控制平面进行集中化管理成为可能 ,该架构可使网络管理员在不更动硬件设备的前提下,以中央控制方式用程序重新规划网络,为控制网络流量提供了新方案,也为核心网络和应用创新提供了良好平台。SDN可以按使用领域分为:SD-WAN, SD-LAN, SD-DC, SDN将人工智能引入到网络系统里来,将是未来几年最热门的网络前沿技术之一。

SDN是一种新的网络体系结构,给传统网络带来最大的改变是网络可变成和开放性。网络用户追逐SDN的关键是想获得更多的网络可编程能力,获得更多的网络定制开发能力和自主权。SDN的开放分层架构加速了网络产业的参与度,越来越多的网络用户、网络软件公司和初创公司都加入到网络产业中来,这种开放竞争进一步加速整个产业的创新。

SDN为什么会出现

在出现SDN之前的传统网络出现的问题比较多,一般都是缺了什么或者担心什么问题,就新添加一个东西专门解决,以至于后期网络堆叠繁重冗余。

问题一:传统网络管理和部署非常麻烦

对于一个庞大的网络来说,首先显而易见的是网络厂商杂、设备类型多、设备数量多、命令不一致,极大地加重了部署的难度,管理起来十分繁琐。

我们首先要知道网络设备之间是如何协同工作的:

  1. 网络设备之间的沟通主要通过网络协议「交换、路由、标签、安全等协议」来实现,大体的工作流程都是按照 邻居建立->信息共享->路径选择 这三个步骤来实现的,是很多协议设计的逻辑基础。
  2. 大部分的传统网络是采用典型的分布式架构,设备和设备之间以“接力棒”的方式交互本地信息,而后建立数据库信息,再根据路径选择算法进行最优路径的选择,其中最具代表性的算法是SPF算法。
  3. 每个设备会进行独立计算,各自都有自己独立的计算设备和转发设备。
  4. 协议是互联网的基础。

那么如果网络发生变动,又应该如何进行交互:

  1. 当网络发生动荡时,网络设备会将故障信息以“接力棒”的方式不断告知下一个邻居设备,然后将故障路径信息删除。
  2. 网络收敛过程中,有可能出现冗余的路径通告信息。 如果遇到流量暴涨拓扑膨胀时:
  3. 随着云计算、大数据、移动互联网等技术发展,流量不断翻番,使得底层网络的体积膨胀,压力增大;网络体积越大,需要收敛的时间越长,等。
  4. 在所有的网络类型中,数据中心网「互联网公司」、电信网「运营商」的网络压力最大,需要变革的意愿最强烈。
问题二:分布式网络架构瓶颈凸显

从问题一中可知,传统网络的三大特征是独立计算、接力棒交互、分布式架构,如今这三方面都可以看到瓶颈日益凸显。

传统网络中网络带宽分配如何解决:

  1. 流量控制一般采用Qos/TE等技术来实现,大体思路是: 通过为流量分类和标记,定义不同的优先级别,根据业务需求,分配不同的带宽。流量控制的好坏直接影响带宽的利用率,影响客户的投资效益。
  2. 流量控制技术可以在支持Qos/TE的交换机、路由器等产品上执行,也可以在专业的流量控制产品「负载均衡器」上实现。
  3. 不管是软件还是硬件实现流量控制,传统的流量控制产品大体是一种静态带宽处理,即根据业务需求,制定待定规则,走特定的链路等等,策略一般是前期固定好的,无法根据网络情况,智能地实现带宽分配,即动态带宽处理。

传统网络中还存在着难以流量可视化的情况:

  1. 常规流量控制产品只能实现部分链路带宽分配可视化,常规网管系统只能实现链路状态故障检测等,无法实现全网全局链路带宽可视化。
  2. 全网流量可视化是带宽智能调配的基础。
问题三:流量控制是棘手难题

问题二中提到的带宽静态分配、难以流量可视化的情况正是导致流量控制十分棘手的关键所在。

在传统网络中,我们既不能自定义设备的转发策略,也不能将软件运行在设备上,因为:

  1. 传统网络设备的工作方式一般都是固定好的,如交换机根据MAC地址表转发「基于源MAC学习,基于目的MAC转发」,路由器根据路由表转发「修改源目MAC,源目IP不修改,基于目的IP查表」。
  2. 按照业务需求进行网络设备的策略自定义,实际上是一个可编程的需求。而传统网络设备是一个黑盒子,内部源码、产品功能对用户封闭,话语权在网络厂商这里。
  3. 不可编程,无法按需,是网络设备几十年来的老规矩。
问题四:无法按需,不可编程

无法按需,不可编程。这就意味着如果需求有变动,就只能从硬件设计开发开始到软件应用开发来实现这一项大工程了。变更需求就要另起炉灶,即使这个需求可能非常合理、简单,变更的也微小。这一现象也被人形象地描述为“吃硬不吃软”。从中可以看出,传统网络存在着不灵活、不通用的巨大问题,这个问题将导致开发成本十分高昂,开发周期十分漫长。

SDN网络与传统网络的比较

SDN网络传统网络
控制转发分离控制转发耦合
集中式控制分布式控制
可编程不可编程
开放接口不开放接口
虚拟化实体化

SDN的三大特性

  1. 网络开放可编程

    SDN为网络用户提供了丰富的可编程API,用户可以通过南向接口编程网络设备,用户在控制器上面编写自己的网络应用程序。

  2. 数控分离

    将网络控制平面从数据平面中解耦合。传统的网络设备控制部分与数据处理部分是绑定在一起的,SDN实现了数控分离,网络控制平面与数据平面之间通过南向接口分离开来,不再相互依赖。这样做的好处是:用户不再受限于设备厂商,对网络设备有更多的自主权。另外控制平面与数据平面可以独立完成体系结构的演进,类似于计算机工业的Wintel模式,处理器和操作系统的技术演进不用互相依赖。

  3. 逻辑上集中控制

    传统的网络设备管理、控制和编程是分布式思路,SDN提倡集中式的管理和控制,通过控制器完成网络设备和整个网络的抽象,用户可以通过编写软件的方式在控制器上实现自己的网络业务和方案。

SDN的分层体系结构

SDN在应用中大体可划分为三层体系结构:控制层(Control Layer)、应用层(Application Layer)和基础设施层(Infrastructure Layer)。不同层次之间是通过不同接口进行通信的,比如应用层是通过北向接口(Northboundinterface)与控制层通信,而基础设施层则是通过南向接口(Southboundinterface)与控制层通信。

而ONF (Open Networking Foundation)也给出这三层的含义及作用:

  • 应用层包括各种不同的业务应用
  • 控制层负责数据平面资源的编排、维护网络拓扑和状态信息等
  • 数据层负责数据处理、转发和状态收集
控制层

控制层是SDN控制器管理网络的基础设施,可以根据需要灵活选择多种控制器。在这一层中,控制器中包含大量业务逻辑,以获取和维护不同类型的网络信息、状态详细信息、拓扑细节、统计详细信息等。

由于SDN控制器是用于管理网络的,所以它必须具有用于现实世界网络使用情况的控制逻辑,如交换、路由、二三层VPN、防火墙安全规则、DNS、DHCP和集群,网络供应商和开源社区需要在自己的SDN控制器中实现自己的服务,而这些服务会向应用层公开自己的API。

目前市场上的SDN控制器解决方案大致可以分为两类:大型网络设备厂商提供商业方案,如CiscoOpen SDN controller;社区组织提供的开源方案,如OpenDaylight等。

基础设施层

基础设施层,由各种网络设备构成,它可以是数据中心的一组网络交换机和路由器。控制层负责管理底层物理网络,物理层的实现可以是支持OpenFlow的硬件交换机。随着虚拟化技术的完善,SDN交换机可以是软件形态,如OVS就是一款基于开源技术实现的、能够与服务器虚拟化(Hypervisor)集成,具备交换机的功能的虚拟交换机。另外,OVS支持传统的标准管理接口,如NetFlow和sFlow等。

应用层

应用层对于开发者来说是开放区域,鼓励开发尽可能多的创新应用。包括网络的可视化:拓扑结构、网络状态、网络统计等;网络自动化相关应用:网络配置管理,网络监控,网络故障排除,网络安全策略等。SDN应用程序可以为企业和数据中心网络提供各种端到端的解决方案。

南向接口

控制层到基础设施层(网络交换机)通讯需要经过南向接口,目前主要的协议是OpenFlow、NetConf、OVSDB。OpenFlow协议是事实上的国际行业标准,其中NOX、Onix、Floodlight都是基于OpenFlow协议实现的开源控制器。作为一个开放的协议,OpenFlow突破了传统网络设备厂商各自为政形成的设备能力接口壁垒。

北向接口

应用层通过API方式与SDN控制器通讯。与南向接口不同,现在北向接口还缺少业界公认的标准,实现方案思路有的从用户角度出发、有的从运营商角度出发、有的从产品能力角度出发。技术风格上,部分传统的网络设备厂商倾向于在现有的设备上提供编程接口供业务App调用,许多上层应用的开发者也比较倾向于采用 REST API 接口的形式。

SDN数据平面

传统网络数据平面

数据平面主要执行网络控制逻辑,数据包的处理主要通过查询由控制平面所生成的FIB表来完成包处理流程。

传统网络数据平面的特点:

  • 数据转发处理都是协议相关的;
  • 只支持有限的用户配置,不支持编程自定义。

数据平面负责数据处理、转发和状态收集等。其核心设备为交换机,可以是物理交换机,也可以是虚拟交换机。不同于传统网络转发设备,应用于SDN中的转发设备将数据平面与控制平面完全解耦,所有数据包的控制策略由远端的控制器通过南向接口协议下发,网络的配置管理同样也由控制器完成,这大大提高了网络管控的效率。交换设备只保留数据平面,专注于数据包的高速转发,降低了交换设备的复杂度。

本质上来说,决定SDN可编程能力的因素在于数据平面的可编程性,所以就有了通用可编程数据平面OpenFlow Switch。通用可编程数据平面支持用户通过软件编程的方式任意定义数据平面的能力,包括数据包的解析、处理等功能。

SDN数据平面的特点:

  • 处理流程中的:解析(Parser)、转发(Forwarding)和调度 (Scheduling)都是可编程、协议无关的;
  • 传统网络设备的二层或三层转发表抽象成流表;

SDN控制平面及SDN控制器实现原理

SDN控制平面主要由一个或者多个控制器组成,是作为数据控制分离的SDN的操作系统的存在。一方面,控制器通过南向接口协议对底层网络交换设备进行集中管理、状态监测、转发决策以处理和调度数据平面的流量;另一方面,控制器通过北向接口向上层应用开放多个层次的可编程能力,允许网络用户根据特定的应用场景灵活的制定各种网络策略。

而控制器的设计目标是通过对底层网络进行完整的抽象,以允许开发者根据业务需求设计出各式各样的网络应用。

控制器需求

  • 在广域网部署SDN,单个控制器所面临的网络规模根据场景不同而不同。
  • 在IPRAN的移动接入场景,在一个城市,目前的规模已经达到2万台设备,未来会更多。
  • 对于目前典型的骨干网和城域网,设备规模从几百台2000台,主要压力是边缘接入业务路由的计算。
  • 在数据中心解决方案场景,采用OVERLAY方式完成网络虚拟化功能。这种网络虚拟化是在数据中心服务器上直接启动一个软件交换机,然后使用VXLAN技术,直接构建海量租户的虚拟二层网络。

SDN控制器现网迁移

迁移演进方式有多种,其中一种是SDN网络的部署可能先在某些局部网络部署,这个单独的SDN网络需要和传统的分布式网络互通,这就需要SDN控制器能够支持传统的一些网络业务协议,比如BGP进行互通。

SDN控制器与控制平台的关系

控制器是一个大型控制软件系统,它需要一个控制平台,这个平台成为网络操作系统(NOS),主要负责网络资源管理。传统的分布式网络有设备软件系统,但没有网络操作系统。

网元硬件管理:对应传统网络中的EMS专业网管,这部分功能可以放在SDN体系内,也可以作为一个单独的网络管理模块部署。

网元资源管理:针对不同的网元类型,其网元资源也是不同的。

基本功能层

一个通用的控制器可以方便的添加接口协议,这对于动态灵活的部署SDN非常重要,因此在这一层首先要完成就是协议适配功能。

需要适配的协议主要包含两类:第一类是用来跟底层交换设备进行信息交互的南向接口协议。第二类是用于控制平面分布式部署的东西向接口协议。

协议适配层主要有以下三方面作用:

  1. 网络的维护人员可以根据网络的实际情况,使用较合适的协议来优化整个SDN;
  2. 考虑到与传统网络的兼容性问题,可以借鉴使用现有网络协议作为南向、东西向接口协议,这样可以以最小的代价来升级和改造传统网络;
  3. 通过协议适配功能,控制器能够完成对底层多种协议的适配,并向上层提供统一的API,达到对上层屏蔽底层多种协议的目的。

协议适配工作完成后,控制器需要提供用于支撑上层应用开发的功能。这些功能主要包括四部分:

  1. 模块管理:重点完成对控制器中各模块的管理。允许在不停止控制器运行的情况下加载新的应用模块,实现上层业务变化前后底层网络环境的无缝切换。
  2. 事件机制:该模块定义了事件处理相关的操作,包括创建事件、触发事件、事件处理等操作。事件作为消息的通知者,在模块之间划定了清晰地界限,提高了应用程序的可维护性和重用性。
  3. 任务日志:该模块提供基本日志功能。开发者可以用它来快速的调试自己的应用程序,网络管理人员可以用它来高效、便捷的维护SDN。
  4. 资源数据库:这个数据库包含了底层各种网络资源的实时信息,主要包括交换机资源、主机资源、链路资源等,方便开发人员查询使用。

网络基础服务层

为让开发者能够专注于上层的业务逻辑,提高开发效率,需要在控制器中加入网络基础服务层,以提供基础的网络功能。

该层中的模块可以通过调用基本功能层的接口来实现设备管理、状态检测等一系列基本功能。这一层涵盖的模块有很多,取决于控制器的具体实现,下面介绍五个主要的功能模块。

  1. 交换机管理:控制器从资源数据库中得到底层交换机信息,并将这些信息以更加直观的方式提供给用户以及上层应用服务的开发者。
  2. 主机管理:与交换机管理模块的功能类似QUESTION,重点负责提取网络中主机的信息。
  3. 拓扑管理:控制器从资源数据库中提到链路、交换机和主机的信息后,就会形成整个网络的拓扑结构图。
  4. 路由、转发策略:提供数据分组的转发策略,最简单的策略有根据二层Mac地址转发、根据IP地址转发数据分组。用户也可以在此基础上继续开发来实现自己的转发策略。
  5. 虚拟网划分:虚拟网划分可以有效利用网络资源,实现网络资源价值的最大化。但是出于安全性的考虑,SDN控制器必须能够通过集中控制和自动配置的方式实现对虚拟网络的安全隔离。

提示

在这两层的基础上,控制器通过向上层应用开发者提供各个层次的编程接口,以便向网络开发者调用从信令级到各种网络服务的SDN可变层能力,灵活便捷的完成对整个SDN的设计与管理。其中基础功能曾非常重要,实现了对底层硬件的抽象和对上层网络功能模块的管理,所有的网络应用都给予这一层提供的接口进行开发。

SDN的工作原理

  1. 控制器和转发器之间的控制通道建立,通常使用传统的IGP来打通控制通道。
  2. 控制器和转发器建立控制协议连接后,需要从转发器收集网络资源信息,包括设备信息,接口信息,标签信息等,控制器还需要通过拓扑收集协议收集网络拓扑信息。
  3. 控制器利用网络拓扑信息和网络资源信息计算网络内部的交换路径,同时控制器会利用一些传统协议和外部网络运行的一些传统路由协议,包括BGP,IGP等学习业务路由并向外扩散业务路由,把这些业务路由和内部交换路径转发信息下发给转发器。
  4. 转发器接受控制器下发的网络内部交换路径转发表数据和业务路由转发表数据,并依据这些转发表进行报文转发。
  5. 当网络状态发生变化时,SDN控制器会事实感知网络状态,并重新计算网络内部交换路径和业务路由,以确保网络能够继续正常提供服务。
SDN网络的控制器和转发器的控制通道建立过程

SDN控制器是SDN网络中的大脑,是控制单元。而转发器是SDN网络的手脚,是执行单元。

在SDN网络架构下,控制器和转发器之间通道的建立和维护非常重要,SDN控制通道包括带内方式和带外方式这两种通道的通讯方式:

  1. 带外方式需要独立的信令物理网络,成本高,独占网络带宽。转发器通过独立的物理网络和控制器连接。这个独立的带外网络,可以直接运行简单的传统分布式控制协议IGP,确保转发器和控制器之间的通信打通。

  2. 带内方式是业务网络公用物理网络,成本低,通过优先级机制——也就是控制通道和用户业务共用一张物理网络。而对于大型IP网络,出于成本考虑,一般选择带内控制通道方式。更多场景下,用户不可能专门建立一个管理网络,也就是独立的管理网络是不存在的,只能用带内控制通道来进行通信。 带内方式又有两种方式来建立转发器和控制器之间的通道:

    1. 第一种方法是控制器和每个转发器之间都有一个直接连接的物理线路,这样控制器通过这个物理线路可以和任何一个转发器通信,但这种方法要求控制器配置很多接口,工程上基本不可行。
    2. 第二种方法是在带内利用传统分布式控制协议来打通控制通道,对于这种方法又可以分二层网络和三层网络来分别采用某种协议来打通控制通道。

通道的建立过程分为二层网络的建立和三层网络的建立:

二层网络可以采用MSTP协议来协助破坏建立二层连接。这种情况的主要应用场景是数据中心控制器,控制器和交换机可以部署在同一个子网内,这样它们之间可以通过二层寻址,而不需要通过三层寻址。为了隔离控制器和转发器通讯与其他用户业务之间的通信,建议把他们之间的通信划分到一个独立的VLAN内部。

三层网络可以采用传统的IGP来进行路由学习和打通控制通道。在数据中心内部,有时可以采用二层网络来完成控制器和转发器之间的控制通道,但当数据中心网络规模很大时也需要三层网络技术来解决控制器和转发器之间通信通道的建立。在控制器和转发器之间运行IGP,此时的控制器就是一台普通的路由器,可以通过IGP学习到拓扑并生成互联路由,这样一来,控制器和转发器之间的通信关系就如同一个传统分布式网络,从而保持了控制器和转发器之间的高可靠连通性。同时,控制器不是一个普通路由器,可以通过配置IGP(比如ISIS协议中的OVERLOAD功能)来阻止用户业务流量进入控制器。当然,所谓控制器不能转发用户流量可以说是一个限制,但在某些特定场景下这些限制也可以去掉,比如小规模网络中,客户可能希望在某台路由器上直接把控制器软件运行在里面,此时这台控制器本身也同时是一台路由器。

「注意」三层网络下控制器其实和传统路由器有着一样的功能,但是要组织流量转发到控制器,很多IGP中有类似的功能来阻止这一点。

刚刚说的是通过传统分布式控制协议来让控制器学习并生成路由表并下发给转发器,在这种模式下,如果路由表里不存在相应的路由则报文被直接丢弃处理,这个就是IP转发理念。但是控制实现架构中,还有一种技术是流触发生成路由表,也就是说,对于一个转发表中不存在转发表数据的用户流进入转发器时,转发器需要把这个报文递交给控制器,转发器根据这个报文来生成一个转发表下发给转发器,使得该用户流的下一个报文进入系统时就可以命中转发表进行转发了。从安全性角度看,流触发生成路由表容易造成流量攻击,因此流触发技术不是一个合适的技术,也不符合IP技术的核心理念,仅仅在某些极其特殊场景下使用,并且要做好流攻击阻断工作。

还有一些场景下:控制器需要穿越某些网络去控制远程网络,一个简单的方案就是在控制器和转发器之间建立一个隧道,并在这个隧道上启动IGP。 用以上描述方法建立的控制通道,当网络发生状态变化时,由于采用了传统的分布式控制网络技术作为控制通道建立的技术,所以能够达到任何时刻只要拓扑上有路连接,通信上就能够打通的要求,同时故障感知到的收敛时间也都在1s以内。

SDN控制器的资源收集过程

控制器和转发器的控制通道建立完成后,转发器主动向控制器发起控制协议连接,控制协议为openflow等协议,认证后建立。

网元资源信息收集(注册信息,MPLS标签信息,转发器的接口资源信息等)

接下来,转发器向控制器注册信息、上报资源:接口资源、标签信息、VLAN资源、设备信息等。控制器采集这些信息是用来安装特定厂家设备的驱动程序、根据这些信息安装特定的接口协议和数据转换功能。控制器需要收集标签信息,这里的标签是指MPLS标签。这是因为控制器控制的网络内部交换技术通常采用MPLS交换,因为这项技术非常成熟,报文封装比较短小(4字节),有利于节省网络的带宽占用。另外,厂家差异问题也需要控制器实现动态安装驱动程序的能力。驱动程序会完成控制器到特定厂家的设备的接口协议和数据转换功能。而控制器正是根据设备厂家、设备类型、设备版本号进行本地搜索和加载对应的驱动程序。

控制器收集标签信息,控制器控制的网络内部交换技术通常采用MPLS交换,原因有以下两点:

  1. MPLS协议成熟,多厂商均支持
  2. MPLS封装仅需4字节,转发性能高

收集标签原因:

  1. 控制器需要为整条LSP分配标签,厂家转发器设备能够支持的标签空间不足,需要控制器收集转发器的标签空间资源。
  2. 分布式控制和SDN控制器混合组网情况下,分布式控制平面会占用一部分标签,为了保证唯一性,需要回收标签资源。

收集接口信息「接口名字、接口ID、接口类型、接口带宽资源等」原因:

  1. 接口资源分为两类:
    1. 网络外联接口,连接SDN网络外部的网络设备上。控制器需要知道网络下面有多少外联业务口可以部署业务,在部署业务时需要对这些外联口进行业务配置。
    2. 网络内部接口,SDN控制的网络设备之间的接口。控制器需要使用这些接口信息形成最终拓扑,计算出网络内部的交换路径。
  2. 根据带宽资源计算出网络内部的交换路径,确保网络业务流量不会集中到某条链路上,造成最短路径拥塞的情况。
  3. 收集VLANID、隧道id等原因,同标签原因类似,需要知道VLAN等可用资源以便外联口的业务接入时使用。

拓扑信息收集(网络拓扑包括三个对象:节点对象,接口对象,链路对象。控制器收集转发器的拓扑协议主要是LLDP)

控制器还需要进行网络拓扑信息收集,网络拓扑是描述网络中节点和链路以及节点之间的连接关系的信息。

网络拓扑由三个对象组成:

  1. 节点对象,即转发器对象
  2. 接口对象(TP、Terminal Point、业务接入点)转发器上的接口:节点ID+接口ID标记
  3. 链路对象 左接口+右接口ID是(左节点,左接口,右节点,右接口)

转发器可以上报设备对象和接口对象,但不能上报链路对象,必须要有一个方法来收集这种连接关系以确定链路对象信息,才能获得完整的拓扑信息。

控制器收集网络拓扑的方法目前有不少标准协议定义:

其中一个主要的协议是二层网络设备发现协议——链路层发现协议(LLDP),它是IEEE定义的二层网络设备发现协议,尤其适用在数据中心网络,其基本原理是转发器向每个接口发送一个LLDP报文,接收到LLDP报文的设备增加自己接收该报文的接口信息和设备ID,从而控制器就获得两个转发器之间的连接信息,如果控制器从每台转发器都获得类似的信息,最后控制器就获得完整的二层网络拓扑。

拓扑信息收集的第二个协议是三层拓扑收集协议,通常利用传统的IGP,比如ISIS/OSPF,这两个只能洲际某个区域的拓扑,BGP-ls可以手机多域的拓扑。

特殊应用场景中,会通过人工配制的方式向拓扑加一些对象,比如数据中心:需要管理接入网络的虚拟机的信息,以便应用程序能获得这个虚拟机从哪个交换机进入网络的位置信息。再比如业务链路需求中:增值业务处理设备(Value Added Service,VAS,通常指防火墙、负载均衡器、内容缓存等)的位置信息,以便控制器能够计算出业务链路由,完成用户链需求。

用内存存储或者数据存储等内部数据库存储网络信息和设备信息,如何存储取决于性能要求。其中,数据库作为一种持久化存储方式,实时性能有所欠缺,而内存数据库性能提升很大。

控制器应该收集网元的逻辑信息,对网元进行建模,抽象出一套转发器网元的模型,控制不需要关心转发器网元的模型,如果关注转发器的物理细节,也只是为了把一个网元网管(EMS)集成到控制器,逻辑上仍然分为控制器和网元网管两个逻辑单元。

通过上述信息,转发器已经收集到了必要的转发器网元资源信息,比如接口、标签、VLANid等信息,有利这些信息,控制器就可以进行下一步的路由计算过程了。

SDN控制器的流表计算和下发过程

SDN网络内部交换路由的生成 边缘业务接入路由的处理,边缘的业务接入点是用于接入网络业务的,所有的用户流量都需要通过边缘业务接入节点进入网络,然后穿过内部交换网,到达另外一个边缘的业务接入节点。

流表计算:控制器计算网络交换路径是根据业务策略来进行的,有的业务需要考虑网络的带宽、时延等属性,有的业务可能不关心带宽和时延而是只关心可达性。

流表下发:有多种协议支持流表下发,包括PCE协议、BGP协议、Netconf协议、OpenFlow协议等。

SDN转发面的报文转发

SDN的转发过程和传统网络的转发过程没有任何区别。

在SDN网络架构下,尽管转发面的转发技术可以使用OpenFlow转发技术(是OpenFlow转发技术而不是OpenFlow控制协议),但这并不是必需的,使用传统的转发流程是完全一样的。

SDN的优势

从SDN的特征出发,SDN的优势包括:

  • 灵活性,动态调整网络设备的配置,再也不需要人工去配置每台设备
  • 网络硬件简化(如白牌交换机等),只需要关注数据的处理和转发,与业务特性解耦,加快了新业务的引入速度
  • 网络的自动化部署和运维、故障诊断

SDN至今存在的问题

  1. 控制器接口不规范。

  2. 运算任务相对繁重。

  3. 安全性得不到保障。

  4. 整体稳定性较差。

  5. 集中控制的安全问题。

    作为SDN网络核心的控制器将成为攻击的重点,需要解决SDN控制器的防攻击、冗余备份等问题。转发设备被多个控制器控制的场景下,可能面临控制器假冒,转发设备资源非法滥用等风险。

  6. 控制器和转发面的性能问题。

    Openflow协议需专用化的芯片支撑,通用化的芯片性能差,定制芯片成本高,实际当用SDN技术应用困难。

  7. 端到端控制的协同问题。

    东西向接口尚未开始标准化,夸厂商控制器通用是难题,当前的协同编排层,仅解决业务策略下发,端到端的拓扑发现和路径计算难以实现。

SDN在广域网中应用场景分析

在广域网多条链路之间可实现流量均衡调度

在广域网上,由于用户的分布不均、各业务并发特性不同等原因,经常存在流量不均衡现象,广域网链路目的端通常是城域网或者是云IDC,其用户规模及业务数量存在巨大的差异,几条链路上容易出现流量不均衡情况,严重时部分链路接近拥塞而其余的链路还处于轻载状况,这种情况经常发生在传输网的一级干线、二级干线以及云IDC之间的互联链路上。

链路流量不均衡的情况涉及路由问题、具体业务应用层以及链路的质量等诸多复杂的问题,同时,在云计算、大数据、移动互联网快速普及应用时代,流量的瞬间动态变化极快,要进行人工干预是不可行的,因此一直是困扰运营商建设运维技术人员的难题。

在广域网上引入SDN智能化管理器,利用 SDN 智能化全局管控的能力实时收集广域网中各条链路的状态信息,来监控网络状态,计算链路的利用率及带宽使用情况,动态的从交换机、路由器中获取网络状态,为数据包计算出最优的、无碰撞的路径,并动态的调整路由以避免网络拥塞,从而实现广域网传输链路流量的负载均衡。同时还可以利用 SDN 智能化管理,动态地改变带宽,加速广域网链路数据的传输。

利用SDN可优化广域网链路利用率

目前,根据通信端到端的网络峰值预测路径和通道网络带宽。交换机、路由器的容量静态固定,根据路由器上行链路失效来重组路由,路径选择会出现重复,资源出现竞争,导致重试和再次失效。网络利用率通常小于 30%。

利用SDN改进后,具备网络需求和网络组织的全局视图,可对所有流量计算出最佳最明确的路径,确定数据包的网络行为,从而减少保护性带宽的需要,一旦出现故障,可根据错误导向,改变到另一张预先计算好的网络路径。更高的网络利用率和更快的网络收敛,只需少量的资源即可获得更高的网络质量,网络利用率可稳定在70%以上。

在骨干网中有诸多的业务需要按需动态地提供网络能力,如云数据中心之间平时估计需要的带宽不要太大就能支撑日常的业务运行,但是当有如虚拟机迁移,存储数据复制等业务时就需要很大带宽才能满足业务需要,两个IDC之间就需要随时间动态调整之间的网络流量带宽。

传统模式是根据IDC之间端到端流量的峰值,来设计固定速率的网络带宽,从而导致了严重低下的带宽利用率;而引入SDN后,通过在网格交汇节点中加入基于OpenFlow的交换机,云服务平台根据需求,通过SDN的控制层,随时随地对网络流量带宽容量进行重新分配,从而保证网络带宽的性能。相对于传统预留空间方式,新模式为关键的通信事务节省约65%左右的容量。

在广域网中可实现多层次的网络管理,采用SDN前,IP网络与传输网络分离,网络需通过不同的工具和不同的技术组合进行管理。采用SDN后,以统一集中、最优化为驱动力对流量进行控制,使得流量在网络上流转总是恰到好处;网络传输变为动态,主要通过IP进行交互;对与网络流量的优化,SDN 会有选择性地切入,通过重新配合和连接新网络端口来增加带宽,提升性能,减少传统网络割接带来的影响。

利用SDN可有效提升广域网的服务质量

目前广域网的服务内容、应用系统、服务层与网络紧耦合,移动网、WiFi网络、固定宽带等不同领域的网络紧耦合,资源利用率低或性能差。

利用SDN改进后,控制层具有全局的网络组织视图,并可把该信息提供给应用服务层,同时可在用户端与IDC 及具体服务器之间,选择最佳链路。只需少量的资源即可获得更高的服务质量,聚合多种技术来提供服务,优化了如QoS、能耗、利用率等多个方面的性能。

在感知网络中服务器负载均衡这中应用场景,目前,服务器负载均衡方式是从服务器集群中,根据服务器的可用性和当前资源利用率,选择服务器分担负载,而不考虑网络因素,这样会导致所选服务器是空闲的,但网络路径拥塞。 使用SDN后,可以通过感知网络负载的应用以及SDN控制器,选择一条拥有足够容量的网络路径,从而实现端到端的负载均衡,该场景特别适用于对时延敏感的业务,使其获得更好的业务响应时间,有效提升用户的业务体验。

现阶段,在广域网中全面部署SDN还不太现实,SDN标准尚未统一,针对广域网的需求缺乏体系化标准化,可使用的主流厂家解决方案差异性大,私有协议多,跨厂家互通难度大,现阶段只能结合特定的需求选择特定的厂商SDN控制器,随着SDN技术的不断完善,在广域网中引入SDN技术应用将会全面展开,广域网的性能必定会得到很好的优化,会更好的为当下快速发展的云计算、大数据、物联网等业务应用提供更加良好的服务。

SDN的典型应用

  1. 控制面分离和多云互通

    虚拟化产生的大量的虚拟机需要大量的虚拟交换机/路由器,繁琐的进入每台虚拟设备,检查不够直观的端口信息,这类海量配置工作几乎无法完成。虚拟网元的统一管理是必然的选择,虚拟化网络的控制平面分离(Decouple)顺理成章。

    华云SDN是多云网络下的SDN (Multicloud Networking位于Gartner曲线图中的Peak位置),支持不同架构的多集群间的资源互通,其中包括华云CloudSuite所纳管的VMware集群、华云自研的x86版和ARM版安超超融合集群。

  2. 云原生和软件定义的CNI网络

    容器网络因其服务和POD内外隔离的特性,软件定义的CNI网络在社区中已有众多方案(如Flannel和Calico)。华云数据SDN作为云原生的CNI(也处于Hyper Cycle中的Peak附近),其容器网络方案支持与安超虚拟机,VMware虚拟机的互相连通和统一管理。

  3. NFV和网络安全

    因网络被软件定义,因此网络流量调度有了更为柔性的方式。同时,一些服务,如安全服务也可以从硬件中脱离出来云化,紧密的配合SDN提供虚拟网络安全服务,如当处于安全资源池的安全实例检测到威胁的时候,会通过调用管理接口通知CloudSuite通过下发安全组等方式阻断威胁。

    意义

    此方案充分将安全服务云化,云内运行的安全实例可以同时保护东西向和南北向的流量,避免了硬件安全往往拘泥于南北向边界的问题。

    同时安全实例弹性较强,可以方便的支持升级,灵活部署更高规格的服务,不受硬件影响。扩充和减少服务实例也可以在安全中心中直接操作即可达成,免去硬件配置的繁琐。

    流量镜像方案不影响业务的正常流量,即使安全实例出现服务中断等情况,正常业务仍然可以正常运行。业务流量也避免了“发卡弯”等不必要的转发过程。

SDN与SD-WAN的区别知识补充

SD-WAN 是一种技术,它使用 SDN 概念跨 WAN 分配网络流量,以自动确定最有效的方式来路由进出分支机构和数据中心站点的流量。

SDN 和 SD-WAN 有相似之处,例如,它们都将控制平面和数据平面分开,并且都支持额外的虚拟网络功能的实现。

两者的不同之处在于:

  1. 作用域不同

    SDN主要侧重于局域网内的内部操作,而SD-WAN侧重于连接组织的不同地理位置。

  2. 面向群众不同

    客户可以对SDN进行编程,而供应商可以对SD-WAN进行编程。

  3. 使用平台不同

    SDN由封闭系统内的网络功能虚拟化(NFV)启用,而SD-WAN提供虚拟运行或在SD-WAN设备上运行的应用程序路由。

  4. 系统、技术、协议不同带来的成本上的不同

    SD-WAN在消费级宽带互联网上使用基于应用程序的路由系统,与对SDN至关重要的多协议标签交换(MPLS)相比,这可实现更好的质量性能和更低的每兆字节成本。

SDN 未来可能的应用

  1. SDN-LAN
  2. SDN-WAN
  3. SDN-DCN