目录
前文列表
《数据中心网络架构的问题与演进 — 传统路由交换技术与三层网络架构》
《数据中心网络架构的问题与演进 — 网络虚拟化》
《数据中心网络架构的问题与演进 — CLOS 网络与 Fat-Tree、Spine-Leaf 架构》
《数据中心网络架构的问题与演进 — Overlay 网络》
OpenFlow 源起
OpenFlow 起源于斯坦福大学的 Clean Slate 项目组。Clean Slate 项目的最终目的是要重新发明英特网,旨在改变设计已略显不合时宜,且难以进化发展的现有网络基础架构。在 2006 年,斯坦福的学生 Martin Casado 领导了一个关于网络安全与管理的项目 Ethane,该项目试图通过一个集中式的控制器,让网络管理员方便地定义基于网络流的安全控制策略,并将这些安全策略应用到各种网络设备中,从而实现对整个网络通讯的安全控制。受此项目(及 Ethane 的前续项目 Sane)启发,Martin 和他的导师 Nick McKeown 教授(时任 Clean Slate 项目的 Faculty Director)发现,如果将 Ethane 的设计更一般化,将传统网络设备的数据转发(Data Plane)和路由控制(Control Plane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,那么这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。
于是,他们便提出了 OpenFlow 的概念,并且 Nick McKeown 等人于 2008 年在 ACM SIGCOMM 发表了题为《OpenFlow: Enabling Innovation in Campus Networks》的论文,首次详细地介绍了 OpenFlow 的概念。该篇论文除了阐述 OpenFlow 的工作原理外,还列举了 OpenFlow 几大应用场景,包括:
- 校园网络中对实验性通讯协议的支持;
- 网络管理和访问控制;
- 网络隔离和 VLAN;
- 基于 WiFi 的移动网络;
- 非 IP 网络;
- 基于网络包的处理。
当然,目前关于 OpenFlow 的研究已经远远超出了这些领域。
「控制转发分离架构」是一个划时代概念,也是 OpenFlow 的典型特征。将控制逻辑从网络设备中分离出来,交给中央控制器集中统一控制,实现网络业务的灵活部署。用于控制的网络称为 “控制面”,用于数据包发送的网络称为 “数据面”。
- 控制面、数据面统一的路由器:
- 控制面、数据面分离的 OpenFlow:
控制面部分为 OpenFlow 控制器,数据面部分为 OpenFlow 交换机,OpenFlow 实现了集中式控制模型的设计。关于 OpenFlow 的详细内容在《OpenFlow Switch 1.3 规范》一文中已有记录,此处不再赘述。
从 OpenFlow 衍生 SDN
OpenFlow 的 “可编程性” 是最为人称道的成就,OpenFlow 网络中的各种设置并不是通过转发数据包的 OpenFlow 交换机来完成的,而是通过统一控制多台 OpenFlow 交换机的 OpenFlow 控制器来完成的。OpenFlow 控制器对网络中的各种设备进行综合管理,这种行为就像对网络进行整体 “编程” 一样。基于 OpenFlow 为网络带来的可编程特性,Nick 和他的团队(包括加州大学伯克利分校的 Scott Shenker 教授)进一步提出了 SDN(Software Defined Network,软件定义网络)的概念。SDN 最初的原型主要是由 OpenFlow 交换机、控制器两部分组成。OpenFlow 的 “可编程性” 是 SDN 的基石。
˙注:实际上 SDN 的概念最早是由 KateGreene 于 2009 年在 TechnologyReview 网站上评选年度十大前沿技术时提出。如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,也可以抽象出一个网络操作系统(Network OS)的概念。这个网络操作系统一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。
软件定义有啥好处呢?
想象你有一个大的数据中心,里面有很多的网络设备,光交换机就有很多,你希望在交换机上配置一些网络的策略,例如:某个口应该属于某个 VLAN。怎么配置呢?登到这台交换机上去,敲几行命令就搞定了。那么,如果要配置 100 台交换机呢?
此时,你是否希望有一个集中的地方,能看到整个网络的拓扑图,统一配置一下,然后一回车,配置的策略就通过管理网络平面下发到 100 台交换机上。这样整个网络的拓扑结构就不是僵硬的了(不再单纯通过插线,拔线,登陆盒子配置),而是变成了软的,也即通过软件统一控制,这个统一控制的地方我们称为 SDN Controller(控制器),这样的网络拓扑结构,我们称为软件定义的网络。
- SDN VS:
- SDN 三层架构:
- SDN 的特征:
- 控制与转发分离。转发平面由受控转发的设备组成,转发方式以及业务逻辑由运行在分离出去的控制面上的控制应用所控制。
- 控制平面与转发平面之间的开放接口。SDN 为控制平面提供开放的网络操作接口,也称为可编程接口。通过这种方式,控制应用只需要关注自身逻辑,而不需要关注底层更多的实现细节。
- 逻辑上的集中控制。逻辑上集中的控制平面可以控制多个转发面设备,也就是控制整个物理网络,因而可以获得全局的网络状态视图,并根据该全局网络状态视图实现对网络的优化控制。
- SDN 的推进组织:
- ONF(Open Networking Foundation)
- ODL(OpenDayLight)
- ONOS(Open Network Operating System)
- NFV(Network Function Virtualization)
OpenFlow/SDN 的原理其实并不复杂,从严格意义上讲也很难算是具有革命性的创新。然而 OpenFlow/SDN 却引来了业界越来越多的关注,成为近年来名副其实的热门技术。SDN 得以快速发展,得益于互联网公司对 “软件定义一切” 的青睐,因为这种模式更能发挥他们在编程方面的优势。最初 SDN 的发展主要由 Googel,Facebook,Yahoo 等互联网巨头推动,他们希望以此来挣脱网络设备厂商的枷锁,获得更加灵活且契合自身需求的、更加低耗高效的网络基础设施。2011年,成立了开放网络基金会(Open Networking Foundation),专门负责 OpenFlow 标准和规范的维护和发展。同年,第一届开放网络峰会(Open Networking Summit)召开,发表了 SDN 白皮书《Software Defined Networking:The New Norm forNetworks》,为 OpenFlow 和 SDN 在学术界和工业界都做了很好的介绍和推广。2012 年初,召开的第二届开放网络峰会上,Google 宣布已经在其全球各地的数据中心骨干网络中大规模地使用 OpenFlow/SDN,从而证明了 OpenFlow 不再仅仅是停留在学术界的一个研究模型,而是已经完全具备了可以在产品环境中应用的技术成熟度。而后,Facebook 也宣布其数据中心中使用了 OpenFlow/SDN 的技术。
再后来思科、博通、IBM 等网络设备厂商为了应对新的网络虚拟化技术潮流也联合成立了开源平台项目 OpenDayLight,旨在促进 SDN 技术交流和产业化开源机构。但现在 ODL 也逐渐变得商业化,硬件厂商的入局说到底还是为了自身的利益。所以 ONS 最初要求加入者不得为任何网络设备厂商工作,也是希望防止制造商的利益冲突被引入。