(1)最初の2つのVFのみがVMに転送されます
そして
(2)VMへのトラフィックはありません。
ixgbe
SR-IOV機能を利用しようとしています。両方のNICでsriov_numvfs
を4に更新すると、NICごとに4つのVFが取得されます。 VMを実行し、Intel82599の両方のNICに接続します。
トラフィックジェネレータを使用してセットアップをテストします。
VMを実行する前に、ixgbe
ドライバーはホストにさらに8つのリンク(VFごとに1つ)を作成します。これらはすべてip link
に表示され、状態が停止しています。 VMアクティベーション後、2つのVF(各NICの最初のVF、機能0を意味する)のみがVMに転送されます。
変更前VMアクティベーション
lspci
をチェックすると、PCIバス上のNICとすべてのVFの両方が表示されます。ip link
をチェックすると、ドライバーによって作成された8つのリンクすべて(割り当てられたMACアドレスで状態が停止)と両方のカードNICが表示されます。後VMアクティベーション
lspci
をチェックすると、PCIバス上のNICとすべてのVFの両方が表示されます。lspci
をチェックすると、転送された2つのVFのみが表示されます。ip link
をチェックすると、ドライバーによって作成された残りの6つのリンク(MACアドレスが割り当てられている)が表示され、両方のカードNICとすべてのVF(MACアドレスが割り当てられている)が表示されます)。ip link
をチェックすると、VFに接続されている2つのNICが表示されます(MACアドレスを使用-正しく、HWと一致します)。virsh net-dumpxml
)でlibvirtをチェックすると、VMにソートおよび接続された8つのVFすべてが表示されます。だが...
VMへのトラフィックはありません。
VMから外部へのトラフィックがあります。
何か案は?
1
this リンクに続いて、ドライバーの自動化プロセスをバイパスしようとすると、VMは、2つのカードNICへの2つのブリッジネットワークで開始されます。VMは正常に上昇し、両方のNICからのトラフィックがあります。次に、virsh attach-device
コマンドを使用して新しいデバイスが追加され、コマンドが正常に実行されます。最初に、XMLファイルにはVFのPCIアドレスのみが含まれます。明らかな変更はありません。 VMで明らかであり、ip link
でも、lspci
...でもありません。--config
フラグが立てられたため、再起動後に状態が再度チェックされ、再び何もチェックされません。 NIC(PF)のPCIアドレスが明示的に追加され、VFMACアドレスも明示的に指定されます。明示的なパラメーターを指定したvirsh attach-device
の後-まだ何もありません。
2
基本的に、 this リンクに続いて、PCIデバイスはホストから手動で切り離され、VMに挿入されます。最終的な結果として、PCIeカードはvHBAではなく、その結果NPIV互換ではなくなり( ここ を参照)、それに応じてエラーメッセージが通知されます。
3
別のアプローチは、説明されているように、passthrough
転送モードを使用することです ここ 。これは、一度に1つのNIC)へのvNICアクセスを意図的に1つだけ許可するため(そして全体の目的はSR-IOV機能を利用することです)、望ましい作業モードではありません。 hostdev
転送モードと同様:NIC nameがpf
ディレクティブに記述されている場合、基本的なブリッジのように機能し、VF名が記述されている場合pf
ディレクティブには何もありません。
4
パススルーアプローチと同様に、MACvTapアプローチがあり、 ここ 、 ここ および ここ で説明されています。これは適用されません。 ixgbe
ドライバーはVFリンク名を設定するため、処理が異なります。 VFの名前をインターフェイスとして指定するオプションはありません。インターフェイス名を指定すると、passthrough
転送モードと同様にインターフェイスが渡されます。これは、ドライバーバージョン、カーネルバージョン、libvirtバージョン、またはそれらの組み合わせが原因である可能性があります。
5
SFPの変更も役に立たないようです。いくつかの異なるモデルに変更されましたが、電力を受け取り、リンクがアップしていた(PCIeバスに表示されていた)ものを除いて、Intelカードでは機能しませんでしたが、ixgbe
ドライバーによって検出されませんでした。他のカーネルモジュールもインターフェースも作成されませんでした。
プロセッサを利用するために使用されるカーネルパラメータは、他のプロセッサが設定されているものとは少し異なっていました。
パラメータをいじってみると、両方の問題が解決しました。
基本的な考え方は、カーネル(IntelまたはAMD)でSR-IOV機能をアクティブにし、カーネルパラメーターを渡して「パススルー」モードに設定することです。
その他のカーネルパラメータオプションについては、 this リンクを使用してください。