Open vSwitch(OVS)文档

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文档分为多个部分:

获得帮助

 

什么是开放式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。

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页