web-dev-qa-db-ja.com

同じポートで複数のLACPチームのハンドルを切り替えることができます

仮想化にSRIOV対応アダプターを使用し、2つのゲストに2つの異なるLACPリンクをセットアップして、スイッチ側の同じポートに2つのLACPリンクがある場合、スイッチはこのケースを処理できますか?

例えば:

スイッチポート0 <=>アダプタポート0

PF(ホスト):eth0

VF1(Guest1-eth0):LACPチーム1

VF2(Guest2-eth0):LACPチーム2

===================

スイッチポート1 <=>アダプタポート1

PF(ホスト):eth1

VF1(Guest1-eth1):LACPチーム1

VF2(Guest2-eth1):LACPチーム2

前もって感謝します。

3
jerome

これは、期待どおりに機能しません。スイッチはPFとVFを認識せず、LACPを使用して2つのイーサネットインターフェイスを結合するかどうかを決定します(1つまたは別のVFへのトラフィックだけでなく全体)

私がこれをしなければならなかった方法:PFでLACPを有効にし、それらを結合します。次に、VFがゲストに渡されるときに、VFも結合する必要があります。 jamiebが述べたように、macスプーフィングチェックは問題になるでしょうが、それを回避する方法があります。 Intel SR-IOV nicsを使用すると、VFが独自のMACを設定できるようにするオプションを設定でき、「iplink」を使用してなりすましチェックをオフにすることができます。 Broadcom NetExtremeII nics(bnx2シリーズのドライバー)のようなものがある場合、MACスプーフィングをオフにしたり、ゲストが独自のMACを設定できるようにすることはできません。

Broadcomを使用する場合は、ゲストがBroadcomを適切に使用する前に、少し事前設定を行う必要があります。起動後、VFを有効にし、MACアドレスを設定します(最初はMACがすべてゼロであるため、使用できません)。次に、これらのMACアドレスを実際に使用できるようにするには、VFを無効にしてから再度有効にする必要があります。設定したMACアドレス。それらを同じmacとペアで割り当てます。たとえば、port0-vf0 set macを22:27:1a:2a:d5:3a port1-vf0 set macと同じにし、両方のVFをゲストに渡します(私はKVMを使用します)。 qemu xmlで、VFに手動で設定したのと同じMACアドレスを割り当てます。次に、ゲストでモード2を使用してそれらを結合すると、結合が正しく機能します。

Intelでは、MACスヌーピングをオフにしてVFが独自のMACアドレスを設定できるようにすることをPFに指示するだけで、kvmがMACアドレスを管理できるようになり、ボンディングに関して特別なことをする必要がなくなります。通常のアダプタであるかのように機能します。

重要なことは、PFでのみLACPを実行することです。それが完了すると、PFからのVFのペアは基本的にスイッチ側ですでに結合されており、それらのPFからのすべてのvfsに対してゲスト側で結合する必要があります。 LACPはリンク層プロトコルであり、MACアドレスによるプロトコルではありません。 LACPによって特定のMACアドレスにパスを結合するのではなく、物理ポートを結合し、それらの物理ポートがPFとすべてのVFのトラフィックを伝送します。

3
GeorgeB

SR-IOVスイッチのなりすましチェックを無効にする必要があります。ゲストのインターフェイスを結合すると、結合によってインターフェイスのMACが変更されます。 SR-IOVスイッチは通常、独自のPFまたはVF以外のフレームをすべてドロップします。これはなりすましチェックと呼ばれます。

それ以外は、これで問題なく動作するはずです。

0
suprjami