目录

文章目录

  • 目录
  • 架构对比
    • OvS 架构
    • OvS-DPDK 架构
  • 性能对比
    • OvS 性能
    • DPDK 性能
    • VPP 性能
    • OvS-DPDK 和 VPP 的性能对比
  • 应用对比
    • OvS-DPDK 在 VNF 中的应用
    • OvS-DPDK 与 VPP 的应用对比
  • 参考文献

架构对比

OvS 架构

openvswitch.ko :在内核态负责 “快速路径” 的数据转发。转发靠流表来完成,每一个流表都包含很多的匹配项(match fields)和相应的动作(actions)。

  • match fields:定义了能够标识一个数据包的头部字段。
  • actions:定义了能够对这个数据包操作的动作,比如:添加或去除 VLAN 标签、修改数据包的某个头部字段,以及控制数据包从端口的进出等等。

ovs-vswitchd:在用户态负责 “慢速路径” 的数据转发。

  • ofproto:OpenFlow 交换机实现。
  • netdev:和网络设备(包括物理的和虚拟的)交互的抽象接口层。
  • dpif:用户空间数据转发路径的实现。

OvS-DPDK 架构

上图中的深色模块就是引入 DPDK 的相关模块。

  • ofproto-dpif:实现了 ofproto 模块 API,直接操作 dpif 层。
  • dpif-netdev:用户空间中 “快速路径” 的实现,它实现了 dpif 模块 API,可以直接操作 netdev 设备,能够实现数据包在用户空间的快速处理,减少和内核空间的切换开销。
  • netdev-dpdk:应用 DPDK 库实现了 netdev 模块 API,提供了多种类型的接口,如下:
    • Physical ports(PMD):使用 vfio 或者 igb_uio 实现的端口。
    • vHost(dpdkvhostuser and dpdkvhostcuse):使用 librte_vhost 库实现的端口,用户可以基于这两种端口类型创建 vhost-user 和 vhost-cuse 端口来完成用户空间的数据转发,并且能够实现和 VM 的快速通信,只要提供 virtio 后端驱动 vhost 即可,virtio/vhost 被证实是用于 VM 通信的一套快速、安全、标准的接口。
    • dpdkr:使用 librte_ring 实现,用户可以基于这种端口类型创建 dpdk-ring 端口来完成用户空间的数据转发,它能够实现和 VM 之间快速的零拷贝通信(使用 IVSHMEM 或者其他进程间通信方式)。

性能对比

OvS 性能

根据《Intel_ONP_Release_2.1_Performance_Test_Report_Rev1.0》可见,在 OvS 里配置流表和不配置流表,转发效果区别很大。

  • 默认流表:不做流表配置。
  • 配置流表:
ovs-ofctl del-flows br-bond_virt
ovs-ofctl add-flow br-bond_virt in_port=1,dl_type=0x800,idle_timeout=0,action=output:2
ovs-ofctl add-flow br-bond_virt in_port=3,dl_type=0x800,idle_timeout=0,action=output:1# port1: DPDK 物理端口。
# port2: 进入 VM 的 tap/vhostuser 端口。
# port3: VM 转出来的 tap/vhostuser 端口。

结果:

  • 实验 1:pc -> nic -> nic -> ovs -> tap -> vm,默认流表和配置流表下 VM 接收都是 80 万 PPS 左右,差距不大。
  • 实验 2:pc -> nic -> nic -> ovs+dpdk -> vhostuser -> vm,默认流表下 VM 收包 90 万 PPS;配置流表下为 600 万 PPS。

DPDK 性能

可以看出 DPDK 在基于 Intel Xeon 处理器的 E5-2695 的表现还是非常不错的,物理网卡总吞吐为 40G 的情况下,64Byte 的小包也有不俗的表现。

VPP 性能

Haswell x86 架构的 E5-2698v3 2x16C 2.3GHz 上测试,图中显示了 12 口 10GE,16 核,ipv4 转发。

OvS-DPDK 和 VPP 的性能对比

