软件自定义网络Software-Definded Networking

译自:https://en.wikipedia.org/wiki/Software-defined_networking

软件定义网络(Software-Definded Networking, SDN)最初来源于2008年左右在加州大学伯克利分校和斯坦福大学的研究工作,而后演化成为一种新型的计算机网络。1 SDN允许网络管理员通过对低层功能的抽象来管理网络服务。具体实现是通过将决定流量从如何发送的系统(控制平面)从底层转发流量到指定目的的系统(数据平面)分离开来。这项技术的发明者们和系统的供应商们认为SDN可以达到简化网络的目的。2

SDN需要引入一些方法来实现控制平面与数据平面的通信。OpenFlow的作为其中的一种实现机制 ,经常被人误解为等同于SDN,实际上其他机制也可以实现SDN的概念。开放网络基金会的创立促进了SDN和OpenFlow市场的发展,云计算这一概念也开始流行。

背景:

控制器充当的物理网络和SDN层的之间的界面基于互联网协议 (IP)的网络最初是建立在自治系统 (Autonomous Systems, AS)的概念基础上的。这一概念允许网络进行扩展和延伸,连接节点知道部分必须的路由信息,根据这些信息找到合理的下一跳,并转发数据包到下一跳。这种网络连接方法是简单的,并已被证明是有弹性的和可扩展的。考虑到报文递交的服务,AS的原则不允许指定转发目的在不改变自己标识的情况下移动。转发目的之间的拓扑位置正是它们所连接的网络接口,即它们的标识。此外,只使用基本的AS是很难得到其他标识的质量,比如逻辑分组,访问控制, 服务质量 ,中间的网络处理,也难以确定涉及到成为网络流或网络对话的数据包序列方面的内容。

互联网工程任务组 (Internet Engineering Task Force,IETF)实行了许多补充标准来扩大标识特定化的需求,如虚拟局域网和虚拟专用网络。这些增加的标准提高了网络元件规格和网络供应商配置接口的复杂度。

随着弹性的云架构和动态资源分配的发展,以及移动电脑操作系统和虚拟机使用的增长,软件定义网络(SDN)这一额外的分层需求出现了。这一额外分层允许网络运营商指定网络服务,而不用去耦合网络接口的规格。这使得实体之间可以在不改变标识也不违反规格的情况下移动。它也可以简化网络操作,因为每个标识的全局定义不必与每一个接口位置相匹配。这样一层也可以通过将标识和流量特征控制逻辑从基本的基于拓扑转发、桥接及路由中分离出来,从而重建网络元素内部的复杂设计。

全局软件定义控制还会基于源和目标识别来跟踪特定内容的流量。关于驱动网络硬件的一种机制已经被网络设备制造商采纳,目的是共享在软件定义边缘和供应商特定的桥接及路由之间运行的边缘。OpenFlow协议定义了一组关于转发的开放命令。OpenFlow协议运用全球感知软件控制器(集中式或分布式)来驱动网络边缘硬件,以便创造一个易编程的、基于标识的、覆盖在传统的IP核心上的网络。2

SDN是实现可编程化 主动互联网进程中的一步。SDN允许网络管理员通过控制器来实现对网络流量的可编程中央控制,而不需要访问物理层的网络交换机 。3,4 SDN的配置可以创建起一个逻辑网络控制平面,其中硬件与数据转发平台硬件在物理上是分离的,即网络交换机可以转发数据包并且一个单独的服务器可以这个运行网络控制平面。 这种分离允许控制平面与数据平面在实现中使用不同的分布模型。控制平面的开发和运行环境的任务可以在不同的平台上运行(而不是硬件交换机和路由器上的低功率管理处理器)。

##SDN部署模型

###对称与非对称

在非对称模型中,SDN全局信息尽可能地集中化,边缘驱动时尽可能地分布化。这样做背后的考虑是清晰的,集中化使得全局整合轻松了许多,和分布化降低了SDN流量汇聚-封装的压力。然而,针对不同类型的SDN元素之间的确切关系,这种模型又产生了一系列问题,包括一致性,向外扩展的简化,多位置的高可用性,而在传统的基于AS的网络模型中,这些问题是不存在的。在对称分布的SDN模式中,需要增加全球的信息发布能力,提高SDN汇聚性能,使SDN元素基本上是一种类型的组件。只要在任意元素的子集中网络是可达的,在这样一组元素就可以在之上形成一个SDN覆盖网络。

###非泛洪与泛洪

在泛洪模型中,全局信息共享的相当一部分是通过广播和组播机制实现。这可以帮助SDN模型更加对称,它利用现有的透明桥接动态封装的原则,以实现全局意识和标识学习。这种方法的缺点之一是,随着越来越多的位置的加入,每个位置相应负载增加,从而降低了可扩展性。在非泛洪模型中,所有的转发是基于对全局的精确匹配,这通常采用分布式哈希和分布式缓存SDN查找表来实现。

###基于主机与网络中心化

在基于主机的模型中,关于SDN的数据中心中,假设很多的虚拟机通过可以移动来便增加弹性。在这个假设下,主机的虚拟机监视器代表本地虚拟机完成SDN封装。这种设计减少了SDN边缘的流量压力,并且根据每个主机上的空闲核心能力来“自由”处理。在网络中心化的设计中,一个更清晰的划分是在网络边缘和终端之间。这种SDN边缘与机柜设备顶端(TopOfRack)接口相连,并在主机端点之外。这是一种更传统的方法,网络互联并不依靠终端去执行任何路由的功能。

这些设计模型之间的界限划分并不明确。例如,在数据中心使用具有很多CPU“大型”主机计算结构有很多的CPU插件同样执行一些TopOfRack的接入功能,并可以代替一个机箱中所有的CPU插件,集中SDN边缘功能。这既是基于主机的设计,也是网络中心化的设计。也有可能是这些设计变量之间存在依赖关系,例如基于主机的实现通常会委托一个非对称集中查找或业务流程服务来协助组织庞大的分布。对称和非泛洪的模型通常会委托网络SDN汇聚来实现合理边缘点数量的查找分布。这样的集中度依赖于本地的OpenFlow的接口,以维持流量封装压力。