通往SDN之路:可编程网络的思想史

通往SDN之路:可编程网络的思想史

摘要:这篇文章是对论文《The Road to SDN:An Intellectual History of Programmable Networks》的读后总结。本文主要分为四个部分:第一个部分是对SDN的简单介绍;第二个部分追溯了可编程网络的发展历史,包括在主动网络、早期分离控制面和数据面方面所做的工作以及OpenFlow和网络操作系统的相关介绍。第三部分介绍了网络虚拟化。第四部分是简要的总结。文中也揭示了关于一些技术的误解。

1.介绍

软件定义网络(Software Defined Network,SDN)是由美国斯坦福大学CLean State课题研究组提出的一种新型网络创新架构,是网络虚拟化的一种实现方式。其核心技术OpenFlow通过将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供了良好的平台。

SDN产生的一些原因
 网络设备的复杂性和难以管理。从交换机到路由器,这中间就存在着许多设备。网络管理员通过配置接口来配置设备,但是不同供应商或者同一供应商的不同设备间的配置接口也是不同的。这些因素在增加网络管理复杂性的同时也增加了网络的运营成本。因此产生了SDN(软件定义网络)这一新的网络设计和网络管理方式。

SDN的两个特性

  • 控制面与数据面分离
     控制面--------决定如何处理流量
     数据面--------根据控制面的决策转发流量
  • 将控制面合并
     使得一个软件控制程序可以控制多个数据面的元素

控制面是如何控制数据面的呢?
  通过应用程序编程接口(API)进行控制。例如OpenFlow。

OpenFlow:是一种网络通信协议,属于数据链路层,能够控制网上交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。

SDN近期的情况
 近年来,SDN在行业中获得巨大的吸引力,许多商业交换机支持OpenFlow API。与此同时也出现了许多控制平台,程序员可以使用这些控制平台创建了许多应用程序。如:动态访问控制、网络虚拟等。大量信息技术有限公司加入到了SDN的行业联盟中。如:Open Networking Foundation、Daylight Initiative等。

2.通往SDN之路

SDN的历史可以分为三个阶段,每个阶段都有自己的贡献:
主动网络(20世纪90年代中期~21世纪初)
将控制面与数据面分离(2001~2007年)
OpenFlow API和网络操作系统(2007~2010年左右)

2.1主动网络

主动网络:主动网络有两个含义:一是被称为ANN的网络中间节点(如路由器、交换机),不仅完成存储转发等网络功能,而且可以对包含数据和代码的所谓主动包和普通包进行计算;。二是用户根据网络应用和服务的要求可以对网络进行编程以完成这些计算。

主动网络的基本思想:将程序注入数据包,使程序和数据一起随数据包在网络上传输;网络的中间节点运行数据包中的程序,利用中间节点的计算能力,对数据包中的数据进行一定的处理;从而将传统网络中“存储——转发”的处理模式改变为“存储——计算——转发”的处理模式。

主动网络采取的两种编程模型
囊模型:在节点中需要执行的代码由数据包携带
可编程路由器/交换机模型:在节点上执行的代码由带外机制建立

 其中囊模型与主动网络的联系最为紧密,囊模型设想在网络上安装新的数据面功能,以数据包的形式携带代码,并使用缓存来提高代码分发的效率。可编程路由器将可扩展性交给网络运营商。

促进主动网络的发展
 一些资助机构对主动网络的兴趣也是促进其发展的重要因素。例如:DARPA(美国国防部高级研究计划局)在20世纪90年代中期到21世纪初创建并支持主动网络项目。

人们对主动网络的怀疑
 由于主动网络强调的是演示、项目的相互操作性以及一定程度的开发工作,在短期内缺乏一些实例,由此引起了一些人员的怀疑,这多多少少会对某些工作产生影响。

主动网络对SDN的贡献

  • 网络可编程性降低了技术创新的障碍
    在SDN最初的动机中,经常提到难以在网络中进行创新和提高编程性的概念。而主动网络开创了可编程网络的概念,作为降低网络创新障碍的一种方式。
  • 网络虚拟化,以及基于包头对软件程序进行复用的能力
    主动网络提出了一个用于描述一个平台组件的框架:该平台的关键组件是:管理共享资源的共享节点操作系统;一组执行环境,每个环境定义一个用于包交换的虚拟机;一组活动应用程序,它们在给定的执行环境中工作,提供端到端的服务。
  • 中间件编排统一的架构
    这个架构是用来统一众多的中间件函数,虽然在近期的网络虚拟化工作中没有用到,但是随着SDN的控制和中间件编排应用的发展,这些架构都会派上用场。

对主动网络的误解

  • 人们对主动网络的一个误解是认为包必须携带由端用户编写Java代码,认为主动网络的研究与实际网络相差太远,本质上是不安全的,因此对它不屑一顾。
  • 另一个是主动网络因不能提供实际的性能和安全性(主动网络主要专注架构、编程模型和平台,性能并不是其考虑的首要因素)

