Table of Contents

Open vSwitch Documentation

文档的组织方式

第一步

深潜

Open vSwitch项目

获得帮助

什么是开放式vSwitch?

概述

这是什么

为什么要使用Open vSwitch?

流动性

应对网络动态

逻辑标签的维护

硬件集成

总结

OVS教程

Open vSwitch额外特性

Open vSwitch与DPDK

Using Open vSwitch with DPDK


Open vSwitch Documentation

https://docs.openvswitch.org/en/latest/


文档的组织方式

Open vSwitch文档分为多个部分:

  • 安装指南可指导您在各种不同的平台上安装Open vSwitch(OVS)
  • 教程将指导您完成一系列步骤,以在沙盒环境中配置OVS
  • 主题指南提供了OVS内部和操作的高级概述
  • 操作指南是OVS的配方或用例。它们比教程更高级。
  • 常见问题解答可提供与OVS配置和操作相关的各种主题的一般见解。

第一步

Open vSwitch(OVS)入门?从这里开始。

  • 概述: 什么是开放式vSwitch?| 为什么要打开vSwitch?
  • 安装: 在Linux,FreeBSD和NetBSD上打开vSwitch | 在不支持内核的情况下打开vSwitch | 在NetBSD上打开vSwitch | 在Windows上打开vSwitch | 在Citrix XenServer上打开vSwitch | 使用DPDK打开vSwitch | 使用AF_XDP打开vSwitch | 安装常见问题解答
  • 教程: OVS教程| 打开vSwitch高级功能| OVS Conntrack教程| OVS IPsec教程|

深潜

  • 开放式vSwitch中的体系结构设计决策| Open vSwitch中的OpenFlow支持| 集成指南集中控制| 将Open vSwitch移植到新软件或硬件| 打开vSwitch扩展
  • DPDK 与OpenDK一起使用Open vSwitch | DPDK vHost用户端口
  • Windows OVS-Hyper-V设计
  • 集成: 语言绑定
  • 参考指南: 参考指南
  • 测试 测试 模糊
  • 打包: 用于Open vSwitch的Debian打包| 用于开放vSwitch的RHEL 5.6、6.x打包| Fedora,用于开放vSwitch的RHEL 7.x打包

Open vSwitch项目

了解有关Open vSwitch项目以及如何做出贡献的更多信息:

  • 社区: Open vSwitch发布过程| 作者| 邮件列表| 拼布| 报告Open vSwitch中的错误| 打开vSwitch的安全性流程
  • 贡献: 提交补丁| 向后移植补丁| 打开vSwitch编码样式| 打开vSwitch Windows数据路径编码样式
  • 维护: Linux Foundation打开vSwitch项目章程| 提交人| 对具有开放vSwitch回购访问权限的开发人员的期望| OVS提交者授予/撤销策略| OVS提交者的退休状态
  • 文档: 打开vSwitch文档样式| 构建开放的vSwitch文档| Open vSwitch的文档如何工作

获得帮助

  • 看到潜在的错误问题?向bugs @ openvswitch报告问题。组织
  • 寻找特定信息?尝试索引,模块索引或详细目录。

什么是开放式vSwitch?

https://docs.openvswitch.org/en/latest/intro/what-is-ovs/


概述


Open vSwitch是根据开源Apache 2许可获得许可的多层软件交换机。我们的目标是实现一个生产质量交换平台,该平台支持标准管理界面,并开放转发功能以进行程序扩展和控制。

Open vSwitch非常适合在VM环境中用作虚拟交换机。除了向虚拟网络层公开标准控制和可见性接口之外,它还旨在支持跨多个物理服务器的分发。Open vSwitch支持多种基于Linux的虚拟化技术,包括Xen / XenServer,KVM和VirtualBox。

大部分代码是用与平台无关的C编写的,可以轻松移植到其他环境。当前版本的Open vSwitch支持以下功能:

  • 具有中继和访问端口的标准802.1Q VLAN模型
  • NIC绑定在上游交换机上有无LACP
  • NetFlow,sFlow(R)和镜像可提高可见性
  • QoS(服务质量)配置以及策略
  • Geneve,GRE,VXLAN,STT和LISP隧道
  • 802.1ag连接故障管理
  • OpenFlow 1.0以及众多扩展
  • 具有C和Python绑定的事务配置数据库
  • 使用Linux内核模块的高性能转发

随附的Linux内核模块支持Linux 3.10及更高版本。

Open vSwitch也可以完全在用户空间中运行,而无需内核模块的帮助。这种用户空间实现应该比基于内核的交换机更容易移植。用户空间中的OVS可以访问Linux或DPDK设备。注意具有用户空间数据路径和非DPDK设备的Open vSwitch被认为是实验性的,并且会带来性能上的损失。