从上图可以看出:

  1. 由于 EMC 的大小问题当流表超过 8192 时,OvS 的扩展性就表现的不是很好了。
  2. 经过 NEANTC 的调试,VPP 接近线速。
  3. VPP 架构实现了加速的承诺,VxLAN、NSH 在 SFC 的 VTEP 下。
  4. 但由于样本采集有限,数据可能还有待进一步完善。

应用对比

OvS-DPDK 在 VNF 中的应用

根据 ETSI 的 NFV 参考架构,现实中的 NFV 应用系统一般由 NFV 基础设施(VIM)和 VNF 两类系统服务商提供。因此,相应的 NFV 端到端性能测试,也应划分为底层的 VIM 性能与上层的 VNF 性能两类,以明确各自的性能瓶颈,并避免性能调优工作相互干扰。

大量实践表明,通用 x86 服务器作为 NFV 基础设施用于高转发业务时,面临着严重的数据包转发性能瓶颈,需要有针对性地从硬件架构、系统 I/O、操作系统、虚拟化层、组网与流量调度、VNF 功能等层面进行性能优化,才能达到各类 NFV 网络业务的高性能转发要求。

在 VIM 层面,由于采用了软件转发和软件交换技术,单个物理服务器内部的数据转发能力是 NFV 的主要性能瓶颈。在各类高速转发的 NFV 应用中,数据报文从网卡中接收,再传送到虚拟化的用户态应用程序处理。整个过程要经历 CPU 中断处理、虚拟化 I/O 与地址映射转换、虚拟交换层、内核协议栈、内核上下文切换、内存拷贝等多个费时的 CPU 操作和 I/O 处理环节。面对这样的性能损耗问题,业内通常采用消除海量中断、内核旁路协议栈、减少内存拷贝、CPU 多核任务分担、Intel VT 等技术来综合提升服务器数据平面的报文处理性能。但由于技术栈复杂,普通用户较难掌握,业界迫切需要一种综合的性能优化方案,同时提供良好的用户开发和商业集成环境。

在 VIM 层的各类性能优化技术方案中,DPDK 加速技术方案成为其中的典型代表。DPDK 以用户数据 I/O 通道优化为基础,结合了 Intel VT 技术、操作系统、虚拟化层与 vSwitch 等多种优化方案,已经形成了完善的性能加速整体架构,并提供了用户态 API 供高速转发类应用访问。

  1. DPDK 在宿主机中提供 OvS 数据平面,同时在 VNF 中加速网元应用。这种方案由于采用纯软件的形式实现,可编程灵活,DPDK 的参与也使得性能大大提高,基本可以媲美纯硬件的形式。

  1. SR-IOV pNIC 直接将 VF 直通到 VNF 中,然后在 VNF 中使用 DPDK 进行加速。

OvS-DPDK 与 VPP 的应用对比

参考文献

https://networkbuilders.intel.com/docs/open-vswitch-enables-sdn-and-nfv-transformation-paper.pdf

