VIF 类型¶
在 os-vif 中,VIF 类型指的是配置来宾虚拟网络接口后端的特定方法。对于任何给定的 hypervisor,VIF 后端可以配置的方式只有少量且有限的几种,并且每种方法都关联着有限的元数据。
VIF 对象¶
每种不同的 VIF 配置类型都由一个版本化的对象表示,该对象继承自 VIFBase。
- class os_vif.objects.vif.VIFBase(context=None, **kwargs)¶
表示一个虚拟网络接口。
基础 VIF 定义了所有类型的 VIF 共有的字段,并提供了与 VIF 接入的网络关联。不应自行实例化它,而应使用子类。
- class os_vif.objects.vif.VIFGeneric(context=None, **kwargs)¶
一种通用风格的 VIF。
通用风格的 VIF 是未绑定的、浮动的 TUN/TAP 设备,应由插件设置,而不是 hypervisor。TAP 设备如何连接到主机网络堆栈明确留未定义。
对于 libvirt 驱动程序,这映射到 type=”ethernet”,这仅仅意味着一个裸 TAP 设备,所有设置都委托给插件。
- class os_vif.objects.vif.VIFBridge(context=None, **kwargs)¶
一种桥接风格的 VIF。
桥接风格的 VIF 由 hypervisor 绑定到 Linux 主机桥接。这提供了以太网层桥接,通常连接到局域网。其他设备可以绑定到相同的 L2 虚拟桥接。
对于 libvirt 驱动程序,这映射到 type=’bridge’。
- class os_vif.objects.vif.VIFOpenVSwitch(context=None, **kwargs)¶
一种专门用于 OVS 的桥接风格 VIF。
Open vSwitch VIF 由 hypervisor 直接(或间接)绑定到 Open vSwitch 桥接。其他设备可以绑定到相同的虚拟桥接。
对于 libvirt 驱动程序,这也映射到 type=’bridge’。
- class os_vif.objects.vif.VIFDirect(context=None, **kwargs)¶
一种直连风格的 VIF。
尽管名称令人困惑,直连风格的 VIF 使用 macvtap,这是一种设备驱动程序,它在来宾和 SR-IOV 虚拟功能 (VF) 之间插入一个软件层。这与
VIFHostDevice形成对比,后者允许来宾直接连接到 VF。与设备的连接可以在多种不同的模式下运行,VEPA(无论是 802.1Qbg 还是 802.1Qbh),直通(独占分配主机网卡)或桥接(以太网层桥接流量)。直通模式将在需要具有 MAC 地址或 VLAN 配置的网络设备时使用。对于不需要 MAC/VLAN 配置的网络设备的直通,应使用
VIFHostDevice代替。对于 libvirt 驱动程序,这映射到 type=’direct’
- class os_vif.objects.vif.VIFVHostUser(context=None, **kwargs)¶
一种 vhostuser 风格的 VIF。
vhostuser 风格的 VIF 使用 userspace vhost 后端,允许流量在来宾和主机用户空间应用程序(通常是虚拟交换机)之间传输,绕过内核网络堆栈。这与
VIFBridge形成对比,其中所有数据包必须由 hypervisor 处理。对于 libvirt 驱动程序,这映射到 type=’vhostuser’
- class os_vif.objects.vif.VIFNestedDPDK(context=None, **kwargs)¶
一种嵌套 DPDK 风格的 VIF。
嵌套 DPDK 风格的 VIF 由 Kuryr-Kubernetes 用于为在 VM 中运行的嵌套 Kubernetes pod 提供加速 DPDK 数据路径。端口首先连接到虚拟机,绑定到用户空间驱动程序(例如
uio_pci_generic、igb_uio或vfio-pci),然后通过 kuryr-kubernetes CNI 插件由 Kubernetes pod 消耗。这不适用于 libvirt 驱动程序。
VIF 端口配置文件对象¶
每个 VIF 实例可以选择性地与端口配置文件对象关联。这提供了一组元数据属性,用于将来宾虚拟接口标识给主机。不同类型的 host 连接需要不同的端口配置文件对象元数据。每种端口配置文件类型都与一个版本化的对象关联,该对象继承自 VIFPortProfileBase。
- class os_vif.objects.vif.VIFPortProfileBase(context=None, **kwargs)¶
所有类型的端口配置文件的基类。
基础配置文件定义了所有类型的配置文件共有的字段。不应自行实例化它,而应使用子类。
- class os_vif.objects.vif.VIFPortProfileOpenVSwitch(context=None, **kwargs)¶
Open vSwitch 网络的端口配置文件信息。
此配置文件提供将 VIF 与 Open vSwitch 接口关联所需的元数据。
- class os_vif.objects.vif.VIFPortProfileFPOpenVSwitch(context=None, **kwargs)¶
使用快速路径的 Open vSwitch 网络的端口配置文件信息。
此配置文件提供将 fast path VIF 与 Open vSwitch 端口关联所需的元数据。
- class os_vif.objects.vif.VIFPortProfileOVSRepresentor(context=None, **kwargs)¶
使用 representor 的 OpenVSwitch 网络的端口配置文件信息。
此配置文件提供将 VIF 与 VF representor 和 Open vSwitch 端口关联所需的元数据。如果指定了 representor_name,则表示在连接时希望将 representor 重命名为给定的名称。
注意
此端口配置文件仅提供用于向后兼容性。
此接口已被
DatapathOffloadRepresentor类提供的一个取代,后者现在是VIFPortProfileBase类中的一个字段元素。应使用端口配置文件中的datapath_offload字段代替。
- class os_vif.objects.vif.VIFPortProfileFPBridge(context=None, **kwargs)¶
使用快速路径的 Linux Bridge 网络的端口配置文件信息。
此配置文件提供将 fast path VIF 与 Linux Bridge 端口关联所需的元数据。
- class os_vif.objects.vif.VIFPortProfileFPTap(context=None, **kwargs)¶
使用快速路径的 Calico 网络的端口配置文件信息。
- class os_vif.objects.vif.VIFPortProfile8021Qbg(context=None, **kwargs)¶
VEPA 802.1qbg 网络端口配置文件信息。
此配置文件提供将 VIF 与支持 802.1Qbg 规范的 VEPA 主机设备关联所需的元数据。
- class os_vif.objects.vif.VIFPortProfile8021Qbh(context=None, **kwargs)¶
VEPA 802.1qbh 网络端口配置文件信息。
此配置文件提供将 VIF 与支持 802.1Qbh 规范的 VEPA 主机设备关联所需的元数据。
- class os_vif.objects.vif.VIFPortProfileK8sDPDK(context=None, **kwargs)¶
Kuryr-Kubernetes DPDK 端口的端口配置文件信息。
此配置文件提供将嵌套 DPDK VIF 与 Kubernetes pod 关联所需的元数据。
数据通路卸载类型对象¶
端口配置文件可以与 datapath_offload 对象关联。这提供了一组元数据属性,用于标识 VIF 的数据通路卸载参数。每种不同类型的数据通路卸载都与版本化的对象关联,该对象继承自 DatapathOffloadBase。
- class os_vif.objects.vif.DatapathOffloadBase(context=None, **kwargs)¶
所有类型数据通路卸载的基类。
VIF 网络对象¶
每个 VIF 实例都与一组描述客户机将要连接到的逻辑网络的对象相关联。这些信息同样由一组版本化的对象表示