开源
OVS流表归一化解决方案架构如图1所示,组件说明请参见表1。
名称 |
说明 |
---|---|
网卡 |
发送和接收报文。 |
QEMU |
QEMU作为进程运行在宿主机的用户态,它基于KVM及内核的特性,为Guest OS模拟出CPU、内存、IO等硬件,支撑Guest OS在进程中运行。 |
DPDK |
DPDK提供的数据平面开发工具集,为用户空间高效的数据包处理提供库函数和驱动的支持。通俗地说,就是一个用来进行包数据处理加速的软件库。 |
ovs-vswitchd |
OVS守护进程,OVS的核心部件,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换(flow-based switching)。它和上层controller通信遵从OpenFlow协议,它与ovsdb-server通信使用OVSDB协议,它和内核模块通过netlink通信。 |
OpenFlow |
OpenFlow实现了数据层和控制层的分离,其中OpenFlow交换机进行数据层的转发,而Controller实现了控制层的功能。图中的OpenFlow组件主要实现了控制层。 |
XPF加速库 |
自研功能模块,在OVS软件内部实现了一个智能卸载引擎模块,该模块用于跟踪数据报文在OVS软件中所经历的所有流表和CT表,将执行的CT行为和所有流表行为项进行综合编排成一条综合行为项并结合统一匹配项生成一条集成流表项。后续的数据报文在进入OVS后,若匹配命中该集成流表,则直接执行综合行为,相比开源的处理流程,查询次数将减少,性能将大幅度提升。 OVS流表归一化软件包依赖开源的OVS,二次开发的OVS依赖XPF库,因此在编译安装OVS时需要编译两次OVS。第一次是编译开源的OVS,并复制一些必要的头文件,第二次是编译二次开发的OVS。 |
OVS DB |
开放虚拟交换机中保存的各种配置信息(如网桥、端口)的数据库,是针对OVS开发的轻量级数据库。 |
DPDK全称Intel Data Plane Development Kit,是Intel提供的数据平面开发工具集,用户空间高效的数据包处理提供库函数和驱动的支持。通俗地说,就是一个用来进行包数据处理加速的软件库。
DPDK不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。具体体现在DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。它不是一个用户可以直接建立应用程序的完整产品,不包含需要与控制层(包括内核和协议堆栈)进行交互的工具。
相比原生Linux(Native Linux),采用Intel DPDK技术后能够大幅提升IPv4的转发性能,可以让用户在迁移包处理应用时,获得更好的成本和性能优势。同时可以采用统一的平台部署不同的服务,如应用处理,控制处理和包处理服务。DPDK架构如图2所示。
OVS是产品级的虚拟交换机,大量应用在生产环境中,支撑整个数据中心虚拟网络的运转。OVS基于
OVS组件架构如图3所示。