啟用虛擬私有雲網路,以取用多點傳播流量

本頁說明如何在Google Cloud 中設定資源,讓 VPC 網路中的多播消費者可以接收來自特定多播網域和一或多個群組範圍的多播流量。

事前準備

開始執行本頁面的程序之前,請先完成本節所述的必要條件。

確認多點播送網域、群組範圍和製作人設定已完成

確認您要取用多點傳播流量的多點傳播網域、多點傳播群組範圍和多點傳播生產者設定已完成,如多點傳播設定總覽所述。如有需要,請與網域的多點播送管理員聯絡。

設定專案

將 gcloud CLI 設為使用多播消費者虛擬私有雲網路的專案。或者,您也可以在下列程序中,為每個指令傳遞 --project=PROJECT 旗標。

    gcloud config set project PROJECT

PROJECT 替換為專案 ID。

啟用 API

如果尚未啟用,請啟用下列 API。

您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果沒有這項權限,請要求 Identity and Access Management (IAM) 管理員授予您「Service Usage Admin」(服務用量管理員) (roles/serviceusage.serviceUsageAdmin) 角色。

  1. 如要建立多點傳播資源,請啟用 networkservices API:

        gcloud services enable networkservices.googleapis.com
    
  2. 如要建立 Network Connectivity Center 虛擬私有雲輪輻,請啟用 networkconnectivity API:

        gcloud services enable networkconnectivity.googleapis.com
    

必要的角色

如要取得設定多點播送消費者資源所需的權限,請要求管理員授予下列 IAM 角色:

  • 如要建立及管理網路資源:專案的 Compute 網路管理員 (compute.networkAdmin)
  • 如要建立及管理防火牆規則: 專案的 Compute 安全性管理員 (compute.securityAdmin)
  • 如要建立 Network Connectivity Center 輪輻: 專案的輪輻管理員 (networkconnectivity.spokeAdmin)
  • 如要向與多點傳播網域相關聯的中心提議 Network Connectivity Center 輪輻: 群組使用者 (networkconnectivity.groupUser) 在多點傳播管理員專案中
  • 如要建立多點傳播資源:專案的「多點傳播管理員」角色 (networkservices.multicastAdmin)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

建立虛擬私有雲網路並新增至中樞

如果多播網域使用 Network Connectivity Center 星狀拓撲,且有多個獨立的多播消費者虛擬私有雲網路,則必須完成本節中的步驟。

如果多點傳播網域使用單一 VPC 網路拓撲,則可以略過本節,直接按照步驟啟用 VPC 網路以取用多點傳播流量

Create a VPC network

本節說明如何建立虛擬私有雲 (VPC) 網路,以取用多點播送流量。

如要進一步瞭解如何建立虛擬私有雲網路,請參閱「建立及管理虛擬私有雲網路」。

gcloud

  1. 使用 compute networks create 指令建立虛擬私有雲網路。

    gcloud compute networks create MULTICAST_CONSUMER_NETWORK --subnet-mode=custom
    

    MULTICAST_CONSUMER_NETWORK 替換為多播消費者網路的名稱。

  2. 使用 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

如要建立防火牆規則,允許從多播製作人網路輸入多播流量至虛擬私有雲網路,請使用 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:多播供應商虛擬私有雲網路的 CIDR 範圍,用於為多播供應商分配 IP 位址。您也可以省略 --source-ranges 標記,將連入來源設為任何 IPv4 位址 (0.0.0.0/0)。

  • MULTICAST_GROUP_IP_RANGES:多點傳播群組的 CIDR 範圍,多點傳播供應者會將流量傳送至這些群組。這必須是 D 類位址範圍,例如您可以使用 224.0.0.0/4 允許所有多點播送流量。

允許輸入 IGMP 查詢

gcloud

如要建立防火牆規則,允許來自多播用戶端網路範圍的輸入 IGMP 查詢流量進入多播用戶端 VPC 網路,請使用 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 JOINLEAVE 訊息。

所有虛擬私有雲網路都有預設的 IPv4 允許輸出規則,優先順序最低 (65535)。如果沒有優先順序較高的規則明確封鎖輸出流量,則不需要完成這個步驟。詳情請參閱「隱含規則」。

gcloud

如要建立防火牆規則,允許從多點播送消費者虛擬私有雲網路傳送多點播送 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,允許所有多點傳播流量。

將虛擬私有雲網路新增至 Network Connectivity Center 中樞

本節說明如何將虛擬私有雲網路新增至多播管理員建立的 Network Connectivity Center 中樞。如要新增網路,請在「edge」群組中建立虛擬私有雲輪輻。

詳情請參閱「星狀拓撲」和「建立虛擬私有雲 Spoke」一文。

