使 VPC 网络能够使用多播流量
本页面介绍了在Google Cloud 中配置相关资源所需的步骤,以便 VPC 网络中的多播使用方可以从给定多播网域和一个或多个群组范围接收多播流量。
准备工作
在开始执行本页面上的过程之前,您必须完成本部分中所述的前提条件。
确认多播网域、群组范围和提供方配置已完成
确认您要使用多播流量的多播网域、多播群组范围和多播提供方配置已完成,如多播配置概览中所述。如有必要,请与网域的多播管理员联系。
设置项目
设置 gcloud CLI 以使用多播使用方 VPC 网络的项目。或者,您也可以在后续过程中为每个命令传入 --project=PROJECT 标志。
gcloud config set project PROJECT
将 PROJECT 替换为您的项目 ID。
启用 API
如果您尚未启用以下 API,请启用它们。
如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您没有此权限,请让您的 Identity and Access Management (IAM) 管理员为您授予 Service Usage Admin (roles/serviceusage.serviceUsageAdmin) 角色。
如需创建多播资源,请启用
networkservicesAPI:gcloud services enable networkservices.googleapis.com如需创建 Network Connectivity Center VPC spoke,请启用
networkconnectivityAPI:gcloud services enable networkconnectivity.googleapis.com
所需的角色
如需获得配置多播使用方资源所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
创建和管理网络资源:项目的 Compute Network Admin (
compute.networkAdmin) 角色 -
创建和管理防火墙规则:项目的 Compute Security Admin (
compute.securityAdmin) 角色 -
创建 Network Connectivity Center spoke:项目的 Spoke Admin (
networkconnectivity.spokeAdmin) 角色 -
向与多播网域关联的 hub 提议 Network Connectivity Center spoke:多播管理员项目的 Group User (
networkconnectivity.groupUser) 角色 -
创建多播资源:项目的 Multicast Admin (
networkservices.multicastAdmin) 角色
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建 VPC 网络并将其添加到 hub
如果多播网域使用其中包含单独的多播使用方 VPC 网络的 Network Connectivity Center 星形拓扑,则您必须完成本部分中的步骤。
如果多播网域使用单 VPC 网络拓扑,则您可以跳过本部分,直接执行使 VPC 网络能够使用多播流量的步骤。
创建 VPC 网络
本部分介绍了如何创建虚拟私有云 (VPC) 网络以使用多播流量。
如需详细了解如何创建 VPC 网络,请参阅创建和管理 VPC 网络。
gcloud
使用
compute networks create命令创建 VPC 网络。gcloud compute networks create MULTICAST_CONSUMER_NETWORK --subnet-mode=custom
将
MULTICAST_CONSUMER_NETWORK替换为多播使用方网络的名称。使用
compute networks subnets create命令添加一个或多个子网以托管多播使用方。gcloud compute networks subnets create SUBNET --network=MULTICAST_CONSUMER_NETWORK \ --range=PRIMARY_RANGE \ --region=REGION
替换以下值:
SUBNET:子网的名称MULTICAST_CONSUMER_NETWORK:您之前创建的多播使用方网络的名称PRIMARY_RANGE:子网的主要 IPv4 范围(采用 CIDR 表示法)。如需了解详情,请参阅 IPv4 子网范围。REGION:在其中创建新子网的 Google Cloud 区域。 必须是支持多播的区域,例如us-east5。
添加防火墙规则
本部分介绍了如何在多播使用方 VPC 网络中针对多播流量创建防火墙规则。
如需创建其他防火墙规则(例如针对 SSH),请参阅创建 VPC 防火墙规则。
命令中会预先填充示例防火墙规则名称。请注意,防火墙规则的名称在项目中必须是唯一的。
允许入站多播流量
gcloud
如需创建防火墙规则以允许从多播提供方网络到您的 VPC 网络的入站多播流量,请使用 compute firewall-rules create 命令。
gcloud compute firewall-rules create allow-multicast-traffic-ingress \ --direction=INGRESS \ --priority=1000 \ --network=MULTICAST_CONSUMER_NETWORK \ --action=ALLOW \ --rules=udp[:PORT[-PORT]] \ --source-ranges=MULTICAST_PRODUCER_RANGE \ --destination-ranges=MULTICAST_GROUP_IP_RANGES
替换以下值:
MULTICAST_CONSUMER_NETWORK:您之前创建的多播使用方网络的名称PORT:防火墙规则适用的端口的列表。 Google Cloud 会将udp用于多播流量。可以在协议之后指定端口或端口范围,使防火墙规则适用于通过特定端口的流量。如果未指定端口或端口范围,防火墙规则会适用于通过所有范围的连接。例如,指定
--rules=udp:1234可允许通过端口 1234 的多播流量。MULTICAST_PRODUCER_RANGE:多播提供方 VPC 网络的 CIDR 范围,用于为多播提供方分配 IP 地址。您也可以省略--source-ranges标志,这会将入站流量来源设置为任何 IPv4 地址 (0.0.0.0/0)。MULTICAST_GROUP_IP_RANGES:多播提供方向其发送流量的多播群组的 CIDR 范围。这必须是 D 类地址范围,例如,您可以使用224.0.0.0/4来允许所有多播流量。
允许入站 IGMP 查询
gcloud
如需创建防火墙规则以允许从多播使用方网络范围到多播使用方 VPC 网络的入站 IGMP 查询流量,请使用 compute firewall-rules create 命令。
以下命令包含:
--destination-ranges=224.0.0.1/32,用于指定表示此子网中所有主机的多播群组 IP 地址。--rules=2,用于指定 IGMP。
gcloud compute firewall-rules create allow-multicast-igmp-ingress \
--direction=INGRESS \
--priority=1000 \
--network=MULTICAST_CONSUMER_NETWORK \
--action=ALLOW \
--rules=2 \
--source-ranges=MULTICAST_CONSUMER_RANGE \
--destination-ranges=224.0.0.1/32
替换以下值:
MULTICAST_CONSUMER_NETWORK:您之前创建的多播使用方网络的名称MULTICAST_CONSUMER_RANGE:多播使用方网络的 CIDR 范围,用于为多播使用方分配 IP 地址。
允许出站 IGMP
本部分介绍了如何创建允许出站 IGMP 流量的防火墙规则,以便您可以从多播使用方发送 IGMP JOIN 和 LEAVE 消息。
所有 VPC 网络都有一条具有最低优先级 (65535) 的默认 IPv4 允许出站规则。如果没有优先级更高的规则明确阻止出站流量,则无需完成此步骤。如需了解详情,请参阅隐式规则。
gcloud
如需创建防火墙规则以允许来自多播使用方 VPC 网络的出站多播 IGMP 流量,请使用 compute firewall-rules create 命令。
gcloud compute firewall-rules create allow-multicast-igmp-egress \
--direction=EGRESS \
--priority=1000 \
--network=MULTICAST_CONSUMER_NETWORK \
--action=ALLOW \
--rules=2 \
--destination-ranges=RANGES_FOR_JOIN_AND_LEAVE
替换以下值:
MULTICAST_CONSUMER_NETWORK:您之前创建的多播使用方网络的名称RANGES_FOR_JOIN_AND_LEAVE:以下各项的英文逗号分隔列表:- 多播使用方需要加入的多播群组的 CIDR 范围。您必须使用 D 类地址范围。
- 所有路由器 IP 地址:
224.0.0.2/32。发送 IGMP 退出消息时需要使用此范围。
或者,您也可以指定
224.0.0.0/4以允许所有多播流量。
将 VPC 网络添加到 Network Connectivity Center hub
本部分介绍了如何将 VPC 网络添加到由多播管理员创建的 Network Connectivity Center hub。如需添加网络,您可以在边缘群组中创建 VPC spoke。
如需了解详情,请参阅 Network Connectivity Center 文档中的星形拓扑和创建 VPC spoke。
gcloud
如需将您的 VPC 网络作为边缘 spoke 添加到 hub,请使用
network-connectivity spokes linked-vpc-network create命令。gcloud network-connectivity spokes linked-vpc-network create SPOKE_NAME \ --hub=projects/MULTICAST_ADMIN_PROJECT/locations/global/hubs/HUB \ --vpc-network=MULTICAST_CONSUMER_NETWORK \ --group="edge" \ --global \ --include-export-ranges=INCLUDE_RANGES替换以下值:
SPOKE_NAME:边缘 spoke 的名称MULTICAST_ADMIN_PROJECT:多播管理员项目的 IDHUB:由多播管理员创建的 Network Connectivity Center hub 的名称MULTICAST_CONSUMER_NETWORK:您之前创建的多播使用方网络的名称您也可以使用以下格式提供多播使用方网络的 URI:
projects/MULTICAST_CONSUMER_PROJECT/global/networks/MULTICAST_CONSUMER_NETWORK。INCLUDE_RANGES:要导出到 hub 的 IP 地址范围的英文逗号分隔列表。默认情况下,spoke 会导出所有子网范围。如需避免与 hub 上的其他 spoke 重叠,您可以指定要导出的子网范围。如果您指定子网范围,请确保包含托管多播使用方的范围以及与中心群组中的 spoke 进行通信所需的任何其他范围(例如用于单播流量)。
Google Cloud 禁止 VPC spoke 之间存在子网重叠,如子网路由唯一性中所述。如需详细了解如何使用导出过滤条件来避免重叠,请参阅使用导出过滤条件的 VPC 连接。
请与多播管理员联系,向其通知您已向 hub 提议了 VPC spoke。
如果 hub 位于其他项目中,则多播管理员必须先明确批准您的 spoke,然后它才会变为有效状态,除非多播管理员已将您的项目添加为自动接受项目。
如需在创建 spoke 后检查其状态,请参阅检查 VPC spoke 的状态。
使 VPC 网络能够使用多播流量
本部分介绍了使 VPC 网络中的多播使用方能够从给定网域和一个或多个群组范围接收多播流量所需的步骤。
将多播使用方 VPC 网络添加到网域
本部分介绍了如何通过在多播使用方 VPC 网络和网域之间创建多播使用方关联,将该网络添加到网域。
对您要在其中托管多播使用方的每个可用区,完成以下步骤。
gcloud
如需将多播使用方 VPC 网络添加到网域,请使用 network-services multicast-consumer-associations create 命令。
gcloud beta network-services multicast-consumer-associations create CONSUMER_ASSOCIATION_NAME \
--multicast-domain-activation="projects/ADMIN_PROJECT/locations/ZONE/multicastDomainActivations/DOMAIN_ACTIVATION_NAME" \
--network="projects/MULTICAST_CONSUMER_PROJECT/locations/global/networks/MULTICAST_CONSUMER_NETWORK" \
--location=ZONE
替换以下值:
CONSUMER_ASSOCIATION_NAME:多播使用方关联的名称ADMIN_PROJECT:多播管理员项目的 IDZONE:管理员在其中激活了多播网域且您需要在其中托管多播使用方的可用区DOMAIN_ACTIVATION_NAME:由多播管理员创建的网域激活的名称MULTICAST_CONSUMER_PROJECT和MULTICAST_CONSUMER_NETWORK:使用多播流量的项目和网络。多播管理员项目和网络,或是单独的多播使用方项目和网络,具体取决于网域的多播拓扑。
API
如需将多播使用方 VPC 网络添加到网域,请使用 multicastConsumerAssociations.create 方法。
POST https://networkservices.googleapis.com/v1beta1/projects/MULTICAST_CONSUMER_PROJECT/locations/ZONE/multicastConsumerAssociations?multicastConsumerAssociationId=CONSUMER_ASSOCIATION_NAME
{
"multicastDomainActivation": "projects/ADMIN_PROJECT/locations/ZONE/multicastDomainActivations/DOMAIN_ACTIVATION_NAME",
"network": "projects/MULTICAST_CONSUMER_PROJECT/locations/global/networks/MULTICAST_CONSUMER_NETWORK"
}
替换以下值:
CONSUMER_ASSOCIATION_NAME:多播使用方关联的名称ADMIN_PROJECT:多播管理员项目的 IDZONE:管理员在其中激活了多播网域且您需要在其中托管多播使用方的可用区。DOMAIN_ACTIVATION_NAME:由多播管理员创建的网域激活的名称MULTICAST_CONSUMER_PROJECT和MULTICAST_CONSUMER_NETWORK:使用多播流量的项目和网络。多播管理员项目和网络,或是单独的多播使用方项目和网络,具体取决于网域的多播拓扑。
为群组范围激活多播使用方 VPC 网络
本部分介绍了如何为群组范围激活多播使用方 VPC 网络。
对您要使用多播流量的每个多播群组范围和可用区,完成以下步骤。
完成此步骤后,网络中的多播使用方可以加入指定群组范围内的多播群组 IP 地址,前提是它们已配置 IGMP。
gcloud
如需为多播群组范围激活多播使用方 VPC 网络,请使用 network-services multicast-group-consumer-activations create 命令。
gcloud beta network-services multicast-group-consumer-activations create GROUP_CONSUMER_ACTIVATION_NAME \
--multicast-consumer-association="projects/CONSUMER_PROJECT/locations/ZONE/multicastConsumerAssociations/CONSUMER_ASSOCIATION_NAME" \
--multicast-group-range-activation="projects/ADMIN_PROJECT/locations/ZONE/multicastGroupRangeActivations/GROUP_RANGE_ACTIVATION_NAME" \
--location=ZONE \
[--enable-logging | --no-enable-logging]
替换以下值:
GROUP_CONSUMER_ACTIVATION_NAME:多播群组使用方激活的名称CONSUMER_PROJECT:您的项目的 ID。这可以是多播管理员项目,也可以是单独的多播使用方项目,具体取决于多播网域的拓扑。ZONE:在其中激活多播使用方网络的可用区。还必须是管理员已在其中激活了多播群组范围的可用区。CONSUMER_ASSOCIATION_NAME:您之前创建的多播使用方关联的名称ADMIN_PROJECT:多播管理员项目的 IDGROUP_RANGE_ACTIVATION_NAME:由多播管理员创建的群组范围激活的名称。--[no-]enable-logging:(可选)确定是否启用群组成员资格事件日志记录。- 如需启用日志记录,请使用
--enable-logging。 - (默认)如需停用日志记录,请使用
--no-enable-logging。
- 如需启用日志记录,请使用
API
如需为多播群组范围激活多播使用方 VPC 网络,请使用 multicastGroupConsumerActivations.create 方法。
POST https://networkservices.googleapis.com/v1beta1/projects/CONSUMER_PROJECT/locations/ZONE/multicastGroupConsumerActivations?multicastGroupConsumerActivationId=GROUP_CONSUMER_ACTIVATION_NAME
{
"multicastConsumerAssociation": "projects/CONSUMER_PROJECT/locations/ZONE/multicastConsumerAssociations/CONSUMER_ASSOCIATION_NAME",
"multicastGroupRangeActivation": "projects/ADMIN_PROJECT/locations/ZONE/multicastGroupRangeActivations/GROUP_RANGE_ACTIVATION_NAME",
"logConfig": {
"enabled": "LOGGING_ENABLED"
}
}
替换以下值:
GROUP_CONSUMER_ACTIVATION_NAME:多播群组使用方激活的名称CONSUMER_PROJECT:您的项目的 ID。这可以是多播管理员项目,也可以是单独的多播使用方项目,具体取决于多播网域的拓扑。ZONE:在其中激活多播使用方网络的可用区。还必须是管理员已在其中激活了多播群组范围的可用区。CONSUMER_ASSOCIATION_NAME:您之前创建的多播使用方关联的名称ADMIN_PROJECT:多播管理员项目的 IDGROUP_RANGE_ACTIVATION_NAME:由多播管理员创建的群组范围激活的名称LOGGING_ENABLED:确定是否启用群组成员资格事件日志记录。- 如需启用日志记录,请设置为
true。 - (默认)如需停用日志记录,请设置为
false。
- 如需启用日志记录,请设置为
创建多播使用方实例
如果您还没有相应的虚拟机实例,请创建一个或多个虚拟机实例来运行使用多播流量的应用。请确保按照为多播使用方实例配置 IGMP 中所述的步骤对新实例或现有实例配置 IGMP。如需详细了解如何创建实例,请参阅创建和启动 Compute Engine 实例。
后续步骤
- 如需查看您创建的多播使用方配置,请参阅查看多播使用方配置。
- 为多播使用方实例配置 IGMP