深入浅出了解SDN

服务器 数据中心
SDN的定义和架构都不只有一种,但是最重要的一个就是ONF(Open Network Foundation开放网络基金会)定义的SDN和架构。因为其他的一些定义和架构多少会偏向于少数商业利益团体,所以我们以这个最为开放,也最为'标准化'的定义来介绍SDN。

什么是SDN?

概括来说,SDN并不是一个具体的技术和协议,而是一种思想、一个框架。狭义的SDN指“软件定义网络”, 其试图摆脱硬件对网络架构的限制,这样便可以像升级、安装软件一样对网络进行修改,便于更多的APP(应用程序)能够快速部署到网络上。广义的SDN还延伸出了:软件定义安全、软件定义存储等。

过去30年里,IP网络一直是全分布式的,战功卓著,解决了各种客户需求,今天SDN是为了未来更好更快的实现用户需求。并不是有什么需求通过传统方法不能做到,只是SDN做得更快、更好、更简单。

SDN的本质是网络软件化,提升网络可编程能力,是一次网络架构的重构,而不是一种新特性、新功能。SDN将比原来网络架构更好、更快、更简单的实现各种功能特性。

SDN的定义和架构都不只有一种,但是最重要的一个就是ONF(Open Network Foundation开放网络基金会)定义的SDN和架构。因为其他的一些定义和架构多少会偏向于少数商业利益团体,所以我们以这个最为开放,也最为'标准化'的定义来介绍SDN。

SDN解决什么问题?

IP网络的生存能力很强,得益于其分布式架构。看看IP的历史,当年美国军方希望在遭受核打击后,整个网络能够自主恢复,这样就不能允许网络集中控制,不能存在中心结点,否则在这个中心节点丢一颗核弹,整个网络就挂了。

现在各厂家的网络设备都太复杂了。如果您准备成为某个厂商设备的百事通,你需要掌握的命令行超过10000条,而其数量还在增加。 如果你准备成为IP骨灰级专家,你需要阅读网络设备相关RFC 2500篇,如果一天阅读一篇,你知道要看多久能看完?6年多!而这只是整个RFC的1/3,其数量还在增加。

此外,这些协议标准都是在解决各种各样的控制面需求,而这些需求都是需要经过需求提出、定义标准、互通测试、现网设备升级来完成部署,一般要个3~5年才能完成部署。这样的速度,已经Hold不住网络上运营业务的OTT们的各种快速网络调整需求,必须想办法解决这个问题。 很幸运,现在已经找到了解决以上问题的方法。没错,就是SDN !它是目前系统性的解决以上问题的最好方法。

SDN结构体系

传统网络的管理平面、控制平面、数据平面:

  • 管理平面:管理设备(SNMP)
  • 控制平面:路由协议(IGP、BGP)
  • 数据平面:转发表(FIB)

管理平面主要包括设备管理系统和业务管理系统,设备管理系统负责网络拓扑、设备接口、设备特性的管理,同时可以给设备下发配置脚本。业务管理系统用于对业务进行管理,比如业务性能监控、业务告警管理等。

控制平面负责网络控制,主要功能为协议处理与计算。比如路由协议用于路由信息的计算、路由表的生成。

数据平面是指设备根据控制平面生成的指令完成用户业务的转发和处理。例如路由器根据路由协议生成的路由表对接收的数据包从相应的出接口转发出去。

传统网络局限性:

  • 流量路径的灵活调整能力不足。
  • 网络协议实现复杂,运维难度较大。
  • 网络新业务升级速度较慢。
  • 传统网络通常部署网管系统作为管理平面,而控制平面和数据平面分布在每个设备上运行。

流量路径的调整需要通过在网元上配置流量策略来实现,但对于大型网络的流量进行调整,不仅繁琐而且还很容易出现故障;当然也可以通过部署TE隧道来实现流量调整,但由于TE隧道的复杂性,对于维护人员的技能要求很高。传统网络协议较复杂,有IGP、BGP、MPLS、组播协议等,而且还在不断增加。

设备厂家除标准协议外都有一些私有协议扩展,不仅设备操作命令繁多,而且不同厂家设备操作界面差异较大,运维复杂。

传统网络中由于设备的控制面是封闭式的,且不同厂家设备实现机制也可能有所不同,所以一种新功能的部署可能会造成周期较长;且如果需要对设备软件进行升级,还需要在每台设备上进行操作,大大降低了工作效率。

ONF SDN架构:

 

深入浅出了解SDN
SDN架构

 

深入浅出了解SDN
SDN架构

SDN网络部署方式

Underlay的网络

所有的转发行为都由控制器通过OpenFlow协议或定制的BGP协议将转发表下发给转发器,转发器仅仅执行动作,没有单独控制面。

Overlay的网络

基础网络还是传统网络形式,用Vxlan,GRE,NVGRE等隧道技术,通过路由协议打通各个节点,用隧道技术将数据报文进行封装或者解封装。对传统网络来说见到的就是普通数据报文,转发即可。对于这些新增的协议,也需要升级现有网络设备才能支持(不支持上述协议的网络设备)。

SDN核心技术

(1)南向接口

