华为SDN概述1

时间:2024-04-05 21:52:25

 

SDN(Software Defined Networking):软件定义网络

计算机时代的演进:

计算1.0时代:用于专用计算的大型机、小型机(主要厂家IBM)大型机的特点:专有的硬件、专有的操作系统、专有的应用,

计算2.0时代:用于通用计算的服务器,用户可以选择不同的底部硬件,选择不同类型的操作系统,根据需求部署不同的软件,将开源、开放、创新放在了另外一个高度。

 

由于计算产业的开放性,计算产业被解耦成了很多个层面,如下图所示,

华为SDN概述1

从上面的图我们可以感受到,仅仅是通用硬件这一层面,就有很多厂家的芯片,内存、硬盘等,也就是说,由于生态的开放性,计算产业的内容变得十分的丰富,计算产业的变革引发了网络产业的思考,业界开始提出SDN(Software Defined Networking)的概念,并不断在其商用化进程上作出尝试。目的是希望网络变得更开放、灵活和简单,如下图所示,是网络产业的架构图华为SDN概述1

网络界的现状:经典IP组成的分布式网络

经典的IP网络是一个分布式的、对等控制的网络。
分布式就体现在每台网络设备存在独立的数据平台、控制平面和管理平面。如下图所示,转发平面就负责转发和接收数据帧负责底层流量的高速转发;控制平面就负责协议的交互和生成的转发表项,生成转发表项之后,把具体的转发表下发到转发平面来执行转发;管理平面负责设备的监控、管理、运行和运维,甚至包括人机界面交互(如工程师登录到web页面去管理设备)。
对等控制是指每台设备都有独立的转发、控制、管理平面,设备和设备之间通过交互协议来实现报文的传递和路由的转发。
经典IP网络的优势在于设备与协议解耦,不同的厂家之间兼容性较好且故障场景下协议保证网络收敛,也就是说不同厂商之间的设备可以通过协议实现很好的数据沟通。
华为SDN概述1
 
这样的IP网络有优势也有劣势,比如存在了一些关于网络容易拥塞、运维太困难、网络技术复杂、业务部署太慢等问题。
 

 1.网络易拥塞的问题:

如下图所示,是基于带宽固定选路的问题和解决思路

网络基于带宽计算转发路径。路由器C到路由器D的链路为最短转发路径。C-D业务流量开始超过带宽出现丢包现象。虽然其他链路空闲,但是算法依然选择最短路径转发。如果可以全局考虑,此时最优的流量转发路径为C-A-D

华为SDN概述1

如下图所示,是基于固定顺序建立隧道的问题,

途中有A到H共8台路由器,现在有一个业务需求是需要从A到E之间建立一个隧道,如图所示就是我们的1隧道,现另有一需求需要A到G之间建立一个隧道,很顺利的就建好了2隧道,但是现在又有一个业务需求需要从C到H,可以发现这个业务需求满足不了,因为中间都有隧道被占用的问题。

华为SDN概述1

解决思路:全局计算,最优调整隧道路径,

如果我们在建立所有隧道之前,就规划好每个隧道的路径,就不会发生上述问题,如下图所示。

 

华为SDN概述1

2.网络技术太复杂

网络技术太复杂主要表现在两方面,一个是网络协议多:如果您准备成为一名网络技术专家, 您需要阅读网络设备相关RFC 2500篇。如果一天阅读一篇,需要长达6年时间, 而这只是整个RFC1/3,其数量还在持续增加;另外一个是网络配置难:如果您准备成为某个设备商设备的百事通,您需要掌握的命令行超过10000,而其数量还在增加。

3.运维太困难

运维太困难表现在两方面,一个是故障发现难,传统运维网络故障依靠人工故障识别、人工定位和人工诊断。超过85%的网络故障业务投诉后才发现;无法有效主动识别、分析问题;另一个是故障定位难,传统运维仅监控设备指标,存在指标正常,但用户体验差的情况。缺少用户和网络的关联分析。数据中心网络统计,一个故障定位平均耗时76 min

4.网络业务部署速度太慢

搭建一个新的网络环境,包括设备的发货、设备的上架、现场线缆的部署、设备的调测、各种网络策略的部署等等一系列过程,在这个过程中每一个环节的周期都比较长,导致的结果就是网络业务部署速度太慢的问题。

物理网络部署效率低:物理网络无零配置部署能力。

