什么是SDN
SDN:software Defined Network,软件定义网络
SDN的本质是网络软件化,提升网络的可编程能力,是一次网络架构的重构,而不是一种新特性、新功能。SDN将比原来网络架构更好、更快、更简单的实现各种功能特性。
而引入SDN也是为了解决传统网络发展滞后、运维成本高的问题。
传统网络是一个分布式的网络,在二层网络中,设备通过广播的方式传递设备间的可达信息。在三层网络中,设备间通过标准路由协议传递拓扑信息。这些模式要求每台设备必须使用相同的网络协议,保证各厂商的设备可以实现相互通信。随着业务的飞速发展,用户对网络的需求日新月异,一旦原有的基础网络无法满足新需求,就需要上升到协议制定与修改的层面,这样就会导致网络设备升级十分缓慢。
传统网络为了适应不同的需求和场景,发展也越来越复杂。部署一个传统网络往往需要使用到很多协议,由于标准协议中往往存在一些未明确的地方,导致各厂商的实现有差异。
服务商希望能够将控制面(操作系统和各种软件)与硬件解耦,实现底层操作系统、基础软件协议以及增值业务软件的开源自研,这就诞生了SDN技术。
SDN架构
SDN架构可分为基础设施层、控制层和应用层。
- 基础设施层:主要为转发设备,实现转发功能,例如数据中心交换机。
- 控制层:由SDN控制软件组成,可通过标准化协议与转发设备进行通信,实现对基础设施层的控制。
- 应用层:常见的有基于OpenStack架构的云平台。另外,也可以基于OpenStack构建用户自己的云管理平台。
SDN使用北向和南向应用程序接口(API)来进行层与层之间的通信,分为北向API和南向API。北向API负责应用层和控制层之间的通信,南向API负责基础设施层和控制层之间的通信。
SDN的优点
在当前主流的SDN架构中,保留了传统硬件设备上的操作系统和基础的协议功能,通过控制器收集整个网络中的设备信息,具有如下优点:
-
网络可编程 网络设备提供应用编程接口(API),使得开发和管理人员能够通过编程语言向网络设备发送指令。网络工程师可以使用脚本自动化创建和分配任务,收集网络统计信息。将基于CLI与SNMP的封装脚本变为实实在在的可编程对象,提供了更丰富的功能。 -
网络抽象化 控制器作为中间层,通过南北向API接口与网络设备和应用程序进行交互,将底层的硬件设备抽象为虚拟化的资源池,应用和服务不再与硬件紧密耦合。 -
降低成本 保留了原有的网络设备,硬件设备仍然具备管理、控制、转发的全部功能,方便进行整网的改造,无需进行大规模的搬迁。控制器的引入将人工配置转变为机器配置,提升运维效率,降低运维成本。 -
业务灵活调度 传统的硬件设备在网络中无法进行灵活的负载分担,最优路由上往往承担着最重的转发任务,即使QoS、流控等功能缓解了这一问题,但流量的调度仍然强依赖于管理员对单台设备的配置,因此我们可以将传统的硬件设备看作是一种孤岛式的、分布式的管理模式。SDN在没有改变硬件设备整体逻辑的基础上,通过增加开放的南北向接口,实现了将计算机语言到配置命令行的翻译,使界面式的管理、集中管理变成了可能,解决了传统网络业务调度不灵活的问题。 -
集中管理 传统网络设备的管理是分布式的,单台网络设备不感知整个网络的状态。网络管理员使用控制器来管理底层硬件设备,编排网络业务,分配网络资源和调整流量优先级。管理员可以直接感知整个网络的状态,及时调整带宽和优化策略,便于进行整网的管理。 -
开放性 SDN架构支持供应商开发自己的生态系统,开放的API支持云编排、OSS/BSS、SaaS等多种应用程序,同时也可以通过Openflow控制多个供应商的硬件。
|