使 VPC 网络能够提供多播流量
本页面介绍了如何在Google Cloud 中配置资源,以允许 VPC 网络中的多播提供方为给定多播网域和一个或多个群组范围发送多播流量。
准备工作
在开始执行本页面上的过程之前,您必须完成以下部分中的前提条件。
确认多播网域和群组范围配置已完成
确认您要提供多播流量的多播网域和多播群组范围配置已完成,如多播配置概览中所述。如有必要,请与网域的多播管理员联系。
设置项目
本页面上的步骤要求您在多播管理员的项目中创建多播提供方资源。此项目包含多播网域和群组范围资源。
设置 gcloud CLI 以使用多播管理员的项目。或者,您也可以在后续过程中为每个命令使用 --project=MULTICAST_ADMIN_PROJECT 标志。
gcloud config set project MULTICAST_ADMIN_PROJECT
将 MULTICAST_ADMIN_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) 角色 -
创建多播资源:多播管理员项目的 Multicast Admin (
networkservices.multicastAdmin) 角色
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建 VPC 网络并将其添加到 hub
如果多播网域使用其中包含一个或多个单独的多播提供方 VPC 网络的 Network Connectivity Center 星形拓扑,则您必须完成本部分中的步骤。
如果多播网域使用单 VPC 网络拓扑,或者如果多播网域使用 Network Connectivity Center 星形拓扑,不过其中的多播管理员网络也充当多播提供方网络,则您可以跳过此步骤,直接执行使 VPC 网络能够提供多播流量的步骤。
创建 VPC 网络
本部分介绍了如何创建虚拟私有云 (VPC) 网络以提供多播流量。
如需详细了解如何创建 VPC 网络,请参阅创建和管理 VPC 网络。
gcloud
使用
compute networks create命令创建 VPC 网络。gcloud compute networks create MULTICAST_PRODUCER_NETWORK --subnet-mode=custom
将
MULTICAST_PRODUCER_NETWORK替换为多播提供方 VPC 网络的名称。使用
compute networks subnets create命令添加一个或多个子网以托管多播提供方。gcloud compute networks subnets create SUBNET \ --network=MULTICAST_PRODUCER_NETWORK \ --range=PRIMARY_RANGE \ --region=REGION
替换以下值:
SUBNET:子网的名称MULTICAST_PRODUCER_NETWORK:您之前创建的多播提供方网络的名称PRIMARY_RANGE:子网的主要 IPv4 范围(采用 CIDR 表示法)。如需了解详情,请参阅 IPv4 子网范围。REGION:在其中创建新子网的 Google Cloud 区域。 必须是支持多播的区域,例如us-east5。
添加防火墙规则
本部分介绍如何在多播提供方 VPC 网络中针对多播流量创建防火墙规则。
如需创建其他防火墙规则(例如针对 SSH),请参阅创建 VPC 防火墙规则。
允许出站多播流量
本部分介绍了如何创建允许从 VPC 网络发送出站多播流量的防火墙规则。
所有 VPC 网络都有一条具有最低优先级 (65535) 的默认 IPv4 允许出站规则。如果没有优先级更高的规则明确阻止出站流量,则无需完成此步骤。如需了解详情,请参阅隐式规则。
此命令中会预先填充示例防火墙规则名称。请注意,防火墙规则的名称在项目中必须是唯一的。
gcloud
如需创建允许从 VPC 网络发送出站多播流量的防火墙规则,请使用 compute firewall-rules create 命令。
gcloud compute firewall-rules create allow-multicast-egress --direction=EGRESS \ --priority=1000 \ --network=MULTICAST_PRODUCER_NETWORK \ --action=ALLOW \ --rules=udp[:PORT[-PORT]] \ --destination-ranges=MULTICAST_GROUP_IP_RANGES
替换以下值:
MULTICAST_PRODUCER_NETWORK:您之前创建的多播提供方网络的名称PORT:防火墙规则适用的端口的列表。 Google Cloud 会将udp用于多播流量。可以在协议之后指定端口或端口范围,使防火墙规则适用于通过特定端口的流量。如果未指定端口或端口范围,防火墙规则会适用于通过所有范围的连接。例如,指定
--rules=udp:1234可允许通过端口1234的多播流量。您可以选择使用
--rules=all来允许所有协议和端口。MULTICAST_GROUP_IP_RANGES:多播提供方向其发送流量的多播群组的 IP 地址范围。多播 IP 地址范围必须是 D 类地址范围,例如您可以使用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_NAME \
--vpc-network=MULTICAST_PRODUCER_NETWORK \
--group="center" \
--global \
--include-export-ranges=INCLUDE_RANGES
替换以下值:
SPOKE_NAME:spoke 的名称MULTICAST_ADMIN_PROJECT:多播管理员项目的 IDHUB_NAME:由多播管理员创建的 Network Connectivity Center hub 的名称MULTICAST_PRODUCER_NETWORK:您之前创建的多播提供方网络的名称您也可以使用以下格式提供多播提供方网络的 URI:
projects/MULTICAST_ADMIN_PROJECT/global/networks/MULTICAST_PRODUCER_NETWORK。INCLUDE_RANGES:要导出到 hub 的 IP 地址范围的英文逗号分隔列表。默认情况下,spoke 会导出所有子网范围。如需避免与 hub 上的其他 spoke 重叠,您可以指定要导出的子网范围。如果您指定子网范围,请确保包含托管多播提供方的范围以及与其他 spoke 进行通信所需的任何其他范围(例如用于单播流量)。
Google Cloud 禁止 VPC spoke 之间存在子网重叠,如子网路由唯一性中所述。如需详细了解如何使用导出过滤条件来避免重叠,请参阅使用导出过滤条件的 VPC 连接。
使 VPC 网络能够提供多播流量
本部分介绍了使 VPC 网络中的多播提供方能够为给定网域和一个或多个群组范围发送多播流量的步骤。
将多播提供方 VPC 网络添加到网域
本部分介绍了如何通过在多播提供方 VPC 网络和网域之间创建多播提供方关联,将该网络添加到网域。
对您要在其中托管多播提供方的每个可用区,完成以下步骤。
gcloud
如需将多播提供方 VPC 网络添加到网域,请使用 network-services multicast-producer-associations create 命令。
gcloud beta network-services multicast-producer-associations create PRODUCER_ASSOCIATION_NAME \
--multicast-domain-activation="projects/ADMIN_PROJECT/locations/ZONE/multicastDomainActivations/DOMAIN_ACTIVATION_NAME" \
--network=projects/ADMIN_PROJECT/locations/global/networks/MULTICAST_PRODUCER_NETWORK \
--location=ZONE
替换以下值:
PRODUCER_ASSOCIATION_NAME:多播提供方关联的名称ADMIN_PROJECT:多播管理员项目的 IDZONE:管理员在其中激活了多播网域且您在其中托管多播提供方的可用区DOMAIN_ACTIVATION_NAME:由多播管理员创建的网域激活的名称MULTICAST_PRODUCER_NETWORK:提供多播流量的 VPC 网络。这是多播管理员网络或单独的多播提供方网络,具体取决于网域的多播拓扑。
API
如需将多播提供方 VPC 网络添加到网域,请使用 multicastProducerAssociations.create 方法。
POST https://networkservices.googleapis.com/v1beta1/projects/ADMIN_PROJECT/locations/ZONE/multicastProducerAssociations?multicastProducerAssociationId=PRODUCER_ASSOCIATION_NAME
{
"multicastDomainActivation": "projects/ADMIN_PROJECT/locations/ZONE/multicastDomainActivations/DOMAIN_ACTIVATION_NAME",
"network": "projects/ADMIN_PROJECT/locations/global/networks/MULTICAST_PRODUCER_NETWORK"
}
替换以下值:
PRODUCER_ASSOCIATION_NAME:多播提供方关联的名称ADMIN_PROJECT:多播管理员项目的 IDZONE:管理员在其中激活了多播网域且您在其中托管多播提供方的可用区。DOMAIN_ACTIVATION_NAME:由多播管理员创建的网域激活的名称MULTICAST_PRODUCER_NETWORK:提供多播流量的 VPC 网络。这是多播管理员网络或单独的多播提供方网络,具体取决于网域的多播拓扑。
为群组范围激活多播提供方 VPC 网络
本部分介绍了如何为群组范围激活多播提供方 VPC 网络。
对您要在其中提供多播流量的每个多播群组范围和可用区,完成以下步骤。
gcloud
如需为群组范围激活多播提供方 VPC 网络,请使用 network-services multicast-group-producer-activations create 命令。
gcloud beta network-services multicast-group-producer-activations create GROUP_PRODUCER_ACTIVATION_NAME \
--multicast-producer-association="projects/ADMIN_PROJECT/locations/ZONE/multicastProducerAssociations/PRODUCER_ASSOCIATION_NAME" \
--multicast-group-range-activation="projects/ADMIN_PROJECT/locations/ZONE/multicastGroupRangeActivations/GROUP_RANGE_ACTIVATION_NAME" \
--location=ZONE
替换以下值:
GROUP_PRODUCER_ACTIVATION_NAME:多播群组提供方激活的名称ADMIN_PROJECT:多播管理员的项目 IDZONE:要在其中激活多播提供方网络的可用区。相应的多播提供方关联和多播群组范围激活也必须存在于该可用区中。PRODUCER_ASSOCIATION_NAME:您之前创建的多播提供方关联的名称GROUP_RANGE_ACTIVATION_NAME:由多播管理员创建的多播群组范围激活的名称
API
如需为群组范围激活多播提供方 VPC 网络,请使用 multicastGroupProducerActivations.create 方法。
POST https://networkservices.googleapis.com/v1beta1/projects/ADMIN_PROJECT/locations/ZONE/multicastGroupProducerActivations?multicastGroupProducerActivationId=GROUP_PRODUCER_ACTIVATION_NAME
{
"multicastProducerAssociation": "projects/ADMIN_PROJECT/locations/ZONE/multicastProducerAssociations/PRODUCER_ASSOCIATION_NAME",
"multicastGroupRangeActivation": "projects/ADMIN_PROJECT/locations/ZONE/multicastGroupRangeActivations/GROUP_RANGE_ACTIVATION_NAME"
}
替换以下值:
GROUP_PRODUCER_ACTIVATION_NAME:多播群组提供方激活的名称ADMIN_PROJECT:多播管理员的项目 IDZONE:要在其中激活多播提供方网络的可用区。相应的多播提供方关联和多播群组范围激活也必须存在于该可用区中。PRODUCER_ASSOCIATION_NAME:您之前创建的多播提供方关联的名称GROUP_RANGE_ACTIVATION_NAME:由多播管理员创建的多播群组范围激活的名称
创建多播提供方实例
如果您还没有相应的虚拟机实例,请创建一个或多个虚拟机实例来运行提供多播流量的应用。如需详细了解如何创建实例,请参阅创建和启动 Compute Engine 实例。
后续步骤
- 如需查看您创建的多播提供方配置,请参阅查看多播提供方配置。
- 使 VPC 网络能够使用多播流量