6.4. オールマルチキャストモード


特にルートレスアプリケーションのコンテキストでは、オールマルチキャストモードを有効にすることが重要です。このモードを有効にしない場合は、Pod のセキュリティーコンテキスト制約 (SCC) に NET_ADMIN ケイパビリティーを付与する必要があります。NET_ADMIN ケイパビリティーを使用して、特定の要件を超える変更を行う権限を Pod に付与すると、セキュリティーの脆弱性が露呈する可能性があります。

チューニング CNI プラグインは、オールマルチキャストモードを含め、いくつかのインターフェイス属性の変更をサポートしています。このモードを有効にすると、SR-IOV ネットワークデバイス上で設定された Virtual Function (VF) 上で実行されているアプリケーションは、接続されている物理機能が同じか異なるかにかかわらず、他の VF 上のアプリケーションからマルチキャストトラフィックを受信できます。

6.4.1. SR-IOV ネットワーク上でオールマルチキャストモードを有効にする

SR-IOV インターフェイスでオールマルチキャストモードを有効にするには、次の方法があります。

  • SriovNetwork リソースの metaPlugins パラメーターにチューニング設定を追加します。
  • チューニング設定で、allmulti フィールドを true に設定します。

    注記

    信頼を有効にして Virtual Function (VF) を作成していることを確認してください。

SR-IOV Network Operator は追加ネットワークの定義を管理します。作成する追加ネットワークを指定する場合、SR-IOV Network Operator は NetworkAttachmentDefinition カスタムリソース (CR) を自動的に作成します。

注記

SR-IOV Network Operator が管理する NetworkAttachmentDefinition カスタムリソースは編集しないでください。これを実行すると、追加ネットワークのネットワークトラフィックが中断する可能性があります。

このガイダンスに従って、SR-IOV ネットワーク上でオールマルチキャストモードを有効にします。

前提条件

  • OpenShift Container Platform CLI (oc) がインストールされている。
  • cluster-admin 権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • SR-IOV Network Operator がインストールされている。
  • 適切な SriovNetworkNodePolicy オブジェクトを設定している。

手順

  1. Mellanox ConnectX-5 デバイスの SriovNetworkNodePolicy オブジェクトを定義する次の設定を使用して、YAML ファイルを作成します。YAML ファイルを sriovnetpolicy-mlx.yaml として保存します。

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriovnetpolicy-mlx
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      nicSelector:
        deviceID: "1017"
        pfNames:
          - ens8f0np0#0-9
        rootDevices:
          - 0000:d8:00.0
        vendor: "15b3"
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      numVfs: 10
      priority: 99
      resourceName: resourcemlx
    Copy to Clipboard Toggle word wrap
  2. オプション: SR-IOV 対応クラスターノードにラベルが付けられていない場合は、SriovNetworkNodePolicy.Spec.NodeSelector ラベルを追加します。ノードのラベル付けの詳細は、「ノードのラベルを更新する方法について」を参照してください。
  3. 以下のコマンドを実行して SriovNetworkNodePolicy オブジェクトを作成します。

    $ oc create -f sriovnetpolicy-mlx.yaml
    Copy to Clipboard Toggle word wrap

    設定の更新を適用すると、sriov-network-operator namespace 内のすべての Pod が自動的に Running ステータスに移行します。

  4. 次のコマンドを実行して、enable-allmulti-test namespace を作成します。

    $ oc create namespace enable-allmulti-test
    Copy to Clipboard Toggle word wrap
  5. 追加の SR-IOV ネットワークアタッチメント用の SriovNetwork カスタムリソース (CR) を作成し、次の CR YAML の例のように metaPlugins 設定を挿入して、ファイルを sriov-enable-all-multicast.yaml として保存します。

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: enableallmulti 
    1
    
      namespace: openshift-sriov-network-operator 
    2
    
    spec:
      resourceName: enableallmulti 
    3
    
      networkNamespace: enable-allmulti-test 
    4
    
      ipam: '{ "type": "static" }' 
    5
    
      capabilities: '{ "mac": true, "ips": true }' 
    6
    
      trust: "on" 
    7
    
      metaPlugins : | 
    8
    
        {
          "type": "tuning",
          "capabilities":{
            "mac":true
          },
          "allmulti": true
          }
        }
    Copy to Clipboard Toggle word wrap
    1
    オブジェクトの名前を指定します。SR-IOV Network Operator は、同じ名前を持つ NetworkAttachmentDefinition オブジェクトを作成します。
    2
    SR-IOV Network Operator がインストールされている namespace を指定します。
    3
    この追加ネットワークの SR-IOV ハードウェアを定義する SriovNetworkNodePolicy オブジェクトの spec.resourceName パラメーター値を指定します。
    4
    SriovNetwork オブジェクトのターゲット namespace を指定します。ターゲット namespace の Pod のみを追加ネットワークに割り当てることができます。
    5
    IPAM CNI プラグインの設定オブジェクトを YAML ブロックスケーラーとして指定します。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。
    6
    オプション: 追加のネットワークの機能を設定します。IP アドレスのサポートを有効にするには、"{ "ips": true }" を指定できます。または、MAC アドレスのサポートを有効にするには "{ "mac": true }" を指定します。
    7
    Virtual Function の信頼モードを指定します。これは "on" に設定する必要があります。
    8
    metaPlugins パラメーターを使用して、デバイスにケイパビリティーをさらに追加します。このユースケースでは、type フィールドを tuning に設定し、allmulti フィールドを追加して true に設定します。
  6. 次のコマンドを実行して、SriovNetwork リソースを作成します。

    $ oc create -f sriov-enable-all-multicast.yaml
    Copy to Clipboard Toggle word wrap