新业务部署周期长:新业务部署涉及端到端设备配置修改。

网络策略变更复杂、不灵活:网络策略无法细化到用户。策略变更复杂,无法灵活调整。

网络业务部署的愿景是:网络策略实现业务随行,与物理位置无关;新业务实现快速部署;物理网络支持零配置部署,设备即插即用。

SDN的起源

SDN(Software Defined Networking)即软件定义网络是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。 其核心理念通过将网络设备控制平面与数据平面分离,从而实现了网络控制平面的集中控制,为网络应用的创新提供了良好的支撑。SDN起源提出了三个特征, “转控分离”、“集中控制”和“开放可编程接口”。

如下图所示,华为SDN概述1

在传统的网络架构里面引入了OpenFlow的概念,在转发平面搭建多个OpenFlow交换机,这些OpenFlow交换机由OpenFlow控制器来控制。

OpenFlow基本概念

OpenFlow是控制器与交换机之间的一种南向接口协议。它定义了三种类型的消息,Controller-to-Switch Asynchronous Symmetric。每一种消息又包含了更多的子类型,如下图所示。

消息类型 描述

Controller-to-Switch

该消息由Controller发送。用于管理Switch和查询Switch的相关信息。由控制器往下发。定义了交互的方向

Asynchronous

该消息由Switch发起。当Switch状态发生改变时,发送该消息告诉Controller状态变化。OpenFlow交换机往上发。定义的是交互的方向

Symmetric

该消息没有固定发起方,可由Switch或者Controller发起。例如HelloEchoError等。应用于特殊的报文。

 

Controller-to-Switch子类型:
Features消息:在SSL/TCP会话建立后,ControllerSwitch发送Features请求Switch的相关信息。Switch必须应答自己支持的功能,包括接口名、接口MAC地址、接口支持的速率等等基本信息。
Configuration消息:Controller可以设置或查询Switch的状态。
Modify-State消息:Controller发送该消息给Switch,来管理Switch的状态,即增加/删除、更改流表,并设置Switch的端口属性。
Read-State消息:Controller用该消息收集Switch上的统计信息。
Send-Packet消息:Controller发送该消息到Switch的特定端口。
Asynchronous子类型:
Packet-in消息:当Flow Table中没有匹配的表项或者匹配“send to Controller”Switch将给Controller发送packet-in消息。
Packet-out消息:从控制器回复的消息。
Flow-Removed消息:当给Switch增加一条表项时,会设定超时周期。当时间超时后,该条目就会被删除。这时Switch就会给Controller发送Flow-Removed消息;当流表中有条目要删除时,Switch也会给Controller发送该消息。
Port-status消息:当数据路径接口被添加、删除、修改的时候,此消息用于通知控制器。
Symmetric子类型:
Hello消息:当一个OpenFlow连接建立时,ControllerSwitch都会立刻向对端发送OFPT_HELLO消息,该消息中的version域填充发送方支持的OpenFlow协议最高的版本号;接收方收到该消息后,接收方会计算协议版本号,即在发送方和接收方的版本号中选择一个较小的;如果接收方支持该版本,则继续处理连接,连接成功;否则,接收者回复一个OFPT_ERROR消息,类型域中填充ofp_error_type.OFPET_HELLO_FAILED
Echo消息: SwitchController任何一方都可以发起Echo request消息,但收到的一方必须回应Echo reply消息。这个消息可以来测量latencyController-Switch之间的连接性,即心跳消息;
Error消息:当交换机需要通知控制器发生问题或错误时,SwitchController 发送Error消息。

OpenFlow协议仍在持续更新。更多更全的消息类型请参考ONF最新发布OpenFlow Switch Specification》标准。 

 Flow Table简介

OpenFlow交换机基于流表(Flow Table)转发报文。

每个流表项由匹配字段、优先级、计数器、指令、超时、CookieFlags这七部分组成。其中关于转发的关键的两个内容是匹配字段指令。匹配字段是匹配规则,支持自定义。指令是用来描述匹配后的处理方式。

华为SDN概述1

匹配域:匹配到某种特征的流量才能进行相应的转发,比传统的数据转发更加灵活,可选项更多;