这是什么

此发行版的主要组件是:

  • ovs-vswitchd,一个实现切换的守护程序,以及一个用于基于流的切换的配套Linux内核模块。
  • ovsdb-server,轻型数据库服务器,ovs-vswitchd查询以获取其配置。
  • ovs-dpctl,用于配置交换机内核模块的工具。
  • 用于为Citrix XenServer和Red Hat Enterprise Linux构建RPM的脚本和规范。XenServer RPM允许将Open vSwitch安装在Citrix XenServer主机上,以替代其交换机,并具有其他功能。
  • ovs-vsctl,用于查询和更新ovs-vswitchd的配置的实用程序。
  • ovs-appctl,一个将命令发送到正在运行的Open vSwitch守护程序的实用程序。

Open vSwitch还提供了一些工具:

  • ovs-ofctl,用于查询和控制OpenFlow交换机和控制器的实用程序。
  • ovs-pki,一个用于创建和管理OpenFlow交换机的公共密钥基础结构的实用程序。
  • ovs-testcontroller,一个简单的OpenFlow控制器,可能对测试有用(尽管不适用于生产)。
  • tcpdump的补丁程序,使它能够解析OpenFlow消息。

为什么要使用Open vSwitch?

https://docs.openvswitch.org/en/latest/intro/why-ovs/


虚拟机管理程序需要能够在虚拟机之间以及与外部世界之间桥接流量。在基于Linux的虚拟机管理程序上,这通常意味着使用内置的L2交换机(Linux桥接器),它既快速又可靠。因此,合理地问为什么使用Open vSwitch。

答案是Open vSwitch针对多服务器虚拟化部署,而以前的堆栈不太适合这种环境。这些环境通常具有以下特点:高度动态的端点,逻辑抽象的维护,以及(有时)与专用交换硬件集成或分流到专用交换硬件。

以下特性和设计注意事项可帮助Open vSwitch满足上述要求。

流动性

与网络实体(例如虚拟机)相关联的所有网络状态应易于识别,并可在不同主机之间迁移。这可能包括传统的“软状态”(例如L2学习表中的条目),L3转发状态,策略路由状态,ACL,QoS策略,监视配置(例如NetFlow,IPFIX,sFlow)等。

Open vSwitch支持在实例之间配置和迁移慢速(配置)和快速网络状态。例如,如果VM在终端主机之间迁移,则不仅可以迁移关联的配置(SPAN规则,ACL,QoS),还可以迁移任何活动的网络状态(例如,可能难以重构的现有状态)。此外,Open vSwitch状态由实际数据模型输入并支持,从而可以开发结构化自动化系统。

应对网络动态

虚拟环境通常具有高变化率的特征。VM来来去去,VM随时间向前和向后移动,更改逻辑网络环境,等等。

Open vSwitch支持许多功能,这些功能允许网络控制系统随着环境的变化做出响应和适应。这包括简单的记帐和可见性支持,例如NetFlow,IPFIX和sFlow。但是也许更有用,Open vSwitch支持支持远程触发器的网络状态数据库(OVSDB)。因此,一个编排软件可以“监视”网络的各个方面,并在它们发生更改时做出响应。如今,这已被大量使用,例如,用于响应和跟踪VM迁移。

Open vSwitch还支持OpenFlow作为导出远程访问以控制流量的方法。这样做有多种用途,包括通过检查发现或链接状态流量(例如LLDP,CDP,OSPF等)进行全球网络发现。

逻辑标签的维护

分布式虚拟交换机(例如VMware vDS和Cisco的Nexus 1000V)通常通过在网络数据包中附加或操作标签来维护网络中的逻辑上下文。这可用于唯一地标识VM(以抗硬件欺骗的方式),或用于保存仅在逻辑域中相关的其他上下文。构建分布式虚拟交换机的许多问题是有效且正确地管理这些标签。

Open vSwitch包含多种用于指定和维护标记规则的方法,远程过程可以访问所有这些方法进行编排。此外,在许多情况下,这些标记规则以优化的形式存储,因此它们不必与重量级的网络设备耦合。例如,这允许配置,更改和迁移成千上万的标记或地址重新映射规则。

同样,Open vSwitch支持可实现数千个同时GRE隧道的GRE实施,并支持用于隧道创建,配置和拆除的远程配置。例如,这可用于连接不同数据中心中的私有VM网络。

硬件集成

Open vSwitch的转发路径(内核中的数据路径)设计为可以将数据包处理“分流”到硬件芯片组,无论是安装在传统的硬件交换机机箱还是终端主机NIC中。这样,Open vSwitch控制路径就可以控制纯软件实现或硬件开关。

