1.什么是SDN?
SDN
(Software-Defined Networking
,软件定义网络)是一种新型的网络架构和技术理念,旨在通过软件编程的方式来实现网络的配置、管理和控制。其核心思想是将网络的控制平面与数据转发平面分离,使得网络的控制更加灵活和可编程,从而能够适应快速变化的业务需求。
2.传统网络体系结构及其局限性
传统的 IP
网络是一个分布式的、对等控制的网络架构。每台网络设备存在独立的数据平面、控制平面和管理平面。设备的控制平面对等的交互路由协议,然后独立的生成数据平面指导报文转发。
# 管理平面(Management Plane)
管理平面提供对网络设备进行远程管理和配置的功能。它允许网络管理员通过TELNET
、WEB
、SSH
、SNMP
、RMON
等协议和设备进行交互,监控设备的运行状态、环境状况、日志和告警信息,并进行系统加载、升级等维护工作。管理平面还负责设置控制平面中各种协议的相关参数,并在必要时对控制平面的运行进行干预。
运行状态监控:实时监控设备的运行状态和性能指标。 环境监控:监控设备的物理环境(如温度、湿度等)。 日志和告警信息处理:记录和分析设备的日志和告警信息,及时发现和解决网络问题。 系统加载和升级:加载新的配置文件或升级设备软件,以支持新功能或修复漏洞。 网络协议设置:通过命令行或图形界面设置和管理网络协议参数。
# 控制平面(Control Plane)
控制平面负责交换机的配置、路由计算、转发决策等智能功能。它处理网络协议(如OSPF
、BGP
、STP
等)的交互,并生成和维护转发平面所需的路由表和转发表。控制平面还负责系统资源的调度和流量统计,以确保网络的稳定性和效率。
协议处理:支持各种网络协议的运行和交互。 路由运算:计算网络拓扑和最佳路径。 转发控制:基于路由表和转发表,决定数据包的转发路径。 业务调度:根据业务需求分配网络资源。 流量统计:收集和分析网络流量数据,用于网络优化和故障排除。 系统安全:确保控制平面的安全,防止恶意攻击和未授权访问。
# 数据平面(Data Plane)
数据平面是交换机的核心部分,负责高速、无阻塞地传输数据包。它直接处理从各个端口接收到的数据,并根据预先设定的规则(如L2
交换、L3
路由、ACL
访问控制列表、QoS
服务质量、组播、安全防护等)进行转发。转发平面的设计目标是实现低延迟、高吞吐量的数据传输,确保数据包能够迅速而准确地到达目的端口。
L2交换:基于 MAC
地址表的二层交换,实现数据包在同一子网内的传输。L3路由:基于 IP
地址的三层路由,实现数据包在不同子网间的传输。ACL:访问控制列表,用于过滤和限制网络流量。 QoS:服务质量,确保关键应用的网络带宽和优先级。 组播:将数据包发送给多个目的地的技术,用于视频会议、流媒体等应用。 安全防护:如防止 DDoS
攻击、端口安全等,保护网络免受恶意攻击。
对于传统网络,其局限性如下图:
3.SDN的起源
2006年,以斯坦福大学教授Nike McKeown
为首的团队提出了OpenFlow
的概念,并基于 OpenFlow
技术实现网络的可编程能力,使网络像软件一样灵活编程,SDN
技术应运而生。
SDN的三个主要特征:
转控分离:网元的控制平面在控制器上,负责协议计算,产生流表;而转发平面只在网络设备上。 集中控制:设备网元通过控制器集中管理和下发流表,这样就不需要对设备进行逐一操作,只需要对控制器进行配置即可。 开放接口:第三方应用只需要通过控制器提供的开放接口,通过编程方式定义一个新的网络功能,然后在控制器上运行即可。
SDN
控制器既不是网管,也不是规划工具:
网管没有实现转控分离:网管只负责管理网络拓扑、监控设备告警和性能、下发配置脚本等操作,但这些仍然需要设备的控制平面负责产生转发表项。
规划工具的目的和控制器不同:规划工具是为了下发一些规划表项,这些表项并非用于路由器转发,是一些为网元控制平面服务的参数,比如IP
地址,VLAN
等。控制器下发的表项是流表,用于转发器转发数据包。
4.SDN架构
SDN
架构可分为基础设施层、控制层和应用层。
基础设施层:主要为转发设备,实现转发功能,例如数据中心交换机。 控制层:由 SDN
控制软件组成,可通过标准化协议与转发设备进行通信,实现对基础设施层的控制。应用层:常见的有基于 OpenStack
架构的云平台。另外,也可以基于OpenStack
构建用户自己的云管理平台。
SDN
使用北向和南向应用程序接口(API
)来进行层与层之间的通信,分为北向API和南向API
。北向API
负责应用层和控制层之间的通信,南向API
负责基础设施层和控制层之间的通信。
5.SDN架构下的接口
OpenFlow接口:
OpenFlow
接口是控制器与下层转发器之间的一种基于芯片的接口协议。OpenFlow
协议基于TCP/IP
,用于转发器与控制器之间的通信。BGP接口:
BGP
接口是在BGP
协议基础上添加一些BGP
路由属性(比如Additional Path
属性和BGP Flowspecification
属性),用于下发BGP
的一些路由特性,从而使得IDC
数据中心出口路由器根据这些特性实现流量调优。PCE接口 :
PCE
接口用于控制器根据网络可用带宽计算出流量工程路径,用于数据中心AS
内部的TE
隧道的建立。
运营商网络已经大规模部署了传统分布式网络,不能在较短时间内升级到 SDN
网络,与传统网络互通就是必要的。SDN
控制器必须支持各种传统的跨域路由协议,以便解决和传统网络互通问题。
东西向协议是必须的,在SDN
控制器上运行东西向协议,通过简单的修改或升级控制器程序就能提供新业务。另一方面,东西向协议为SDN
控制器跨域互联及SDN
控制器分层部署提供了接口。
6.传统网络架构与SDN架构对比
在传统网络中,网络设备可以分为管理面、控制面和转发面。管理面负责业务的编排和策略的制定,控制面负责操作系统的运行以及各种算法的运算,转发面负责数据包的转发和接收。
SDN
的理念是将网络设备的控制和转发功能解耦,使网络设备的控制面可直接编程,将网络服务从底层硬件设备中抽象出来。
SDN
架构与传统网络架构的对比如下图所示:
7.软件SDN与硬件SDN对比
经典的SDN
技术路线强调控制面的剥离,希望能够将网络设备变为白盒设备,实现网络功能的自定义。
但在SDN
的发展过程中,由于底层协议的复杂性、软件开发投入等多方面原因,厂商逐渐转向了以自动化运维为主要目标,弱化控制面剥离的``SDN技术路线。厂商们主张将操作系统以及大部分的软件仍放在硬件设备上进行,保留原有的网络设备形态,通过控制器实现与硬件设备、与网络配置管理工具的对接,由控制器在管理面的维度完成对硬件设备的统一管理和业务编排。
下图为两种SDN
技术路线的对比,经典的SDN
技术路线又可以称为软件SDN
,而弱化控制面剥离的SDN
技术路线可以称为硬件SDN
。
8.SDN的优点
# 网络可编程
特点: SDN
架构下的网络设备提供应用编程接口(API
),允许开发和管理人员通过编程语言向网络设备发送指令。优势:网络工程师能够利用脚本自动化创建和分配任务,收集网络统计信息,从而显著提高网络配置和管理的效率。这种基于 API
的可编程性使得网络行为可以根据业务需求进行灵活调整,提供了比传统网络配置方法更丰富的功能和更高的灵活性。
# 网络抽象化
特点:控制器作为中间层,通过南北向API接口与网络设备和应用程序进行交互,将底层的硬件设备抽象为虚拟化的资源池。 优势:这种抽象化使得应用和服务不再与硬件紧密耦合,而是可以更加灵活地利用网络资源。它简化了网络管理的复杂性,使得网络管理员可以更加专注于业务需求的实现,而不是底层硬件的细节。
# 降低成本
特点: SDN
架构保留了原有的网络设备,这些设备仍然具备管理、控制、转发的全部功能。优势:由于无需进行大规模的搬迁和替换, SDN
架构可以显著降低网络改造的成本。同时,控制器的引入将人工配置转变为机器配置,提高了运维效率,进一步降低了运维成本。
# 业务灵活调度
特点: SDN
架构通过增加开放的南北向接口,实现了计算机语言到配置命令行的翻译,使得界面式的管理和集中管理成为可能。优势:这解决了传统网络业务调度不灵活的问题。在 SDN
架构下,网络流量可以根据业务需求进行灵活调度,最优路由上的转发任务可以得到更加均衡的分配,从而提高了网络的性能和可靠性。
# 集中管理
特点: SDN
架构使用控制器来管理底层硬件设备,编排网络业务,分配网络资源和调整流量优先级。优势:管理员可以直接感知整个网络的状态,及时调整带宽和优化策略,便于进行整网的管理。这种集中管理的方式提高了网络管理的效率和准确性,降低了管理成本。
# 开放性
特点: SDN
架构支持供应商开发自己的生态系统,开放的API
支持云编排、OSS/BSS
、SaaS
等多种应用程序。优势:这种开放性促进了市场竞争,降低了用户的选择成本。同时,它也使得网络能够根据业务需求进行灵活扩展,满足了不同场景下的网络需求。此外,通过 Openflow
等协议,SDN
架构还可以控制多个供应商的硬件,进一步提高了网络的兼容性和可扩展性。
综上,SDN
架构通过其网络可编程性、网络抽象化、降低成本、业务灵活调度、集中管理和开放性等优点,为现代网络管理提供了更加高效、灵活和可扩展的解决方案。