VPC ネットワークでマルチキャスト トラフィックを使用できるようにする

このページでは、VPC ネットワーク内のマルチキャスト コンシューマーが、特定のマルチキャスト ドメインと 1 つ以上のグループ範囲からマルチキャスト トラフィックを受信できるように、Google Cloud でリソースを構成する際に必要な手順について説明します。

始める前に

このページの手順を始める前に、このセクションで説明する前提条件を満たしている必要があります。

マルチキャスト ドメイン、グループ範囲、プロデューサーの構成が完了していることを確認する

マルチキャスト構成の概要の説明に従って、マルチキャスト トラフィックを使用するマルチキャスト ドメイン、マルチキャスト グループ範囲、マルチキャスト プロデューサーの構成が完了していることを確認します。必要に応じて、ドメインのマルチキャスト管理者に連絡します。

プロジェクトを設定する

マルチキャスト コンシューマー VPC ネットワークのプロジェクトを使用するように gcloud CLI を設定します。次の手順で各コマンドに --project=PROJECT フラグを渡すこともできます。

    gcloud config set project PROJECT

PROJECT は、プロジェクトの ID に置き換えます。

API を有効にする

まだ有効にしていない場合は、次の API を有効にします。

API を有効にするには、serviceusage.services.enable 権限が必要です。この権限がない場合は、Identity and Access Management(IAM)管理者に Service Usage 管理者(roles/serviceusage.serviceUsageAdmin)ロールを付与するよう依頼してください。

  1. マルチキャスト リソースを作成するには、networkservices API を有効にします。

        gcloud services enable networkservices.googleapis.com
    
  2. Network Connectivity Center VPC スポークを作成するには、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)。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

VPC ネットワークを作成してハブに追加する

マルチキャスト ドメインが、個別のマルチキャスト コンシューマー VPC ネットワークが存在する Network Connectivity Center スタートポロジを使用している場合は、このセクションの手順を完了する必要があります。

マルチキャスト ドメインが単一の VPC ネットワーク トポロジを使用している場合は、このセクションをスキップして、VPC ネットワークでマルチキャスト トラフィックを使用できるようにするに直接進みます。

VPC ネットワークの作成

このセクションでは、マルチキャスト トラフィックを使用するために Virtual Private Cloud(VPC)ネットワークを作成する方法について説明します。

VPC ネットワークの作成の詳細については、VPC ネットワークを作成して管理するをご覧ください。

gcloud

  1. compute networks create コマンドを使用して VPC ネットワークを作成します。

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

    MULTICAST_CONSUMER_NETWORK は、マルチキャスト コンシューマー ネットワークの名前に置き換えます。

  2. compute networks subnets create コマンドを使用して、マルチキャスト コンシューマーをホストするサブネットを 1 つ以上追加します。

    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 を使用します。特定のポートを通過するトラフィックにファイアウォール ルールが適用されるプロトコルの後に、ポートまたはポート範囲を指定できます。ポートまたはポート範囲が指定されていない場合、すべての範囲の接続が適用されます。

    たとえば、ポート 1234 経由のマルチキャスト トラフィックを許可するには、--rules=udp:1234 を指定します。

  • MULTICAST_PRODUCER_RANGE: マルチキャスト プロデューサーの IP アドレスの割り振りに使用される、マルチキャスト プロデューサー VPC ネットワークの CIDR 範囲。--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 アドレスを指定します。
  • IGMP を指定するには、--rules=2 を使用します。
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: マルチキャスト コンシューマーの IP アドレスの割り振りに使用されるマルチキャスト コンシューマー ネットワークの CIDR 範囲。

下り(外向き)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 ハブに追加する

このセクションでは、マルチキャスト管理者が作成した Network Connectivity Center ハブに VPC ネットワークを追加する方法について説明します。ネットワークを追加するには、エッジグループに VPC スポークを作成します。

詳細については、Network Connectivity Center のドキュメントのスタートポロジVPC スポークを作成するをご覧ください。