gcloud

  1. 如要將虛擬私有雲網路新增為中樞的邊緣輪輻,請使用 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:多點傳播管理員專案的 ID
    • HUB:多播管理員建立的 Network Connectivity Center 中樞名稱。多播用戶虛擬私有雲網路必須與多播管理員和多播供應商虛擬私有雲網路連結至同一個中樞。如有必要,請與多點傳播管理員聯絡,詢問中繼站名稱。

    • MULTICAST_CONSUMER_NETWORK:先前建立的多播消費者網路名稱

      或者,您也可以使用下列格式提供多點播送消費者網路的 URI: projects/MULTICAST_CONSUMER_PROJECT/global/networks/MULTICAST_CONSUMER_NETWORK

    • INCLUDE_RANGES:以半形逗號分隔的 IP 位址範圍清單,這些範圍會匯出至中樞。

      根據預設,子網路會匯出所有子網路範圍。為避免與中樞的其他輪輻重疊,您可以指定要匯出的子網路範圍。如果您指定子網路範圍,請務必納入代管多點播送消費者和與中心群組中輪輻通訊所需的任何其他範圍,例如單點播送流量。

      Google Cloud 禁止 VPC 輪輻間的子網路重疊,如「子網路路徑的唯一性」一節所述。如要進一步瞭解如何使用匯出篩選器避免重疊,請參閱「使用匯出篩選器的虛擬私有雲連線」。

  2. 聯絡多播管理員,通知對方您已向中樞建議虛擬私有雲輪輻。

    如果中樞位於其他專案,多播管理員必須明確核准輪輻,輪輻才會啟用 (除非多播管理員已將您的專案新增為自動接受專案)。

    如要查看輪輻建立後的狀態,請參閱「查看虛擬私有雲輪輻的狀態」。

啟用虛擬私有雲網路,以取用多點傳播流量

本節說明啟用虛擬私有雲網路中多播消費者的必要步驟,以便接收來自特定網域和一或多個群組範圍的多播流量。

將多點播送消費者虛擬私有雲網路新增至網域

本節說明如何建立網路與網域間的組播消費者關聯,將組播消費者虛擬私有雲網路新增至網域。

請針對要代管多點播送消費者的每個區域完成下列步驟。

gcloud

如要將多點播送消費者虛擬私有雲網路新增至網域,請使用 network-services multicast-consumer-associations create 指令

   gcloud 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:多點傳播管理員專案的 ID
  • ZONE:管理員啟用多點傳播網域的區域,您需要在該區域代管多點傳播消費者
  • DOMAIN_ACTIVATION_NAME:多點傳播管理員建立的網域啟用名稱
  • MULTICAST_CONSUMER_PROJECTMULTICAST_CONSUMER_NETWORK:使用多點播送流量的專案和網路。視網域的多點傳播拓撲而定,可以是多點傳播管理員專案和網路,也可以是獨立的多點傳播消費者專案和網路。

API

如要將多點播送消費者虛擬私有雲網路新增至網域,請使用 multicastConsumerAssociations.create 方法

POST https://networkservices.googleapis.com/v1/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:多點傳播管理員專案的 ID
  • ZONE:管理員啟用多點傳播網域的區域,您需要在該區域中代管多點傳播消費者。
  • DOMAIN_ACTIVATION_NAME:多點傳播管理員建立的網域啟用名稱
  • MULTICAST_CONSUMER_PROJECTMULTICAST_CONSUMER_NETWORK:使用多點播送流量的專案和網路。視網域的多點傳播拓撲而定,可以是多點傳播管理員專案和網路,也可以是獨立的多點傳播消費者專案和網路。

為群組範圍啟用多點傳播用戶虛擬私有雲網路

本節說明如何為群組範圍啟用多點傳播用戶虛擬私有雲網路。

請針對要取用多播流量的每個多播群組範圍和區域,完成下列步驟。

完成這個步驟後,網路中的多播消費者就能加入指定群組範圍內的多播群組 IP 位址,前提是他們已設定 IGMP

gcloud

如要為多點傳播群組範圍啟用多點傳播用戶虛擬私有雲網路,請使用 network-services multicast-group-consumer-activations create 指令

   gcloud 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:多點傳播管理員專案的 ID

  • GROUP_RANGE_ACTIVATION_NAME:多點傳播管理員建立的群組範圍啟用作業名稱。

  • --[no-]enable-logging:選用,決定是否啟用群組成員資格事件記錄

    • 如要啟用記錄功能,請使用 --enable-logging
    • (預設) 如要停用記錄功能,請使用 --no-enable-logging

API

如要為多點傳播群組範圍啟用多點傳播用戶虛擬私有雲網路,請使用 multicastGroupConsumerActivations.create 方法

POST https://networkservices.googleapis.com/v1/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:多點傳播管理員專案的 ID
  • GROUP_RANGE_ACTIVATION_NAME:多點傳播管理員建立的群組範圍啟用作業名稱
  • LOGGING_ENABLED:決定是否啟用群組成員記錄事件記錄
    • 如要啟用記錄功能,請設為 true
    • (預設) 如要停用記錄功能,請設為 false

建立多點傳播消費者執行個體

如果還沒建立,請先建立一或多個 Compute Engine 執行個體,執行會耗用多點傳播流量的應用程式。如要建立多點傳播消費者執行個體,或將現有執行個體設為多點傳播消費者,請參閱「設定多點傳播消費者執行個體」。

後續步驟