IP 多播:OVN 的 IGMP 侦听配置指南

如何启用它

为了在 OVN 驱动程序中启用 IGMP 侦听,需要在控制器节点的 /etc/neutron/neutron.conf 文件中设置以下配置

# OVN does reuse the OVS option, therefore the option group is [ovs]
[ovs]
igmp_snooping_enable = True
...

重新启动 Neutron 服务后,所有现有的网络(OVN 术语中的 Logical_Switch)都将根据 igmp_snooping_enable 配置值在 OVN 中更新,以启用或禁用 IGMP 侦听。

注意

目前,OVN 驱动程序不会在 OVN 中配置 IGMP 查询器,因此 ovn-controller 不会发送 IGMP 组播 IP 查询器来从活动成员处检索 IGMP 成员报告。

OVN 数据库信息

Neutron 中的 igmp_snooping_enable 配置被转换为在 OVN Northbound 数据库的 Logical_Switch 表的 other_config 列中设置的 mcast_snoop 选项

$ ovn-nbctl list Logical_Switch
_uuid               : d6a2fbcd-aaa4-4b9e-8274-184238d66a15
other_config        : {mcast_flood_unregistered="false", mcast_snoop="true"}
...

要查找 OVN 学习到的 IGMP 组的更多信息,请使用以下命令(仅在 igmp_snooping_enable 为 True 时填充)

$ ovn-sbctl list IGMP_group
_uuid               : 2d6cae4c-bd82-4b31-9c63-2d17cbeadc4e
address             : "225.0.0.120"
chassis             : 34e25681-f73f-43ac-a3a4-7da2a710ecd3
datapath            : eaf0f5cc-a2c8-4c30-8def-2bc1ec9dcabc
ports               : [5eaf9dd5-eae5-4749-ac60-4c1451901c56, 8a69efc5-38c5-48fb-bbab-30f2bf9b8d45]
...

注意

由于 IGMP 查询器尚未在 OVN 驱动程序中支持,因此重新启动 ovn-controller 服务将导致 OVN 忘记 IGMP 组并广播所有多播流量。此行为可能会影响更新/升级 OVN 服务时。

额外信息

当将多播 IP 流量发送到位于 224.0.0.X 范围内的多播组地址时,即使启用了 IGMP 侦听,多播流量也会被泛洪。请参阅 RFC 4541 会话 2.1.2

2) Packets with a destination IP (DIP) address in the 224.0.0.X range
   which are not IGMP must be forwarded on all ports.

不同配置的排列组合如下:

  • 禁用 IGMP 侦听时:IP 多播流量会泛洪到所有端口。

  • 启用 IGMP 侦听且多播组地址 不在 224.0.0.X 范围内时:IP 多播流量 不会 被泛洪。

  • 启用 IGMP 侦听且多播组地址 224.0.0.X 范围内时:IP 多播流量 被泛洪。

  • 除了前面提到的 igmp_snooping_enable 配置选项外,OVN 驱动程序还支持 3 个其他配置选项:igmp_floodigmp_flood_reportsigmp_flood_unregistered。有关更多信息,请查看 ML2 配置参考页面