gcloud

  1. VPC ネットワークをエッジスポークとしてハブに追加するには、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: エッジスポークの名前
    • MULTICAST_ADMIN_PROJECT: マルチキャスト管理者プロジェクトの ID
    • HUB: マルチキャスト管理者が作成した Network Connectivity Center ハブの名前
    • MULTICAST_CONSUMER_NETWORK: 前に作成したマルチキャスト コンシューマー ネットワークの名前

      代わりに、projects/MULTICAST_CONSUMER_PROJECT/global/networks/MULTICAST_CONSUMER_NETWORK の形式でマルチキャスト コンシューマー ネットワークの URI を指定することもできます。

    • INCLUDE_RANGES: ハブにエクスポートする IP アドレス範囲のカンマ区切りリスト。

      デフォルトでは、スポークはすべてのサブネット範囲をエクスポートします。ハブ上の他のスポークとの重複を避けるため、エクスポートするサブネット範囲を指定できます。サブネット範囲を指定する場合は、マルチキャスト コンシューマーをホストする範囲と、ユニキャスト トラフィックなど、センター グループのスポークとの通信に必要なその他の範囲を含めるようにしてください。

      Google Cloud は、サブネット ルートの一意性で説明されているように、VPC スポーク間のサブネットの重複を禁止します。エクスポート フィルタを使用して重複を回避する方法については、エクスポート フィルタを使用した VPC 接続をご覧ください。

  2. マルチキャスト管理者に連絡して、ハブに VPC スポークを提案したことを通知します。

    ハブが別のプロジェクトにある場合、マルチキャスト管理者がプロジェクトを自動承諾プロジェクトとして追加していない限り、マルチキャスト管理者はスポークがアクティブになる前に明示的に承認する必要があります。

    スポークの作成後にステータスを確認するには、VPC スポークのステータスを確認するをご覧ください。

VPC ネットワークでマルチキャスト トラフィックを使用できるようにする

このセクションでは、VPC ネットワーク内のマルチキャスト コンシューマーが特定のドメインと 1 つ以上のグループ範囲からマルチキャスト トラフィックを受信できるようにするために必要な手順について説明します。

マルチキャスト コンシューマー 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: マルチキャスト管理者プロジェクトの ID
  • ZONE: 管理者がマルチキャスト ドメインを有効にしたゾーン。ここでマルチキャスト コンシューマーをホストする必要があります
  • DOMAIN_ACTIVATION_NAME: マルチキャスト管理者が作成したドメインの有効化の名前
  • MULTICAST_CONSUMER_PROJECTMULTICAST_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: マルチキャスト管理者プロジェクトの ID
  • ZONE: 管理者がマルチキャスト ドメインを有効にしたゾーン。マルチキャスト コンシューマーをホストする必要があります。
  • DOMAIN_ACTIVATION_NAME: マルチキャスト管理者が作成したドメインの有効化の名前
  • MULTICAST_CONSUMER_PROJECTMULTICAST_CONSUMER_NETWORK: マルチキャスト トラフィックを使用するプロジェクトとネットワーク。ドメインのマルチキャスト トポロジに応じて、マルチキャスト管理者プロジェクトとネットワーク、または個別のマルチキャスト コンシューマー プロジェクトとネットワークのいずれかになります。

グループ範囲のマルチキャスト コンシューマー VPC ネットワークを有効にする

このセクションでは、グループ範囲のマルチキャスト コンシューマー VPC ネットワークを有効にする方法について説明します。

マルチキャスト トラフィックを使用するマルチキャスト グループ範囲とゾーンごとに、次の手順を完了します。

この手順を完了すると、IGMP が構成されている場合、ネットワーク内のマルチキャスト コンシューマーは、指定されたグループ範囲内のマルチキャスト グループ IP アドレスに参加できます。

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: マルチキャスト管理者プロジェクトの ID

  • GROUP_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: マルチキャスト管理者プロジェクトの ID
  • GROUP_RANGE_ACTIVATION_NAME: マルチキャスト管理者が作成したグループ範囲の有効化の名前
  • LOGGING_ENABLED: グループ メンバーシップのイベント ロギングが有効かどうかを指定します。
    • ロギングを有効にするには、true に設定します。
    • (デフォルト)ロギングを無効にするには、false に設定します。

マルチキャスト コンシューマー インスタンスを作成する

まだ作成していない場合は、マルチキャスト トラフィックを使用するアプリケーションを実行する 1 つ以上の VM インスタンスを作成します。マルチキャスト コンシューマー インスタンスの IGMP を構成するの説明に沿って、新規または既存のインスタンスで IGMP を構成します。インスタンスの作成の詳細については、Compute Engine インスタンスの作成と開始をご覧ください。

次のステップ