Monday, January 19, 2015

OpenvSwitch 的 Open Virtual Network(OVN)项目

几天前(1 月 13 日),OpenvSwitch 团队正式宣布了 OVN(Open Virtual Network )项目。正文参考 Open Virtual Network Annoucement
这个项目挺有意思,简单谈下我的看法。
众所周知,OpenvSwitch 已经是现在数据中心里软件交换机的事实标准。由于硬件交换设备的成本一直降不下来,而且用硬件交换设备去延伸管控服务器上的虚拟机的相关标准和协议仍不成熟,OpenvSwitch 在相当长的一段时间里,以其成本和灵活性的优势,占据很大一部分低端市场。
传统情况下,大家使用 OpenvSwitch 主要有两个目的,一个是支持 OpenFlow、OVSDB 这样的 SDN 管控协议;另外一个是作为数据中心中的接入层交换机。
而 OVN 项目的提出,其实是针对后一种应用场景,大大增强和简化了 OpenvSwitch 作为接入层交换机的使用。
OVN 要做的事情,看起来其实蛮简单,就是直接提供对虚拟网络(各种 overlay、安全组等)的支持。这件事很简单,但是将产生的影响实际上很大。
现在数据中心里,由于大二层的需求和硬件交换机的不给力,虚拟网络实际上已经成为了一种基础设施。谁不上虚拟网络,那他的数据中心规模一定大不了。正是看到了这点,OVN 希望将如何提供虚拟网络这件事情 take over 过来,让上层的用户直接使用它,而无需自己费心思去采用各种 overlay 技术往 OpenvSwitch 中塞各种规则。
在实现上也不难理解,底下还是 OpenvSwitch,上面多了一层 Hypervisor 层,如下图(基于官方的图修改)所示,新的组件主要包括一个 OVN DB 和 一个 OVN-Controller,以及它们之间的通讯协议。

虽然官方一直坚持 OVN-Controller 并非一个 SDN 的完整控制器,但是由于目前虚拟网络管理往往是在 SDN 控制器中做的,其实可以理解为把传统 SDN 控制器中这一层要做的事情给接管了过来。往后控制器实际上可以直接操作现成的虚拟网络了。
从架构设计上,理念跟 OpenvSwitch 类似,核心还是数据库,组件之间通过协议进行松耦合的调用。
如果说最初大家讨论 SDN 是希望将控制平面跟数据平面拿开,那么,在这里其实是希望将控制层的部分功能再往回放放。这个思想跟我们 12 年提出的设计很相似。
不从对错的角度,从实用的角度看,数据平面特点是“傻快”,控制平面是“灵慢”。这意味大量重复性的简单操作应该是跟数据平面靠的近一些,反过来发生频率低的,需要复杂处理的则应该争取放到控制平面去。OVN 无疑也是看到了在数据中心网络这个特殊场景中,各种虚拟网络所依靠的封装、映射等操作已经成为了常见的基本需求。这些基本需求都放到远端的控制器,已经有点“杀鸡用牛刀”的感觉了。
当然,思路是这个思路,具体怎么做,现在这个样子是否是最合理的,还得看实践的检验。但这确实是一个从底下往上走的很好的尝试。

No comments:

Post a Comment