Macvtap 机制驱动

ML2 插件的 Macvtap 机制驱动通常会提高实例的网络性能。

请考虑此机制驱动程序的以下属性,以确定其在您的环境中的实用性

  • 仅支持实例端口。用于 DHCP 和层 3(路由)服务的端口必须使用其他机制驱动程序,例如 Open vSwitch (OVS)。

  • 仅支持未标记(flat)和标记(VLAN)网络。

  • 缺乏对安全组的支持,包括基本(合理性)和反欺骗规则。

  • 缺乏对层 3 高可用性机制的支持,例如虚拟路由器冗余协议 (VRRP) 和分布式虚拟路由 (DVR)。

  • 只有计算资源可以通过 macvtap 附加。附加其他资源,如 DHCP、路由器等是不支持的。因此,请在控制器节点上以 VLAN 或 flat 模式运行 OVS。

  • 实例迁移需要在每个计算节点上,physical_interface_mapping 配置选项的值相同。有关更多信息,请参阅 https://bugs.launchpad.net/neutron/+bug/1550400

先决条件

您可以使用 OVS 机制驱动程序以及仅提供商网络或提供商和自助服务网络,将此机制驱动程序添加到现有环境。您可以更改现有计算节点的配置,或添加使用 Macvtap 机制驱动程序的计算节点。示例配置假定将使用 Macvtap 机制驱动程序的计算节点添加到 Open vSwitch:自助服务网络 部署示例。

添加具有以下组件的一个或多个计算节点

  • 三个网络接口:管理、提供商和叠加。

  • OpenStack Networking Macvtap layer-2 代理及其任何依赖项。

注意

为了支持与部署示例的集成,此内容将 Macvtap 机制驱动程序配置为使用叠加网络,用于未标记(flat)或标记(VLAN)网络,以及诸如 VXLAN 之类的叠加网络。您的物理网络基础设施必须支持叠加网络上的 VLAN (802.1q) 标记。

架构

Macvtap 机制驱动程序仅适用于计算节点。否则,环境类似于先决条件部署示例。

Macvtap mechanism driver - compute node components Macvtap mechanism driver - compute node connectivity

示例配置

使用以下示例配置作为模板,以向现有的运行环境添加对 Macvtap 机制驱动程序的支持。

控制器节点

  1. ml2_conf.ini 文件中

    • macvtap 添加到机制驱动程序。

      [ml2]
      mechanism_drivers = macvtap
      
    • 配置网络映射。

      [ml2_type_flat]
      flat_networks = provider,macvtap
      
      [ml2_type_vlan]
      network_vlan_ranges = provider,macvtap:VLAN_ID_START:VLAN_ID_END
      

      注意

      macvtap 的使用是任意的。只有自助服务部署示例才需要 VLAN ID 范围。将 VLAN_ID_STARTVLAN_ID_END 替换为适当的数值。

  2. 重新启动以下服务

    • 服务器

网络节点

无更改。

计算节点

  1. 安装 Networking 服务 Macvtap layer-2 代理。

  2. neutron.conf 文件中,配置常用选项

    [DEFAULT]
    core_plugin = ml2
    auth_strategy = keystone
    
    [database]
    # ...
    
    [keystone_authtoken]
    # ...
    
    [nova]
    # ...
    
    [agent]
    # ...
    

    请参阅您的 OpenStack 版本的 安装教程和指南配置参考,以获取 [DEFAULT][database][keystone_authtoken][nova][agent] 部分的适当附加配置。

  3. macvtap_agent.ini 文件中,配置 layer-2 代理。

    [macvtap]
    physical_interface_mappings = macvtap:MACVTAP_INTERFACE
    
    [securitygroup]
    firewall_driver = noop
    

    MACVTAP_INTERFACE 替换为处理 Macvtap 机制驱动程序接口的底层接口的名称。如果使用先决条件部署示例,请将 MACVTAP_INTERFACE 替换为处理叠加网络的底层接口的名称。例如,eth1

  4. 启动以下服务

    • Macvtap 代理

验证服务操作

  1. 获取管理项目凭据。

  2. 验证代理的存在和运行情况

    $ openstack network agent list
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    | ID                                   | Agent Type         | Host     | Availability Zone | Alive | State | Binary                    |
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    | 31e1bc1b-c872-4429-8fc3-2c8eba52634e | Metadata agent     | compute1 | None              | True  | UP    | neutron-metadata-agent    |
    | 378f5550-feee-42aa-a1cb-e548b7c2601f | Open vSwitch agent | compute1 | None              | True  | UP    | neutron-openvswitch-agent |
    | 7d2577d0-e640-42a3-b303-cb1eb077f2b6 | L3 agent           | compute1 | nova              | True  | UP    | neutron-l3-agent          |
    | d5d7522c-ad14-4c63-ab45-f6420d6a81dd | Metering agent     | compute1 | None              | True  | UP    | neutron-metering-agent    |
    | e838ef5c-75b1-4b12-84da-7bdbd62f1040 | DHCP agent         | compute1 | nova              | True  | UP    | neutron-dhcp-agent        |
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    

创建初始网络

此机制驱动程序只是更改了实例的虚拟网络接口驱动程序。因此,您可以参考先决条件部署示例的 创建 初始 网络 内容。

验证网络操作

此机制驱动程序只是更改了实例的虚拟网络接口驱动程序。因此,您可以参考先决条件部署示例的 验证 网络 操作 内容。

网络流量流

此机制驱动程序只是删除了计算节点上的安全组处理。因此,您可以参考先决条件部署示例的网络流量流场景。