5.7. SR-IOV 対応ワークロードの QinQ サポートの設定
QinQ は正式には 802.1Q-in-802.1Q と呼ばれ、IEEE 802.1ad で定義されたネットワーク技術です。IEEE 802.1ad は IEEE 802.1Q-1998 標準を拡張し、すでに 802.1Q でタグ付けされているパケットに追加の 802.1Q タグを導入することで VLAN 機能を強化します。この方法は、VLAN スタッキングまたはダブル VLAN とも呼ばれます。
次のドキュメントのタスクを実行する前に、SR-IOV Network Operator がインストールされている ことを確認してください。
5.7.1. 802.1Q-in-802.1Q サポートについて リンクのコピーリンクがクリップボードにコピーされました!
従来の VLAN セットアップでは、フレームには通常、VLAN-100 などの単一の VLAN タグと、Quality of Service (QoS) ビットやプロトコル情報などのその他のメタデータが含まれます。QinQ は 2 番目の VLAN タグを導入します。ここで、サービスプロバイダーは外部タグを自社用に指定して柔軟性を提供し、内部タグは顧客の VLAN 専用のままになります。
QinQ は、二重の VLAN タグ付けを使用してネストされた VLAN の作成を容易にし、ネットワーク環境内でのトラフィックのより細かいセグメンテーションと分離を可能にします。このアプローチは、トラフィックの分離と隔離を確保しながら、共通のインフラストラクチャーを介して複数の顧客に VLAN ベースのサービスを提供する必要があるサービスプロバイダーネットワークで特に役立ちます。
次の図は、OpenShift Container Platform が SR-IOV と QinQ を使用して、コンテナー化されたワークロードの高度なネットワークセグメンテーションと分離を実現する方法を示しています。
この図は、SR-IOV をサポートするワーカーノードでダブル VLAN タグ付け (QinQ) がどのように機能するかを示しています。Pod namespace ext0
にある SR-IOV Virtual Function (VF) は、VLAN ID と VLAN プロトコルを使用して SR-IOVContainer Network Interface (CNI) によって設定されます。これは S-tag に対応します。Pod 内では、VLAN CNI がプライマリーインターフェイス ext0
を使用してサブインターフェイスを作成します。このサブインターフェイスは、C タグに対応する 802.1Q プロトコルを使用して内部 VLAN ID を追加します。
ここでは、QinQ がネットワーク内でより細かいトラフィックのセグメンテーションと分離を可能にする方法を示しています。右側にはイーサネットフレーム構造の詳細が示されており、VLAN タグ、EtherType、IP、TCP、およびペイロードセクションの両方が含まれていることが強調されています。QinQ は、トラフィックの分離と隔離を確保しながら、共有インフラストラクチャーを介して複数の顧客に VLAN ベースのサービスを提供することを容易にします。
OpenShift Container Platform SR-IOV ソリューションは、SriovNetwork
カスタムリソース (CR) での VLAN プロトコルの設定をすでにサポートしています。Virtual Function (VF) はこのプロトコルを使用して、外部タグとも呼ばれる VLAN タグを設定できます。その後、Pod は VLAN CNI プラグインを使用して内部タグを設定できます。
NIC | 802.1ad/802.1Q | 802.1Q/802.1Q |
---|---|---|
Intel X710 | いいえ | サポート対象 |
Intel E810 | サポート対象 | サポート対象 |
Mellanox | いいえ | サポート対象 |
5.7.2. SR-IOV 対応ワークロードの QinQ サポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - SR-IOV Network Operator がインストールされている。
手順
次の内容を使用して、
sriovnetpolicy-810-sriov-node-network.yaml
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
SriovNetworkNodePolicy
オブジェクトを作成します。oc create -f sriovnetpolicy-810-sriov-node-network.yaml
$ oc create -f sriovnetpolicy-810-sriov-node-network.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 別のターミナルウィンドウを開き、次のコマンドを実行して、
openshift-sriov-network-operator
namespace で指定されたノードの SR-IOV ネットワークノード状態の同期ステータスを監視します。watch -n 1 'oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath="{.status.syncStatus}"'
$ watch -n 1 'oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath="{.status.syncStatus}"'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 同期ステータスが
InProgress
からSucceeded
に変更されたことを示します。SriovNetwork
オブジェクトを作成し、インフラストラクチャーに属する S-tag またはService Tag
と呼ばれる外部 VLAN を設定します。重要スイッチのトランクインターフェイスで VLAN を設定する必要があります。さらに、QinQ タグ付けをサポートするために、一部のスイッチをさらに設定することを推奨します。
次の内容を使用して、
nad-sriovnetwork-1ad-810.yaml
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してオブジェクトを作成します。
oc create -f nad-sriovnetwork-1ad-810.yaml
$ oc create -f nad-sriovnetwork-1ad-810.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
内部 VLAN を使用して
NetworkAttachmentDefinition
オブジェクトを作成します。内部 VLAN はネットワーク機能に属しているため、多くの場合、C-tag またはCustomer Tag
と呼ばれます。次の内容を使用して、
nad-cvlan100.yaml
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Pod 内の VF インターフェイスを指定します。Pod アノテーションに名前が設定されていないため、デフォルト名は
net1
になります。
以下のコマンドを実行して、YAML ファイルを適用します。
oc apply -f nad-cvlan100.yaml
$ oc apply -f nad-cvlan100.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次の手順に従って、ノード上で QinQ がアクティブであることを確認します。
次の内容を使用して、
test-qinq-pod.yaml
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してテスト Pod を作成します。
oc create -f test-qinq-pod.yaml
$ oc create -f test-qinq-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod が存在するターゲットノードでデバッグセッションに入り、次のコマンドを実行してネットワークインターフェイス
ens5f0
に関する情報を表示します。oc debug node/my-cluster-node -- bash -c "ip link show ens5f0"
$ oc debug node/my-cluster-node -- bash -c "ip link show ens5f0"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力の
vlan protocol 802.1ad
ID は、インターフェイスがプロトコル 802.1ad (QinQ) による VLAN タグ付けをサポートしていることを示します。VLAN ID は 171 です。