本文概述了带有数据平面开发套件(OvS-DPDK)(高性能,开源虚拟交换机)的Open vSwitch *,并链接到进一步深入探讨各个OvS-DPDK功能的其他技术文章。本文是为希望了解有关DPDK集成的OvS用户编写的。

注:用户可以下载的zip文件OVS主分支或2.6分支,以及安装步骤的主分支或2.6分支。

罗宾·吉勒,

发布时间: 2016年9月27日   最后更新: 2016年12月19日

OvS-DPDK高级架构

Open vSwitch是一种生产质量的多层虚拟交换机,已获得开源Apache * 2.0许可证的许可。它通过OpenFlow *协议及其OVSDB管理接口支持SDN控制语义。可从  openvswitch.org,GitHub *获得,也可以通过Linux *发行版使用。

本机Open vSwitch通常通过内核空间数据路径转发数据包(请参见图1)。在内核数据路径中,切换“快速路径”由一个简单的流表组成,该流表指示了接收到的数据包的转发/操作规则。异常数据包(流中的第一个数据包)与内核快速路径表中的任何现有条目都不匹配,并被发送到用户空间守护程序进行处理(慢路径)。用户空间处理流中的第一个数据包后,守护程序将更新内核空间中的流表,以便可以在快速路径中处理流中的后续数据包,而不将其发送到用户空间。按照这种方法,本机OvS可以消除大部分接收到的数据包在内核和用户空间之间进行的昂贵上下文切换。然而,可实现的数据包吞吐量受到Linux网络堆栈的转发带宽的限制,这不适用于需要高数据包处理速率的用例;例如,Telco。

DPDK是一组用户空间库,使用户可以创建优化的高性能数据包处理应用程序(信息可在DPDK.org上找到)。实际上,它提供了一系列轮询模式驱动程序(PMD),可绕过内核网络堆栈在用户空间和物理接口之间直接传输数据包。通过消除中断处理和内核网络堆栈的遍历,这大大提高了内核转发的性能。通过将OvS与DPDK集成,交换快速路径位于用户空间中,而异常路径与内核快速路径情况下的数据包所遍历的路径相同。DPDK与OvS的集成如图1所示。

图1Data Plane Development Kit数据平面与本机Open vSwitch *的集成。

下面的图2显示了OvS-DPDK的高级体系结构。OvS交换端口由网络设备(或netdevs)表示。Netdev-dpdk是DPDK加速的网络设备,它通过三个独立的接口使用DPDK来加速交换机I / O:一个物理接口(由DPDK中的librte_eth库处理)和两个虚拟接口(librte_vhost和librte_ring)。这些与连接到虚拟交换机的物理和虚拟设备接口。

其他OvS架构层提供了进一步的功能和与SDN控制器的接口。Dpif-netdev提供用户空间转发,ofproto是实现OpenFlow交换机的OvS库。它通过网络与OpenFlow控制器进行通信,并通过ofproto提供程序交换硬件或软件。ovsdb服务器维护该OvS实例的最新交换表信息,并将其传达给SDN控制器。下一节将提供有关切换/转发表的详细信息,并通过openvswitch.org网站提供有关OvS体系结构的更多信息。

图2具有Data Plane Development Kit高层架构的Open vSwitch *。

OvS-DPDK交换表层次结构

从物理或虚拟接口进入OvS-DPDK的数据包根据其报头字段接收唯一的标识符或哈希,然后将其与三个主要交换表之一中的条目进行匹配:精确匹配缓存(EMC),数据路径分类器(dpcls)或ofproto分类器。数据包的标识符将按顺序遍历这三个表中的每一个,除非找到匹配项,否则将执行表中匹配规则指示的适当操作,并在完成所有操作后将数据包转发出交换机。此方案如图3所示。

图3使用Data Plane Development Kit切换表层次结构打开vSwitch *。

这三个表具有不同的特性和相关的吞吐量性能/延迟。EMC为有限数量的表条目提供了最快的处理速度。数据包的标识符必须与该表中所有字段的条目完全匹配(源IP和端口,目标IP和端口以及协议的5元组),以实现最高速度的处理,否则它将在EMC上“遗漏”并传递给dpcls。dpcls包含更多表条目(安排在多个子表中),并启用数据包标识符的通配符匹配(例如,指定了目标IP和端口,但允许任何源)。这提供了大约EMC吞吐性能的一半,并且可以满足大量的表条目。

dpcls上的未命中会导致将数据包标识符发送到ofproto分类器,以便OpenFlow控制器可以决定操作。该路径性能最低,比EMC慢10倍以上。ofproto分类器中的匹配导致在更快的交换表中建立新的表条目,以便可以更快地处理相同流中的后续数据包。

