6.6. OVS ハードウェアオフロードのコンポーネント
Mellanox スマート NIC を使用した OVS HW オフロードのコンポーネントの設定およびトラブルシューティングを行うためのリファレンス。
Nova
NUMATopologyFilter および DerivePciWhitelistEnabled パラメーターで NovaPCIPassthrough フィルターを使用するように Nova スケジューラーを設定します。OVS HW オフロードを有効にすると、Nova スケジューラーはインスタンスの起動に関して SR-IOV パススルーと同じ様に動作します。
Neutron
OVS HW オフロードを有効にする場合は、devlink cli ツールを使用して NIC e-switch モードを switchdev に設定します。Switchdev モードにより、NIC 上にレプリゼンターポートが確立され、VF にマッピングされます。
手順
switchdev対応の NIC からポートを割り当てるには、binding-profileの値をcapabilitiesに設定して neutron ポートを作成し、ポートセキュリティーを無効にします。$ openstack port create --network private --vnic-type=direct --binding-profile '{"capabilities": ["switchdev"]}' direct_port1 --disable-port-security
インスタンスの作成時にこのポート情報を渡します。レプリゼンターポートをインスタンスの VF インターフェイスに関連付け、ワンタイム OVS データパス処理のためにレプリゼンターポートを OVS ブリッジ br-int に接続します。VF ポートのレプリゼンターは、物理パッチパネルフロントエンドのソフトウェアバージョンのように機能します。新規インスタンス作成についての詳しい情報は、SR-IOV 用インスタンスのデプロイ を参照してください。
OVS
ハードウェアオフロードが設定された環境では、送信された最初のパケットが OVS カーネルパスを通過し、このパケットの移動によりインスタンスの送受信トラフィックに対する ml2 OVS ルールが確立されます。トラフィックストリームのフローが確立されると、OVS はトラフィック制御 (TC) Flower ユーティリティーを使用してこれらのフローを NIC ハードウェアにプッシュします。
手順
director を使用して、以下の設定を OVS に適用します。
$ sudo ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
- 再起動して HW オフロードを有効にします。
トラフィック制御 (TC) サブシステム
hw-offload フラグを有効にすると、OVS は TC データパスを使用します。TC Flower は、ハードウェアにデータパスフローを書き込む iproute2 ユーティリティーです。これにより、フローがハードウェアデータパスとソフトウェアデータパスの両方でプログラムされるようになり、冗長性が確保されます。
手順
以下の設定を適用します。明示的に
tc-policyを設定していない場合、これがデフォルトのオプションです。$ sudo ovs-vsctl set Open_vSwitch . other_config:tc-policy=none
- OVS を再起動します。
NIC PF および VF ドライバー
mlx5_core は、Mellanox ConnectX-5 NIC の PF ドライバーおよび VF ドライバーです。mlx5_core ドライバーは以下のタスクを実行します。
- ハードウェア上にルーティングテーブルを作成する。
- ネットワークフローの制御を管理する。
-
イーサネットスイッチデバイスドライバーモデル
switchdevを設定する。 - ブロックデバイスを作成する。
手順
以下の
devlinkコマンドを使用して、PCI デバイスモードのクエリーを行います。$ sudo devlink dev eswitch set pci/0000:03:00.0 mode switchdev $ sudo devlink dev eswitch show pci/0000:03:00.0 pci/0000:03:00.0: mode switchdev inline-mode none encap enable
NIC ファームウェア
NIC ファームウェアは以下のタスクを実行します。
- ルーティングテーブルおよびルールを維持する。
- テーブルのパイプラインを修正する。
- ハードウェアリソースを管理する。
- VF を作成する。
最適なパフォーマンスを得るために、ファームウェアはドライバーと連携します。
NIC ファームウェアは揮発性ではなくリブート後も維持されますが、ランタイム中に設定を変更することができます。
手順
インターフェイスおよびレプリゼンターポートに以下の設定を適用し、TC Flower がポートレベルでフロープログラミングをプッシュするようにします。
$ sudo ethtool -K enp3s0f0 hw-tc-offload on
ファームウェアを更新された状態に維持します。Yum または dnf による更新では、ファームウェアの更新が完了しない可能性があります。詳細は、ベンダーのドキュメントを参照してください。