2.2控制面与数据面分离

在传统的路由器和交换机中,数据面和控制面是紧密耦合的,而这种耦合使得各种网络管理任务都极具挑战性。为了应对这种挑战,各种分离数据面和控制面的研究开始出现。

两项创新

随着网络规模和范围的日益增长,对可靠性和新服务的需求(如虚拟网络)、以及服务器内存和处理器处理资源的能力的不断增大,催生了两项创新。

  • 控制面和数据面之间的开放接口:如IETF(互联网工程任务组)标准化的ForCES接口(转发和控制元素分离)、Netlink接口(Linux内核级包转发功能)。

ForCES是Forwarding and Control Element Separation的简称,致力于转发件和控制件的分离,ForCES协议对转发和控制面的信息交互进行了标准化。
Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。

  • 在逻辑上对网络进行集中控制:如路由控制平台(RCP)、软路由架构、路径计算原件(PCE)协议。

软路由是指利用台式机或服务器配合软件形成路由解决方案,主要靠软件的设置,达成路由器的功能;而硬路由则是以特有的硬设备,包括处理器、电源供应、嵌入式软件,提供设定的路由器功能。
路径计算元件(PCE)是能够确定和找到用于在源和目的地之间传送数据的合适路线的系统组件,应用或网络节点。

将控制功能转移到单独的服务器上的意义

 逻辑上集中的路由控制器降低了标准的实施障碍;服务器技术的进步则意味着单一的商品服务器可以存储的所有的路由状态,并为一个大型网络计算所有的路由决策。

为分离数据面和控制面,SDN设计中提出的两个概念

  • 使用数据面的开放接口进行集中逻辑控制
    软路由使用ForCES API允许单独的控制器在数据面安装转发表,从而在路由器中完全删除控制功能。遗憾的是,主要的路由器供应商并没有采用这个。所以RCP只好使用现有的标准控制面协议在传统路由器中安装转发表。
  • 分布式状态管理
    逻辑上集中的路由控制器面临着分布式状态管理的挑战。因为一个逻辑上集中的控制器必须要复制控制器故障,但是复制会在多个副本之间引起状态不一致的问题。为解决这个问题,每个控制器可以负责网络拓扑的一个部分,然后这些控制器彼此间交换路由信息,以确保做出一致的决策。

一些误解

 批评的人对这些新架构的怀疑主要在于他们认为逻辑上集中的路由控制会违反“共享”的原则,这是因为控制器可能会独立于负责流量转发的设备出现故障。

寻求一般性

 主要的设备供应商几乎没有采用ForCES这样的标准数据面API,因为开放的API会使新的竞争者进入市场。因此只能依赖现有的路由协议来控制数据面。为了拓宽控制面与数据面分离的应用面,研究人员探索了一些逻辑集中控制的全新架构。如:The 4D project.

4D项目倡导了4个层次:
数据面------基于配置规则来处理包
发现面------拓扑收集和流量监测
传播面------安装包处理规则
决策面------由逻辑上集中的控制器组成,这些控制器将网络级目标转换为包处理状态

2.3OpenFlow和网络操作系统

OpenFlow

OpenFlow是一种网络通信协议,属于数据链路层,能够控制网上交换机或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。

  • 历史
    OpenFlow的最初概念始于2008年在斯坦福大学开始。到2009年12月,OpenFlow交换规范1.0版发布。自成立以来,OpenFlow一直由开放网络基金会(ONF)管理,ONF是一个致力于开放标准和SDN应用的用户主导型组织。
  • OpenFlow网络的组成
    OpenFlow网络由OpenFlowswitch(OpenFlow交换机)、FlowVisor(网络虚拟化层)和Controller(控制器)三部分组成。OpenFlow交换机进行数据层的转发;FlowVisor对网络进行虚拟化;Controller对网络进行集中控制,实现控制层的功能。
  • OpenFlow的相关应用
    ① 在校园网络中的运用-----这项应用可以为学生和科研人员实现新协议和新算法提供一个很好的试验平台。
    ② 在数据中心网络中的应用-----在数据中心网络中使用OpenFlow交换机,可以使得网络和计算资源更加紧密的联系起来并实现有效的控制。
    ③ 在网络管理和安全控制中的应用-----基于OpenFlow技术实现的网络更加便于控制。更为重要的是,在内部网络和外网的连接处应用OpenFlow交换机可以通过更改数据流的路径以及拒绝某些数据流来增强企业内网的安全性。
    ④ 基于OpenFlow实现SDN-----基于OpenFlow实现SDN,则在网络中实现了软硬件的分离以及底层硬件的虚拟化,从而为网络的发展提供了一个良好的发展平台。

网络操作系统

网络操作系统 ,是一种能代替操作系统的软件程序,是网络的心脏和灵魂,是向网络计算机提供服务的特殊的操作系统,借由网络互相传递数据与各种消息。分为服务器(Server)和客户端(Client)。服务器的主要功能是管理服务器和网络上的各种资源和网络设备的共用,加以统合并控管流量,避免有瘫痪的可能性;客户端能接收服务器所传递的数据并加以运用,可以清楚地搜索所需的资源。

