Hyper-V ライブマイグレーション時のネットワーク切り替えの仕組み

みなさん、こんにちは。
今回は Hyper-V のライブマイグレーション時のネットワークの切り替えの仕組みをご説明します。

ご存知のようにライブマイグレーションは、仮想マシン(ゲスト OS )を動作させたまま別の Hyper-V ホストへ移動することができ、仮想マシンと外部のコンピュータとのセッションは切れません。実際には仮想マシンの移動の前後でネットワークスイッチの接続ポートなど物理的な経路が変わってしまいますが、その影響を回避する仕組みを備えています。

下図はライブマイグレーション時の動きを図解したものです。

<移動前、移動中>
・仮想マシン(仮想 NIC:ここでは vNIC-A)は、は外部スイッチの Port-1に接続
・移動処理が終わるまでは、Port-1 経由で外部機器と通信
・外部スイッチの MAC アドレステープルは、vNIC-A は Port-1 に接続されていると学習

<移動直後>
・仮想マシン(vNIC-A)は 外部スイッチ Port-2 に物理的に接続される
・vNIC-A の MAC アドレスは、移動前後で不変
・外部スイッチの MAC アドレステープルを書き換え、vNIC-A が Port-2 になるよう、ARP パケットが送信される

実際の ARP パケットを Network Monitor で採取したものが下記です。

<環境>
・vNIC の MAC アドレス:00 15 5D 00 29 0C
・ゲストOS:Windows Server 2008 R2(192.168.0.201)

<キャプチャパケット>
 - Ethernet: Etype = ARP,DestinationAddress:[FF-FF-FF-FF-FF-FF],SourceAddress:[00-15-5D-00-29-0C]
   + DestinationAddress: *BROADCAST [FF-FF-FF-FF-FF-FF]
   + SourceAddress: Microsoft Corporation 00290C [00-15-5D-00-29-0C]
     EthernetType: ARP, 2054(0x806)
     UnknownData: Binary Large Object (18 Bytes)
 - Arp: Request, 192.168.0.201 asks for 192.168.0.201
     HardwareType: Ethernet
     ProtocolType: Internet IP (IPv4)
     HardwareAddressLen: 6 (0x6)
     ProtocolAddressLen: 4 (0x4)
     OpCode: Request, 1(0x1)
     SendersMacAddress: 00-15-5D-00-29-0C
     SendersIp4Address: 192.168.0.201
     TargetMacAddress: FF-FF-FF-FF-FF-FF
     TargetIp4Address: 192.168.0.201

MAC レベルでのブロードキャストなので、スイッチにミラーポート設定しなくとも空きポートに繋げばパケットを採取できます。
ご興味ある方は、お試しください。
Network Monitor は下記より無償ダウンロードできます。
 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f

参考情報:
Network Monitor 3 を使用したパケットの採取(マイクロソフト Network & AD サポートチーム公式ブログ)
 http://blogs.technet.com/b/jpntsblog/archive/2010/05/07/network-monitor-3.aspx