正在进行许多将Open vSwitch移植到硬件芯片组的工作。这些包括多个商业硅芯片组(Broadcom和Marvell),以及许多特定于供应商的平台。文档中的“端口”部分讨论了如何进行这样的端口。

硬件集成的优势不仅在于虚拟化环境中的性能。如果物理交换机还公开了Open vSwitch控件抽象,则可以使用相同的自动网络控制机制来管理裸机环境和虚拟主机环境。

总结

与以前的虚拟机管理程序网络堆栈相比,Open vSwitch在许多方面都针对设计空间的不同点,着重于在基于Linux的大规模虚拟化环境中对自动化和动态网络控制的需求。

Open vSwitch的目标是使内核代码尽可能小(对于性能而言是必需的),并在适用时重用现有子系统(例如Open vSwitch使用现有QoS堆栈)。从Linux 3.3开始,Open vSwitch已包含在内核中,并且在大多数流行的发行版中都提供了用户空间实用程序的包装。

OVS教程

https://docs.openvswitch.org/en/latest/tutorials/faucet/


Open vSwitch额外特性

https://docs.openvswitch.org/en/latest/tutorials/ovs-advanced/


Open vSwitch与DPDK

https://docs.openvswitch.org/en/latest/intro/install/dpdk/


安装DPDK

$ cd /usr/src/
$ wget https://fast.dpdk.org/rel/dpdk-19.11.2.tar.xz
$ tar xf dpdk-19.11.2.tar.xz
$ export DPDK_DIR=/usr/src/dpdk-stable-19.11.2
$ cd $DPDK_DIR$ export DPDK_TARGET=x86_64-native-linuxapp-gcc
$ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
$ make install T=$DPDK_TARGET DESTDIR=install$ export LD_LIBRARY_PATH=$DPDK_DIR/x86_64-native-linuxapp-gcc/lib

安装OVS

$ ./configure --with-dpdk=$DPDK_BUILD$ ./configure --with-dpdk=$DPDK_BUILD CFLAGS="-Ofast -msse4.2 -mpopcnt"$ checking binutils avx512 assembler checks passing... yes

大页内存设置

$ echo 'vm.nr_hugepages=2048' > /etc/sysctl.d/hugepages.conf$ sysctl -w vm.nr_hugepages=N  # where N = No. of 2M huge pages$ grep HugePages_ /proc/meminfo$ mount -t hugetlbfs none /dev/hugepages``

Setup DPDK devices using VFIO

$ dmesg | grep -e DMAR -e IOMMU

If VT-d is not enabled in the BIOS, enable it now.

To ensure VT-d is enabled in the kernel, run:

$ cat /proc/cmdline | grep iommu=pt
$ cat /proc/cmdline | grep intel_iommu=on

《ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)》

If VT-d is not enabled in the kernel, enable it now.

Once VT-d is correctly configured, load the required modules and bind the NIC to the VFIO driver:

