软件定义网络

www.net130.com     日期:2012-5-11    浏览次数:
出处:何所思 何所忆

ipbaobao注:这篇文章是我看到的写SDN最出色的。发表后3年的今天,产业界积极介入,火遍全球。
    计算机系统的持续革新已经创造了新的抽象层,从最初的操作系统到如今的虚拟化。每次都抽象底层的硬件,同时在上层创造一个新的用于竞争和革新的平台。然而在网络方面,软硬件的功能划分就不那么清晰,正确的可编程平台变得难以捉摸,以至于我们开发了动态网络、网络处理器和软件路由。一个逐步显现的趋势指出,越来越多的网络基础设施将用数据通道之外的软件来定义。这对于研究者来说是一个大新闻,因为基础设施会更开放、更可编程,并能通过虚拟化使得试验网络在同样的物理数据通道上并存。这对于工业界也是巨大的新闻,因为它将加速网络内部的革新。

  从路由器的设计上看,它由软件控制和硬件数据通道组成。软件控制包括管理(CLI,SNMP)以及路由协议(OSPF,ISIS,BGP)等。数据通道包括针对每个包的查询、交换和缓存。这方面有大量论文在研究,引出三个开放性的话题,即“提速2倍”,确定性的(而不是概率性的)交换机设计,以及让路由器简单。

  事实上在路由器设计方面我们已经迷失了方向,因为有太多的复杂功能加入到了体系结构当中,比如OSPF,BGP,组播,区分服务,流量工程,NAT,防火墙,MPLS,冗余层等等。个人认为,我们在20世纪60年代定义的“哑的,最小的”数据通路已经臃肿不堪。

  对比计算机领域,PC工业已经找到一个简单可用的硬件底层(x86指令集)。在软件定义方面,顶层(应用程序)和底层(操作系统和虚拟化)都在爆炸式地发展。开源方面,有10万个开发者参与了标准化进程,加速了创新。可见,硬件底层+软件定义的网络+开源文化就能推动创新,网络创新亦需如此,这个底层需要我们去实现。

  一个简单稳定通用的底层需要具备以下属性:
  1. 允许应用程序的繁荣发展。比如在互联网领域,稳定的IPv4带来了Web的繁荣;
  2. 允许其顶部的基础设施能用软件定义。比如互联网领域的路由协议、管理等;
  3. 体系结构本身能够快速创新。

  回顾网络创新的历史,在20世纪90年代中期认为“推动网络的创新,需要在一个简单的硬件数据通路上编程”,即动态网络。它的问题在于隔离性、性能、复杂度。20世纪90年代后期认为,“为了推动网络创新,我们需要底层的数据通道是可编程的”,也即网络处理器。它的问题在于加剧了数据通道底层的复杂度。事实上在网络领域,我们一直以来没有分清一个简单通用的硬件底层与一个开放的上层编程环境之间的界限。之前的尝试往往犯以下错误:
  1. 假设当前的IP路由底层是固定的,并试图在其外部编程,包括路由协议;
  2. 自上而下地定义编程和控制模型。(但事实上Intel在选择x86指令集的时候,并没有定义Windows XP、Linux或者VMware)

  因此我们需要做以下几件事:
  1. 在底层和开放编程环境之间要有一个清晰的分割;
  2. 设计一个简单的硬件底层,能够包括和简化当前的底层;
  3. 极少的使用事先形成的有关底层如何被编程的想法;
  4. 强隔离。

  在设计硬件底层方面,我们要用最少的基于流的数据通路来缓存决策,也即实现一个基于流的底层。我们需要对流进行灵活的定义,如单播、组播、导航点、负载均衡,并且支持不同类型的流的聚类;我们需要控制流,把流作为编程的实体:能对它路由、私有化、移动……我们还要吸取包交换的益处,因为它切实可行,能全局部署,而且很有效率——当然是在它很简单的时候。

  综合上述考虑,我们定义了一个名为“流空间”的底层,它有以下属性:
  1. 后向兼容。当前的分层结构是它的一个特例,而且端点不需要修改;
  2. 容易在硬件上部署,比如在每个交换机上部署TCAM流表;
  3. 流之间能清晰分离,具有简单的几何结构,能证明哪个流能或者不能通讯。

  作为底层,它有以下属性:
  第一,基于流;第二,对每个流只有少量的动作,如转发给端口;转发给控制器; 重写头,在流空间之间路由;根据最小/最大速率分隔带宽等;第三,外部的针对流表的开放API。

  我们开发了一个稻草人版的的基于流的底层OpenFlow。我们的第一步是定义底层,即一个针对流表的开放外部API。它的1.0版本要求易于添加到现有的硬件交换机、路由器、API上,目前已经完成。它的2.0版本需要开发针对OpenFlow优化的硬件,以及通用的“流空间”,期限是2011年。我们的第二步是部署,首先在校园里部署,再在全美国的科研骨干网络上部署,允许研究人员自由地在其顶部创新。

  使用OpenFlow,我们可以静态地划分VLAN,比如将生产用和研究用的VLAN划分开来;我们可以设计自己的路由协议,比如单播、组播、多径、负载均衡;可以做接入控制、家庭网络管理、移动性管理、能量管理;包处理器(在控制器上);设计自己的IP协议;网络测量和虚拟化,比如在交换机上实现虚拟化OpenFlow。

  这样我们就拥有了一个简单、可用、稳定的硬件底层,它具有可编程性,强隔离模型,支持其上的自由竞争,从而加速创新。

  目前,OpenFlow已经在美国斯坦福大学、Internet2、日本的JGN2plus以及其他的10-15个科研机构中部署,计划将在2009年10月前进行规模的机构部署,应用于“GENI Enterprise”项目,并在国家科研骨干网以及其他科研和生产中应用。

  来源:《中国教育网络》2009年6月刊

分享道
相关新闻