This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.16.3. Intel FPGA PAC N3000 向けの OpenNESS Operator のプログラミング
Intel FPGA PAC N3000 が vRAN 5G ビットストリームでプログラムされると、ハードウェアは vRAN 5G ビットストリームで Intel FPGA PAC N3000 を公開します。このビットストリームは、vRAN ワークロードの FEC を加速するために使用される SR-IOV (Single Root I/O Virtualization) 仮想機能 (VF) デバイスを公開します。
クラスター管理者は、OpenShift Container Platform CLI または Web コンソールを使用して Intel FPGA PAC N3000 の OpenNESS Operator をインストールできます。
16.3.1. vRAN ビットストリームを持つ N3000 のプログラミング
クラスター管理者は、vRAN 5G ビットストリームを持つ Intel FPGA PAC N3000 をプログラムできます。このビットストリームは、vRAN ワークロードの前方誤り訂正 (FEC) を加速するために使用される SR-IOV (Single Root I/O Virtualization) 仮想機能 (VF) デバイスを公開します。
前方誤り訂正 (FEC) のロールは、メッセージ内の特定のビットが失われたり、文字化けしている可能性がある転送エラーの修正です。伝送メディアのノイズ、干渉、または信号強度の低下により、メッセージが失われたり文字化けしたりする可能性があります。FEC を使用しないと、文字化けしたメッセージは、ネットワーク負荷に加え、スループットとレイテンシーの両方に影響を与える必要があります。
前提条件
- Intel FPGA PAC N3000 カード
- RT カーネル設定のある Performance Addon Operator
- Intel FPGA PAC N3000 向け OpenNESS Operator でインストールされる 1 つまたは複数のノード
cluster-admin
権限を持つユーザーとしてログインします。注記すべてのコマンドは
vran-acceleration-operators
namespace で実行されます。
手順
vran-acceleration-operators
プロジェクトに切り替えます。$ oc project vran-acceleration-operators
Pod が実行されていることを確認します。
$ oc get pods
出力例
NAME READY STATUS RESTARTS AGE fpga-driver-daemonset-8xz4c 1/1 Running 0 15d fpgainfo-exporter-vhvdq 1/1 Running 1 15d N3000-controller-manager-b68475c76-gcc6v 2/2 Running 1 15d N3000-daemonset-5k55l 1/1 Running 1 15d N3000-discovery-blmjl 1/1 Running 1 15d N3000-discovery-lblh7 1/1 Running 1 15d
以下のセクションでは、インストールされた Pod に関する情報を提供します。
-
fpga-driver-daemonset
は必要な Open Programmable Accelerator Engine (OPAE) ドライバーを提供し、読み込みます。 -
fpgainfo-exporter
は Prometheus に N3000 Telemetry データを提供します。 -
N3000-controller-manager
は N3000Node CR をクラスターに適用し、すべてのオペランドコンテナーを管理します。 -
N3000-daemonset
が主要なワーカーアプリケーションです。これは各ノードの CR の変更を監視し、変更に基づいて動作します。このデーモンに実装されたロジックは、カードの FPGA ユーザーイメージおよび NIC ファームウェアの更新を行います。また、ノードをドレイン (解放) し、更新で必要になる場合に提出します。 -
N3000-discovery
は、デバイスが存在する場合にワーカーノードがインストールされ、ラベルのワーカーノードがある場合に N3000 Accelerator デバイスを検出します。
-
Intel FPGA PAC N3000 カードを含むすべてのノードを取得します。
$ oc get n3000node
出力例
NAME FLASH node1 NotRequested
各ノードのカードに関する情報を取得します。
$ oc get n3000node node1 -o yaml
出力例
status: conditions: - lastTransitionTime: "2020-12-15T17:09:26Z" message: Inventory up to date observedGeneration: 1 reason: NotRequested status: "False" type: Flashed fortville: - N3000PCI: 0000:1b:00.0 NICs: - MAC: 64:4c:36:11:1b:a8 NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1a:00.0 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking - MAC: 64:4c:36:11:1b:a9 NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1a:00.1 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking - MAC: 64:4c:36:11:1b:ac NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1c:00.0 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking - MAC: 64:4c:36:11:1b:ad NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1c:00.1 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking fpga: - PCIAddr: 0000:1b:00.0 1 bitstreamId: "0x23000410010310" 2 bitstreamVersion: 0.2.3 deviceId: "0x0b30"
現在の
bitstreamId
、PCIAddr
、名前、およびdeviceId
を 0x パディングなしで保存します。$ oc get n3000node -o json
Intel FPGA PAC N3000 カードのユーザービットストリームを更新します。
以下の例のように
n3000-cluster.yaml
という名前のファイルを作成し、N3000 クラスターリソースをプログラムに定義します。apiVersion: fpga.intel.com/v1 kind: N3000Cluster metadata: name: n3000 1 namespace: vran-acceleration-operators spec: nodes: - nodeName: "node1" 2 fpga: - userImageURL: "http://10.10.10.122:8000/pkg/20ww27.5-2x2x25G-5GLDPC-v1.6.1-3.0.0_unsigned.bin" 3 PCIAddr: "0000:1b:00.0" 4 checksum: "0b0a87b974d35ea16023ceb57f7d5d9c" 5
N3000 デーモンは、Open Programmable Acceleration Engine (OPAE) ツールを使用して FPGA ユーザービットストリームを更新し、PCI デバイスをリセットします。FPGA ユーザービットストリームの更新では、カードごとに最大 40 分かかる場合があります。複数のノードでカードをプログラミングする場合、プログラミングは一度に 1 つのノードで設定されます。
更新を適用して、ビットストリームでカードのプログラミングを開始します。
$ oc apply -f n3000-cluster.yaml
N3000 デーモンは、適切な 5G FEC ユーザービットストリーム (この例では
20ww27.5-2x2x25G-5GLDPC-v1.6.1-3.0.0_unsigned.bin
などがプロビジョニングされた後、および CR が作成された後に) ビットストリームのプログラミングを開始します。ステータスを確認します。
oc get n3000node
出力例
NAME FLASH node1 InProgress
ログを確認します。
N3000 デーモンの Pod 名を判別します。
$ oc get pod -o wide | grep n3000-daemonset | grep node1
出力例
n3000-daemonset-5k55l 1/1 Running 0 15d
ログを表示します。
$ oc logs n3000-daemonset-5k55l
出力例
... {"level":"info","ts":1608054338.8866854,"logger":"daemon.drainhelper.cordonAndDrain()","msg":"node drained"} {"level":"info","ts":1608054338.8867319,"logger":"daemon.drainhelper.Run()","msg":"worker function - start"} {"level":"info","ts":1608054338.9003832,"logger":"daemon.fpgaManager.ProgramFPGAs","msg":"Start program","PCIAddr":"0000:1b:00.0"} {"level":"info","ts":1608054338.9004142,"logger":"daemon.fpgaManager.ProgramFPGA","msg":"Starting","pci":"0000:1b:00.0"} {"level":"info","ts":1608056309.9367146,"logger":"daemon.fpgaManager.ProgramFPGA","msg":"Program FPGA completed, start new power cycle N3000 ...","pci":"0000:1b:00.0"} {"level":"info","ts":1608056333.3528838,"logger":"daemon.drainhelper.Run()","msg":"worker function - end","performUncordon":true} ...
ログファイルは、以下のイベントのフローを示します。
- ビットストリームがダウンロードされ、検証されています。
- ノードはドレイン (解放) され、現時点でワークロードを実行できません。
フラッシュが開始します。
- ビットストリームはカードにフラッシュされます。
- ビットストリームが適用されます。
- フラッシュが完了すると、1 つまたは複数のノードの PCI デバイス (1 つまたは複数) が再読み込みされます。ワイヤレス FEC Accelerator の OpenNESS SR-IOV Operator が、新しいフラッシュデバイス (1 つまたは複数) を検索できるようになりました。
検証
FPGA のユーザービットストリームの更新が完了した後にステータスを確認します。
oc get n3000node
出力例
NAME FLASH node1 Succeeded
カードのビットストリーム ID が変更されたことを確認します。
oc get n3000node node1 -o yaml
出力例
status: conditions: - lastTransitionTime: "2020-12-15T18:18:53Z" message: Flashed successfully 1 observedGeneration: 2 reason: Succeeded status: "True" type: Flashed fortville: - N3000PCI: 0000:1b:00.0 NICs: - MAC: 64:4c:36:11:1b:a8 NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1a:00.0 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking - MAC: 64:4c:36:11:1b:a9 NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1a:00.1 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking - MAC: 64:4c:36:11:1b:ac NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1c:00.0 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking - MAC: 64:4c:36:11:1b:ad NVMVersion: 7.00 0x800052b0 0.0.0 PCIAddr: 0000:1c:00.1 name: Ethernet Controller XXV710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking fpga: - PCIAddr: 0000:1b:00.0 2 bitstreamId: "0x2315842A010601" 3 bitstreamVersion: 0.2.3 deviceId: "0x0b30" 4
ノード上の FEC PCI デバイスを確認します。
ノードの設定が正しく適用されていることを確認します。
$ oc debug node/node1
予想される出力
Starting pod/<node-name>-debug ... To use host binaries, run `chroot /host` Pod IP: <ip-address> If you don't see a command prompt, try pressing enter. sh-4.4#
ノードのファイルシステムを使用できることを確認します。
sh-4.4# chroot /host
予想される出力
sh-4.4#
システムのアクセラレーターに関連付けられた PCI デバイスを一覧表示します。
$ lspci | grep accelerators
予想される出力
1b:00.0 Processing accelerators: Intel Corporation Device 0b30 1d:00.0 Processing accelerators: Intel Corporation Device 0d8f (rev 01)
FPGA に属するデバイスは出力で報告されます。デバイス ID
0b30
はカードのプログラムに使用される RSU インターフェイスです。0d8f
は、新規プログラムの 5G デバイスの物理機能です。