Match Fields:流表项匹配项(OpenFlow 1.5.1版本支持45个可选匹配项),可以匹配入接口、物理入接口,流表间数据,二层报文头,三层报文头,四层端口号等报文字段等。
Priority:流表项优先级,定义流表项之间的匹配顺序,优先级高的先匹配。
Counters:流表项统计计数,统计有多少个报文和字节匹配到该流表项。
Instructions:流表项动作指令集,定义匹配到该流表项的报文需要进行的处理。当报文匹配流表项时,每个流表项包含的指令集就会执行。这些指令会影响到报文、动作集以及管道流程。
Timeouts:流表项的超时时间,包括了Idle TimeHard Time
Idle Time:在Idle Time时间超时后如果没有报文匹配到该流表项,则此流表项被删除。
Hard Time:在Hard Time时间超时后,无论是否有报文匹配到该流表项,此流表项都会被删除。
CookieController下发的流表项的标识。
Flags:该字段改变流条目的管理方式。

 转发方式对比

华为SDN概述1

经典的网络转发方式是网络设备通过查询路由表指导流量转发。
路由表的条目由网络设备之间运行路由协议而计算生成。
路由表是定长的。路由表通过最长匹配原则执行报文转发。一台网络设备只有一张路由表。
 
华为SDN概述1
华为SDN概述1
OpenFlow是一个网络协议。运行OpenFlow的交换机通过查询流表指导流量转发。
流表一般是由OF控制器统一计算,然后下发到交换机。
流表是变长的,拥有丰富的匹配规则和转发规则。一台网络设备有多张流表。

有很多的优势,但是也有劣势:单点故障、数据不一致的问题,当前OpenFlow的主流应用是用于数据中心的软件交换机,例如OVSCE1800V等,而不是实现硬件交换机的转控分离。

经典路由和OpenFlow之间可以进行流量转发,因为都是基于TCP/IP协议栈的,但是两者之间不能运行路由协议,因为OpenFlow Switch只支持OpenFlow

SDN是一个更为广泛的概念而不局限于OpenFlow。转控分离是实现SDN的一种方法而不是本质。

SDN的本质诉求

SDN的本质诉求是让网络更加开放、灵活和简单。它的实现方式是为网络构建一个集中的大脑,通过全局视图集中控制,实现或业务快速部署、或流量调优(适用于广域网网络)、或网络业务开放等目标。

SDN的价值是:集中管理,简化网络管理与运维;屏蔽技术细节,降低网络复杂度,降低运维成本;自动化调优,提高网络利用率;快速业务部署,缩短业务上线时间;网络开放,支撑开放可编程的第三方应用。

SDN带来了网络架构的变革。但是路由协议不会被淘汰,只会被更新的路由协议去替代。

SDN网络架构

SDN网络架构分为协同应用层、控制器层和设备层,如下图所示,底层是网络设备,网络设备之上依然会运行协议,新增加了一个控制器层,控制器曾的作用就是通过控制器管理好各种设备,变成一个集中的控制点,第三个层次是应用协同层,(可以是一个云平台,也可以是业务平台,)通过这个层次将客户的需求下发给网络控制器,控制器再将这个网络需求下发给设备层的设备来完成,不同层次之间通过开放接口连接。以控制器层为主要视角,区分面向设备层的南向接口和面向协同应用层的北向接口。OpenFlow属于南向接口协议的一种。

华为SDN概述1

隐患:控制器不能坏,因为一旦通过OpenFlow实现转控分离,控制器又坏掉了,那么数据的转发就不能被控制了,

解决思路1,一旦控制器坏掉了,设备层的设备就恢复成原来的状态,转控一体化的状态,这样就有了控制层面;

解决思路2,实现控制器冗余,主备部署。

协同应用层:主要完成用户意图的各种上层应用,典型的协同层应用包括OSSOpenStack等。OSS可以负责整网的业务协同,OpenStack云平台一般用于数据中心负责网络、计算、存储的业务协同。还有其他的协同层应用,比如用户希望部署一个安全APP,这个安全APP不关心设备具体部署位置,只是调用了控制器的北向接口,例如BlockSource IPDestIP),然后控制器会给各网络设备下发指令。这个指令根据南向协议不同而不同。
控制器层:控制器层的实体就是SDN控制器,是SDN网络架构下最核心的部分。控制层是SDN系统的大脑,其核心功能是实现网络业务编排。
设备层:网络设备接收控制器指令,执行设备转发。
NBI北向接口:北向接口为控制器对接协同应用层的接口,主要为RESTful
SBI南向接口:南向接口为控制器与设备交互的协议,包括NETCONFSNMPOpenFlowOVSDB等。