$ modprobe vfio-pci
$ /usr/bin/chmod a+x /dev/vfio
$ /usr/bin/chmod 0666 /dev/vfio/*
$ $DPDK_DIR/usertools/dpdk-devbind.py --bind=vfio-pci eth1
$ $DPDK_DIR/usertools/dpdk-devbind.py --status

Setup OVS

应按照Linux,FreeBSD和NetBSD上的Open vSwitch中的说明启动Open vSwitch,但ovs-vswitchd除外,后者需要进行一些特殊配置才能启用DPDK功能。可以通过表的other_config列将DPDK配置参数传递给ovs-vswitchd Open_vSwitch。至少dpdk-init必须将选项设置为truetry。例如:

$ export PATH=$PATH:/usr/local/share/openvswitch/scripts
$ export DB_SOCK=/usr/local/var/run/openvswitch/db.sock
$ ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
$ ovs-ctl --no-ovsdb-server --db-sock="$DB_SOCK" start

还有许多其他配置选项,下面列出了其中最重要的选项。将为所有未明确设置的值提供默认值。

  • dpdk-init 指定OVS是否应初始化并支持DPDK端口。该字段可以是truetry。值true将导致ovs-vswitchd进程在初始化失败时中止。值try将表示即使EAL初始化失败,ovs-vswitchd进程也应继续运行。
  • dpdk-lcore-mask 指定应在其上产生dpdk lcore线程的CPU内核,并期望使用十六进制字符串(例如'0x123')。
  • dpdk-socket-mem 逗号分隔的内存列表,用于从特定套接字上的大页面中进行预分配。如果未指定,则默认情况下将为每个numa节点设置1024 MB。
  • dpdk-hugepage-dir 挂载ugeltlbfs的目录
  • vhost-sock-dir 设置虚拟主机用户Unix套接字文件路径的选项。

如果分配超过一个GB的大页面,则可以配置任何给定NUMA节点使用的内存量。例如,要将NUMA节点0中的1GB和0GB用于所有其他NUMA节点,请运行:

$ ovs-vsctl --no-wait set Open_vSwitch . \other_config:dpdk-socket-mem="1024,0"or$ ovs-vsctl --no-wait set Open_vSwitch . \other_config:dpdk-socket-mem="1024"

Using Open vSwitch with DPDK

https://docs.openvswitch.org/en/latest/howto/dpdk/


将DPDK与OVS一起使用要求在构建时配置OVS以使用DPDK库。 OVS支持的DPDK版本从一个OVS版本到另一个版本都不同,如版本常见问题所述。 有关构建说明,请参阅使用DPDK打开vSwitch。

Open vSwitch(OVS)文档相关推荐

  1. [转]OpenContrail 体系架构文档

    OpenContrail 体系架构文档 英文原文:http://opencontrail.org/opencontrail-architecture-documentation/ 翻译者:@KkBLu ...

  2. 尚硅谷k8s安装文档_Kubernetes(k8s)中文文档 从零开始k8s_Kubernetes中文社区

    译者:王乐 这部文档是面对想要学习Kubernetes集群的读者.如果你对入门指南已经可以满足你对这个列表上所列的需求,我们建议你继续阅读这个,因为他是根据前人积累经验所写的新手指南.当然如果除了学习 ...

  3. Open vSwitch(OVS)相关问题

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

  4. 华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解)

    华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解) 程序员高级码农II 2020-09-25 07:23:00 前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ...

  5. Emmet 文档下载,所有快捷键总结

    为什么80%的码农都做不了架构师?>>>    Emmet | Cheat Sheet (2017-03) Syntax . . . . . . . . 1 Child: > ...

  6. DPDKVPP关键技术文档总结

    1.DPDK 流量管理API使用指南–TM 2.为不同的Intel平台交叉编译DPDK:链接二 3.DPDK数据包捕获框架 4.DPDK中的memcpy性能优化及思考 https://www.sdnl ...

  7. 装部署VMware vSphere 5.5文档 (6-2) 为IBM x3850 X5服务器安装配置VMware ESXi

    部署VMware vSphere 5.5 实施文档 ########################################################################## ...

  8. 安装部署VMware vSphere 5.5文档 (6-2) 为IBM x3850 X5服务器安装配置VMware ESXi

    部署VMware vSphere 5.5 实施文档 ########################################################################## ...

  9. 使用脚本创建客户虚拟机模板 (文档 ID 2089028.1)

    c 转到底部 文档内容 目标   解决方案   参考 适用于: Oracle Exalogic Elastic Cloud Software - 版本 2.0.4.0.0 和更高版本 Linux x8 ...

最新文章

  1. ednote服务器运行失败,endnote搜索文献时连不上服务器 Endnote连接服务器问题
  2. poj2155(二维树状数组)
  3. echarts symbol 回调函数_【OpenLayer 实战】实现仿Echarts风格的动态迁徙图/航班图
  4. 汽车和山羊问题matlab_三门问题:为什么换门会增加得到汽车的概率
  5. 初识Redis educoder
  6. 【渝粤教育】电大中专建筑施工组织 (2)作业 题库
  7. 一些个开源网站的搜集和整理——待续
  8. ktv服务器系统故障,手把手教你解决KTV系统中的“老大难”故障
  9. php varbinary,php – 无法从MSSQL中获取varbinary数据
  10. 猿创征文|时间序列分析算法之平稳时间序列预测算法和自回归模型(AR)详解+Python代码实现
  11. 中文圣经 for Android
  12. 计算机软硬件故障排除知识,计算机软硬件基础知识及常见故障排除方法
  13. Linux动态库和静态库
  14. win10禁用键盘自带关机键
  15. uniapp写一个登录页面
  16. 使用Android Studio将开源库发布到Jcenter中央库
  17. java垃圾处理机制分析
  18. python语言单词_python单词_python 单词_python单词书 - 云+社区 - 腾讯云
  19. 每日一问-ChapGPT-20230405-中医基础-五运六气三阴三阳
  20. 51智能小车超声波避障

热门文章

  1. java 时间日期视频_40-日期和时间-JAVA和C#语法比较 - 视频教程 - 北盟网校 - 专注原创教学第一站...
  2. Python3基础3——List列表的增删改和内建函数的用法
  3. python学习[第十四篇] 文件的输入与输出
  4. 前端知识点总结——VUE
  5. [转载]oracle函数listagg的使用说明
  6. Android中libs目录下armeabi和armeabi-v7a的区别
  7. 第七天20160803
  8. BSD socket编程学习
  9. 有关Activity的Launch mode 以及Intent的setFlags(转载)
  10. 中fifo算法_java线程池,工作窃取算法