SDN交换机设备中的各个表项并非由设备自身根据周边的网络环境在本地自行生成的,而是由远程控制器统一下发的,因此各种复杂的控制逻辑都无需在SDN交换机中实现。SDN交换机可以忽略控制逻辑的实现,全力关注基于表项的数据处理,而数据处理的性能也就成为评价SDN交换机优劣的最关键指标,因此,很多高性能转发技术被提出,例如基于多张表以流水线方式进行高速处理的技术。

当前最著名的南向接口协议莫过于ONF的OpenFlow协议。OpenFlow解决了如何由控制层把SDN交换机所需的用于和数据流做匹配的表项下发给转发层设备的问题。

(2)控制器及北向接口

SDN控制器,业界有很多基于Openflow控制协议的开源的控制器实现,如NOX、Floodlightt等,都能够实现链路发现、拓扑管理、策略制定、表项下发等支持SDN网络运行的基本操作。控制器是SDN网络的核心,其可能存在负载过大、单点失效等问题。

SDN北向接口是通过控制器向上层业务应用开放的接口,其目标是使得业务能够便利地调用底层的网络资源和能力。北向接口缺少业界公认的标准,成为当前SDN领域竞争的焦点。

(3)OpenFlow交换机规范

 

深入浅出了解SDN
OpenFlow

OpenFlow v1.0的核心组成包括三个部分:流表、安全通道和OpenFlow协议。流表负责数据包的高速查询和转发;此外交换机还需要通过一个安全通道与外部的控制器进行通信,这个安全通道上传输的是OpenFlow协议,它将负责传递控制器和交换机之间的管理和控制信息。

 

深入浅出了解SDN
Openflow流表项结构

包括三个部分,用于数据包匹配的包头域(Header Fields),用于统计匹配数据包个数的计数器(Counter),用于展示匹配的数据包如何处理的动作(Action)。

 

深入浅出了解SDN
Openflow流表项包头域

包头域中用于和交换机接收到的数据包进行匹配的元组涵盖了ISO网络模型中的第二层到第四层的网络配置信息。每一个元组中的数值可以是一个确定的值或者是“ANY”以支持对任意值的匹配。

计数器:OpenFlow流表的计数器可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流量的相关信息。

动作:OpenFlow流表的动作用于指示交换机在收到匹配的数据包后应该如何对其进行处理。每个流表项可以对应有零个至多个动作,如果没有定义转发动作,则与之匹配的数据包将默认丢弃。动作分为必备动作和可选动作,必备动作是所有OpenFlow交换机默认支持的,而可选动作则需要由交换机告知控制器它所能支持的动作种类。OpenFlow动作列表如下:

 

深入浅出了解SDN
OpenFlow动作列表

 

深入浅出了解SDN
OpenFlow动作列表

openflow协议

OpenFlow协议是用来描述控制器和OpenFlow交换机之间交互所需要的消息的标准接口。OpenFlow协议支持三种消息类型,说明如图:

 

深入浅出了解SDN
OpenFlow消息类型

 

深入浅出了解SDN
OpenFlow消息类型

 

深入浅出了解SDN
OpenFlow消息类型

SDN的价值

SDN的可编程性和开放性,可以通过针对SDN软件的修改实现网络快速编程,实现业务快速上线。

 

深入浅出了解SDN
SDN示例

业务自动化:

SDN网络架构下,由于整个网络归属控制器控制,那么网络业务网自动化就是理所当然的,不需要另外的系统进行配置分解。在SDN网络架构下,SDN控制器可以自己完成网络业务部署,提供各种网络服务,比如L2vpn、L3vpn等,屏蔽网络内部细节,提供网络业务自动化能力。

网络路径流量优化:

通常传统网络的路径选择依据是通过路由协议计算出的“最优”路径,但结果可能会导致“最优”路径上流量拥塞,其他非“最优”路径空闲。当采用SDN网络架构时,SDN控制器可以根据网络流量状态智能调整网络流量路径,提升网络利用率。

责任编辑:未丽燕 来源: 今日头条
相关推荐

2010-01-06 16:37:02

Linux操作系统

2009-12-25 15:49:43

Linux rescu

2015-09-23 11:19:18

数据中心SDN

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2022-03-18 09:48:35

微服务架构运作

2019-01-07 15:29:07

HadoopYarn架构调度器

2017-07-02 18:04:53

块加密算法AES算法

2012-05-21 10:06:26

FrameworkCocoa

2021-07-20 15:20:02

FlatBuffers阿里云Java

2022-09-26 09:01:15

语言数据JavaScript

2018-11-09 16:24:25

物联网云计算云系统

2019-11-11 14:51:19

Java数据结构Properties

2012-02-21 13:55:45

JavaScript

2021-04-27 08:54:43

ConcurrentH数据结构JDK8

2022-12-02 09:13:28

SeataAT模式

2022-01-11 07:52:22

CSS 技巧代码重构

2009-11-30 16:46:29

学习Linux

2019-12-04 10:13:58

Kubernetes存储Docker

2009-11-18 13:30:37

Oracle Sequ
点赞
收藏

51CTO技术栈公众号