软件定义网络(SDN)初探
在2008年以前,整个网络世界都是由硬件设备所组成和控制着的。随着OpenFlow协议的出现,人们首次对软件定义网络(software-defined networking,SDN)引起了关注。作为一种杰出的网络控制机制和技术类别,SDN大幅简化了网络资源的自动化和企业基于策略的网络管理。目前,SDN已经发展成为由许多家技术服务提供商(例如Cisco)提供支持的,最为可靠且稳定的网络技术之一。
什么是软件定义网络?
简而言之,软件定义网络(SDN)是一种可以促进网络敏捷性和灵活性的体系架构。SDN的主要技术目的是通过软件应用程序,来实现集中式的受控网络。通过深入探究,您会发现,软件定义网络的背后宗旨是通过智能化的编程服务,来满足不断变化的业务需求,进而组织和构建一套能够实现一致性和全面管理的网络。
借助基于应用程序编程接口(API)的软件应用,SDN允许开发人员在集中控制的环境中进行网络编程。因此,企业可以通过实施通用的SDN控件,开启全新的网络平台,并且能够在不增加技术复杂性的情况下,管理整个网络。
由于我们所在网络中,承载的内容越来越趋向于多样性,对于云计算服务越来越深度的依赖性,以及在不同的移动设备之间越来越频繁的互动与联动,我们需要通过SDN及时地根据消费者业务供应商的动态变化,持续将各类业务融合到一起,从而在根本上改变传统业务的处理方式。可以说,为了达到预定的控制效果,许多企业都正在积极地通过SDN的技术服务,来改善其原有的运营模式与绩效。
众所周知,网络设计对于业务模型的数字化是至关重要的,而数字化往往得益于SDN技术在其关联方面的落地与使用。那些以提供SDN服务为主企业,通过网络虚拟化的革命性实现方式,将网络的控制面与数据面相互分离,从而实现了网络流量的灵活控制,并以类似于智能管道的方式,为核心网络及应用的创新提供了良好的环境平台。
Cisco SDN的普及在很大程度上归功于基于控制器的集中式应用,和可编程的网络应用。它们可以提供企业所处网络的整体视图。目前,SDN也正在改变着各大数据中心的现有架构,以及它们所连接的网络模型。据此,企业的既有网络也能够根据实际的应用需求,进行自动调整。
什么是SDN控制器?
作为Cisco网络中的“大脑”,SDN控制器其实是一种软件,它可以对企业的整体网络提供集中化的视图,以及全面的控制。企业内、外部的IT运营人员、经理、乃至网络管理员,都可以通过管理基础架构的转发层面,来调节流经控制器的数据流。通过基于策略的管理器,SDN能够有效地组织网络中的各项资源和整体行为。网络管理员也可以将那些原有应用于设备的策略,一致性地应用到网络中的多个节点上。
其实从本质上说,这些策略都是针对网络入向流量的规则。它们可以为目标网络进行访问级别的分级,进而对允许访问的资源分配相应的优先级。通过集中化的网络状态视图,我们可以基于预设的各种策略,来实现简单而统一的网络管理。
软件定义网络的体系架构
SDN的体系架构包括如下三个层面:
- 应用
- 控制
- 基础架构
其中,在应用层上包括了许多网络上正在运行的服务,控制层是通过被视为网络“大脑”的SDN控制器来进行管理,而基础架构层则是由各种网络交换机、路由器、以及其他支持性的硬件所组成。这些层面通过彼此通信,来发挥各种的作用。为了促进交互,SDN通常会带有如下两个相互独立的应用程序接口:
- 南向(Southbound)API
- 北向(Northbound)API
其中,北向API被用于在控制层和基础架构层之间进行通信;而南向API被用于在控制层和应用层之间进行通信。
什么是北向API?
为了获得可用的资源,SDN的各种应用会依赖控制器来确定网络的基础架构状态。由管理员预先建立的网络策略,能够按照应用流量的需求,来协调SDN控制器的路由。它们之间的相互关系,在Cisco的软件定义网络(SDN)和网络功能虚拟化(Network Function Virtualization)文档中,都进行了详细的诠释。
应用层通过主动与控制层通信,能够获悉其资源需求的内容和位置。接着,控制层根据网络的可用性,来组织资源“订单”,并进行交付。然后,控制层利用智能情报(intelligence)来产生具有同步延迟(synchronized latency)和安全特性的理想应用路径。值得注意的是,北向API的组织过程并非手动配置,而是被预先编程为自动进行的。
什么是南向API?
在南向API中,SDN控制器(控制层)通过各种路由器和交换机,与网络中的基础架构层进行通信。它能够指导网络基础架构,遵循由控制器设定的应用数据路径。尽管控制器的主要功能是改进路由器和交换机用于移动数据的方式,但是网络基础架构中的数据的去向并不取决于物理设备或路由通道。就智能情报而言,控制器具有做出最佳决策和调整数据移动路径的作用。
SDN的作用
SDN除了能够提供可编程的网络集中式视图,和一致性的网络资源,以满足不断变化的业务需求之外,SDN还提供了许多实用的技术和业务服务,其中包括:
(1) 集中化的管理和可编程性
SDN的控制功能和转发功能是相互分离的,您可以通过开放的源代码、或专有的自动化工具,来通过编程的方式配置目标网络。网络的智能情报主要集中在控制器(即:大脑)的软件之中,该软件可以将目标网络作为单个交换机,以提供集中化的视图。
(2) 最小化的运营支出
SDN的大部分应用(包括各种网络软件的更新)都是自动化的。由于避免了为每一项业务或网络需求,而添置网络基础架构,因此SDN能够将运营的支出降至最低。它通过统一策略,并且在网络范围内进行传播,从而减少人为错误的可能性。可以说,通过将网络管理员、或操作员的常规任务转为自动化,SDN极大地减少了网络管理的时间开销。
(3) 敏捷性与灵活性
SDN旨在通过更加良好的敏捷性和灵活性,以帮助企业在现有基础架构中,部署最新的应用和服务,进而实现业务目标。在服务进行各种实际更新和创建时,我们只需进行简单的修改,便可将其集成并发布到整个网络之中。