更新时间:2021-08-05 GMT+08:00
分享

组件原理

DPDK

DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,用户空间高效的数据包处理提供库函数和驱动的支持。通俗地说,就是一个用来进行包数据处理加速的软件库。

DPDK不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。具体体现在DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。它不是一个用户可以直接建立应用程序的完整产品,不包含需要与控制层(包括内核和协议堆栈)进行交互的工具。

相比原生Linux(Native Linux),采用Intel DPDK技术后能够大幅提升IPV4的转发性能,可以让用户在迁移包处理应用时,获得更好的成本和性能优势。同时可以采用统一的平台部署不同的服务,如应用处理,控制处理和包处理服务。DPDK架构如图1所示。

  • PMD:Pool Mode Driver,轮询模式驱动,通过非中断,以及数据帧进出应用缓冲区内存的零拷贝机制,提高发送/接受数据帧的效率。
  • 流分类:Flow Classification,为N元组匹配和LPM(最长前缀匹配)提供优化的查找算法。
  • 环队列:Ring Queue,针对单个或多个数据包生产者、单个数据包消费者的出入队列提供无锁机制,有效减少系统开销。
  • MBUF缓冲区管理:分配内存创建缓冲区,并通过建立MBUF对象,封装实际数据帧,供应用程序使用。
  • EAL:Environment Abstract Layer,环境抽象(适配)层,PMD初始化、CPU内核和DPDK线程配置/绑定、设置HugePage大页内存等系统初始化。
图1 DPDK架构图

OVS

OVS是产品级的虚拟交换机,大量应用在生产环境中,支撑整个数据中心虚拟网络的运转。OVS基于SDN的思想,将整个核心架构分为控制面和数据面,数据面负责数据的交换工作,控制面实现交换策略,指导数据面工作。从整体上看,OVS可以划分为三大块,管理面、数据面和控制面。数据面就是以用户态的ovs-vswitchd和内核态的datapath为主的转发模块,以及与之相关联的数据库模块ovsdb-server,控制面主要是由ovs-ofctl模块负责,基于OpenFlow协议与数据面进行交互。而管理面则是由OVS提供的各种工具来负责,这些工具的提供也是为了方便用户对底层各个模块的控制管理,提高用户体验。

  • ovs-ofctl:这个是控制面的模块,但本质上它也是一个管理工具,主要是基于OpenFlow协议对OpenFlow交换机进行监控和管理,通过它可以显示一个OpenFlow交换机的当前状态,包括功能、配置和表中的项。
  • ovs-dpctl:用来配置交换机的内核模块datapath,它可以创建,修改和删除datapath。一般,单个机器上的datapath有256条(0-255)。一条datapath对应一个虚拟网络设备。该工具还可以统计每条datapath上的设备通过的流量,打印流的信息等。
  • ovs-appctl:查询和控制运行中的OVS守护进程,包括ovs-switchd,datapath,OpenFlow控制器等,兼具ovs-ofctl、ovs-dpctl的功能,是一个非常强大的命令。ovs-vswitchd 等进程启动之后就以一个守护进程的形式运行,为了能够很好的让用户控制这些进程,就有了这个命令。
  • ovs-vsctl:查询和更新ovs-vswitchd的配置,这也是一个很强大的命令,网桥、端口、协议等相关的命令都由它来完成。此外,还负责和 ovsdb-server 相关的数据库操作。
  • ovsdb-client:访问ovsdb-server的客户端程序,通过ovsdb-server执行一些数据库操作。
  • ovsdb-tool:和ovsdb-client要借助ovsdb-server才能进行相关数据库操作不同,ovsdb-tool可以直接操作数据库。

OVS组件架构如图2所示。

图2 OVS组件架构图
分享:

    相关文档

    相关产品

close