17.12. 仮想 NIC を直接物理インターフェースへ接続

デフォルトの NAT 接続の代わりに、macvtap ドライバーを使ってゲストの NIC を直接ホストマシンの特定の物理インターフェースに接続することができます。これを、デバイス割り当て (パススルーとも呼ばれる) と混同しないようにしてください。Macvtap 接続には以下のモードがあり、それぞれメリットとユースケースが異なります。

物理インターフェースの配信モード

VEPA
仮想イーサネットポートアグリゲーター (VEPA) モードでは、ゲストからのパケットはすべて外部スイッチに送信されます。これにより、ユーザーはゲストのトラフィックを強制的にスイッチ経由にすることができます。VEPA モードが正常に機能するためには、外部スイッチは ヘアピンモード にも対応している必要があります。これにより、送信元ゲストと同じホストマシン上にあるゲスト宛のパケットが、外部スイッチによりホストに戻されます。
VEPA モード

図17.23 VEPA モード

bridge
送信元ゲストと同じホストマシン上にあるゲスト宛のパケットは、直接宛先の macvtap デバイスに配信されます。直接配信が正常に機能するためには、送信元デバイスと宛先のデバイスの両方が bridge モードになければなりません。どちらかのデバイスが VEPA モードにある場合は、ヘアピン機能に対応した外部スイッチが必要です。
Bridge モード

図17.24 Bridge モード

private
すべてのパケットは外部スイッチに送信されます。それらのパケットが同じホストマシン上にある宛先のゲストに配信されるのは、それらが外部ルーターまたはゲートウェイ経由で送信され、それらがパケットをホストに戻す場合のみです。private モードは、同一ホスト上にある個々のゲストが互いに通信するのを防ぐために使うことができます。送信元または宛先デバイスのいずれかが private モードにある場合に、この手順が実行されます。
Private モード

図17.25 Private モード

passthrough
この機能では、物理インターフェースデバイスまたは SR-IOV 仮想機能 (VF) を、移行機能を損なうことなく直接ゲストに接続します。すべてのパケットは、直接目的のネットワークデバイスに送信されます。passthrough モードでは、ゲスト間でネットワークデバイスを共有することはできません。従って、1 つのゲストにパススルーできるネットワークデバイスは 1 つだけです。
Passthrough モード

図17.26 Passthrough モード

Macvtap の設定は、ドメインの XML ファイルを変更して、または virt-manager インターフェースを使用して行います。

17.12.1. ドメイン XML を使用した macvtap の設定

ゲストのドメイン XML ファイルを開き、以下のように <devices> 要素を変更します。
<devices>
	...
	<interface type='direct'>
		<source dev='eth0' mode='vepa'/>
	</interface>
</devices>
直接接続したゲスト仮想マシンのネットワークアクセスは、ホスト物理マシンの物理インターフェースが接続されているハードウェアスイッチで管理することができます。
スイッチが IEEE 802.1Qbg 標準に設定されている場合は、インターフェースに以下に示すように追加パラメーターを持たせることができます。virtualport 要素のパラメーターについては IEEE 802.1Qbg 標準の記載をご覧ください。その値についてはネットワーク固有となるため、ネットワーク管理者にお問い合わせください。802.1Qbg では、VSI (Virtual Station Interface) は仮想マシンの仮想インターフェースのことを指します。なお、IEEE 802.1Qbg では、VLAN ID にゼロ以外の値を設定する必要があります。

Virtual Station Interface のタイプ

managerid
VSI Manager ID で VSI タイプとインスタンス定義が含まれるデータベースを識別します。これは整数の値で、0 の値は予約されています。
typeid
VSI Type ID で ネットワークアクセスの特性を示す VSI タイプを識別します。 VSI タイプは一般的にはネットワーク管理者によって管理されます。 整数の値になります。
typeidversion
VSI Type Version では VSI Type の複数のバージョンを許可します。 整数の値になります。
instanceid
VSI Instance ID は、VSI インスタンス (つまり、仮想マシンの仮想インターフェース) の作成時に生成されます。これは、グローバルに固有な識別子です。
profileid
プロファイル ID には、 このインターフェースに適用されるポートプロファイル名が含まれます。 この名前は、 ポートプロファイルのデータベースによってポートプロファイルからネットワークパラメーターに解決され、 このネットワークパラメータがこのインターフェースに適用されます。
4 種類のそれぞれのタイプの設定は、ドメインの XML ファイルを変更して行います。このファイルを開いたら、以下のようにモードの設定を変更します。
<devices>
 ...
 <interface type='direct'>
  <source dev='eth0.2' mode='vepa'/>
   <virtualport type="802.1Qbg">
    <parameters managerid="11" typeid="1193047" typeidversion="2" instanceid="09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f"/>
   </virtualport>
  </interface>
</devices>
プロファイル ID を以下に示します。
<devices>
 ...
 <interface type='direct'>
  <source dev='eth0' mode='private'/>
   <virtualport type='802.1Qbh'>
    <parameters profileid='finance'/>
   </virtualport>
 </interface>
</devices>
...

17.12.2. virt-manager を使用した macvtap の設定

仮想ハードウェアの詳細ウィンドウ を開き ⇒ メニューで NIC を選択し ⇒ ネットワークソースホストデバイス name: macvtap を選択し ⇒ 目的の ソースモード を選択します。
続いて、仮想ポート サブメニューで、Virtual Station Interface のタイプを設定することができます。
virt-manager で macvtap を設定

図17.27 virt-manager で macvtap を設定