中转网关上的多播 - Amazon VPC
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

中转网关上的多播

多播是一种通信协议,用于同时向多台接收计算机传输单个数据流。Transit Gateway 支持在所连接 VPC 的子网之间路由多播流量,并充当实例的多播路由器,以将流量发送到多个接收实例目标。

多播概念

以下是多播的主要概念:

  • 多播域 — 允许将一个多播网络分段成不同的域,并将中转网关用作多播路由器。您可以在子网级别定义多播域成员资格。

  • 多播组 — 识别一组将发送和接收相同多播流量的主机。多播组由组 IP 地址标识。多播组成员资格由附加到 EC2 实例的单个弹性网络接口定义。

  • Internet 组管理协议 (IGMP) — 允许主机和路由器动态管理多播组成员资格的互联网协议。IGMP 多播域包含使用 IGMP 协议加入、离开和发送消息的主机。 Amazon 支持 IGMPv2 协议以及 IGMP 和静态(基于 API)组成员资格组播域。

  • 多播源 — 静态配置的与支持的 EC2 实例关联的弹性网络接口,用于发送多播流量。多播源仅适用于静态源配置。

    静态源多播域包含不使用 IGMP 协议加入、离开和发送消息的主机。您可以使用 Amazon CLI 来添加来源和组成员。静态添加的源发送多播流量,成员接收多播流量。

  • 多播组成员 — 与支持的 EC2 实例关联的弹性网络接口,用于接收多播流量。多播组具有多个组成员。在静态源组成员资格配置中,多播组成员只能接收流量。在 IGMP 组配置中,成员既可以发送流量,也可以接收流量。

注意事项

  • 有关受支持区域的信息,请参阅 Amazon Transit Gateway 常见问题

  • 您必须创建一个新的中转网关才能支持多播。

  • 组播组成员资格使用 Amazon Virtual Private Cloud Console 或或 IGMP Amazon CLI 进行管理。

  • 一个子网只能位于一个多播域中。

  • 如果您使用非 Nitro 实例,则必须禁用 Source/Dest (源/目标) 检查。有关禁用检查的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的更改源或目标检查

  • 非 Nitro 实例不能是多播发送方。

  • 不支持通过站点到站点 VPN Amazon Direct Connect、对等连接或传输网关 Connect 附件进行组播路由。

  • 中转网关不支持多播数据包分段。分段多播数据包会被丢弃。有关更多信息,请参阅最大传输单元 (MTU)

  • 启动时,IGMP 主机会发送多条 IGMP JOIN 消息以加入多播组(通常重试 2 到 3 次)。如果发生了所有 IGMP JOIN 消息均丢失的不太可能的情况,主机将不会成为中转网关多播组的一部分。在这种情况下,您需要使用特定于应用程序的方法从主机重新触发 IGMP JOIN 消息。

  • 组成员资格以收到由中转网关发送的 IGMPv2 JOIN 消息开始,并以收到 IGMPv2 LEAVE 消息结束。中转网关会跟踪成功加入多播组的主机。作为云组播路由器,中转网关每两分钟向所有成员发出一条 IGMPv2 QUERY 消息。作为回应,每个成员发送一条 IGMPv2 JOIN 消息,这是成员续订其成员资格的方式。如果成员未能回复连续三次查询,则中转网关将从其加入的所有组中删除此成员资格。但是,它会继续向该成员发送查询 12 个小时,然后将其从 to-be-queried 列表中永久删除。一条明确的 IGMPv2 LEAVE 消息会立即永久地从任何进一步的多播处理中删除此主机。

  • 中转网关会跟踪成功加入多播组的主机。在中转网关中断的情况下,中转网关在上次成功发出 IGMP JOIN 消息后继续向主机发送多播数据七分钟(420 秒)。中转网关会继续向主机发送会员资格查询,最长持续 12 个小时,或直到它收到来自主机的 IGMP LEAVE 消息为止。

  • 中转网关将成员资格查询数据包发送给所有 IGMP 成员,以便它可以跟踪多播组成员资格。这些 IGMP 查询数据包的源 IP 为 0.0.0.0/32,目标 IP 为 224.0.0.1/32,协议为 2。IGMP 主机(实例)上的安全组配置以及主机子网上的任何 ACL 配置都必须允许这些 IGMP 协议消息。

  • 当多播源和目标位于同一 VPC 中时,您不能使用安全组引用将目标安全组设置为接受来自源安全组的流量。

  • 对于静态组播组和源,Amazon VPC 中转网关会自动移除已不存在的 ENI 的静态组和源。这是通过定期担任中转网关服务关联角色来描述账户中的 ENI 来实现的。

  • 只有静态组播支持 IPv6。动态组播不是。

使用 Windows Server 进行多播

在 Windows Server 2019 或 2022 上设置多播以使用中转网关时,您需要执行其他步骤。使用 PowerShell,运行以下命令:

  1. 针对 TCP/IP 堆栈,将 Windows Server 更改为使用 IGMPv2 而不是 IGMPv3:

    PS C:\> New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -Name IGMPVersion -PropertyType DWord -Value 3

    注意

    New-ItemProperty是指定 IGMP 版本的属性索引。由于 IGMP v2 是多播支持的版本,因此该属性Value必须是。3您可以运行以下命令将 IGMP 版本设置为 2,而不是编辑 Windows 注册表。 :

    Set-NetIPv4Protocol -IGMPVersion Version2

  2. 默认情况下,Windows 防火墙会丢弃大多数 UDP 流量。您首先需要检查哪个连接配置文件用于多播:

    PS C:\> Get-NetConnectionProfile | Select-Object NetworkCategory NetworkCategory --------------- Public
  3. 更新上一步中的连接配置文件以允许访问所需的 UDP 端口:

    PS C:\> Set-NetFirewallProfile -Profile Public -Enabled False

  4. 重启 EC2 实例。

  5. 测试您的多播应用程序,确保流量按预期流动。