OvS-DPDK功能和性能

在撰写本文时,OvS主代码分支上提供了以下高级OvS-DPDK功能:

  • DPDK对v16.07的支持(每个新的DPDK版本所支持的版本都会递增)
  • vHost用户支持
  • vHost重新连接
  • vHost多队列
  • 本机隧道支持:VxLAN,GRE,Geneve
  • VLAN支持
  • MPLS支持
  • 入口/出口QoS策略
  • 巨型帧支持
  • 连接跟踪
  • 统计信息:DPDK vHost和扩展的DPDK统计信息
  • 调试:DPDK pdump支持
  • 链接绑定
  • 连结状态
  • VFIO支持
  • ODK / OpenStack检测DPDK端口
  • vHost用户NUMA意识

图4中突出显示了本机OvS与OvS-DPDK之间的最新性能比较。该图显示了Phy-OvS-Phy用例的每秒数据包吞吐量,表明与本机OvS相比,OvS-DPDK的性能提高了约10倍。 ,在启用了英特尔®超线程技术(英特尔®HT技术)(在图例中标为1C2T或一个带有两个逻辑线程的物理核心)的情况下,该值增加到约12倍。同样,Phy-OvS-VM-OvS-Phy用例证明了OvS-DPDK的性能比本地OvS约高9倍。

图4性能比较-原生Open vSwitch *(OvS)和带有Data Plane Development Kit的OvS。

可以在英特尔®开放网络平台(Intel®ONP)性能报告中找到此数据的硬件和软件配置,以及更多用例结果。

OvS-DPDK的可用性

OvS-DPDK在上游openvswitch.org存储库中可用,也可以通过以下Linux发行版获得。最新的里程碑版本是OvS 2.6(2016年9月),并且发布的周期为六个月。

可通过以下方式下载代码:OvS master分支;OvS 2.6版本分支。提供master分支的安装步骤以及2.6 release分支的安装步骤。

带有DPDK的OvS打包版本可从以下网站获得:

红帽* OpenStack平台

Ubuntu *

Mirantis * OpenStack

NFV开放平台*

附加信息

要了解有关OvS-DPDK的更多信息,请查看以下有关英特尔®开发人员专区,01.org,英特尔®网络构建器和英特尔®网络构建器大学的视频和文章。

用户指南:

  • 将OvS与DPDK一起用于VM间NFV应用
  • 在Ubuntu上将OvS与DPDK结合使用

开发人员指南:

  • 使用DPDK的Open vSwitch-  如何使用DPDK数据路径构建和安装Open vSwitch
  • 将Open vSwitch与DPDK结合使用  -包括高级性能调整信息

