在SDN/NFV的网络革新技术浪潮的引领下,催生了诸多数据面开源方案的诞生。业界知名度较高的有OVS(Open vSwitch)、FD.io (Fast Data I/O)、ODP(Open Data Plane)。 然而,在现有的虚拟交换机中,OVS作为主流的开源方案,是目前大多数虚拟化环境和OpenStack部署中的网络基础,可以在很多SDN/NFV场景下进行灵活部署。 什么是OVS? Open vSwitch是由Nicira公司使用C和Python语言开发实现的遵循开源Apache2.0许可的产品级质量的多层虚拟交换机,目的是让大规模网络通过可编程实现自动化扩展。 它既可以作为一个软件交换机运行在虚拟化层,也可以作为交换芯片的控制栈实现,支持多种标准管理接口和协议(NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。 OVS项目的开源发展历史: OVS项目早在2009年,就已孵化诞生,于2012年7月30日发布第一个开源版本V1.7.0,经过这几年的不断发展壮大,到目前为止,OVS开源版本已经更新到V2.6.0。图2简单展示了其开源版本的更新历程。 随着其社区生态圈日趋丰富,OVS已经被移植到多种虚拟化平台(XenServer6.0、Xen 、KVM、Proxmox VE、VirtualBox)和交换芯片组。 同时被集成到许多虚拟化管理系统(OpenStack、openQRM、OpenNebula、oVirt)。 此外,内核datapath已经被纳入Linux内核作为发行版的一部分,像知名的Linux操作系统Ubuntu、Debian、Fedora也都提供了datapath的安装包。 OVS同样也支持FreeBSD和NetBSD,更有DPDK( Data Plane Development Kit )助力加速OVS,帮助改善其转发性能。 OVS的组成结构: OVS的构成非常简单,每个部件负责各自的职责,图3描述了其基础架构组成。 简单了解完OVS本身,接下来我们通过两个子项目,再进行深入认识: 子项目1:OpenFlow伙伴协议——OF-CONFIG 为了对控制器做更好的支持而诞生。因OVS中的OVSDB协议无法很好的服务于交换机的配置管理,所以就促成了OVS需要支持OF-CONFIG协议的需求,从而有了OVS旗下的OF-CONFIG开源子项目。 首先简单认识一下,什么是OF-CONFIG? 基于NETCONF协议实现,依赖于NETCONF的操作和传输标准,旨在对OpenFlow交换机实现远程管理。 其次,OF-CONFIG能够帮我们完成哪些方面的工作? 最后,看一下OVS是如何在现有的基础架构上支持OF-CONFIG? 图4显示了OF-CONFIG对接OVS的架构实现,OF-CONFIG server作为一个系统守护进程,和OVSDB server之间通过OVSDB IDL(Interface Definition Language)建立连接。 然后OF-CONFIG server等待来自NETCONF agent的会话连接请求,一个NETCONF会话连接请求对应一个NETCONF agent。NETCONF agent在启动的时候和OF-CONFIG server建立连接, 并和OF-CONFIG client完成会话建立的握手。OF-CONFIG server和OF-CONFIG client之间通过D-BUS或UNIX socket方式的进行内部通信。 子项目2:开放虚拟网络OVN 为更好的服务于云计算环境而诞生。由于 Openstack Neutron 的实现架构存在一些性能问题,比如 neutron-server 要与非常多的 agent 之间通信, 存在RPC(Remote Procedure Call Protocol)性能瓶颈,还有 neutron 里用到非常多的 namespace,namespace 资源有限且系统开销比较大,这里也存在性能瓶颈。 从长远来看,OVS 社区觉得Neutron 应该让一个其它的项目来做虚拟网络的控制平面,Neutron 只需要提供 API 的处理, 于是 OVS 社区于2015年1月推出了 OVN(Open Virtual Network),用来给OVS引入一个轻量级的控制平面,致力于提高基于OVS的OpenStack网络方案的扩展性和易用性。 首先,看看OVN的实现架构: 其次,了解OVN组成结构: 图5描述了OVN的总体实现架构,结合表3的描述,我们可以简单了解OVN的每个组件的基本功能实现。 OVN 对运行平台没有额外要求,只要能够运行 OVS,就可以运行 OVN,所以 OVN 可以和 Linux,Docker,DPDK 还有 Hyper-V 兼容,从 OVS 升级到 OVN 也是非常容易的。 最后,了解一下引入OVN是如何简化OVS在OpenStack中的集成。 OpenvSwitch OVN项目将租户的概念引入了OVS,正式向neutron方向发展,提供对L2/L3网络虚拟化的支持。引入OVN架构,通过替代OVS agent、L3 agent和DHCP agent, 从而简化Open vSwitch在Neutron的集成。OVS集成OpenStack在没有OVN和有OVN支持的两种情况下的架构实现如下图所示: 通过以上三个开源项目的简单介绍,我们可以认识到,OVS作为一款优秀的开源Openflow交换机,在不断提供丰富功能特性的同时, 也注重和控制器及云管平台的对接支持,从而利用丰富的开源社区生态来组建实现灵活多样的SDN/NFV应用场景。 |