软件定义网络 SDN 是一种新兴的网络架构,SDN 将网络的控制平面和转发平面解耦合,并使其直接可编程。应用层由不同的业务和应用组成,其可以对网络转发的策略进行管理和控制,也支持对于 QoS 的优化保障和对网络属性的配置以提高网络的利用率和安全性;控制层负责完成数据平面的抽象,实现网络拓扑和状态信息的维护,按照应用层业务的要求来控制和调用转发面资源,该层也被称之为网络操作系统(Network Operating System,NOS)层;基础设施层也称之为数据转发层,其基于业务流表来实现数据的转发和处理。控制层通过提供北向接口向应用层暴露编程接口,通过如 OpenFlow 等南向控制数据平面接口协议完成流表的分配。
下图描述了 SDN 的架构:
网络的智能化由基于软件的 SDN 控制器集中提供,其在全局视野上对网络进行管控,基于此架构,从网络应用和策略引擎角度来说,网络设备即是单个的逻辑交换实体。运营企业从单一的逻辑管理点进行运营商独立的网络控制,这大大简化了网络的设计和操作。SDN 同时也大幅度简化了网络设备本身,因为其不再需要理解和处理成千上万的协议标准而仅仅需要按照 SDN 控制器的的指令进行数据域的转发。
对于网络操作者和管理者来说,更有意义的在于它们可以通过编程的方式集中配置整个网络而不必要面对大量的设备和其各自巨大的代码量。此外,通过使用 SDN 控制器完成网络智能的集中控制,网络管理者可以实时的改变网络的行为并在数小时或几天内完成新应用和服务的部署,而不再像以往那样需要几周甚至几个月来完成业务部署。通过控制层的集中管控,SDN 使得网络管理者能够灵活的动态配置、管理、优化网络资源并提供安全性。
除了对网络进行抽象,SDN 架构提供了一系列的应用程序编程接口(Application ProgrammingInterface,API)来为网络服务和应用的部署提供能力,通过调用 API,应用层可以快速的完成诸如路由、多播、安全、接入控制、带宽管理、流量工程、QoS、存储优化、策略管理和各种面向用户需求的业务实现。
归纳来说,SDN 架构通过类似计算机领域的虚拟抽象技术来简化网络管控,通过屏蔽复杂的网络底层为上层应用提供简单的配置与管理。SDN 技术通过将网络控制和转发功能相分离实现转发抽象,通过引入全局视图为上层应用屏蔽底层的分布式状态信息和提供网络的全局视图来实现分布式状态抽象,通过在全局视图的基础上提供针对应用趋向的特定视图抽象来简化上层业务应用对于底层网络的操作,并以此促进应用与业务创新。
而实现数据转发平面和控制平面的处理协议是OpenFlow。 OpenFlow是由斯坦福大学的 Nick McKeown 教授提出的,其最初目的在于在现有的校园网络中部署新的网络协议,而现在OpenFlow 已作为 SDN 架构中的控制数据平面接口(南向接口)被广泛接受。ONF 的成立是 OpenFlow 发展史上的里程碑,其标志着 OpenFlow正式走向产业化发展道路,ONF 正在致力于围绕 OpenFlow 协议推行 SDN 标准和规范。目前OpenFlow 已经发布了多个版本,但 ONF 还在继续对OpenFlow协议进行完善,使 OpenFlow 成为稳定的商用部署标准。
OpenFlow 将网络控制功能与数据转发功能解耦合,从网络设备中分离出控制器,控制器负责控制逻辑的实现和流表的生成、维护、配置和派发,OpenFlow 交换机作为网络设备只负责按照流表项进行数据的转发而不需要关心上层逻辑,通过这种方式,网络可以灵活地动态进行逻辑控制和高层策略配置,而 OpenFlow 的流表结构使得数据面的处理颗粒度细化,实现了扁平化的网络处理层次。
Openflow 由控制器和 OpenFlow 交换机两部分组成,其相互关系如下图所示:
控制器中的网络操作系统 NOS 完成控制逻辑的实现,网络的基本信息由 NOS 通过网络视图的形式进行维护,NOS 上运行的各种应用通过对网络视图的调用完成对 OpenFlow 交换机的操作,以此来达到管控网络的目的。当前多种 NOS 系统已经发布,如基于 C++/Python 进行开发的NOX、基于 Java 语言进行开发的 Beacon等。
OpenFlow 交换机负责数据层面的转发,其至少包括流表、安全信道和 OpenFlow 协议三个部分。其中流表是由和每个流表项相关联的一个行为(action)所组成的,它负责指示交换机如何对流进行处理;安全通道连接了交换机和远端的控制器,它允许控制器和交换机之间通过 OpenFlow 协议进行命令和分组的交换。当数据流到达 OpenFlow 交换机时,流将按照流表的顺序进行对应匹配,并根据情况完成诸如线速度的存储转发、封装后转发给控制器或丢弃等操作。
OpenFlow 通道是交换机连接控制器的接口,用于控制器和交换机之间交换 OpenFlow 消息。所有消息必须按照 OpenFlow 协议中规定的格式封装后,在控制器和交换机之间传输。通过这个通道,控制器可以配置、管理交换机,接收交换机的事件信息,并指示交换机如何处理用户数据包等。OpenFlow 通道建立在安全传输层协议(TLS)或者无保护 TCP 连接之上。一个典型的控制器可以与多个不同的交换机相连,对应构成多个不同的 OpenFlow 通道。另一方面,交换机可以连接一个控制器,也可以连接多个控制器以确保可靠性。由交换机向控制器发起连接,该连接可以建立在单一网络之上,例如一个独立的专用网络,或者由该交换机管理的网络,这种情况下,即为带内控制器连接,唯一的要求是该网络必须可以建立 TCP/IP连接。此外,出于并行性考虑,OpenFlow 通道也可以由多重网络连接构成。
此外,依托于 SDN 技术实现的未来网络必须同时实现网络功能的虚拟化(NFV),才能对各种新兴业务进行全面的支撑。2012 年 10 月,由 AT&T 等大型运营商牵头的网络功能虚拟化标准工作组NFV 在欧洲电信标准协会成立,其目的在于标准化 IT 虚拟化技术,使得不同的网络设备以软件的形式运行在符合行业标准的高性能硬件设备中,实现网络设备和功能的虚拟化。
网络功能虚拟化旨在改变传统的网络架构,其通过使用标准的 IT 虚拟化技术来将许多网络设备以软件的形式安装在符合工业标准的高性能服务器、交换机和存储硬件中。如图所示,在数据中心、网络节点和端用户中的硬件设备只需要提供统一的标准化接口,传统的网络应用将直接安装在高性能硬件之上来进行业务部署。
网络功能虚拟化将会给运营商和网络本身带来许多益处,其大大减少了网络设备成本和运营过程中的能源消耗,节省了部署应用的成本;有力的减小了新业务部署的周期,加速了网络革新的速度,使得网络运营商能够快速的针对市场需求进行业务调整;通过 NFV,网络运营商可以将底层网络资源共享给多个租户,提供面向用户的目标服务;NFV 使得网络本身对外开放,打开了面向纯软件公司的虚拟应用市场的大门,同时在保证网络安全的前提下给小型公司和学术界提供了网络操作的接入,这将大大促进新业务和新型网络经济的革新和发展。
NFV 与传统硬件网络应用不同在于其通过标准的执行环境与管理接口实现网络功能与硬件的解耦合,这使得多种虚拟网络功能以虚拟机的形式共享底层硬件。NFV 的实现也面临着许多挑战和技术难题,首先必须定义统一的接口来实现可移植性与互操作性,只有实现了标准的接口才能将网络功能以软件的形式进行部署;其次网络对于时延和性能的要求很高,在NFV 环境中,所有的网络功能将以软件的形式实现,如何保证底层硬件资源的分配以提供与硬件相同的性能将是需要重点解决的问题;NFV 想要大规模部署,必须依托于全面高效的网络管理,NFV 使得网络更加的灵活也让网络的管理难度增大;与 SDN 的基本要求相同,NFV也必须保证虚拟机间的隔离和安全性要求,由于网络功能应用和对软件的管理都发生在相同的物理机器上,如何无差错无干扰的对单个虚拟机进行控制和管理也是在 NFV 进行全网部署时必须有效解决的难点问题。
NFV 与 SDN 是相辅相成的关系,两者之间并非相互依赖而是高度互补的关系,两者可以相互独立的实施,但是通过 SDN 中控制与数据平面相互分离的方式,网络功能虚拟化的性能可以得到巨大的提高,充分简化虚拟化实现的部署难度和操作。NFV 为 SDN 软件的运行提供了环境,可以说 NFV 和 SDN 联合组网将带来最大程度的虚拟化能力。
本文出自 “我拿流年乱了浮生” 博客,请务必保留此出处http://tasnrh.blog.51cto.com/4141731/1786875
原文地址:http://tasnrh.blog.51cto.com/4141731/1786875