中国工程院院刊《信息与电子工程前沿(英文)》推出 “ 未来网络 之 软件定义网络( SDN ) ” 专辑 经过 40 多年发展,互联网已渗透到社会经济生活的各个方面。在其不断发展和演进的过程中,随着网络规模扩大,流量激增,传统基于分层协议的网络体系架构在诸如骨干网络、数据中心网络、移动网络等环境下产生了各式各样的问题。如何改变现有僵化的网络体系架构,以适应不断兴起的新型应用需求,成为未来网络技术发展的关键。 软件定义网络( Software-Defined Networking , SDN )技术起源于 2006 年斯坦福大学 Clean Slate 项目组。 SDN 技术的核心是将网络的控制平面和转发平面分离,通过集中式的控制平面来为网络提供一种全新的、基于软件可编程的开放体系架构。它的出现很快得到学术界和工业界的关注,并带来新一轮网络技术变革,成为解决未来网络发展问题的关键技术之一。在学术界, SDN 蝉联了 2008 和 2009 年的 SIGCOMM“ 最佳演示 ” 奖,并被麻省理工学院和多家咨询机构评选为 IT 领域未来十大技术之一。在工业界, SDN 技术帮助谷歌公司将其覆盖全球的数据中心互连网络( B4 )的平均链路利用率从 30% 提升到 95% 以上,让人们看到了 SDN 的巨大潜力。美国电信运营商 ATT 提出的 Domain 2.0 计划,迈出了 SDN 在运营商网络部署的第一步,随后中国三大运营商也成功实现了 SDN 的小规模商用。 SDN 技术正在加速从学术走向产业, SDN 在云服务提供商和通信服务提供商的数据中心部署比例将从 2015 年的 20% 提高到 2016 年的 60% ;到 2019 年,应用于数据中心和企业局域网的 SDN 交换机和控制器收入将达到 122 亿美元。 在 SDN 技术快速发展的背景下,中国工程院院刊《信息与电子工程前沿(英文)》策划了 “ 未来网络之软件定义网络 ” 专辑,通过专题约稿和严格评审,选取了一些代表 SDN 研究前沿或热点的主题论文,涵盖了网络可扩展性、网络虚拟化、网络管理、 SDN 应用等诸多方面。例如,在 SDN 扩展性方面,由于单个控制器容易造成单点故障、高时延等问题,难以在骨干网等大网中落地部署, SDN 控制平面正逐步开始向层级化、分域化的方向演进。西安交通大学的 Peng Zhang 团队、大连海事大学的 Zhi-yang Li 团队和国家数字交换系统工程技术研究中心的 Gang Xiong 团队分别通过研究新的多控制器架构、新的控制器放置算法和虚拟服务放置算法,更加有效地完成多控制器协同控制、优化控制时延和服务时延。在网络虚拟化技术方面, SDN 使得虚拟网络的落地部署成为可能,并逐步成为云数据中心中网络虚拟化、租户网络隔离的关键技术。空军工程大学的 Shui-qing Gong 团队提出了新的虚拟网络映射算法来解决 SDN 网络虚拟化问题。在网络自动化管理方面,传统网络是封闭和非智能的,缺少自动排错与恢复的能力,需要人为参与来保障网络的可靠性,而 SDN 具有集中式控制、获取全局信息的能力,为网络添加了智能的大脑。加拿大卡尔顿大学的 Chung-Horng Lung 团队利用 SDN 技术完成了多播中的自诊断与自恢复,使网络变得更加可靠。在 SDN 应用方面,中国科学技术大学的 JianYang 团队和中国人民解放军理工大学的 MingChen 团队分别研究了新的多播调度算法和流量调度算法,为语音和视频等业务提供可靠的时延与带宽保障。美国奥本大学的 Shiwen Mao 团队则探讨了 SDN 在未来无线通信中的潜在应用以及未来研究方向。 感谢入选论文的作者们出色的工作以及国际同行评审人宝贵的意见。特别感谢三位客座编辑 —— 北京邮电大学的黄韬博士、加拿大卡尔顿大学的 F. Richard Yu 博士和工程院刘韵洁院士 —— 为专辑筹备付出诸多心力。期待我们选取的论文能够推动对这些前沿或热点技术的研究和探索,特别是能够服务于我国网络领域的发展需求,推动我国互联网向更加智能、安全的方向发展。 全文请见: http://www.zju.edu.cn/jzus/issue.php?issueid=458 Frontiers of InformationTechnology Electronic Engineering (FITEE) 的前身为 Journal of Zhejiang University-SCIENCE C (Computers Electronics) , SCI-E 收录。 2015 年改为现名,由中国工程院与浙江大学共同主办,浙江大学出版社与 Springer 合作出版,为中国工程院院刊。出版计算机、信息、电力、电子领域原创研究论文、综述、科学快报、个人视点、新技术 / 方法,等。欢迎国内外学者赐稿,网投地址为 http://www.editorialmanager.com/zusc ------------------------ ------- ------- 首发于微信公众号 zdxbywb
软件定义的网络( SDN )之忧( 141027 ) 闵应骅 SDN 由基础研究提出来以后,得到众多公司的响应,反应极其强烈。从体系结构角度讲,它有许多优越性。但是,要逐步取代传统网络,谈何容易。传统网络有几十年的运行经验,作过不知道多少次修改和补充。要在 SDN 上实现所有这些功能,首先就要抽象化所有功能,才能找到实现的办法。下面,不妨列出一二。 模块组合 在操作系统中,进程允许多用户在一个机器上共享可用资源,每一个进程联系着一个执行线程,与系统资源打交道,譬如存储器、锁存器、文件描述符、套接口等。操作系统要求进程之间的所有交互在指定的接口上发生。譬如,存储定位到一个进程不能被其他进程干扰,除非它是被明确规定由其共享的。虽然 SDN 控制器可以称为网络操作系统,但目前控制器缺少类似于进程的抽象,大部分仍给应用无拘束的访问交换机上的转发表。这就使网络很难模块化地写程序。这是一个很大的问题。因为 SDN 的许多应用是由标准模块,譬如路由、广播、管理、存取控制,建造起来的。不能模块化就要求程序员对每一个新应用的基本服务重新编程序,而不能从库中简单调用。例子如下: 转发和管理: 交换表实现转发和管理两个功能,按规则严格选择某些包执行转发和管理这两个功能,其他的只执行一个。如果并行执行,规则就可能重叠,从而使系统行为无法预计。 带隔离的转发: 网络分为两个相互隔离的主机群,流量是在同一个主机群里转发。程序把隔离和转发这两个功能分开,很容易把包转发到另一个主机群里去了,这是违反政策的。 短延迟视频和大容量数据传送: 对于视频会议,网络必须提供低延迟服务,而且要允许一个后备应用,只要带宽允许可以沿不同路径转发流量。程序员必须同时考虑这两个功能。这些例子说明,如果必须允许程序员直接处理低层的网络状态开发 SDN 应用,用模块化的方式有效完成此事几乎不可能。 编程语言抽象: SDN 应用模块化的一个办法是改变编程接口,而不是管理低层的交换转发规则。他们可以用编译 OpenFlow 的高级语言。这种语言允许程序员独立开发和测试模块,不必担心不想要的交互。程序员甚至可以用自己相同功能的模块去取代已有模块。 孤立切片: 在某些情况下,程序员需要把几个程序互不干扰地组合起来。譬如,流量隔离时,两个转发模块必须互不干扰。直接合并肯定是不正确的,模块互动会引起包互相传送。要用一个抽象,允许多个程序并行执行,但限制每个程序到它自己的隔离切片。 分享的网络化: 多模块的组合行为可能引起冲突。譬如,一个模块保留一条链路的全部带宽。其他模块就不能使用。 我们看到,分解复杂应用为简单模块的抽象对 SDN 极关重要。没有它们,程序员必须用统一的方式写程序,在每一段小程序之间同时进行开发、测试、潜在交互的推理。我们需要考虑一个模块是否可以取代另一个而不影响整个程序,需要表达和解决冲突,特别是牵涉安全和资源约束的性质。 虚拟化 SDN 把网络控制的软件从低端的转发元件分离出来。但它并不把转发逻辑和物理网络拓扑分离开来。这就意味着实现最短路由的程序必须保存拓扑的完全表示,而且当拓扑变化时必须重新计算。为此,某些 SDN 控制器提供基本单元,用虚拟网络元件写应用,更加可扩展,更加容错。下面是一些例子 存取控制: 存取控制一般用 MAC 或 IP 地址编码到网络配置中加以实现。这将使拓扑改变时,譬如主机移动位置,破坏安全性。假如存取控制表是用连接主机的虚拟交换来配置,即使拓扑改变,政策仍将保持稳定。 多用户数据中心: 在数据中心,同一个共享的物理网络,人们希望允许多个用户对设备施加不同的政策。在传统网络中,重叠的地址和服务使得转发表复杂化,而且很难保证一个用户产生的流量与其他用户隔离。用虚拟交换,可以给每一个用户提供一个虚拟网络,具有任意的配置而不影响其他用户。 扩张路由器: 在大型网络中,有时需要将多个物理交换机行为看作一个逻辑交换机。譬如,一大堆低廉的商品交换机可以装配成一台运营商级的路由器。这个办法不仅可以简化单个应用的转发逻辑,而且可以用于提高可扩张性。因为这种路由器只存在于逻辑级,它可以在必要时增加物理交换机而得到动态扩展。 这些例子说明虚拟化把转发逻辑与物理拓扑分开,可以使应用更加可便携、可扩展。 虚拟化抽象: 为了定义一个虚拟网络,程序员要指定逻辑网络元件与物理网络元件之间的对应。譬如他可以把物理网络里的所有交换机影射到一个虚拟交换机,而且隐藏所有的内部连接,而创建一个特大的交换机。 虚拟化机制: 为了实现虚拟化,许多平台用一个标签标记到来的包,将它与一个或多个虚拟网络联系起来。包处理的步骤是:首先,系统识别包的逻辑环境,即在虚拟网络中的位置,包括交换机和端口;其次,根据其逻辑环境处理这个包,即重新设置包的逻辑环境,有可能还会产生附加的包;最后,把该包影射到物理层。管理程序产生物理层的转发规则,同时实现这三步。一个问题是物理交换机能存多少规则。基于虚拟网络数和它们政策的大小,管理程序可能无法在交换机上容纳所有规则。像通常操作系统的存储管理一样,管理程序只能分页,把某些规则动态地移入和移出物理交换机。 我们看到,虚拟抽象是现代 SDN 控制器的重要部件。把程序和物理拓扑分离简化了应用,而且可以分享网络中多个不同的程序,而不互相打扰。虽然已经有多个产品控制器支持虚拟化,但还是有问题。低层的详情要在逻辑层表现出来。目前的 SDN 虚拟化在逻辑层和物理层提供相同的程序接口,删去了诸如链路能力、队列、逻辑交换能力等资源。另一个问题是怎么把虚拟化和其他的抽象,譬如相容性更新组合起来。但是,二者并不是总可以用标签方案组合得起来的。还有,目前的平台不支持嵌套的虚拟化。 形式验证 现在的网络操作员用手动做底层物理配置,难免出错,引起网络的不可靠、不安全。 SDN 标准化网络硬件接口,极大地提供开发新方法、新工具的机会,很容易建造和运作可靠的网络。今列举某些特性如下,而这些特性可以动态或静态地形式检查网络和控制器的状态。这些特性可以分为两类:一类是基于网络拓扑的。只有给定网络结构模型才能叙述和验证。譬如: 连通性: 主机发出的任何包总要最后达到预定的目的地,除非拥塞或故障。 无循环: 没有包会经过循环路由回到原点,而包头和内容未变。 指路: 从不可信主机发出的包在到达目的地之前会通过一个扫描恶意流量的中间盒。 带宽: 网络对用户承诺服务层的最小带宽。 另一类是从拓扑无法得知,或者只关于一大类拓扑。这些性质是为获得应用对许多不同网络的一般正确性准则。包括: 存取控制: 根据存取控制表,网络堵截从非授权主机发出的所有流量。 主机学习: 控制器最后知道所有主机的位置,网络直接把包送到目的地。 生成树: 网络沿着一颗包含所有交换机的树传送广播流量。 这两类性质在传统网络中都很难验证,因为它们需要分布在许多异构装置上的复杂状态进行推理。 SDN 建基于统一接口,现在已有工具自动验证许多网络性质。 验证配置: 验证无循环、连通性需要模型化拓扑和交换配置。这已经有许多工作,问题是 SDN 的转发行为变化很快,特别是在网络条件变化时,所以,这些验证必须是实时的。 验证控制器: 我们还要验证控制程序,特别是基于与拓扑无关的性质。 NICE 用符号执行和模型检验相结合验证许多重要性质,譬如竞态条件和类似于交换机存储器泄露的 bug 等。还要测试 SDN 控制器在交换机层次上是否真正实现了它应有的功能。这时候的网络测试就远远不是光测与协议的相容性了。譬如防火墙、路由算法、控制器的正确性等,需要工具和语言。这里,急需工具,对网络系统行为、性能、可靠性和安全性提供严格的保证。 SDN 的标准化接口提供了这种可能性,但需要开发 SDN 控制平台上的顾客逻辑和决策过程,以表达和检验性质、浓缩带有潜伏期和带宽的模型和较好地集成性质检验和测试工具。 过去 10 年,全世界都在关注下一代互联网。美国提出了好几个方案,现在看来, SDN 最火。中国的 CNGI 项目已经完结, SCI 论文发表得很多,但看不出什么引起广泛关注的方案。泛泛的议论比较多,批评传统网络的也比较多,建设性的方案基本没有。那么,现在我们怎么办?是继续空洞地探索,还是在 SDN 方案下做比较具体的工作? SDN 不是我国原创,当然还有许多原创性的工作可做。但是,现在再另起炉灶,另提方案,似乎不太可能。如果我们现在不参加进来,等 SDN 的全套硬件和软件都商业化以后再大批进口,建中国的 SDN ,可能就太晚了,更没有发言权了。
软件定义的网络( SDN )之喜( 141020 ) 闵应骅 软件定义的网络( SDN )非常热,企业界和科研界都在热烈响应,可以说比任何其他下一代互联网方案都要更有希望。顾名思义,软件定义的网络( SDN )的关键是软件。大致地来议论软件定义的网络( SDN )比较容易,真做起来,困难不小。本人读了点文献,作为一篇学习笔记,想来说说软件定义的网络( SDN )之喜与忧,顺便想想中国的企业与科研界在此热潮中应该扮演什么角色。本文先说软件定义的网络( SDN )之喜,下一篇再谈其忧。 SDN 出于两个简单的想法:一般化网络硬件,以提供标准的包处理功能,而不是一组固定的狭窄的特性;去掉控制网络的软件与实现其功能的装置的耦合。这就使网络的发展不一定需要更改硬件,只要针对应用改变算法就可以了。图 1 表明传统网络与 SDN 在体系结构上的不同。 SDN 在一个或多个控制器机器上运行通用程序就可以改变网络拓扑、终端主机开始设定的连接、流量负载的转移或处理基于包转发规则的其他控制机器传来的消息。控制器把这些规则交给交换机去执行,交换机用特定硬件实现所需的功能。 SDN 并不规定控制器怎么实现,所以它可以自由地实现不同的网络算法,譬如最短路径路由,或根据流量过程的更复杂的路由。 SDN 上的新应用包括基于政策的存取控制、适应的流量管理、广域流量工程、网络虚拟化等。这些原则上都可实现,但传统的交换机不好修改,不易被第三者的程序所控制。早期的 SDN 控制平台只有和已有硬件连接的简单编程接口,譬如拓扑发现和链路状态信息。而现在, SDN 可以改变控制算法,就像近代操作系统一样灵活地管理硬件资源。 OpenFlow 规范定义了它的两个用处:交换机应该提供的标准特性集和控制器可以使用的接口,以实现与交换机通信;指令,以安装和检测转发规则,并给出关于流、拓扑和流量统计的提示。一个 OpenFlow 交换机保持一个转发表,它包含一个有优先顺序的 规则 表。每一个规则用一个模式描写一类包,和相应的对包采取的 动作 。当包来到,又匹配某一个规则,则马上执行规定动作。如果匹配多个规则,则执行优先级高的动作。如果无法匹配,则用 OpenFlow 格式压缩这个包,并送控制器,根据控制器回应的指令动作。这个表的大小受硬件的限制,但一般都可以存几千个规则。每一个规则都有计数器以便统计流量。控制器可以用 OpenFlow 信息读取这些计数器。 全网结构 SDN 一个重要的优越性就在于控制器可以计算全网结构,对网络状态给出全局可见性。在传统网络下,对分别在各地的装置维持全网结构的实时信息基本是不可能的。但是,在 SDN ,用全网结构考察逻辑变得容易得多。譬如,最短路径路由就可以用 Dijkstra 算法进行全局优化。 再举一个例子。用于多播的生成树要连接许多交换机,这个树可以广播流量,不会产生循环。设计一个分布式算法,建造和保持一颗多博树非常困难,因为它要适用于任意拓扑,而且当任何意外事件发生或者故障时能很快收敛到一颗新树。传统的办法是用 生成树协议 ,交换机之间定期交换信息,两两通告,运行选头协议选出根节点,逐步建立生成树,开通和截止某些链路,以建立到根的最短路径。这样建立生成树需要发现邻居、选头、和实际的树构造算法。但是,这些部件都是针对特定协议的,在别的地方不能重用,而且,当有拓扑改变时,花的时间就会更多。而在 SDN 条件下,控制器提供一系列的函数,实现许多应用,譬如拓扑发现、链路故障检测等,并且维持跟踪网络状态信息,譬如主机位置、链路能力、流量矩阵等。存储这些信息的数据库称为网络信息库( NIB )。用 NIB , SDN 可以动态生成树,比分布式生成简单。当拓扑变化时,可以用 Prim 算法从拓扑计算生成树,安装交换机上沿树转发的规则。 由于给程序员提供了全网的状态信息, NIB 使实现丰富的应用更容易,像流量工程,这在传统网络中是很困难的。譬如, B4 和 SWAN 系统用 SDN 在数据中心之间平衡宽域链路的负载,比传统网络大大提高利用率。用多个控制器可提高可扩展性和容错。譬如,如果某控制器负载过大,或者与交换机的链路失效,就可以用另一个控制器顶替。由于控制器总数比较少,比替换交换机要容易得多。 分布式更新 在传统网络中,配置更新是常有的事。由于更新有先后,就有同步的问题,即一致性的问题,就是说,最后要达到全网的一致性更新需要时间。一个链路失效,可能按原状态传到了一个交换机,可由于网络更新可能需要再传一次。这就可能引起循环路由或包丢失。 SDN 能够及时更新网络配置就能提高传输效率。但是,这还不够。譬如 SDN 控制器不但要遵循转发规则,为了安全的存取控制和隔离,还要遵循过滤规则。如果这些配置更新被传给所有交换机,这些规则就被泄露。最短路径路由当全网配置更新时就可能产生循环转发或不通。分布式存取控制可能禁止某些包通过最短路径。但过滤规则不可能像转发表那么简单,如果分散在不同的交换机里,就需要操作员的介入。服务器的负载平衡需要若干后台服务器备份,如果配置更新,可能连结的是同一台服务器。对于新老两种配置, SDN 怎么解决?更新抽象就不是沿着一条路径来更新,而是对整个系统改变网络状态。只有在一致的网络配置之下,才进行包的转发。包转发状态要么基于老的网络配置,要么基于新的网络配置,但不可能基于二者。更新机制也有不同。实现一致性更新一般采用两步更新:控制器指令所有交换机转发规则按新配置修改;控制器更新网络边界规则,给包贴新版标签,然后撤销交换机上的老配置。任何的包或流只能按一种配置来处理。两步更新在许多情况下可以优化。譬如,更新只会增加路径,那么只有影响那些路径的规则需要更新。如果更新只影响一部分交换机,那么其他交换机就不必更新。一致性更新可以采用这种增量式,让某些包转回控制器。但是,这些更新机制需要存储规则的空间和大量控制信息。另一个重要问题是实现更新需要多少时间。如果出现故障,更快的响应就非常重要。譬如,对某些特定应用的更新应该足够快,无论如何不应该出现死循环。 在这些方面, SDN 显示了它的优越性,比传统网络能更有效地解决问题。但是,要取代传统网络,需要做的事情还很多,请见下一篇。
信息来源ACM,因贡献而获奖.................. Awarded to the outstanding young computer professional of the year, selected on the basis of a single recent major technical or service contribution. This award is accompanied by a prize of $35,000. The candidate must have been 35 years of age or less at the time the qualifying contribution was made. Financial support of the Grace Murray Hopper Award is provided by Google. Martin Casado and Dina Katabi named 2012 recipients of the Grace Murray Hopper Award for advances in network efficiency Martin Casado helped create the Software Defined Networking (SDN) movement, an approach that provides a software alternative to hardware-based network components. He introduced an open interface (OpenFlow) and open-source software components, which uncouple the network from its hardware. This level of abstraction creates virtual networks that are able to deliver the same features as physical networks, but with the operational flexibility of virtualization. These innovations, readily and widely adopted by industry, have spawned a burgeoning SDN research community with the potential to change the field. Casado was Co-founder and Chief Technology Officer of Nicira, which was acquired by VMware in 2012. He is currently the Chief Network Architect of VMware as well as a consulting assistant professor at Stanford University. Dina Katabi initiated a new approach to network design using an explicit Control Protocol (XCP) that minimizes network congestion and maximizes utilization efficiency. Her research addressed a strategic technological problem of Internet growth, which requires extreme scalability and robustness. She developed XCP, an algorithm to ensure fair allocation of capacity among different flows that compete for the same Internet bandwidth. Her scheme is the first protocol to achieve both goals simultaneously without imposing excessive per-flow overhead on Internet routers. The design separated the efficiency and fairness policies of congestion control, which delivered the highest possible application performance over a broad range of network infrastructure. Katabi is a professor at MIT and a member of its Computer Science and Artificial Intelligence Laboratory (CSAIL). She leads the NetworksMIT research group, and is director of WirelessMIT, the MIT center for wireless networks and mobile computing.