文章和视频:

  • 带DPDK的OvS的速率限制配置和使用
  • 带DPDK的OvS的QoS配置和使用
  • 使用DPDK为OvS配置vHost用户多队列
  • 带DPDK的OvS中的vHost用户NUMA意识
  • 带DPDK的OvS中的DPDK Pdump
  • 在OpenStack中使用DPDK启用OvS
  • 带有DPDK的Open vSwitch *中的巨型帧
  • 带DPDK的Open vSwitch *中的vHost用户客户端模式
  • OV S-DPDK数据通路Classifie [R  -第1部分
  • OvS-DPDK数据路径分类器–第2部分
  • 使用DPDK在Open vSwitch *中进行链路聚合配置和使用
  • 使用英特尔®VTune放大器分析具有DPDK瓶颈的OvS
  • 在DevStack中将OvS和DPDK与Neutron一起使用
  • 使用OVS-DPDK构建和测试简单的NFV虚拟机间用例  (YouTube视频系列)

带DPDK里程碑的OvS发行网络研讨会:

  • OvS 2.5.0中带有DPDK的OvS
  • OvS 2.4.0中带有DPDK的OvS
  • OvS 2.6.0中带有DPDK的OvS

INB大学:

  • 使用DPDK Architecture Deep Dive打开vSwitch
  • DPDK Open vSwitch:加速到访客的路径

白皮书:

  • 带DPDK的OvS支持SDN和NFV转换

有一个问题?随时跟进Open vSwitch 讨论邮件线程上的查询。

关于作者

Robin Giller是英特尔网络平台事业部的项目经理。

产品和性能信息

1个

对于非Intel微处理器而言,Intel的编译器可能会或可能不会针对非Intel微处理器进行相同程度的优化。这些优化包括SSE2,SSE3和SSSE3指令集以及其他优化。英特尔不保证非英特尔制造的微处理器的任何优化的可用性,功能或有效性。该产品中与微处理器有关的优化旨在与Intel微处理器一起使用。不特定于英特尔微体系结构的某些优化保留给英特尔微处理器。有关本通知涵盖的特定指令集的更多信息,请参阅适用的产品《用户和参考指南》。

公告修订版#20110804

使用DPDK打开Open vSwitch(OvS) *概述相关推荐

  1. 基于DPDK的Open vSwitch概述

    作者简介 Robin Giller   英特尔网络平台集团的项目经理 本文是关于基于DPDK(数据面开发套件)的Open vSwitch[1](OvS-DPDK)的概述,这是一种高性能,开源的虚拟交换 ...

  2. Open vSwitch(OVS)源码编译Ubuntu16.04,Linux内核版本4.15

    Open vSwitch(OVS)源码编译Ubuntu16.04,Linux内核版本4.15 关于Open vSwitch(OVS)版本与Linux内核的关系,参考这篇文章:Open vSwitch( ...

  3. 使用DPDK优化VirtIO和OVS网络

    2019独角兽企业重金招聘Python工程师标准>>> 准备测试环境 一共有2个节点,配置基本相同.节点A用于运行虚拟机,节点B用于测试性能. 查看系统信息 发行版版本: $ cat ...

  4. ryu的防火墙功能 ryu.app.rest_firewall,配合mininet和open vswitch(OVS)

    今天在使用ryu的防火墙功能时, 直接使用curl没有任何问题,但是用Python的requests库时就报错了,找了2小时的问题,最终发现了问题所在. ryu的防火墙教程参考官方教程:防火牆( Fi ...

  5. Open vSwitch(OVS)相关问题

    一.安装openvswitch出现的问题 1.在执行命令之前,最好执行"sudo apt-get update/grade"进行包更新/升级,可以避免不必要的错误发生. 2.若在执 ...

  6. Open vSwitch(OVS)版本与Linux内核的关系

    不同的Linux kernel需要不同的Open vSwitch版本, Ubuntu16.04的最新版Linux内核是4.15.2,只能在上面安装Open vSwitch的2.10和2.11版本. O ...

  7. 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇

    0. 测试环境 硬件环境:还是使用四节点OpenStack部署环境,参见 http://www.cnblogs.com/sammyliu/p/4190843.html OpenStack配置: ten ...

  8. dpdk 网络协议栈 vpp OvS DDos SDN NFV 虚拟化 高性能专家之路

    DPDK核心代码 public void string main(String agrs[]){//获取课程vx 80407290 } 一.什么是DPDK 对于用户来说,它可能是一个性能出色的包数据处 ...

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

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

最新文章

  1. C++中nothrow的介绍及使用
  2. Swift 中的内存管理详解
  3. java猜拳游戏代码
  4. 业界丨2018年能干大事儿的5家人工智能初创公司
  5. jquery 沟选项获取点击添加和删除的数据
  6. 你是一个合格的数据分析师吗?教你如何提升自己的product sense?
  7. 前端学习(2894):列表组件的拆分和样式编写
  8. UC浏览器云标签怎么用 UC浏览器云标签使用方法
  9. 《开源框架那点事儿14》:教计算机程序解数学题
  10. centos升级内核之后修改内核启动顺序
  11. 二路归并排序算法c语言实现,二路归并排序算法实现-完整C语言程序
  12. 如何修复损坏的excel文件?
  13. aho-corasick automaton (AC自动机)的理解
  14. 【C++】C++ 内存分配(new,operator new)详解
  15. 期货在低位放量下跌的现象(期货高位放量上涨意味什么)
  16. 服务器设置静态IP地址教程,在Ubuntu服务器18.04上设置静态IP地址
  17. VMware解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
  18. Excel如何删除合并单元格列后的空单元格
  19. php两个手机号正则表达式_最新手机号码正则表达式(php版)
  20. python中 utf-8 和GBK 的关系

热门文章

  1. android studio中的适配器,如何在Android Studio中测试回收器视图适配器
  2. freemarker 生成java_半自动化Java代码生成器[利用freemarker模板生成]
  3. deepin中自定义安装的软件如何加入到启动器
  4. Vue.js之使用vue-cli初始化项目
  5. ios---NSNotificationCenter传值
  6. 存储类、链接、内存管理
  7. Scoped CSS规范草案
  8. 第二轮冲刺-Runner站立会议06
  9. 嵌入式Linux要学哪些东西?你真的造吗?
  10. Solaris 10 ftp,telnet,ssh,sendmail