NetworkAttachmentDefinition CR の検証

  • 以下のコマンドを実行して、SR-IOV Network Operator が NetworkAttachmentDefinition CR を作成していることを確認します。

    $ oc get network-attachment-definitions -n <namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <namespace> を、SriovNetwork オブジェクトで指定した networkNamespace の値に置き換えます。この例では、enable-allmulti-test です。予想される出力には、NAD CR の名前と作成後の経過時間 (分) が表示されます。
    注記

    SR-IOV Network Operator が CR を作成するまでに遅延が生じる可能性があります。

    1. 次のコマンドを実行して、SR-IOV ネットワークリソースに関する情報を表示します。

      $ oc get sriovnetwork -n openshift-sriov-network-operator
      Copy to Clipboard Toggle word wrap

追加の SR-IOV ネットワークアタッチメントの検証

チューニング CNI が正しく設定されていること、および追加の SR-IOV ネットワークアタッチメントが割り当てられていることを確認するには、次の手順を実行します。

  1. Pod CR を作成します。次のサンプル YAML を examplepod.yaml という名前のファイルに保存します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: samplepod
      namespace: enable-allmulti-test
      annotations:
        k8s.v1.cni.cncf.io/networks: |-
          [
            {
              "name": "enableallmulti",  
    1
    
              "mac": "0a:56:0a:83:04:0c", 
    2
    
              "ips": ["10.100.100.200/24"] 
    3
    
           }
          ]
    spec:
      containers:
      - name: podexample
        image: centos
        command: ["/bin/bash", "-c", "sleep INF"]
        securityContext:
          runAsUser: 2000
          runAsGroup: 3000
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
    Copy to Clipboard Toggle word wrap
    1
    SR-IOV network attachment definition CR の名前を指定します。
    2
    オプション: SR-IOV network attachment definition CR で定義されるリソースタイプから割り当てられる SR-IOV デバイスの MAC アドレスを指定します。この機能を使用するには、SriovNetwork オブジェクトで {"mac": true} も指定する必要があります。
    3
    オプション: SR-IOV ネットワーク割り当て定義 CR で定義されるリソースタイプから割り当てられる SR-IOV デバイスの IP アドレスを指定します。IPv4 と IPv6 アドレスの両方がサポートされます。この機能を使用するには、SriovNetwork オブジェクトで { "ips": true } も指定する必要があります。
  2. 以下のコマンドを実行して Pod を作成します。

    $ oc apply -f examplepod.yaml
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、Pod が作成されていることを確認します。

    $ oc get pod -n enable-allmulti-test
    Copy to Clipboard Toggle word wrap

    出力例

    NAME       READY   STATUS    RESTARTS   AGE
    samplepod  1/1     Running   0          47s
    Copy to Clipboard Toggle word wrap

  4. 次のコマンドを実行して、Pod にログインします。

    $ oc rsh -n enable-allmulti-test samplepod
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、Pod に関連付けられているすべてのインターフェイスをリスト表示します。

    sh-4.4# ip link
    Copy to Clipboard Toggle word wrap

    出力例

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8901 qdisc noqueue state UP mode DEFAULT group default
        link/ether 0a:58:0a:83:00:10 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
    1
    
    3: net1@if24: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
        link/ether ee:9b:66:a4:ec:1d brd ff:ff:ff:ff:ff:ff link-netnsid 0 
    2
    Copy to Clipboard Toggle word wrap

    1
    eth0@if22 は、プライマリーインターフェイスです。
    2
    net1@if24 は、オールマルチキャストモード (ALLMULTI フラグ) をサポートするネットワーク接続定義で設定されたセカンダリーインターフェイスです。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat