4.9. 为 ML2/OVS 部署中的提供商网络启用多播侦听

要防止对 Red Hat OpenStack Platform (RHOSP) 提供商网络中的每个端口填充多播数据包,您必须启用多播 snooping。在使用带有 Open vSwitch 机制驱动程序(ML2/OVS)的 Modular Layer 2 插件的 RHOSP 部署中,您可以通过在 YAML 格式的环境文件中声明 RHOSP Orchestration (heat) NeutronEnableIgmpSnooping 参数来实现此目的。

重要

在将其应用到生产环境之前,您应该全面测试并了解任何多播侦听配置。错误配置可能会破坏多播或导致网络行为错误。

先决条件

  • 您的配置必须只使用 ML2/OVS 提供商网络。
  • 您的物理路由器还必须启用 IGMP 侦听功能。

    也就是说,物理路由器必须发送提供商网络上的 IGMP 查询数据包,以便从多播组成员请求常规 IGMP 报告,以维护 OVS 中的侦听缓存(以及物理网络)。

  • RHOSP 网络服务安全组规则必须就位,以允许到虚拟机实例(或禁用端口安全性)的入站 IGMP。

    在本例中,为 ping_ssh 安全组创建了一个规则:

    示例

    $ openstack security group rule create --protocol igmp --ingress ping_ssh

流程

  1. 在 undercloud 主机上,以 stack 用户身份登录,创建一个自定义 YAML 环境文件。

    示例

    $ vi /home/stack/templates/my-ovs-environment.yaml

    提示

    编排服务(heat)使用一组名为 template 的计划来安装和配置您的环境。您可以使用自定义环境文件自定义 overcloud 的各个方面,它是为 heat 模板提供自定义的特殊模板类型。

  2. parameter_defaults 下的 YAML 环境文件中,将 NeutronEnableIgmpSnooping 设置为 true。

    parameter_defaults:
        NeutronEnableIgmpSnooping: true
        ...
    重要

    确保在冒号 (:) 和 true 间添加一个空格字符。

  3. 运行 openstack overcloud deploy 命令,并包含核心 heat 模板、环境文件以及新的自定义环境文件。

    重要

    环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。

    示例

    $ openstack overcloud deploy --templates \
    -e [your-environment-files] \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-ovs-environment.yaml

验证

  • 验证是否启用了多播 snooping。

    示例

    # sudo ovs-vsctl list bridge br-int

    输出示例

    ...
    mcast_snooping_enable: true
    ...
    other_config: {mac-table-size="50000", mcast-snooping-disable-flood-unregistered=True}
    ...