关于SDN一些误解

① 第一个误解是每个流量的第一个数据包必须交由控制器进行处理。实际上SDN(尤其是OpenFlow)并不会对规则的粒度或控制器是否处理流量进行响应。
② 第二个误解是控制器在物理上必须是集中的。事实上Onix(Online Information eXchange,线上资讯交换标准)和ONOS(Open Network Operating System,开放网络操作系统)就说明了SDN控制器可以而且应该是分布式的。
③ 第三个误解是认为SDN和OpenFlow是等价的。事实上OpenFlow只是SDN的一个实例。

3.网络虚拟化

SDN早期的一个突出实例就是网络虚拟化,网络虚拟化提供了一个与底层物理设备解耦的抽象网络。网络虚拟化允许多个虚拟网络在共享的基础设施上运行,而且每个虚拟网络都具有比底层物理网络更加简单的拓扑结构。

SDN出现之前的网络虚拟化

 在SDN出现之前的虚拟网络被限制在只能在现有的网络协议上运行,这给新技术的部署带了困难,所以研究人员采取了运行覆盖网络的方法,在传统网络上建立满足要求的拓扑结构。不同于主动网络,覆盖网络不需要网络设备或网络服务提供者的支持,这使得覆盖网络更易于部署。

覆盖网络(Overlay network)是一种创建在另一网络之上的计算机网络。覆盖网络中的节点可以被认为是通过虚拟或逻辑链接相连,其中每个链接对应一条路径(Path)。节点之间也可能通过下层网络中的多个物理连接实现相连。 例如对等网络或客户-服务器应用这类分布式系统都可视为覆盖网络,因为它们的节点都运行在因特网之上。 因特网自身最初也是作为一个电话网络之上的覆盖网络构建,而当今(借由VoIP的引入),电话网络正越来越变成一个创建在因特网之上的覆盖网络。

网络虚拟化和SDN的关系

  • SDN是作为一种支持网络虚拟化的技术
    云计算使网络虚拟化的作用更加突出,它允许多个用户共享网络基础设施。例如:Ncira的网络虚拟化平台就提供了这种抽象,而不需要任何来自底层网络硬件的支持。

Nicira是一家专注于软件定义网络(SDN)和网络虚拟化的公司。它由Martin Casado,Nick McKeown和Scott Shenker于2007年创立。Nicira创建了自己的OpenFlow,Open vSwitch和OpenStack网络项目的专有版本。

  • 网络虚拟化可以用于测试和评估SDN
    SDN控制应用程序与底层数据面分离的功能使得在将控制应用程序布置到操作网络上之前,可以在虚拟环境中测试和评估SDN控制应用程序。例如:Mininet是用基于进程的虚拟机来运行多个OpenFlow交换机、终端主机和SDN控制器,每个进程都单独地运行在相同的虚拟机上。

Mininet是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。
Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。

  • 对SDN进行虚拟化
    在传统网络中,对路由器和交换机的虚拟化比较复杂,因为每个虚拟组分都需要运行自身的控制面软件,而虚拟化一个SDN交换机就容易多了。例如:FlowVisor系统使得大学能够支持在承载流量的相同物理设备上进行网络研究的实验平台,主要思想是:将流量进行分片,其中每个分片共享网络资源,并由不同的SDN控制器管理。

FlowVisor是建立在OpenFlow之上的虚拟化网络平台,它可以将物理网络分成多个逻辑网络,从而实现开放软件定义网络(SDN)。它为管理员提供了普遍的定义规则来管理网络而不是通过调整路由器和交换机来管理网络。

一些误解

 人们经常提到的一些所谓的“SDN的好处”,比如摊销成本或在多用户的环境中动态配置网络,这些实际上都来自网络虚拟化。虽然SDN促进了网络虚拟化,但必须认识到SDN提供的功能并不直接提供这些好处。

4.总结

 这篇文章介绍了可编程网络的前世今生,可编程网络的最初概念来自于主动网络,二者之间有许多相同的愿景。但是主动网络缺乏明确的用例,也缺乏大量部署的路径。在互联网腾飞的时代过后,人们的目光转向了实用主义,为了使网络更便于管理,分离数据面和控制面的想法开始出现。随后OpenFlow和网络操作系统的研究工作使得对应用程序进行网络范围的控制成为可能。SDN在这个过程中只是扮演着解决网络问题的工具的角色。SDN倡导的是“开箱即用”的网络编程方式,而不能受当前技术的限制。在设计SDN应用程序时不能简单地只考虑当前的OpenFlow协议,而应当考虑希望对数据面具有什么样的控制,并在这种设想和实际的部署策略之间找到平衡。

posted @ 2019-08-04 10:20  Boketto  阅读(1443)  评论(2编辑  收藏  举报