OvS v.s. OvS-DPDK v.s. VPP相关推荐

  1. 《深入浅出DPDK》读书笔记(十五):DPDK应用篇(Open vSwitch(OVS)中的DPDK性能加速)

    Table of Contents Open vSwitch(OVS)中的DPDK性能加速 174.虚拟交换机简介 175.OVS简介 176.DPDK加速的OVS 177.OVS的数据通路 178. ...

  2. c语言求最多啤酒数,C语言,算法、动态规划:有一个箱子的容量为v(正整数,0=v=20000),同时有n个物品(0n=30),...

    满意答案 24k纯真爱l 2013.11.07 采纳率:42%    等级:12 已帮助:9552人 #include #define N 30 int xiangzi(int n ,int V ,i ...

  3. T a(v);和T a = v;的区别

    本文所说的类型T均指UDT,非built-in类型 构造一个对象,有如下三种形式: 1.T a; 这个没什么好说的,调用default ctor来构造a 不过要注意的是,要么T就一个ctor也没有,编 ...

  4. v.douyin.com/xxx v.ixigua.com/xxx抖音西瓜网址官方生成制作抖音西瓜缩短口令网址(仅供参考学习)

    抖音短链:https://v.douyin.com/2vGHjMu/(仅限抖音打开) 西瓜短链:https://v.ixigua.com/2oXjpMN/ v.douyin.com是抖音官方的接口,可 ...

  5. 金山发布毒霸V及网镖V新品 坚持高定价策略 (转)

    金山发布毒霸V及网镖V新品 坚持高定价策略 (转)[@more@]  6月3日晚,瑞星突然宣布,给用户和经销商让利2200万,并将单机版产品建议零售价调低30元,零售价格降至138元.同夜,江民宣布, ...

  6. 金山发布毒霸V及网镖V新品 坚持高定价策略

    6月3日晚,瑞星突然宣布,给用户和经销商让利2200万,并将单机版产品建议零售价调低30元,零售价格降至138元.同夜,江民宣布,将以38元的超低价位推出一款杀毒软件-KV江民杀毒王DOS杀毒伴侣.已 ...

  7. v+=e不等于v=v+e

    当v有副作用时,其实v+=e不等于v=v+e 计算v+=e只会求一次v的值,而计算v=v+e则会求两次v的值.在后一种情况下,对v求值可能引起的任何副作用也都会出现两次. a[i++]  +=  2; ...

  8. 求解!IDEA使用泛型V,K,V报红(报错),求大佬支招(已解决)

    public class LRULinkedHashMap extends LinkedHashMap {public V put(K key, V value){try {lock.lock();r ...

  9. 1.JAVA猜数字游戏: 一个类A有两个成员变量v、num,v有一个初值100。 定义一个方法guess,对A类的成员变量v,用num进行猜。 *如果num比v大则提示大了,反之则提示小了.

    思路:  * 1.创建一个类,定义两个成员变量v和num,v是固定值所以直接赋值,num是键盘录入的.  * 2.定义一个setNum类,将来通过对象调用将键盘录入接收的数据进行设置  * 3.创建一 ...

  10. 测试流程V模型和双v模型

    软件测试的v模型和双v(w)模型 1,V模型 2,双V(W)模型 双v模型和v模型最大的区别是,双v模型测试最早介入,不会把问题拖到后期放大后再来解决

最新文章

  1. D.Digits 思维dp 取log乘积变成加法
  2. Android查询数据库问题
  3. python手机版iphone-Python编程神器
  4. GradSearchCv 自定义验证集
  5. 根据 HTML 规范,以下代码中,外层容器 .outer 的宽高分别是:
  6. QT 线程池 + TCP 小试(二)实现通信功能
  7. SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道!
  8. android 开发 gradle 自己会容易混淆的东西
  9. 随想录(C++下多线程的创建)
  10. 在shell中获取当前机器的ip地址
  11. windows7 系统盘 瘦身软件介绍: 冗余文件清理工具
  12. 【优化调度】基于matlab粒子群算法求解经济调度优化问题【含Matlab源码 1489期】
  13. 多模态知识问答:MMCoQA: Conversational Question Answering over Text, Tables, and Images
  14. 电瓶车充电桩收费平台在福建学校的应用
  15. 阿里用技术帮用户剁手——《尽在双11——阿里巴巴技术演进与超越》
  16. 史上最通俗易懂的理解云计算
  17. 9大电商平台开具发票页调研
  18. 【自动控制原理_B站网课笔记】开环系统Nyquist曲线绘制
  19. iOS - 常用的iOS Mac框架和库以及常用的中文开发博客
  20. 一个故事讲解公钥私钥和数字签名,很深刻!

热门文章

  1. NGUI从入门到实战(大学霸内部资料)
  2. Kali Linux 安全渗透教程第五更1.4 安装Kali Linux
  3. Linux安全渗透教程——大学霸内部资料
  4. php路径设置,php进行数据库路径设置的方法
  5. mysql workbench ssh_通过MySQL Workbench进行SSH隧道
  6. java fromstring_Java UUID fromString()方法与示例
  7. eeglab中文教程系列(3)-绘制通道光谱图
  8. 没抢到欧冠杯的票?没关系!在VR中看!
  9. 这家民办研究院太年轻,竟敢跟世界级选手“叫板”
  10. 现在的桥都会做仰卧起坐了!中国首座3D打印桥亮相上海