【OpenVswitch源码分析之一】背景

什么是OpenVswitch

OpenVswitch Overview
Open vSwitch是基于开源Apache 2 license的多层软件交换机,其目的是实现一个产品级质量的交换平台,其支持标准的管理接口,并开放转发功能接口供编程扩展和控制。
Open vSwitch适于VM环境中的虚拟交换,除了开放标准的控制和可视化接口给虚拟网络层,它还支持跨多个物理服务器的分布式部署,另外OpenVswitch还兼容多个基于Linux的虚拟化技术包括Xen,KVM,VirtualBox。
代码块使用与平台无关的C写成,易于安装在其他环境。当前的Release支持如下特性:

  • 标准802.1Q VLAN,端口模式有trunk和access。
  • 有链路聚合和无链路聚合的网卡绑定
  • NetFlow, sFlow(R), 和镜像功能用以增加可视化
  • QoS (Quality of Service) 配置, 流量整形
  • Geneve, GRE, VXLAN, STT, 和 LISP 隧道支持
  • 支持BFD和802.1ag连通性故障管理。
  • OpenFlow 1.0 以上版本及相关扩展的支持
  • 使用C和Python绑定的事务配置数据库
  • 使用Linux内核模块的高性能转发
  • 支持IPV6

为什么需要OpenVswitch

虚拟机管理程序(Hypervisor)需要桥接宿主内的虚拟机以及其与外部世界通信的能力。这意味着需要一个Linux内置的L2交换机(Linux网桥),而且这个交换机需要是快速和可靠的。这是Open vSwitch产生的最大需求
OpenVswitch瞄准的是多服务器的虚拟化部署,这种场景下传统的技术栈并不好处理,这些环境通常是高度动态的,需要逻辑抽象网络的维护,并且有大量和专用交换硬件集成或者把以前CPU的工作Offload到专用硬件上的工作。
对于上述需求,OpenVswitch通过如下的设计理念以及特征来达到目标:

状态的移动

所有和网络实体相关(比如虚拟机)的网络状态都应易于识别并且可以在不同主机之间迁移。这可能包括传统的“软状态”(如在L2学习表项),L3转发状态、策略路由、ACL、QoS,监控配置(如NetFlow、sFlow IPFIX,),等。
Open vSwitch为已经支持不同实例配置和迁移Slow(配置)和Fast网络的网络状态。例如,如果一个VM在不同的服务器上迁移,不仅可以迁移相关的配置(跨规则,ACL,QoS)也可以迁移任何运行时的网络状态。

网络动态变化的响应

虚拟环境通常以高变化率为特征。VMS来回运行,改变逻辑网络环境,等等。
Open vSwitch有许多特性来实现网络控制系统响应和适应网络环境的变化。这包括简单的统计和可视化支持如NetFlow和sFlow,IPFIX。更有用的是,Open vSwitch支持网络状态数据库(OVSDB),支持远程触发。因此,一个编排层可以“监视”网络的各个方面并在它们发生变化时作出响应。例如,这在今天被大量使用的响应和跟踪VM迁移情况。
Open vSwitch也支持OpenFlow把远程访问导出到控制层的方法。比如可以用于导出链路状态流量和链路发现流量(例如LLDP、CDP、OSPF等)。

逻辑标签的维护

分布式虚拟交换机(如VMware VDS和思科的Nexus 1000V)经常通过在网络数据包中追加或者修改标签来承载网络的逻辑上下文。这种方式可以用来唯一地标识VM(以抵抗硬件欺骗的方式),或者持有只在逻辑域中相关的其他上下文。构建分布式虚拟交换机的大部分问题是如何高效而正确地管理这些标签。
Open vSwitch有多个指定和维护标注的规则,这些都可以被远程的协同层所访问处理。此外,在许多情况下,这些标记规则存储在优化的表单中,因此它们不必与重量级网络设备耦合。这允许,例如,成千上万的标签或地址映射规则进行配置,更改,和迁移。
同理,Open vSwitch支持GRE的实现,可以同时处理成千上万支持GRE隧道隧道创建,远程配置,并推倒。例如,它可以用于连接不同数据中心的私有VM网络。

硬件集成

Open vSwitch的转发面(Linux Kernel datapath)的设计是可以做到把报文处理“委托”给硬件芯片来做的,无论这个硬件芯片是装在一个经典的硬件交换机框中还是在终端主机的网卡里。这使得Open vSwitch控制面能够控制一个纯软件实现同时也兼容硬件实现。
有许多公司正在进行努力把Open vSwitch移植到硬件芯片上运行。包括多个芯片商(Broadcom和Marvell),以及一些厂商定制的平台。文档中的“移植”部分讨论了如何去做这样一个移植。
硬件集成的优点不仅仅是在于虚拟环境中的性能。如果物理交换机也暴露Open vSwitch的控制抽象,那么裸机和虚拟宿主环境可以使用相同的自动化网络管控机制来管理。

总结

在许多方面,Open vSwitch不同于之前Hypervisor网络栈的设计目标,其专注于满足大规模的基于Linux的虚拟化环境的自动化与动态网络控制需求。
Open vSwitch的目标是保持内核代码量尽可能小(满足必要的性能即可)和重用现有系统的可用部件(例如Open vSwitch使用现有的QoS协议栈)。在Linux 3.3版本,Open vSwitch作为内核和用户空间工具包装的一部分在大部分的发行版中发布

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章