(57)【要約】【課題】ネットワークの管理を容易にする技術を提供する。【解決手段】情報処理装置２０００は、ネットワーク１３０を介してネットワークインタフェース１２０と接続されている。情報処理装置２０００は、受信部２０２０及び推定部２０４０を有する。受信部２０２０はデータを受信する。推定部２０４０は、受信されたデータを用いて、そのデータの送信元のネットワークインタフェース１２０が、物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかの推定を行う。【選択図】図３
2016201690.tif 000002
【特許請求の範囲】
【請求項１】
データを受信する受信手段と、
前記受信されたデータを用いて、そのデータの送信元のネットワークインタフェースが、物理的なネットワークインタフェースと仮想的なネットワークインタフェースのどちらであるかの推定を行う推定手段と、
を有する情報処理装置。
【請求項２】
前記推定手段は、前記データが示す送信元のネットワークインタフェースのレイヤ２アドレスに含まれる OUI（Organizationally Unique Identifier）を用いて前記推定を行う請求項１に記載の情報処理装置。
【請求項３】
複数のネットワークインタフェースそれぞれに対して送信データを送信する送信手段を有し、
前記受信手段は、各前記ネットワークインタフェースから、前記送信データに対する応答データを受信し、
前記推定手段は、前記送信データが送信されてから前記応答データが受信されるまでの時間を用いて前記推定を行う請求項１に記載の情報処理装置。
【請求項４】
前記送信手段は、各前記ネットワークインタフェースに対し、複数の前記送信データを送信し、
前記受信手段は、各前記ネットワークインタフェースから、複数の前記送信データそれぞれについて前記応答データを受信し、
前記推定手段は、各前記ネットワークインタフェースについて、前記時間の大きさの統計値又は前記時間のばらつきの統計値を算出し、前記算出した統計値を用いて前記推定を行う請求項３に記載の情報処理装置。
【請求項５】
前記データを用いて、前記ネットワークインタフェースがデータの送受信を行える状態になったことを検出する検出手段を有し、
前記推定手段は、データの送受信を行える状態になった時点が最も早い前記ネットワークインタフェースが、物理的なネットワークインタフェースであると推定する、請求項１に記載の情報処理装置。
【請求項６】
前記受信したデータの履歴を用いて、前記ネットワークインタフェースがデータの送受信を行える状態であるか否かを判定する判定手段を有し、
前記推定手段は、第１の前記ネットワークインタフェースがデータの送受信を行えない状態であり、かつ第１の前記ネットワークインタフェースとは異なる第２の前記ネットワークインタフェースがデータの送受信を行える状態である場合に、第１の前記ネットワークインタフェースは仮想的なネットワークインタフェースであると推定する、請求項１に記載の情報処理装置。
【請求項７】
ネットワークインタフェースに対して送信データを送信する送信手段を有し、
前記受信手段は、前記送信データに対する応答データを受信し、
前記推定手段は、前記送信データの送信先のネットワークインタフェースと、その送信データに対する応答データの送信元のネットワークインタフェースが異なる場合、前記送信データの送信先のネットワークインタフェースが仮想的なネットワークインタフェースであると推定するか、又は前記応答データの受信元のネットワークインタフェースが物理的なネットワークインタフェースであると推定する請求項１に記載の情報処理装置。
【請求項８】
前記送信データは、ARP（Address Resolution Protocol）リクエスト又は NS（Neighbor Solicitation）メッセージであり、
ARP リクエストに対する応答データは ARP リプライであり、
NS メッセージに対する応答データは NA（Neighbor Advertisement）メッセージである請求項７に記載の情報処理装置。
【請求項９】
前記受信手段は、複数の前記ネットワークインタフェースからデータを受信し、
複数の前記ネットワークインタフェースそれぞれから受信したデータを用いて、１つの レイヤ２アドレスに対して IPv4（Internet Protocol version 4）アドレスが複数対応付けられているか否か、又は１つのレイヤ２アドレスに対して同一スコープの IPv6（IP version 6）アドレスが複数対応付けられているか否かを判定する判定手段を有し、
前記推定手段は、１つのレイヤ２アドレスに対して IPv4 アドレスが複数対応付けられているか、又は １つのレイヤ２アドレスに対して同一スコープの IPv6 アドレスが複数対応付けられている場合に、そのレイヤ２アドレスを持つネットワークインタフェースが、物理的なネットワークインタフェースであると推定する、請求項１に記載の情報処理装置。
【請求項１０】
前記ネットワークインタフェースから受信するデータは、そのネットワークインタフェースに関する情報又はそのネットワークインタフェースを動作させているマシンに関する情報を示しており、
前記推定手段は、前記ネットワークインタフェースに関する情報又はそのネットワークインタフェースを動作させているマシンに関する情報を用いて、そのネットワークインタフェースについて前記推定を行う、請求項１に記載の情報処理装置。
【請求項１１】
前記推定手段は、前記ネットワークインタフェースの名前、又はそのネットワークインタフェースを用いて動作しているマシンに割り当てられたホスト名を用いて、そのネットワークインタフェースについて前記推定を行う、請求項１０に記載の情報処理装置。
【請求項１２】
物理ネットワークインタフェースであると推定されたネットワークインタフェースと、仮想ネットワークインタフェースであると推定されたネットワークインタフェースとの対応付けを行う対応付け手段を有する、請求項１乃至１１に記載の情報処理装置。
【請求項１３】
コンピュータを、請求項１乃至１２いずれか一項に記載の情報処理装置として動作させるプログラム。
【請求項１４】
コンピュータによって実行される制御方法であって、
データを受信する受信ステップと、
前記受信されたデータを用いて、そのデータの送信元のネットワークインタフェースが、物理的なネットワークインタフェースと仮想的なネットワークインタフェースのどちらであるかの推定を行う推定ステップと、
を有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム、及び制御方法に関する。
【背景技術】
【０００２】
近年、様々な環境で仮想マシン技術が導入されている。仮想マシン技術とは、１つの物理マシン上で複数の仮想的なマシンを動作させる技術である。この仮想的なマシンは、仮想マシン（Virtual Machine（VM））と呼ばれる。VM は、物理マシンと同様に OS（Operating System）を動作させることができ、OS に対して物理マシンと同様のハードウエア環境を提供する。
【０００３】
一方で、VM はソフトウエアで実現される仮想的なマシンであるため、物理的な実体を有する物理マシンとは異なる性質も有する。例えば VM は、物理マシンと比較し、生成や削除が容易に行える。
【０００４】
また近年、ネットワークを介してマシン同士を接続することが一般的となっている。例えばオフィス環境では、各社員の PC（Personal Computer）がネットワークに接続されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「Zabbix Documentation 2.2」、［online］、［平成２７年３月１３日検索］、インターネット＜URL：https://www.zabbix.com/documentation/2.2/manual/vm_monitoring＞
【非特許文献２】「RFC（Request for Comments）826」、［online］、［平成２７年３月１３日検索］、インターネット＜URL : http://tools.ietf.org/html/rfc826＞
【非特許文献３】「RFC792」、［online］、［平成２７年３月１３日検索］、インターネット＜URL：http://tools.ietf.org/html/rfc792＞
【非特許文献４】「RFC4443」、［online］、［平成２７年３月１３日検索］、インターネット＜URL：http://tools.ietf.org/html/rfc4443＞
【非特許文献５】「RFC4861」、［online］、［平成２７年３月１３日検索］、インターネット＜URL：http://tools.ietf.org/html/rfc4861＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワークに接続されている物理マシン上で VM が利用されると、ネットワーク上において VM と物理マシンが混在することとなる。前述したように VM は生成が容易であるため、データセンタの様な特殊な環境だけでなく、オフィス環境などの一般的な環境においても、VM と物理マシンが混在するネットワーク環境が容易に生じうる。
【０００７】
このように VM と物理マシンが混在するネットワークを適切に管理するためには、VM と物理マシンの性質の違いを考慮できることが好ましい。そのためには、ネットワーク上に存在する各マシンが VM と物理マシンのどちらなのかを把握する必要がある。
【０００８】
しかし、あるマシンが VM と物理マシンのどちらであるのかを、外部の装置などから判別することは難しい。前述したように VM はその上で動作する OS 等に物理マシンと同等の環境を提供するため、VM 上で動作するソフトウエアと物理マシン上で動作するソフトウエアは同様の動作をしうるためである。例えば、VM から送信されるパケットと物理マシンから送信されるパケットのフォーマットは同じであるため、あるマシンから受信するパケットのフォーマットに基づいて、そのマシンが VM と物理マシンのどちらであるかを判別することは難しい。
【０００９】
非特許文献１は、ネットワーク上で特定の物理マシンや VM が起動したことを検出するシステムを開示している。しかし、このシステムを利用する者（ネットワークの管理者など）は、検出対象の各物理マシンや各 VM を特定するための情報（UUID（Universally Unique Identifier）など）を予め把握し、この情報を予めシステムの設定ファイルに記述しておかなければならない。そのため、非特許文献１のシステムを利用するためには、各マシンが物理マシンと VM のどちらなのかということを予め把握しておかなければならない。また、非特許文献１のシステムは、管理者の知らないところで導入される物理マシンや VM を検出することができない。
【００１０】
本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、ネットワークの管理を容易にする技術を提供することである。
【課題を解決するための手段】
【００１１】
本発明の情報処理装置は、データを受信する受信手段と、前記受信されたデータを用いて、そのデータの送信元のネットワークインタフェースが、物理的なネットワークインタフェースと仮想的なネットワークインタフェースのどちらであるかの推定を行う推定手段と、を有する。
【００１２】
本発明の制御方法は、コンピュータによって実行される。当該制御方法は、データを受信する受信ステップと、前記受信されたデータを用いて、そのデータの送信元のネットワークインタフェースが、物理的なネットワークインタフェースと仮想的なネットワークインタフェースのどちらであるかの推定を行う推定ステップと、を有する。
【発明の効果】
【００１３】
本発明によれば、ネットワークの管理を容易にする技術が提供される。
【図面の簡単な説明】
【００１４】
【図１】物理マシン内のネットワーク環境が仮想ブリッジを用いて構築される形態を例示する図である。
【図２】物理マシン内のネットワーク環境が NAT 環境として構築される形態を例示する図である。
【図３】実施形態１に係る情報処理装置を例示するブロック図である。
【図４】情報処理装置のハードウエア構成を例示するブロック図である。
【図５】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図６】MAC アドレスの構成を例示する図である。
【図７】仮想ネットワークインタフェースの MAC アドレスに含まれうる OUI のリストを例示する図である。
【図８】実施形態２の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図９】実施形態３に係る情報処理装置を例示するブロック図である。
【図１０】ARP リクエストを送信した場合における RTT を例示するグラフである。
【図１１】NS メッセージを送信した場合における RTT を例示するグラフである。
【図１２】ICMP echo リクエストを送信した場合における RTT を例示するグラフである。
【図１３】ネットワークの構成を例示する第１の図である。
【図１４】ネットワークの構成を例示する第２の図である。
【図１５】実施形態３の情報処理装置によって実行される処理の流れの概要を例示するフローチャートである。
【図１６】RTT の大きさに基づいて行う推定処理の流れを例示するフローチャートである。
【図１７】RTT のばらつきに基づいて行う推定処理の流れを例示するフローチャートである。
【図１８】スイッチを介して情報処理装置と複数の物理マシンとが接続されている構成を例示する図である。
【図１９】ポート VLAN によって情報処理装置と各物理マシンとが１対１で接続されている様子を例示する図である。
【図２０】実施形態４に係る情報処理装置を例示するブロック図である。
【図２１】VMM 及び VM が起動する流れを例示する図である。
【図２２】実施形態４の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図２３】実施形態５に係る情報処理装置を例示するブロック図である。
【図２４】情報処理装置によって把握される各ネットワークインタフェースの状態を時系列で例示するグラフである。
【図２５】実施形態５の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図２６】物理ネットワークインタフェースが ARP プロキシとして機能する様子を例示する図である。
【図２７】実施形態６の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図２８】実施形態７に係る情報処理装置を例示するブロック図である。
【図２９】実施形態７の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図３０】仮想化環境において、１つの MAC アドレスに対して複数の IPv4 アドレスが割り当てられる構成を例示する図である。
【図３１】実施形態８に係る情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図３２】実施形態１０に係る情報処理装置を例示するブロック図である。
【図３３】対応付け部によって生成される対応付けを例示する図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１６】
［前提事項の説明］
まず、各実施形態に共通する前提事項について説明する。
【００１７】
ネットワークインタフェースは、ネットワーク回線を介してデータを送受信するためのインタフェースである。例えば一般の PC は、マザーボードに予め搭載されているネットワークインタフェース（いわゆるオンボードのネットワークインタフェース）や、PCI（Peripheral Component Interconnect）カードで実装されたネットワークインタフェースを有する。以下、このように物理的に実装されたネットワークインタフェースを、物理ネットワークインタフェースと呼ぶ。
【００１８】
ネットワークインタフェースをソフトウエアで仮想的に実現する技術がある。以下、このようにソフトウエアで仮想的に実現されるネットワークインタフェースを、仮想ネットワークインタフェースと呼ぶ。このような技術の１つに、仮想マシン技術がある。仮想マシン技術は、１つの物理マシン上で複数の VM を動作させる技術である。VMは、仮想的なハードウエアで構成される仮想的なマシンである。仮想ネットワークインタフェースは、仮想マシンを構成する仮想的なハードウエアの１つである。
【００１９】
仮想マシン技術を利用するためには、仮想マシンモニタ（VMM（Virtual Machine Monitor））と呼ばれるソフトウエアレイヤを導入する。VMM は、物理ハードウエア上で直接動作することで物理ハードウエアを管理する。そして、VMM は、物理ハードウエアを抽象化した仮想ハードウエアを生成することで、VM を構築する。各 VM はそれぞれ、物理マシンと同様に OS を動作させることができる。ここで、VM 上で動作する OS は、一般にゲスト OS と呼ばれる。
【００２０】
VM 上で動作するゲスト OS は、VM が持つ仮想ネットワークインタフェースを利用して、同じ物理マシン上で動作する VM、他の物理マシン、又は他の物理マシン上で動作する VM と通信する。ただし、VM が他の物理マシンや他の物理マシン上で動作する VM と通信するためには、 VM を動作させる物理マシンが有する物理ネットワークインタフェースを利用する必要がある。VM のネットワークインタフェースはあくまでソフトウエアで実現された仮想的なハードウエアであるためである。
【００２１】
以下、仮想マシン技術を導入された物理マシンにおけるネットワーク環境について説明する。図１及び図２は、仮想マシン技術が導入された物理マシン１０におけるネットワーク環境を例示する図である。物理マシン１０は物理ネットワークインタフェース３０を有する。物理ネットワークインタフェース３０は物理ネットワーク１００に接続している。物理マシン１０は、物理ネットワーク１００を介して外部の物理マシンや VM と通信する。また、物理マシン１０は、その上で VMM ２０を動作させている。
【００２２】
VMM ２０は４つの VM ５０を動作させている。各 VM ５０は仮想ネットワークインタフェース７０を有している。各仮想ネットワークインタフェース７０は、物理ネットワークインタフェース３０の MAC（Media Access Control）アドレスとはそれぞれ異なる MAC アドレスを持つ。各VM ５０はその上でゲスト OS ６０を動作させている。
【００２３】
なお、上述の MAC アドレスは、MAC アドレス以外のレイヤ２アドレスであってもよい。レイヤ２アドレスとは、OSI（Open Systems Interconnection）参照モデルのデータリンク層（レイヤ２）で扱われるアドレスである。以降の各記載についても同様に、MAC アドレスは、MAC アドレス以外のレイヤ２アドレスであってもよい。
【００２４】
図１は、物理マシン１０内のネットワーク環境が仮想ブリッジ８０を用いて構築される形態を例示する図である。仮想ブリッジ８０は、ソフトウエアで実現された仮想的なブリッジである。VMM ２０は、物理マシン１０の内部に仮想ネットワーク１１０を構築している。各仮想ネットワークインタフェース７０は、仮想ネットワーク１１０を介して仮想ブリッジ８０と接続されている。仮想ブリッジ８０が有するネットワークインタフェースの１つは、物理ネットワークインタフェース３０である。仮想ネットワーク１１０は、物理ネットワーク１００と同じネットワークセグメントに属する。そのため、各仮想ネットワークインタフェース７０にはそれぞれ、物理ネットワーク１００で利用可能な IP アドレスが割り当てられている。
【００２５】
仮想ブリッジ８０は、物理的なブリッジと同様の動作を行う。具体的には、仮想ブリッジ８０は、取得したデータを送信先の MAC アドレスに基づいてディスパッチする。例えば仮想ブリッジ８０は、仮想ネットワークインタフェース７０から取得したデータの送信先 MAC アドレスが、各仮想ネットワークインタフェース７０の MAC アドレス以外を示している場合、物理ネットワークインタフェース３０を介して、そのデータを外部へ送信する。
【００２６】
また例えば仮想ブリッジ８０は、仮想ネットワークインタフェース７０から取得したデータの送信先 MAC アドレスが、別の仮想ネットワークインタフェース７０の MAC アドレスを示している場合、その仮想ネットワークインタフェース７０へそのデータを渡す。この場合、データを受け取った仮想ネットワークインタフェース７０を有する VM ５０上で動作しているゲスト OS ６０が、そのデータをハンドルする。
【００２７】
また例えば、仮想ブリッジ８０は、物理ネットワークインタフェース３０から取得したデータを、その送信先の MAC アドレスを持つ仮想ネットワークインタフェース７０へ渡す。この場合も、データを受け取った仮想ネットワークインタフェース７０を有する VM ５０上で動作しているゲスト OS ６０が、そのデータをハンドルする。
【００２８】
図２は、物理マシン１０内のネットワーク環境が NAT（Network Address Translation） 環境として構築される形態を例示する図である。VMM ２０は、物理マシン１０の内部に仮想ネットワーク１１０を構築している。この形態の場合、仮想ネットワーク１１０のネットワークセグメントは、物理ネットワーク１００とは異なるネットワークセグメントである。そのため、仮想ネットワークインタフェース７０には、物理ネットワーク１００で利用可能な IP アドレスではなく、仮想ネットワーク１１０におけるローカルな IP アドレスが割り当てられている。
【００２９】
各仮想ネットワークインタフェース７０は、仮想ルータ９０を介して物理ネットワーク１００に接続する。仮想ルータ９０は、ソフトウエアで仮想的に実現されたルータである。仮想ルータ９０は、物理ネットワーク１００に接続する物理ネットワークインタフェース３０と、仮想ネットワーク１１０に接続する NAT インタフェース４０という２つのネットワークインタフェースを有する。つまり、仮想ルータ９０は、仮想ネットワーク１１０と物理ネットワーク１００とを繋ぐゲートウェイとして機能する。
【００３０】
仮想ルータ９０は、一般の NAT 環境におけるゲートウェイが行う動作と同様の動作を行う。これにより、各仮想ネットワークインタフェース７０は、物理ネットワーク１００で利用可能な IP アドレスを個別に持たず、物理ネットワークインタフェース３０の IP アドレスを利用して外部のマシンとデータの送受信を行う。
【００３１】
なお、物理ネットワークインタフェース３０によってデータが受信された場合、まず VMM ２０は、それが VMM ２０に宛てたデータであるか否かを判定する。この判定は、データが示す宛先 MAC アドレスや宛先 IP アドレスを調べることによって行われる。そして VMM ２０は、物理ネットワークインタフェース３０によって受信されたデータがVMM ２０に宛てたデータでない場合、そのデータを仮想ルータ９０や仮想ブリッジ８０に処理させる。一方、VMM ２０は、物理ネットワークインタフェース３０によって受信されたデータがVMM ２０に宛てたデータである場合、そのデータの中身を取り出す等、適切な処理を行う。
【００３２】
ここで、仮想マシン環境におけるネットワーク環境の形態は、上述の例に限定されない。その他の例については、必要に応じて後述の実施形態で説明する。
【００３３】
仮想マシン技術が導入される目的は様々である。例えば仮想マシン技術は、デスクトップマシンやサーバマシンを仮想的に実現するために導入される。また例えば、仮想マシンは、ルータやレイヤ２スイッチなどのネットワーク機器を仮想的に実現するために導入される。このように、仮想マシン技術を導入してネットワーク機器を仮想化する技術は、NFV（Network Functions Virtualization）と呼ばれる。本発明において、仮想マシン環境の導入目的は特定の目的に限定されない。そのため、VM の導入目的は、上述したいずれかの目的であってもよいし、それ以外の目的であってもよい。
【００３４】
また、本発明における仮想ネットワークインタフェースは、仮想マシン技術によって実現される仮想的なネットワークインタフェースに限定されない。例えば、仮想ネットワークインタフェースは、エミュレータによるエミュレートによって実現される仮想的なネットワークインタフェースでもよい。エミュレータによって仮想ネットワークインタフェースを実現する場合でも、物理マシン内のネットワークは、例えば仮想ブリッジや仮想ルータを用いて実現される。この実現方法の詳細については省略する。
【００３５】
以上の事項を前提に、本発明の各実施形態について説明する。
【００３６】
［実施形態１］
図３は、実施形態１に係る情報処理装置２０００を例示するブロック図である。図３において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００３７】
情報処理装置２０００は、ネットワーク１３０を介してネットワークインタフェース１２０と接続されている。情報処理装置２０００は、受信部２０２０及び推定部２０４０を有する。受信部２０２０はデータを受信する。推定部２０４０は、受信されたデータを用いて、そのデータの送信元のネットワークインタフェース１２０が、物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかの推定を行う。
【００３８】
＜ハードウエア構成例＞
実施形態２の情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。
【００３９】
情報処理装置は、PC、携帯型端末、又はサーバマシンなどの種々の計算機として実装される。ここで情報処理装置２０００は、情報処理装置２０００を実装するための専用の計算機に実装されてもよいし、その他のアプリケーション等も含まれている汎用の計算機に実装されてもよい。
【００４０】
図４は、情報処理装置２０００のハードウエア構成を例示するブロック図である。情報処理装置２０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、入出力インタフェース１１００、ネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。プロセッサ１０４０は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ１０６０は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ１０８０は、例えばハードディスク、SSD (Solid State Drive)、又はメモリカードなどの記憶装置である。また、ストレージ１０８０は、RAM や ROM 等のメモリであってもよい。
【００４１】
入出力インタフェース１１００は、情報処理装置２０００と入出力デバイスとを接続するためのインタフェースである。入出力デバイスは、例えばキーボード、マウス、又はディスプレイなどである。
【００４２】
ネットワークインタフェース１１２０は、ネットワーク１３０と接続するための物理ネットワークインタフェースである。ネットワークインタフェース１１２０は、有線回線と接続するためのネットワークインタフェースでもよいし、無線回線と接続するためのネットワークインタフェースでもよい。
【００４３】
ストレージ１０８０は、情報処理装置２０００の機能を実現するためのプログラムを記憶している。具体的には、受信部２０２０及び推定部２０４０の機能を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールを実行することで、受信部２０２０及び推定部２０４０の機能をそれぞれ実現する。ここでプロセッサ１０４０は、上記各モジュールを実行する際、これらのモジュールをメモリ１０６０上に読み出してから実行してもよいし、メモリ１０６０上に読み出さずに実行してもよい。
【００４４】
情報処理装置２０００のハードウエア構成は図４に示した構成に限定されない。例えば、各プログラムモジュールはメモリ１０６０に格納されてもよい。この場合、情報処理装置２０００は、ストレージ１０８０を備えていなくてもよい。
【００４５】
＜受信部２０２０について＞
受信部２０２０が受信するデータは、各ネットワークインタフェース１２０から送信されるデータである。このデータの生成元は様々である。例えばこのデータは、そのデータを送信したネットワークインタフェース１２０を管理する OS や VMM 又はその OS や VMM の上で動作しているアプリケーションによって生成される。
【００４６】
受信部２０２０が受信するデータの宛先は様々である。例えばこのデータの宛先は、情報処理装置２０００が有するネットワークインタフェース１１２０である。この場合、受信部２０２０によって受信されるデータは、例えば情報処理装置２０００から送信したリクエスト等に対する応答を表すデータである。情報処理装置２０００からリクエスト等を送信する方法の詳細については、後述の各実施形態で説明する。なお、ネットワークインタフェース１１２０を宛先とするデータは、情報処理装置２０００から送信されたリクエストへの応答を表すデータ以外であってもよい。
【００４７】
また例えば、受信部２０２０が受信するデータの宛先は、ネットワークインタフェース１１２０やネットワークインタフェース１２０を含む複数のネットワークインタフェースである。複数のネットワークインタフェースを宛先とするデータは、例えばマルチキャストパケットやブロードキャストパケットである。
【００４８】
また、受信部２０２０が受信するデータの宛先は、ネットワークインタフェース１１２０を含まなくてもよい。自身を宛先としないデータを受信する方法には、様々な方法がある。例えば、Ｌ２スイッチのミラーポートを介してネットワークインタフェース１１２０をネットワーク１３０に接続させる方法がある。ミラーポートに接続されているネットワークインタフェースは、そのネットワークインタフェースを宛先としないデータも受信することができる。ここで、ミラーポートを利用してデータを受信する方法は既知であるため、詳細な説明は省略する。また、ネットワークインタフェース１１２０を宛先としないデータを受信部２０２０が受信する方法は、ミラーポートを利用する方法に限定されない。
【００４９】
以下、「情報処理装置２０００が有するネットワークインタフェース１１２０を宛先とする」ことを、単に「情報処理装置２０００を宛先とする」とも表記する。
【００５０】
＜推定部２０４０について＞
推定部２０４０の動作の詳細については、後述の各実施形態で説明する。
【００５１】
＜処理の流れ＞
図５は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。受信部２０２０は、ネットワークインタフェースからデータを受信する（Ｓ１０２）。推定部２０４０は、受信したデータを用いて、ネットワークインタフェースが物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかを推定する（Ｓ１０４）。
【００５２】
＜作用・効果＞
本実施形態によれば、情報処理装置２０００によって受信されるデータに基づいて、ネットワーク１３０に接続しているネットワークインタフェース１２０が物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかが推定される。ここで、物理ネットワークインタフェースを持つマシンは物理マシンである。一方、仮想ネットワークインタフェースを持つマシンは、仮想マシンなど、ソフトウエアで実現されたマシンである。よって、本実施形態の情報処理装置２０００を用いることにより、ネットワーク１３０に接続されている各マシンが、物理マシンと仮想マシンなどのどちらであるかを推定することができる。よって、ネットワーク１３０の管理者やネットワーク１３０を管理する装置などは、ネットワーク１３０上の各マシンが物理マシンと仮想マシンなどのどちらであるかを把握して上で、ネットワーク１３０を適切に管理できるようになる。
【００５３】
［実施形態２］
実施形態２の情報処理装置２０００は、例えば実施形態１の情報処理装置２０００と同様に、図１で表される。下記で説明する点を除き、実施形態２の情報処理装置２０００は、実施形態１の情報処理装置２０００と同様の機能を有する。
【００５４】
実施形態２の受信部２０２０が受信するデータは、送信元のネットワークインタフェース１２０の MAC アドレス（送信元 MAC アドレス）を含む。具体的にはこのデータは、イーサネット（登録商標）フレームを含むデータである。送信元のネットワークインタフェース１２０の MAC アドレスは、イーサネット（登録商標）フレームのイーサネット（登録商標）ヘッダに示されている。
【００５５】
推定部２０４０は、受信部２０２０が受信したデータによって示される送信元 MAC アドレスに含まれる OUI（Organizationally Unique Identifier）を利用して推定を行う。以下、物理ネットワークインタフェースの MAC アドレスが示す OUI（物理ネットワークインタフェースの OUI）と仮想ネットワークインタフェースの MAC アドレスが示す OUI（仮想ネットワークインタフェースの OUI）についてそれぞれ説明する。
【００５６】
＜物理ネットワークインタフェースの OUI について＞
物理ネットワークインタフェースの MAC アドレスは、そのネットワークインタフェースの製造時に、そのネットワークインタフェースに割り当てられる。そのため一般に、物理ネットワークインタフェースの MAC アドレスは、そのネットワークインタフェースを利用する OS 等によって変更されない。
【００５７】
物理ネットワークインタフェースの OUI は、そのネットワークインタフェースを製造したベンダを特定するための識別子である。ネットワークインタフェースを製造するベンダは、製造したネットワークインタフェースに対し、そのベンダに割り当てられた OUI を含む MAC アドレスを割り当てる。なお、各ベンダは、OUI の管理を行っている IEEE（登録商標）（The Institute of Electrical and Electronics Engineers, Inc.）に申請を行うことで、OUI の割り当てを受ける。
【００５８】
図６は、MAC アドレスの構成を例示する図である。MAC アドレスは４８ビットの値である。一般に、MAC アドレスの上位２４ビットが OUI を表す。ベンダは、製造する各ネットワークインタフェースに対し、重複しない MAC アドレスを割り当てる。こうすることで、物理ネットワークインタフェース同士では MAC アドレスが重複しないようになっている。
【００５９】
ただし、本実施形態の情報処理装置２０００は、MAC アドレスの桁数及び OUI の桁数には依存しない。そのため情報処理装置２０００は、将来 MAC アドレスの桁数や OUI の桁数が変更された場合でも動作可能である。
【００６０】
＜仮想ネットワークインタフェースの OUI について＞
仮想ネットワークインタフェースは物理的に製造されるハードウエアではない。例えば仮想マシンの仮想ネットワークインタフェースは、VMM によって仮想的に実現されるものである。原理的には、VMM は、仮想ネットワークインタフェースに対して任意の MAC アドレスを割り当てることができる。そのため、仮想ネットワークインタフェースの OUI も任意の値を取り得る。
【００６１】
しかし、VMM が仮想ネットワークインタフェースに対して完全に任意の MAC アドレスを割り当てると、ネットワーク内に同じ MAC アドレスを持つ複数のネットワークインタフェースが存在しうることとなる。その結果、データが目的のネットワークインタフェースに到達しないなどの問題が生じうる。
【００６２】
そこで、仮想ネットワークインタフェースには、特定の OUI 含む MAC アドレスを割り当てることが一般的になっている。そのために、各 VMM を作成しているソフトウエアベンダの中にも、IEEE（登録商標）に申請を行って OUI の割り当てを受けているベンダがある。このように予め割り当てられた OUI を仮想ネットワークインタフェースに用いることで、異なる種類の VMM によって生成される仮想ネットワークインタフェースには、それぞれ異なる OUI を示すネットワークインタフェースが割り当てられるようにしている。例えば VMM を作成するベンダは、VM の設定ファイルのひな形を用意し、そのひな形に記述されている MAC アドレスの OUI を、そのベンダに割り当てられた OUI にしておく。一般に、ユーザはこのひな形を利用して VM の設定を記述することが多い。そのため、仮想ネットワークインタフェースに割り当てられる MAC アドレスに、ベンダ固有の OUI が含まれる確率が高いといえる。
【００６３】
また、MAC アドレスの重複を避ける必要があることは、エミュレータによって生成される仮想ネットワークインタフェースについても同様である。そのため、エミュレータを生成するベンダについても、同様の仕組みによって MAC アドレスが重複しないようにすると考えられる。
【００６４】
＜OUI を利用した推定＞
本実施形態の推定部２０４０は、上述した OUI の特徴に着目して推定を行う。例えば推定部２０４０は、仮想ネットワークインタフェースの MAC アドレスに含まれうる OUI のリストを取得する。推定部２０４０は、推定対象のネットワークインタフェース１２０（受信部２０２０が受信したデータの送信元の MAC アドレスを持つネットワークインタフェース１２０）の OUI がこのリストに含まれているか否かを判定する。そして、推定部２０４０は、推定対象のネットワークインタフェース１２０の OUI がこのリストに含まれている場合、このネットワークインタフェース１２０は仮想ネットワークインタフェースであると推定する。一方、推定部２０４０は、推定対象のネットワークインタフェース１２０の OUI がこのリストに含まれていない場合、このネットワークインタフェース１２０は物理ネットワークインタフェースであると推定する。
【００６５】
図７は、仮想ネットワークインタフェースの MAC アドレスに含まれうる OUI のリストを例示する図である。このリストをリスト２００と表記する。例えばリスト２００は、VMM を作成するソフトウエアベンダに割り当てられた OUI を列挙したリストである。推定部２０４０は、推定対象のネットワークインタフェース１２０の OUI がリスト２００に列挙されている OUI のいずれかと合致する場合、このネットワークインタフェース１２０が仮想ネットワークインタフェースであると推定する。
【００６６】
なお、推定部２０４０は、物理ネットワークインタフェースの MAC アドレスに含まれうる OUI のリストを取得してもよい。例えばこのリストは、物理ネットワークインタフェースを製造する各ハードウエアベンダに割り当てられた OUI を列挙したリストである。推定部２０４０は、推定対象のネットワークインタフェース１２０の OUI がこのリストに含まれている場合、このネットワークインタフェース１２０は物理ネットワークインタフェースであると推定する。一方、推定部２０４０は、推定対象のネットワークインタフェース１２０の OUI がこのリストに含まれていない場合、このネットワークインタフェース１２０は仮想ネットワークインタフェースであると推定する。
【００６７】
＜OUI のリストの取得方法＞
推定部２０４０が上述した各 OUI のリストを取得する方法は様々である。例えば、前述した仮想ネットワークインタフェースの MAC アドレスに含まれうる OUI や物理ネットワークインタフェースの MAC アドレスに含まれうる OUI のリストを予め作成しておき、情報処理装置２０００の内部又は外部に設けられた記憶部に記憶しておく。そして、推定部２０４０は、この記憶部からこれら OUI のリストを取得する。ここで、物理ネットワークインタフェースの MAC アドレスに含まれうる OUI や仮想ネットワークインタフェースの OUI のリストは、物理ネットワークインタフェースを製造するベンダや VMM 等を作成するベンダに問い合わせたり、OUI を管理する IEEE（登録商標）に問い合わせたりすることで知ることができる。
【００６８】
また、推定部２０４０は、上述の各ベンダや IEEE（登録商標）から自動で OUI に関する情報を取得することで、上述した OUI のリストを作成してもよい。例えば、各ベンダや IEEE（登録商標）によって OUI のデータベースなどが公開される場合、推定部２０４０はこのデータベースから OUI に関する情報を取得して利用する。
【００６９】
＜処理の流れ＞
図８は、実施形態２の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。以下、処理の対象となるネットワークインタフェース１２０をネットワークインタフェースＸと表記する。
【００７０】
受信部２０２０は、ネットワークインタフェースＸからデータを受信する（Ｓ２０２）。推定部２０４０は、受信したデータから送信元ネットワークインタフェース（ネットワークインタフェースＸ）の OUI を抽出する（Ｓ２０４）。推定部２０４０は、仮想ネットワークインタフェースの OUI のリストを取得する（Ｓ２０６）。推定部２０４０は、Ｓ２０４で抽出した OUI が、ステップＳ２０６で取得したリストに含まれるか否かを判定する（Ｓ２０８）。含まれる場合（Ｓ２０８：ＹＥＳ）、図８の処理はステップＳ２１０に進む。一方、含まれない場合（Ｓ２０８：ＮＯ）、図８の処理はステップＳ２１２に進む。
【００７１】
Ｓ２１０において、推定部２０４０は、ネットワークインタフェースＸは仮想ネットワークインタフェースであると推定する。一方、Ｓ２１２において、推定部２０４０は、ネットワークインタフェースＸは物理ネットワークインタフェースであると推定する。
【００７２】
＜ハードウエア構成例＞
例えば実施形態２の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、図４で表される。本実施形態において、前述したストレージ１０８０に記憶される各プログラムモジュールには、本実施形態で説明した各機能を実現するプログラムがさらに含まれる。また、仮想ネットワークインタフェースの OUI のリストや物理ネットワークインタフェースの OUI のリストを情報処理装置２０００の内部に記憶する場合、メモリ１０６０やストレージ１０８０などがこれらのリストを記憶する。
【００７３】
＜作用・効果＞
本実施形態の情報処理装置２０００によれば、ネットワークインタフェース１２０から受信したデータが示すそのネットワークインタフェース１２０の OUI に基づいて、そのネットワークインタフェース１２０が仮想ネットワークインタフェースと物理ネットワークインタフェースのどちらであるかという推定が行われる。具体的には、推定部２０４０は、ネットワークインタフェース１２０の OUI が仮想ネットワークインタフェースの OUI のリストや物理ネットワークインタフェースのリストなどに含まれるか否かという判定を行うことで、上記推定を行う。この方法によれば、受信したデータから抽出したネットワークインタフェース１２０の OUI をリスト等に含まれる OUI と比較するという簡単な処理で、上記推定を行える。そのため、推定に要する時間が短く、かつ推定に要する計算機資源が少ないという利点がある。
【００７４】
［実施形態３］
図９は、実施形態３に係る情報処理装置２０００を例示するブロック図である。図９において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。下記で説明する点を除き、実施形態３の情報処理装置２０００は、実施形態１の情報処理装置２０００と同様の機能を有する。
【００７５】
実施形態３の情報処理装置２０００は送信部２０６０をさらに有する。送信部２０６０は、複数のネットワークインタフェースそれぞれに対してデータを送信する。以下、送信部２０６０によって送信されるデータを送信データと呼ぶ。
【００７６】
実施形態３の受信部２０２０は、各ネットワークインタフェース１２０から、送信データに対する応答を表すデータ（以下、応答データ）を受信する。実施形態３の推定部２０４０は、送信データが送信されてから応答データが受信されるまでの時間（Round Trip Time（RTT））を用いて推定を行う。
【００７７】
＜着目点＞
実施形態３の推定部２０４０は、物理ネットワークインタフェースに対して送信データを送信した場合における RTT と、仮想ネットワークインタフェースに対して送信データを送信した場合における RTT との違いに着目して推定を行う。以下、この違いについて説明する。
【００７８】
物理ネットワークインタフェースと仮想ネットワークインタフェースとでは、データのハンドリングに要する時間が原理的に異なる。前述したように、仮想ネットワークインタフェースでデータを受信する場合であっても、まずは物理ネットワークインタフェースによってデータが受信される。そして、物理ネットワークインタフェースよって受信されたデータが仮想ネットワークインタフェースへ受け渡される。
【００７９】
例えば図１の場合、仮想ネットワークインタフェース７０を宛先とするデータは、まず物理ネットワークインタフェース３０によって受信され、VMM ２０によって処理される。VMM ２０は、このデータの宛先が物理ネットワークインタフェース３０でないことを割り出すと、仮想ブリッジ８０による処理を実行する。仮想ブリッジ８０による処理が行われた結果、データは宛先の仮想ネットワークインタフェース７０へ渡される。そして、そのデータは、その仮想ネットワークインタフェース７０を用いて動作しているゲスト OS ６０によって処理される。一方、データの宛先が物理ネットワークインタフェース３０である場合、仮想ブリッジ８０による処理は実行されない。
【００８０】
このように、送信データの宛先が仮想ネットワークインタフェースである場合、仮想化やエミュレーションに起因するオーバヘッド（仮想ブリッジ８０による処理など）が生じる。そのため、送信データの宛先が仮想ネットワークインタフェースである場合における RTT は、送信データの宛先が物理ネットワークインタフェースである場合における RTT よりも長くなる。
【００８１】
また、ネットワークインタフェース１２０に対して複数回送信データを送信した場合における各 RTT にはばらつきがある。そして、送信データの送信先が物理ネットワークインタフェースである場合よりも、送信データの送信先が仮想ネットワークインタフェースである場合の方が、RTT のばらつきが大きくなる。一般に、データの処理にかかる時間のばらつきは、その処理が複雑なほど大きくなる傾向にある。そのため、仮想化やエミュレーションの処理を伴う仮想ネットワークインタフェースに対して送信データが送信される場合の方が、これらの処理を伴わない物理ネットワークインタフェースに対して送信データが送信される場合よりも RTT のばらつきが大きくなる。
【００８２】
＜RTT の具体例＞
以下、RTT の大きさ及びばらつきの実測値を例示する。図１０から図１２は、ネットワークインタフェースに対して送信データを送信した場合における RTT を例示するグラフである。図１０から図１２はいずれも、Ｘ軸が試行回数を表しており、Ｙ軸が RTT を表している。図１０における送信データは ARP（Address Resolution Protocol）リクエストであり、図１１における送信データは NS（Neighbor Solicitation） メッセージであり、図１２における送信データは ICMP（Internet Control Message Protocol） echo リクエストである。これらの各送信データについての説明は後述する。
【００８３】
図１０から図１２のいずれのグラフにおいても、物理ネットワークインタフェースが送信先である場合の RTT の方が、仮想ネットワークインタフェースが送信先である場合の RTT よりも小さい。また、いずれのグラフにおいても、物理ネットワークインタフェースが送信先である場合の RTT の方が、仮想ネットワークインタフェースが送信先である場合の RTT よりもばらつきが小さい。
【００８４】
そこで、実施形態３の推定部２０４０は、例えば以下に示す方法で推定を行う。
【００８５】
＜RTT の大きさを用いる推定方法＞
前述したように、物理ネットワークインタフェースに対して送信データを送信する場合の方が、仮想ネットワークインタフェースに対して送信データを送信する場合よりも RTT が小さくなる。そこで推定部２０４０は、RTT の大きさを用いて推定を行う。
【００８６】
例えば推定部２０４０は、各ネットワークインタフェース１２０に対して送信データを送信し、RTT が最も小さいネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する。また例えば、推定部２０４０は、RTT が最も大きいネットワークインタフェースが、仮想ネットワークインタフェースであると推定する。
【００８７】
また例えば、推定部２０４０は、RTT の大きさに基づいてネットワークインタフェース１２０を複数のグループにクラスタリングしてもよい。そして、推定部２０４０はこれらのグループを用いて推定を行う。例えば推定部２０４０は、RTT の大きさが小さい順にグループを並べた場合において所定順位以上にあるグループに属するネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する。また、推定部２０４０は、順位が上記所定順位未満であるグループに属するネットワークインタフェース１２０が、仮想ネットワークインタフェースであると推定する。例えば上記所定順位は１である。この場合、推定部２０４０は、RTT の大きさが最も小さいグループに属するネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する。上記所定順位は、推定部２０４０に予め設定されていてもよいし、情報処理装置２０００の内部又は外部の記憶部に記憶されていてもよい。後者の場合、推定部２０４０は、推定を行う際に上記所定順位を記憶部から取得する。
【００８８】
なお、推定部２０４０は、複数のネットワークインタフェース１２０それぞれに対して複数の送信データを送信してもよい。この場合、推定部２０４０は、各ネットワークインタフェース１２０それぞれについて、RTT の統計値を算出する。そして、推定部２０４０は、この統計値を用いて、上述の各推定を行う。例えば推定部２０４０は、RTT の平均値が最も小さいネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する。また例えば推定部２０４０は、RTT の平均値が最も大きいネットワークインタフェース１２０が、仮想ネットワークインタフェースであると推定する。また、推定部２０４０は、この統計値を用いて、前述のクラスタリングによる推定を行ってもよい。
【００８９】
RTT の大きさを表す統計値は様々である。例えばこの統計値は、RTT の平均値、中央値、又は最頻値などである。
【００９０】
＜RTT のばらつきを用いる推定方法＞
前述したように、物理ネットワークインタフェースに対して送信データを送信する場合の方が、仮想ネットワークインタフェースに対して送信データを送信する場合よりも RTT のばらつきが小さいと考えられる。そこで推定部２０４０は、RTT のばらつきを用いて推定を行う。
【００９１】
例えば推定部２０４０は、RTT のばらつきが最も小さいネットワークインタフェースが、物理ネットワークインタフェースであると推定する。また例えば、推定部２０４０は、RTT のばらつきが最も大きいネットワークインタフェース１２０が、仮想ネットワークインタフェースであると推定する。
【００９２】
また例えば、推定部２０４０は、RTT のばらつきに基づいてネットワークインタフェース１２０を複数のグループにクラスタリングしてもよい。そして、推定部２０４０はこれらのグループを用いて推定を行う。例えば推定部２０４０は、RTT のばらつきが小さい順にグループを並べた場合において所定順位以上にあるグループに属するネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する。また、推定部２０４０は、順位が上記所定順位未満であるグループに属するネットワークインタフェース１２０が、仮想ネットワークインタフェースであると推定する。例えば上記所定順位は１である。この場合、推定部２０４０は、RTT のばらつきが最も小さいグループに属するネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する。上記所定順位は、推定部２０４０に予め設定されていてもよいし、情報処理装置２０００の内部又は外部の記憶部に記憶されていてもよい。後者の場合、推定部２０４０は、推定を行う際に上記所定順位を記憶部から取得する。
【００９３】
RTT のばらつきを用いる場合、送信部２０６０は、複数のネットワークインタフェース１２０それぞれに対して複数の送信データを送信する。そして、推定部２０４０は、各ネットワークインタフェース１２０それぞれについて、RTT のばらつきを表す統計値を算出する。そして推定部２０４０は、このばらつきを表す統計値を用いて上記推定を行う。
【００９４】
RTT のばらつきを表す統計値は様々である。例えばこの統計値は、RTT の分散や標準偏差などである。
【００９５】
＜推定部２０４０が行うその他の処理＞
推定部２０４０は、推定の確度を高くするために、以下で示す処理を行ってもよい。
【００９６】
例えば推定部２０４０は、各ネットワークインタフェース１２０から受信するデータのうち、最初の所定数（例えば１つ）のデータについては、RTT の統計値やばらつきの算出に利用しない。ネットワークインタフェース１２０に対して最初に送信データを送信する場合、ネットワークインタフェース１２０のアドレス解決が行われうる。そのため、観測される RTT が、その後に観測される RTT と比較して大きくなる可能性がある。よって、最初に観測される RTT を除外して RTT の統計値の算出等を行った方が、推定部２０４０による推定の確度が高くなる。
【００９７】
また、推定部２０４０は、ネットワークインタフェース１２０ごとに、RTT の外れ値を除外してもよい。例えば推定部２０４０は、ネットワークインタフェースＸについて観測された RTT の集合について、平均値μ及び標準偏差σを算出する。推定部２０４０は、この RTT の集合から、平均値μとの距離がσよりも大きい RTT（μ＋σより大きい RTT 又はμ-σより小さい RTT）を外れ値として除外する。そして、推定部２０４０は、外れ値を除外した集合を用いて推定を行う。なお、統計処理を行う際に外れ値を除外する方法には様々な既知の手法があり、推定部２０４０はこれら既知の様々な手法を利用できる。そのため、外れ値を除外する方法は例示した方法に限定されない。
【００９８】
＜送信部２０６０の動作の詳細＞
送信部２０６０は、各ネットワークインタフェース１２０に対して、そのネットワークインタフェース１２０から応答を得られる送信データを送信する。このような送信データの種類は様々である。例えば送信部２０６０は、ARP リクエストを送信する。ネットワークインタフェース１２０を用いて動作する OS や VMM などは、ARP リクエストを受信すると、ARP リプライを送信する。受信部２０２０は、応答データとして ARP リプライを受信する。よって、RTT は、送信部２０６０が ARP リクエストを送信してから受信部２０２０が ARP リプライを受信するまでの時間となる。なお、ARP リクエスト及び ARP リプライは、RFC 826（非特許文献２）で定義されている。
【００９９】
例えば送信部２０６０は、ICMP echo リクエストを送信する。ネットワークインタフェース１２０を用いて動作する OS や VMM などは、ICMP echo リクエストを受信すると、  ICMP echo リプライを送信する。受信部２０２０は、応答データとして ICMP echo リプライを受信する。よって、RTT は、送信部２０６０が ICMP echo リクエストを送信してから受信部２０２０が ICMP echo リプライを受信するまでの時間となる。
【０１００】
なお、IPv6 アドレスを持つネットワークインタフェースに対しては、ICMPv6（ICMP version 6）echo リクエストを送信してもよい。この場合、受信部２０２０は、応答データとして ICMPv6 echo リプライを受信する。
【０１０１】
なお、ICMP は RFC792（非特許文献３）で定義されている。また、ICMPv6 は RFC4443（非特許文献４）で定義されている。
【０１０２】
また例えば、送信部２０６０は、NS メッセージを送信する。ネットワークインタフェース１２０を用いて動作する OS などは、NS メッセージを受信すると、NA（Neighbor Advertisement）メッセージを送信する。受信部２０２０は、応答メッセージとして NA メッセージを受信する。よって、RTT は、送信部２０６０が NS メッセージを送信してから受信部２０２０が NA メッセージを受信するまでの時間となる。なお、NS メッセージを受信するネットワークインタフェース１２０は、IPv6 アドレスを持つネットワークインタフェースである。NS メッセージ及び NA メッセージは RFC4861（非特許文献５）で定義されている。
【０１０３】
なお、送信データは、その送信データを受信したネットワークインタフェース１２０から応答を得られるデータであればよく、上述した ARP リクエスト等に限定されない。
【０１０４】
＜ネットワーク１３０の構成について＞
ネットワーク１３０の構成次第で、送信データして利用できるデータが異なる。具体的には、情報処理装置２０００とネットワークインタフェース１２０が同一リンク内にあるか否かによって異なる。ネットワークインタフェース１２０が情報処理装置２０００と異なるリンクに存在する場合、レイヤ２レベルで送信される送信データ（ARP リクエストなど）は、ネットワークインタフェース１２０に到達できないためである。
【０１０５】
図１３はネットワーク１３０の構成を例示する第１の図である。図１３において、各ネットワークインタフェース１２０はいずれも、情報処理装置２０００と同一のリンク内に存在する。この場合、送信部２０６０から送信するデータは、前述したいずれの種類のデータでも構わない。
【０１０６】
図１４はネットワーク１３０の構成を例示する第２の図である。図１４において、各ネットワークインタフェース１２０は、情報処理装置２０００と異なるリンク内に存在する。この場合、送信部２０６０は、異なるリンクに存在するネットワークインタフェース１２０へ到達できるデータを送信する。具体的には、送信部２０６０は、レイヤ３レベルのプロトコルのデータ（ICMP echo リクエストなど）を送信する。
【０１０７】
なお、図１３及び図１４を用いて説明した事項は、情報処理装置２０００からネットワークインタフェース１２０に対してデータの送信を行う後述の各実施形態についても同様である。
【０１０８】
＜処理の流れ：概要＞
図１５は、実施形態３の情報処理装置２０００によって実行される処理の流れの概要を例示するフローチャートである。Ｓ３０２からＳ３０８は、複数のネットワークインタフェース１２０それぞれについて行うループ処理である。Ｓ３０２において、送信部２０６０は、まだ送信データの送信先としていないネットワークインタフェース１２０があるか否かを判定する。既に全てのネットワークインタフェース１２０が送信データの送信先とされた場合、図１５の処理はＳ３１０に進む。一方、まだ送信データの送信先とされていないネットワークインタフェース１２０がある場合、図１５の処理はＳ３０４に進む。この際、送信部２０６０は、まだ送信データの送信先とされていないネットワークインタフェース１２０の中から１つを選択する。図１５において、ここで選択されたネットワークインタフェース１２０はネットワークインタフェースｉと表記されている。
【０１０９】
Ｓ３０４において、送信部２０６０はネットワークインタフェースｉに対して送信データを送信する。Ｓ３０６において、受信部２０２０はネットワークインタフェースｉから応答データを受信する。ただし、受信部２０２０は、ネットワークインタフェースｉから非同期に受信データを受信してもよい。この場合、図１５の処理は、Ｓ３０４の後にＳ３０８に進む。Ｓ３０８はループ処理Ａの終端である。図１５の処理は、Ｓ３０２に戻る。
【０１１０】
前述したように、全てのネットワークインタフェース１２０が送信データの送信先とされた場合、図１５の処理はＳ３１０に進む。Ｓ３１０において、推定部２０４０は、各ネットワークインタフェースについて得られた RTT を用いて推定を行う。
【０１１１】
なお、各ネットワークインタフェース１２０に対して複数回送信データを送信する場合、各ネットワークインタフェース１２０についてＳ３０４及びＳ３０６を複数回実行する。
【０１１２】
前述したように、推定部２０４０による推定には、例えばRTT の大きさを利用する方法と、RTT のばらつきを利用する方法がある。以下、それぞれの方法の流れを、フローチャートを用いて例示する。
【０１１３】
＜RTT の大きさを用いる推定処理の流れ＞
図１６は、RTT の大きさに基づいて行う推定処理の流れを例示するフローチャートである。推定部２０４０は、RTT の大きさでネットワークインタフェースを複数のグループにクラスタリングする（Ｓ４０２）。推定部２０４０は、RTT の大きさの昇順にグループをソートする（Ｓ４０４）。推定部２０４０は、所定順位以上のグループに属するネットワークインタフェース１２０が物理ネットワークインタフェースであると推定する（Ｓ４０６）。推定部２０４０は、所定順位未満であるネットワークインタフェース１２０が物理ネットワークインタフェースであると推定する（Ｓ４０８）。
【０１１４】
＜RTT のばらつきを用いる推定処理の流れ＞
図１７は、RTT のばらつきに基づいて行う推定処理の流れを例示するフローチャートである。推定部２０４０は、RTT のばらつき度合いでネットワークインタフェースを複数のグループにクラスタリングする（Ｓ５０２）。推定部２０４０は、RTT のばらつきの大きさの昇順にグループをソートする（Ｓ５０４）。推定部２０４０は、所定順位以上のグループに属するネットワークインタフェース１２０が物理ネットワークインタフェースであると推定する（Ｓ５０６）。推定部２０４０は、所定順位未満のグループに属するネットワークインタフェース１２０が仮想ネットワークインタフェースであると推定する（Ｓ５０８）。
【０１１５】
＜物理ネットワークインタフェースの数が１つに限定される環境の構築＞
物理ネットワークインタフェースの数が１つに限定される環境を構築した上で情報処理装置２０００による推定を行うと、推定の精度を高くすることができる。物理ネットワークインタフェースの数が未知の場合、例えば RTT が２番目に小さいネットワークインタフェース１２０や RTT が３番目に小さいネットワークインタフェース１２０が、物理ネットワークインタフェースなのか仮想ネットワークインタフェースなのかを、判断しかねる場合もありうる。一方、物理ネットワークインタフェースの数が１つに限定されれば、「RTT が最も小さいネットワークインタフェース１２０が物理ネットワークインタフェースであり、それ以外のネットワークインタフェース１２０が仮想ネットワークインタフェースである」という推定を高い精度で行うことができる。
【０１１６】
そこで情報処理装置２０００は、物理ネットワークインタフェースが１つに限定される環境を構築し、その後に推定部２０４０による推定を行ってもよい。例えば情報処理装置２０００が、図１８で表される構成で他の物理マシンと接続されているとする。図１８は、スイッチを介して情報処理装置２０００と複数の物理マシンとが接続されている構成を例示する図である。
【０１１７】
例えば情報処理装置２０００は、ポート VLAN（Virtual LAN）を利用することで、情報処理装置２０００と各物理マシンとが１対１で接続されるように設定を行う。図１９は、ポート VLAN によって情報処理装置２０００と各物理マシンとが１対１で接続されている様子を例示する図である。このような設定を行った上で送信部２０６０を動作させることにより、推定部２０４０は、物理ネットワークインタフェースの数が１つに限定される環境で推定を行うことができる。よって、推定部２０４０による推定の精度が高くなる。なお、ポート VLAN は既存技術であるため、これに関する説明は省略する。
【０１１８】
＜ハードウエア構成例＞
例えば実施形態３の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、図４で表される。本実施形態において、前述したストレージ１０８０に記憶される各プログラムモジュールには、本実施形態で説明した各機能を実現するプログラムがさらに含まれる。また、ストレージ１０８０は、送信部２０６０を実現するプログラムモジュールをさらに記憶する。プロセッサ１０４０は、このプログラムモジュールを実行することで、送信部２０６０の機能を実現する。
【０１１９】
＜作用・効果＞
本実施形態によれば、各ネットワークインタフェース１２０に対して送信データを送信した場合における RTT に基づいて推定が行われる。この方法には、実施形態２の方法と異なり、OUI のリストなど、推定に用いる情報を用意しておく必要がないという利点がある。
【０１２０】
［実施形態４］
図２０は、実施形態４に係る情報処理装置２０００を例示するブロック図である。図２０において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【０１２１】
実施形態４の情報処理装置２０００は、検出部２０８０を有する。検出部２０８０は、ネットワークインタフェース１２０から受信するデータを用いて、そのネットワークインタフェース１２０がデータの送受信を行える状態になったことを検出する。以下、「データの送受信を行える状態」をオンラインとも表記し、「データの送受信を行えない状態」をオフラインとも表記する。
【０１２２】
実施形態４の推定部２０４０は、ネットワークインタフェース１２０がオンラインになったタイミングに基づいて推定を行う。例えば推定部２０４０は、オンラインになった時点が最も早いネットワークインタフェースが、物理的なネットワークインタフェースであると推定する。
【０１２３】
＜着目点＞
本実施形態の情報処理装置２０００は、物理ネットワークインタフェースがオンラインになるタイミングと仮想ネットワークインタフェースがオンラインになるタイミングとの差異に着目して推定を行う。具体的には、ある物理マシンが持つ物理ネットワークインタフェースがオンラインになるタイミングは、その物理マシン上で生成される仮想ネットワークインタフェースがオンラインになるタイミングよりも早い。以下、その理由を説明する。
【０１２４】
前述したように、仮想ネットワークインタフェースは、物理マシン上で動作する VMM やエミュレータなどによって実現される。そして、仮想ネットワークインタフェースを生成する VMM や エミュレータなどが起動している場合、一般に、物理ネットワークインタフェースはオンラインになる。
【０１２５】
例えば VMM の場合を例に説明する。図２１は、VMM 及び VM が起動する流れを例示する図である。まず、物理マシンが起動し、その上で VMM が起動する。そして、VMM によって物理ネットワークインタフェースが初期化されることで、物理ネットワークインタフェースがオンラインになる。次に、VMM によって VM が起動され、VM 上でゲスト OS が起動される。さらに、ゲスト OS によって仮想ネットワークインタフェースが初期化されることで、仮想ネットワークインタフェースがオンラインになる。なお、VM が複数起動する場合、VM は順に起動される場合もあるし、並列に起動される場合もある。
【０１２６】
図２１で例示したように、仮想マシン環境において物理ネットワークインタフェースがオンラインになるタイミングは、仮想ネットワークインタフェースがオンラインになるタイミングよりも早くなる。
【０１２７】
また、仮想ネットワークインタフェースがエミュレーションによって実現される場合、物理マシン上で直接動作する OS によってエミュレータが起動される。そのため、エミュレータが起動する際には、この OS の起動処理が完了している。よって、この OS によって初期化される物理ネットワークインタフェースはオンラインになっている。よって、エミュレーション環境においても、物理ネットワークインタフェースがオンラインになるタイミングは、仮想ネットワークインタフェースがオンラインになるタイミングよりも早くなる。
【０１２８】
＜推定部２０４０による推定処理＞
以上の点に着目し、本実施形態の推定部２０４０は、オンラインになったタイミングが最も早いネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する。
【０１２９】
また上述した説明によれば、仮想ネットワークインタフェースがオンラインにあるタイミングは、物理ネットワークインタフェースがオンラインになるタイミングよりも遅いともいえる。そこで推定部２０４０は、オンラインになるタイミングが最も遅いネットワークインタフェース１２０が、仮想ネットワークインタフェースであると推定してもよい。
【０１３０】
＜ネットワークインタフェース１２０がオンラインになったことを検出する方法＞
一般にネットワークインタフェースは、初期化の過程や初期化が終了した後において、データの送受信を行う。例えば自動で IP アドレスが割り当てられるネットワークインタフェースは、初期化のタイミングで DHCP discovery パケットを送信する。さらに、IPv6 アドレスを持つネットワークインタフェースについては、ネットワークインタフェースの起動時に DAD（Duplicate Address Detection）処理が行われる。具体的には、ネットワークインタフェースは NS メッセージの送信を行う。さらには、ネットワークインタフェースは、ファイル共有やサービスディスカバリのための広告データ（LLMNR（Link-Local Multicast Name Resolution）や mDNS（multicast Domain Name System）などのデータ）も送信しうる。このように、ネットワークインタフェース１２０がオンラインになる時（ネットワークインタフェース１２０が初期化される時）やその後において、ネットワークインタフェース１２０は何らかのデータを送信する。
【０１３１】
そこで検出部２０８０は、ネットワークインタフェース１２０から受信するデータに基づいて、そのネットワークインタフェース１２０がオンラインになったことを検出する。例えば検出部２０８０は、ネットワークインタフェース１２０から所定のデータを受信した場合に、そのネットワークインタフェース１２０がオンラインになったと判定する。所定のデータは、例えば前述した DHCP discover パケットや NS メッセージなどである。
【０１３２】
「上記所定のデータとしてどの種類のデータを扱うか」の定義は、予め検出部２０８０に設定されていてもよいし、情報処理装置２０００の内部又は外部に設けられる記憶部に記憶しておいてもよい。後者の場合、検出部２０８０は、この記憶部から情報を取得することで、どの種類のデータを所定のデータとして扱うかを把握する。
【０１３３】
「どのネットワークインタフェース１２０が最も早くオンラインになったか」を判定するためには、全てのネットワークインタフェース１２０がオフラインであるタイミングを把握する必要がある。さもないと、例えば情報処理装置２０００が動作を開始した後に、あるネットワークインタフェース１２０がオンラインになったことが検出され、それ以外のネットワークインタフェース１２０についてはオンラインになったことが検出されない場合に、推定部２０４０による推定が難しくなる。なぜなら、「それ以外のネットワークインタフェース１２０はオフラインである」というケースと、「それ以外のネットワークインタフェース１２０は、情報処理装置２０００が動作を開始前に既にオンラインになっていた」というケースの区別がつかないためである。
【０１３４】
全てのネットワークインタフェース１２０がオフラインであるタイミングを把握する方法は様々である。例えば、情報処理装置２０００を運用する環境が、一般のオフィスのように、PC 等の電源を切ってから帰宅するというルールに基づいて運用されているとする。この場合、例えば情報処理装置２０００は、所定の時間（例えば夜の０時）に、全てのネットワークインタフェース１２０がオフラインになったとみなす。
【０１３５】
また情報処理装置２０００は、各ネットワークインタフェース１２０がオフラインになることを検出してもよい。具体的には、後述の実施形態５に示すように、情報処理装置２０００は、ネットワークインタフェース１２０に対して繰り返しデータを送信し、そのデータに対する応答を受信部２０２０が受け取らなくなった場合に、そのネットワークインタフェース１２０がオフラインになったと判定する。この方法の詳細については、実施形態５で説明する。
【０１３６】
ただし情報処理装置２０００は、情報処理装置２０００が動作を開始した際に、全てのネットワークインタフェース１２０がオフラインになっているとみなしてもよい。
【０１３７】
＜処理の流れ＞
図２２は、実施形態４の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。検出部２０８０は、各ネットワークインタフェースから受信したデータに基づいて、各ネットワークインタフェースがオンラインになったことを検出する（Ｓ６０２）。推定部２０４０は、最も早くオンラインになったネットワークインタフェースが物理ネットワークインタフェースであると推定する（Ｓ６０４）。
【０１３８】
なお推定部２０４０は、「最も早くオンラインになったネットワークインタフェース以外のネットワークインタフェースは仮想ネットワークインタフェースである」と推定してもよい。
【０１３９】
＜物理ネットワークインタフェースの数が１つに限定される環境の構築＞
実施形態４の情報処理装置２０００は、実施形態３の情報処理装置２０００と同様に、物理ネットワークインタフェースの数が１つに限定される環境を構築した上で推定を行ってもよい。
【０１４０】
＜ハードウエア構成例＞
例えば実施形態４の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、図４で表される。本実施形態において、前述したストレージ１０８０に記憶される各プログラムモジュールには、本実施形態で説明した各機能を実現するプログラムがさらに含まれる。また、ストレージ１０８０は、検出部２０８０を実現するプログラムモジュールをさらに記憶する。プロセッサ１０４０は、このプログラムモジュールを実行することで、検出部２０８０の機能を実現する。
【０１４１】
＜作用・効果＞
本実施形態の情報処理装置２０００によれば、ネットワークインタフェース１２０がオンラインになるタイミングに基づいて、ネットワークインタフェース１２０が物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらなのかを推定することができる。ネットワークインタフェース１２０がオンラインになるタイミングに基づいて推定を行うため、推定部２０４０による推定を、ネットワークインタフェース１２０がネットワーク１３０上に接続してすぐに行えるという利点がある。
【０１４２】
［実施形態５］
図２３は、実施形態５に係る情報処理装置２０００を例示するブロック図である。図２３において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【０１４３】
実施形態５の情報処理装置２０００は、判定部２１００を有する。判定部２１００は、ネットワークインタフェース１２０から受信したデータの履歴を用いて、そのネットワークインタフェース１２０がオンラインであるか否かを判定する。以下、受信したデータの履歴を、受信履歴と表記する。実施形態５の推定部２０４０は、判定部２１００による判定結果を用いて推定を行う。
【０１４４】
＜着目点＞
一般に、物理ネットワークインタフェースが１つである環境において、「仮想ネットワークインタフェースはオンラインであり、物理ネットワークインタフェースはオフラインである」という状況は起こらない。前述した通り、仮想ネットワークインタフェースは、物理ネットワークインタフェースを利用して外部の物理マシン等と通信する。そのため、仮想ネットワークインタフェースが外部の物理マシン等と通信する際には、仮想ネットワークインタフェースだけでなく、物理ネットワークインタフェースもオンラインである必要がある。
【０１４５】
一方で、「仮想ネットワークインタフェースはオフラインであり、物理ネットワークインタフェースはオンラインである」という状況は、一般的に起こりうる状況である。例えば、「VMM は起動しているが、VM は起動していない」という状況がこの状況に相当する。
【０１４６】
＜推定部２０４０による推定処理＞
そこで、推定部２０４０は、「あるネットワークインタフェース X がオフラインであり、かつ別のネットワークインタフェース Y がオンラインである」という場合に、ネットワークインタフェース X が仮想ネットワークインタフェースであると推定する。
【０１４７】
また例えば、推定部２０４０は、オンラインのネットワークインタフェースが１つのみである場合、そのネットワークインタフェースは物理ネットワークインタフェースであると推定する。
【０１４８】
＜判定部２１００の詳細＞
判定部２１００は、各ネットワークインタフェース１２０の状態を把握するために、ネットワークインタフェース１２０から受信するデータの履歴を利用する。判定部２１００が利用する履歴は様々である。例えば判定部２１００は、ICMP echo リプライや NA メッセージなどのように、情報処理装置２０００から送信したデータ（ICMP echo リクエストや NS メッセージなど）に対する応答を表すデータの履歴を用いる。この履歴を用いることで、判定部２１００は、あるネットワークインタフェース１２０から応答を受信した時にはそのネットワークインタフェース１２０がオンラインであり、応答を受信しない時にはそのネットワークインタフェース１２０がオフラインであると判定する。
【０１４９】
また例えば、自発的に繰り返しデータが送信するように、ネットワークインタフェースを用いて動作する OS や VMM などを構成してもよい。例えば、VMM やゲスト OS が定期的にハートビートを送信し、受信部２０２０がこれを受信するようにする。判定部２１００は、このハートビートの履歴を利用する。具体的には、あるネットワークインタフェース１２０からハートビートを受信した時にはそのネットワークインタフェース１２０がオンラインであり、ハートビートを受信しない時にはそのネットワークインタフェース１２０がオフラインであると判定する。
【０１５０】
＜具体例＞
図２４は、情報処理装置２０００によって把握される各ネットワークインタフェース１２０の状態を時系列で例示するグラフである。図２４のグラフの横軸は時間を示しており、縦軸はネットワークインタフェース１２０の名前を示している。バツ印は、ネットワークインタフェース１２０からデータを受信した時点を示す。そして、バツ印を囲む領域は、ネットワークインタフェース１２０がオンラインであると推定される時間を表している。
【０１５１】
まず、ネットワークインタフェース１の状態について説明する。受信部２０２０は、時点 t1 より前には、ネットワークインタフェース１からデータを受信していない。また、受信部２０２０は、時点 t 1 以降、ネットワークインタフェース１からデータを受信し続けている。このようなデータの履歴から、判定部２１００は、ネットワークインタフェース１が、時点 t1 以降オンラインになっていると判定する。
【０１５２】
次に、ネットワークインタフェース２の状態について説明する。受信部２０２０は、時点 t2 より前には、ネットワークインタフェース２からデータを受信していない。また、受信部２０２０は、時点 t2 以降、時点 t3 まで、ネットワークインタフェース２から複数回データを受信している。そして、受信部２０２０は、時点 t3 以降、ネットワークインタフェース２からデータを受信していない。このようなデータの履歴から、判定部２１００は、ネットワークインタフェース２が時点 t2 から t3 までの間オンラインであり、時点 t3 でオフラインになったと判定する。
【０１５３】
図２４において、時点 t3 以降、ネットワークインタフェース２はオフラインであり、ネットワークインタフェース１はオンラインであることが分かる。そのため、推定部２０４０は、ネットワークインタフェース２が仮想ネットワークインタフェースであると推定する。また、推定部２０４０は、ネットワークインタフェース１が物理ネットワークインタフェースであると推定する。
【０１５４】
＜物理ネットワークインタフェースの数が１つに限定される環境の構築＞
実施形態５の情報処理装置２０００は、実施形態３の情報処理装置２０００と同様に、物理ネットワークインタフェースの数が１つに限定される環境を構築した上で推定を行ってもよい。
【０１５５】
＜処理の流れ＞
図２５は、実施形態５の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。判定部２１００は、各ネットワークインタフェース１２０から受信したデータの履歴を用いて、各ネットワークインタフェース１２０の状態を判定する（Ｓ７０２）。
【０１５６】
判定部２１００は、オフラインのネットワークインタフェース１２０があるか否かを判定する。オフラインのネットワークインタフェース１２０がない場合（Ｓ７０４：ＮＯ）、図２５の処理は再度Ｓ７０２に進む。一方、オフラインのネットワークインタフェース１２０がある場合（Ｓ７０４：ＹＥＳ）、図２５の処理はＳ７０６に進む。なお図２５の処理は、Ｓ７０２に進む前に所定の時間待機してもよい。
【０１５７】
Ｓ７０６において、判定部２１００は、オンラインのネットワークインタフェース１２０があるか否かを判定する。オンラインのネットワークインタフェース１２０がない場合（Ｓ７０６：ＮＯ）、図２５の処理は終了する。一方、オンラインのネットワークインタフェース１２０がある場合（Ｓ７０４：ＹＥＳ）、図２５の処理はＳ７０８に進む。
【０１５８】
Ｓ７０８において、推定部２０４０は、オフラインのネットワークインタフェース１２０が仮想ネットワークインタフェースであると推定する。
【０１５９】
＜ハードウエア構成例＞
例えば実施形態５の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、図４で表される。本実施形態において、前述したストレージ１０８０に記憶される各プログラムモジュールには、本実施形態で説明した各機能を実現するプログラムがさらに含まれる。また、ストレージ１０８０は、判定部２１００を実現するプログラムモジュールをさらに記憶する。プロセッサ１０４０は、このプログラムモジュールを実行することで、判定部２１００の機能を実現する。
【０１６０】
＜作用・効果＞
本実施形態によれば、「あるネットワークインタフェース１２０がオフラインであり、かつ別のネットワークインタフェース１２０がオンラインである」という状態を検出することで、ネットワークインタフェース１２０が物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかを推定することができる。例えば情報処理装置２０００は、日常的に（例えば定期的に）各ネットワークインタフェース１２０からデータを受信するようにすることで、日常的に各ネットワークインタフェース１２０を監視する。このように日常的な監視を行うことで、ネットワーク１３０を一時的に高負荷にするということなく、推定を行うことができる。
【０１６１】
［実施形態６］
実施形態６の情報処理装置２０００は、実施形態３の情報処理装置２０００と同様に図９で表される。実施形態６の情報処理装置２０００では、実施形態３の情報処理装置２０００と同様に、送信部２０６０がネットワークインタフェース１２０に対して送信データを送信する。また、受信部２０２０は、送信データに対する応答を表す応答データを受信する。なお、送信データは、実施形態３で説明した ARP リクエスト、ICMP echo リクエスト、又は NS メッセージなどである。
【０１６２】
＜想定環境＞
前述したように、仮想ネットワークインタフェースを宛先とするデータは、仮想ネットワークインタフェースに到達する前に、まず物理ネットワークインタフェースによって受信される。この特徴に着目し、物理ネットワークインタフェースを仮想ネットワークインタフェースのプロキシとして機能させる方法がある。本実施形態では、このように物理ネットワークインタフェースが仮想ネットワークインタフェースのプロキシとして動作する環境を想定する。以下、物理ネットワークインタフェースが仮想ネットワークインタフェースのプロキシとして機能する構成について、さらに具体的に説明する。
【０１６３】
例えば、物理ネットワークインタフェースを ARP プロキシとして機能させる構成がある。図２６は、物理ネットワークインタフェース３０が ARP プロキシとして機能する様子を例示する図である。図２６では、仮想ネットワークインタフェース７０を宛先とする ARP リクエストが送信されている。
【０１６４】
まずこの ARP リクエストは、物理ネットワークインタフェース３０によって受信される。ここで、この ARP リクエストの宛先は物理ネットワークインタフェース３０ではなく仮想ネットワークインタフェース７０であるため、通常なら VMM ２０は、この ARP リクエストを仮想ネットワークインタフェース７０に渡す。そして、ゲスト OS ６０は渡されたデータを処理する。
【０１６５】
これに対し、図２６では、VMM ２０は、仮想ネットワークインタフェース７０を宛先とする ARP リクエストを仮想ネットワークインタフェース７０に渡さず、この ARP リクエストに対する ARP リプライを生成して送信する。これにより、VMM ２０が ARP プロキシとして機能する。
【０１６６】
なお、このような処理を実現するため、VMM ２０は、仮想ネットワークインタフェース７０の IP アドレス及び MAC アドレスを予め把握しておく。
【０１６７】
また、同様の原理により、「VMM ２０が、仮想ネットワークインタフェース７０を宛先とする NS メッセージをゲスト OS ６０に代わって処理し、NA メッセージを送信する」という構成も実現できる。
【０１６８】
＜推定部２０４０による推定＞
通常、送信データの送信先のネットワークインタフェース１２０と、受信データの送信元のネットワークインタフェース１２０とは、同一のネットワークインタフェースとなる。しかし、上述した想定環境において送信部２０６０が仮想ネットワークインタフェース７０へ送信データを送信した場合、受信部２０２０が受信する応答データは、送信データの送信先とは異なる送信元を示す。例えば図２６の場合、応答データの送信元は物理ネットワークインタフェース３０であり、送信データの送信先が仮想ネットワークインタフェース７０となる。これは、仮想ネットワークインタフェース７０を宛先とするデータに対する応答が、ゲスト OS ６０ではなくVMM ２０によって行われるためである。
【０１６９】
そこで本実施形態の推定部２０４０は、送信データの送信先のネットワークインタフェース１２０と、受信データの送信元のネットワークインタフェース１２０との異同に基づいて推定を行う。例えば推定部２０４０は、送信データの送信先のネットワークインタフェース１２０と、その送信データに対する応答データの送信元のネットワークインタフェース１２０とが異なる場合、受信データの送信元のネットワークインタフェース１２０が物理ネットワークインタフェースであると推定する。またこの場合、推定部２０４０は、送信データの送信先のネットワークインタフェースが仮想ネットワークインタフェースであると推定してもよい。
【０１７０】
送信データの送信先や受信データの送信元は、各データのヘッダが示す IP アドレスや MAC アドレスによって特定できる。例えば送信データの送信先のネットワークインタフェース１２０は、送信データのヘッダが示す宛先 IP アドレスや宛先 MAC アドレスによって特定できる。また、受信データの送信元のネットワークインタフェース１２０は、受信データのヘッダが示す送信元 IP アドレスや送信元 MAC アドレスによって特定できる。そこで推定部２０４０は、送信データと受信データのヘッダが示す上記各情報を用いて、送信データの送信先のネットワークインタフェース１２０と、受信データの送信元のネットワークインタフェース１２０との異同を判定する。
【０１７１】
＜処理の流れ１＞
図２７は、実施形態６の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。図２７において、送信データの送信先をネットワークインタフェースＸと表記する。
【０１７２】
送信部２０６０はネットワークインタフェースＸへ送信データを送信する（Ｓ８０２）。受信部２０２０は応答データを受信する（Ｓ８０４）。推定部２０４０は、応答データの送信元がネットワークインタフェースＸであるか否かを判定する（Ｓ８０６）。応答データの送信元がネットワークインタフェースＸでない場合（Ｓ８０６：ＮＯ）、図２７の処理は終了する。一方、応答データの送信元がネットワークインタフェースＸである場合（Ｓ８０８：ＹＥＳ）、図２７の処理はＳ８０８に進む。
【０１７３】
推定部２０４０は、受信データの送信元のネットワークインタフェースが物理ネットワークインタフェースであると推定する（Ｓ８０８）。ネットワークインタフェースＸは仮想ネットワークインタフェースであると推定する（Ｓ８１０）。
【０１７４】
＜物理ネットワークインタフェースの数が１つに限定される環境の構築＞
実施形態６の情報処理装置２０００は、実施形態３の情報処理装置２０００と同様に、物理ネットワークインタフェースの数が１つに限定される環境を構築した上で推定を行ってもよい。
【０１７５】
＜ハードウエア構成＞
例えば実施形態６の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、図４で表される。本実施形態において、前述したストレージ１０８０に記憶される各プログラムモジュールには、本実施形態で説明した各機能を実現するプログラムがさらに含まれる。また、ストレージ１０８０は、送信部２０６０を実現するプログラムモジュールをさらに記憶する。プロセッサ１０４０は、このプログラムモジュールを実行することで、送信部２０６０の機能を実現する。
【０１７６】
＜作用・効果＞
本実施形態によれば、物理ネットワークインタフェースが仮想ネットワークインタフェースのプロキシとして機能している環境において、ネットワークインタフェース１２０が物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかを推定できる。そのため、上述の様な特殊な環境においても、そのような環境の特徴を利用して、ネットワークインタフェース１２０が物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかを推定することができる。
【０１７７】
［実施形態７］
図２８は、実施形態７の情報処理装置２０００を例示するブロック図である。図２８において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【０１７８】
実施形態７の情報処理装置２０００は、第２判定部２１２０を有する。実施形態７の第２判定部２１２０は、受信部２０２０が複数のネットワークインタフェース１２０それぞれから受信するデータを用いて、１つの MAC アドレスに対して IPv4 アドレスが複数対応付けられているか否か、又は１つの MAC アドレスに対して同一スコープの IPv6 アドレスが複数対応付けられているか否かを判定する。そして、推定部２０４０は、１つの MAC アドレスに対して IPv4 アドレスが複数対応付けられているか、又は１つの MAC アドレスに対して同一スコープの IPv6 アドレスが複数対応付けられている場合に、その MAC アドレスを持つネットワークインタフェース１２０が物理ネットワークインタフェースであると推定する。
【０１７９】
ここで、MAC アドレスと IP アドレスが対応付けられているとは、その MAC アドレスを持つネットワークインタフェースに対してその IP アドレスが割り当てられていることを意味する。
【０１８０】
＜IP アドレスについて＞
まず、ネットワークインタフェースに対して割り当てられる一般的な IPv4 アドレス及び IPv6 アドレスについて説明する。
【０１８１】
＜＜IPv6 アドレスについて＞＞
IPv6 では、１つのネットワークインタフェースに対して、スコープが異なる複数の IPv6 アドレスが割り当てられうる。IPv6 アドレスのスコープとは、その IPv6 アドレスが有効な範囲のことである。それぞれスコープが異なる IPv6 アドレスとして、グローバルアドレス、ULA（Unique Local IPv6 Unicast Address）、及びリンクローカルアドレスがある。
【０１８２】
ただし通常、ネットワークインタフェースに対してスコープが同一の IPv6 アドレスが複数割り当てられることはない。例えば、あるネットワークインタフェースに対して２つのグローバルアドレスが割り当てられることはない。
【０１８３】
＜＜IPv4 アドレスについて＞＞
IPv4 では IPv6 におけるスコープという概念は無い。そのため、１つのネットワークインタフェースに対して割り当てられる IPv4 アドレスは、通常１つである。
【０１８４】
以上のことから、通常、１つの MAC アドレスに対し、複数の IPv4 アドレスや同一スコープの複数の IPv6 アドレスが対応付けられることはない。
【０１８５】
＜着目するネットワーク環境＞
仮想化環境やエミュレーション環境では、「１つ MAC アドレスに対し、複数の IPv4 アドレスや同一スコープの複数の IPv6 アドレスが対応付けられる」という構成がありうる。図２９は、仮想化環境において、１つの MAC アドレスに対して複数の IPv4 アドレスが対応付けられる構成を例示する図である。
【０１８６】
図２９において、仮想ネットワークインタフェース７０には、物理ネットワークインタフェース３０と同じ MAC アドレスが割り当てられている。一方、仮想ネットワークインタフェース７０に割り当てられている IPv4 アドレスは、物理ネットワークインタフェース３０に割り当てられている IPv4 アドレスと異なる。そのため、１つの MAC アドレスに対し、複数の IPV4 アドレスが対応付けられている。
【０１８７】
VMM ２０は、物理ネットワークインタフェース３０によって受信されたデータがどのネットワークインタフェースを宛先とするものであるかを、そのデータの宛先 IPv4 アドレスを用いて判断する。そのため、VMM ２０は、物理ネットワークインタフェース３０や仮想ネットワークインタフェース７０の IPv4 アドレスを予め把握しておく。
【０１８８】
なお、図２９と同様の構成により、１つの MAC アドレスに対し、同一スコープの IPv6 アドレスが複数対応付けられうる。具体的には、仮想ネットワークインタフェース７０の MAC アドレスを物理ネットワークインタフェース３０の MAC アドレスと同じにしつつ、仮想ネットワークインタフェース７０と物理ネットワークインタフェース３０にそれぞれ異なる同一スコープの IPv6 アドレスを割り当てる。
【０１８９】
また仮想化環境だけでなく、エミュレーション環境においても、同様のネットワーク構成を構築できる。
【０１９０】
よって、１つの MAC アドレスに対して複数の IPv4 アドレスや同一スコープの複数の IPv6 アドレスが対応付けられている場合、上述した仮想化環境やエミュレーション環境が構築されていると推定できる。この場合、複数の IPv4 アドレスや同一スコープの複数の IPv6 アドレスが対応付けられている MAC アドレスは、物理ネットワークインタフェース３０の MAC アドレスであると推定できる。
【０１９１】
そこで推定部２０４０は、各ネットワークインタフェース１２０から受信するデータに基づき、MAC アドレスと IP アドレスとの対応付けを把握する。そして、推定部２０４０は、１つの MAC アドレスに対して複数の IPv4 アドレスや同一スコープの複数の IPv6 アドレスが対応付けられている場合、その MAC アドレスを持つネットワークインタフェース１２０が物理ネットワークインタフェースであると推定する。図２９で説明した通り、複数の IP アドレスが対応付けられる MAC アドレスは、物理ネットワークインタフェースの MAC アドレスであるためである。
【０１９２】
例えば第２判定部２１２０は、受信部２０２０が各ネットワークインタフェース１２０から受信するデータの送信元 MAC アドレス及び送信元 IP アドレスを抽出し、これらを対応付ける。第２判定部２１２０は、各ネットワークインタフェース１２０から受信したデータに基づいて生成された複数の対応付けの中から、同じ MAC アドレスを示す対応付けを抽出する。そして、第２判定部２１２０は、同じ MAC アドレスを示す複数の対応付けが、異なる IPv4 アドレス又は異なる同一スコープの IPv6 アドレスを示している場合に、「１つの MAC アドレスに対して複数の IPv4 アドレス又は同一スコープの複数の IPv6 アドレスが対応付けられている」と判定する。
【０１９３】
＜処理の流れ＞
図３０は、実施形態７の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。
【０１９４】
受信部２０２０は、複数のネットワークインタフェース１２０からデータを受信する（Ｓ９０２）。第２判定部２１２０は、受信した各データについて、送信元 MAC アドレスと送信元 IPv4 アドレスとの対応付けを生成する（Ｓ９０４）。第２判定部２１２０は、生成した対応付けを用いて、複数のIPv4 アドレスが対応付けられている MAC アドレスがあるか否かを判定する（Ｓ９０６）。複数のIPv4 アドレスが対応付けられている MAC アドレスがない場合（Ｓ９０６：ＮＯ）、図３０の処理は終了する。一方、複数のIPv4 アドレスが対応付けられている MAC アドレスがある場合（Ｓ９０６：ＹＥＳ）、図３０の処理はＳ９０８に進む。
【０１９５】
推定部２０４０は、複数の IPv4 アドレスが対応付けられている MAC アドレスを持つネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する（Ｓ９０８）。
【０１９６】
なお、図３０では、IP アドレスが IPv4 アドレスである場合について例示している。IP アドレスが IPv6 アドレスである場合の処理の流れも、図３０で示した流れと同様である。ただし、Ｓ９０６において、第２判定部２１２０は、同一スコープの IPv6 アドレスが複数の対応付けられている MAC アドレスがあるか否かを判定する。また、Ｓ９０８において、推定部２０４０は、同一スコープの IPv6 アドレスが複数の対応付けられている MAC アドレスを持つネットワークインタフェース１２０が、物理ネットワークインタフェースであると推定する
【０１９７】
＜物理ネットワークインタフェースの数が１つに限定される環境の構築＞
実施形態７の情報処理装置２０００は、実施形態３の情報処理装置２０００と同様に、物理ネットワークインタフェースの数が１つに限定される環境を構築した上で推定を行ってもよい。
【０１９８】
＜ハードウエア構成＞
例えば実施形態７の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、図４で表される。本実施形態において、前述したストレージ１０８０に記憶される各プログラムモジュールには、本実施形態で説明した各機能を実現するプログラムがさらに含まれる。また、ストレージ１０８０は、第２判定部２１２０を実現するプログラムモジュールをさらに記憶する。プロセッサ１０４０は、このプログラムモジュールを実行することで、第２判定部２１２０の機能を実現する。
【０１９９】
＜作用・効果＞
本実施形態によれば、仮想ネットワークインタフェースに対して物理ネットワークインタフェースと同じ MAC アドレスが割り当てられているという環境において、その環境の特徴を利用し、ネットワークインタフェース１２０が物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかを推定することができる。
【０２００】
［実施形態８］
実施形態８の情報処理装置２０００は、実施形態１の情報処理装置２０００と同様に図１で表される。
【０２０１】
実施形態８の受信部２０２０は、ネットワークインタフェース１２０から、インタフェース情報又はマシン情報を取得する。あるネットワークインタフェース１２０から受信するインタフェース情報は、そのネットワークインタフェース１２０に関する情報を示す。また、あるネットワークインタフェース１２０から受信するマシン情報は、そのネットワークインタフェース１２０を有するマシンに関する情報を示す。ここで、物理ネットワークインタフェースを有するマシンは物理マシンであり、仮想ネットワークインタフェースを有するマシンはソフトウエアで実現されたマシン（仮想マシンやエミュレートされたマシンなど）である。
【０２０２】
実施形態８の推定部２０４０は、インタフェース情報又はマシン情報を用いて推定を行う。以下、詳細に説明する。
【０２０３】
＜ネットワークインタフェース１２０の名称に基づく推定＞
一般に、物理マシンが有する物理ネットワークインタフェースの種類は様々である。例えば、物理マシンのメーカごとに、物理マシンに搭載される物理ネットワークインタフェースが異なる。また、新たな物理ネットワークインタフェースが開発されると、その後に販売される物理マシンには、その新たな物理ネットワークインタフェースが搭載されるようになる。
【０２０４】
一方、VMM やエミュレータによって生成される仮想ネットワークインタフェースの種類は限られている。例えば、同じ種類の VMM によって生成される各 VM の仮想ネットワークインタフェースは、いずれも同じ種類の物理ネットワークインタフェースを再現したものであることが多い。また一般に、VMM やエミュレータによって生成される仮想ネットワークインタフェースは、物理マシンに搭載されている物理ネットワークインタフェースよりも古い型の物理ネットワークインタフェースを再現したものであることが多い。
【０２０５】
以上のことから、仮想ネットワークインタフェースと物理ネットワークインタフェースは、ネットワークインタフェースの名称や特徴が異なる場合が多い。
【０２０６】
そこで推定部２０４０は、ネットワークインタフェース１２０のインタフェース情報に基づいて、ネットワークインタフェース１２０が仮想ネットワークインタフェースであるか物理ネットワークインタフェースであるかを推定する。
【０２０７】
例えば推定部２０４０は、ネットワークインタフェース１２０の名称に基づく推定を行う。例えば推定部２０４０は、仮想ネットワークインタフェースでありうる名称のリストを取得する。そして、推定部２０４０は、ネットワークインタフェース１２０のインタフェース情報が示すそのネットワークインタフェース１２０の名称が、上記取得したリストに含まれているか否かを判定する。そして、推定部２０４０は、ネットワークインタフェース１２０の名称が上記リストに含まれている場合、そのネットワークインタフェース１２０が仮想ネットワークインタフェースであると推定する。
【０２０８】
なお、推定部２０４０が仮想ネットワークインタフェースでありうる名称のリストを取得する方法は、例えば実施形態２の推定部２０４０が仮想ネットワークインタフェースの OUI のリストを取得する方法と同様である。
【０２０９】
なお、ネットワークインタフェース１２０の名称を利用して推定を行う方法は、上述の例に限定されない。例えば、あるネットワークインタフェース１２０から受信するマシン情報が、そのネットワークインタフェース１２０を有するマシン上で動作している OS や VMM によって管理されているネットワークインタフェース１２０の情報を示しているとする。例えば図２の環境の場合、物理ネットワークインタフェース３０から受信するマシン情報は、VMM ２０によって管理されている物理ネットワークインタフェース３０の情報及び NAT インタフェース４０の情報を示す。ここで、NAT インタフェース４０は VMM ２０によって生成される仮想的なネットワークインタフェースである。そして一般に、NAT インタフェース４０の名称は、それが物理ネットワークインタフェースではなく NAT 用の仮想ネットワークインタフェースであることが分かるように、特徴的な名称になっていることが多い。
【０２１０】
そこで推定部２０４０は、VMM ２０が物理マシン１０内のネットワーク環境を構築するために生成する仮想ネットワークインタフェース（NAT インタフェース４０など）の名称の特徴（利用される可能性が高い単語など）を表すリストを利用して推定を行う。具体的には、推定部２０４０は、ネットワークインタフェース１２０から取得したマシン情報が示す各ネットワークインタフェースの名称の中に、上記リストが示す特徴に合致する名称があるか否かを判定する。上記特徴に合致する名称のネットワークインタフェースがある場合、推定部２０４０は、マシン情報の取得元のネットワークインタフェース１２０が物理ネットワークインタフェースであると推定する。例えば、マシン情報が示すインタフェースの名称の中に、NAT インタフェースの名称であると考えられる名称がある場合、そのマシン情報を送信したネットワークインタフェース１２０は、VMM ２０によって管理されている物理ネットワークインタフェース３０であると推定できる。
【０２１１】
＜ホスト名を用いた推定＞
マシン情報は、マシンのハードウエア構成に関する情報や、そのマシン上で動作している OS などのソフトウエアの情報を含む。ここで、物理マシン上で動作しているソフトウエアは VMM やエミュレータなどであり、仮想マシンやエミュレートされたマシンの上で動作しているソフトウエアはゲスト OS などである。
【０２１２】
例えばマシン情報は、マシンで動作している OS に割り当てられたホスト名を示す。ホスト名は、DNS サーバによって自動的によって割り当てられる場合もあるし、手動で割り当てられる場合もある。ただし、DNS サーバによって自動的に割り与えられる場合であったとしても、「どのような名前を割り当てるか」の設定を行う主体は一般的に人である。よって一般に、ホスト名は人が考えるものである。
【０２１３】
例えば人は、VM やエミュレートされたマシンに対し、そのマシンが物理マシンではなく VM などであることを把握しやすいホスト名を与えたり、そのマシンを動作させている物理マシンのホスト名（物理マシン上で動作している OS や VMM に割り当てられた名前）に関連したホスト名を与えたりすることが多い。こうすることで、マシンの管理が容易になるなどの利点があるためである。例えば、物理マシンのホスト名が user1 である場合、人は、VM のホスト名を user1_vm などとする。
【０２１４】
そこで推定部２０４０は、ネットワークインタフェース１２０から取得するマシン情報が示すホスト名に基づいて推測を行う。例えば推定部２０４０は、あるネットワークインタフェース１２０から取得したマシン情報が示すホスト名に、仮想化やエミュレーションと関連する所定文字列が含まれている場合に、そのネットワークインタフェース１２０が仮想マシンネットワークインタフェースであると推定する。ここで、仮想化やエミュレーションと関連する所定文字列は、例えば vm、emu（emulation の略）、guest、又は child などである。
【０２１５】
また例えば、推定部２０４０は、あるネットワークインタフェース１２０から取得したマシン情報が示すホスト名に、物理マシンであることを想起させる所定文字列が含まれている場合に、そのネットワークインタフェース１２０が物理マシンネットワークインタフェースであると推定する。ここで、物理マシンであることを想起させる所定文字列は、例えば vmm、phy（physical の略）、real、又は parent などである。
【０２１６】
なお、上述した各所定文字列は、予め推定部２０４０に設定されていてもよいし、情報処理装置２０００の内部又は外部の記憶部に記憶されていてもよい。後者の場合、推定部２０４０は、推定を行う際にこの記憶部から上記所定文字列を取得する。
【０２１７】
＜インタフェース情報やマシン情報の取得方法＞
受信部２０２０がインタフェース情報やマシン情報を取得する方法は様々である。例えば受信部２０２０は、各ネットワークインタフェース１２０に対してリクエストを送信し、そのリクエストに対するレスポンスとしてインタフェース情報やマシン情報を取得する。例えば受信部２０２０は、SNMP（Simple Network Management Protocol）を利用してこれらの情報を取得する。この場合、VMM やゲスト OS などは、ネットワークインタフェースの情報などを管理する SNMP サーバアプリケーションを動作させている。そして、情報処理装置２０００は、この SNMP サーバプリケーションに対してリクエストを送信することで、この SNMP サーバによって管理されているネットワークインタフェースの名称などの情報を取得する。ただし、このようにインタフェース情報等を提供するアプリケーションは、SNMP サーバアプリケーションに限定されない。
【０２１８】
同様に、受信部２０２０は、NIQ（Node Information Query）を利用してインタフェース情報やマシン情報を取得してもよい。
【０２１９】
また、受信部２０２０は、各ネットワークインタフェース１２０によって自発的に送信されているデータを受信してもよい。例えば各マシン間でファイルの共有などを行う場合、各マシンはホスト名などをブロードキャストやマルチキャストする。このような場合、各ネットワークインタフェース１２０から自発的にインタフェース情報やマシン情報が送信される。そこで受信部２０２０は、このようにネットワーク１３０上を流れるインタフェース情報やマシン情報を受信する。
【０２２０】
＜処理の流れ＞
図３１は、実施形態８の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。図３１において、送信データの送信先をネットワークインタフェースＸと表記する。
【０２２１】
受信部２０２０はネットワークインタフェースＸからインタフェース情報又はマシン情報を受信する（Ｓ１００２）。推定部２０４０は、受信したインタフェース情報又はマシン情報に基づいて、ネットワークインタフェースＸが物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかを推定する。
【０２２２】
＜物理ネットワークインタフェースの数が１つに限定される環境の構築＞
実施形態８の情報処理装置２０００は、実施形態３の情報処理装置２０００と同様に、物理ネットワークインタフェースの数が１つに限定される環境を構築した上で推定を行ってもよい。
【０２２３】
＜ハードウエア構成＞
例えば実施形態８の情報処理装置２０００のハードウエア構成は、実施形態１の情報処理装置２０００と同様に、図２で表される。本実施形態において、前述したストレージ１０８０に記憶される各プログラムモジュールには、本実施形態で説明した各機能を実現するプログラムがさらに含まれる。
【０２２４】
＜作用・効果＞
本実施形態によれば、ネットワークインタフェース１２０を用いて動作する OS や VMM などから取得する情報に基づいて、ネットワークインタフェース１２０が物理ネットワークインタフェースと仮想ネットワークインタフェースのどちらであるかを推定できる。この方法によれば、情報処理装置２０００は、データのヘッダに含まれる情報（送信元 IP アドレスなど）よりも豊富な情報を得ることができるため、推定部２０４０による推定の精度が高くなる。
【０２２５】
［実施形態９］
実施形態９の情報処理装置２０００は、実施形態２から実施形態８のいずれか２つ以上を組み合わせた構成を有する。
【０２２６】
実施形態９の推定部２０４０は、実施形態２から実施形態８で説明した推定方法の内のいずれか２つ以上の方法でそれぞれ推定を行う。さらに、推定部２０４０は、２つ以上の推定結果を利用して、総合的な推定結果を生成する。
【０２２７】
例えば実施形態９の推定部２０４０は、所定数以上の推定方法によって「ネットワークインタフェースＸは物理ネットワークインタフェースである」と推定された場合に、「ネットワークインタフェースＸは物理ネットワークインタフェースである」という総合的な推定結果を生成する。同様に推定部２０４０は、所定数以上の推定方法によって「ネットワークインタフェースＸは仮想ネットワークインタフェースである」と推定された場合に、「ネットワークインタフェースＸは仮想ネットワークインタフェースである」という総合的な推定結果を生成する。この所定数は、予め推定部２０４０に設定されていてもよいし、情報処理装置２０００の内部又は外部の記憶部に記憶されていてもよい。後者の場合、推定部２０４０は、推定を行う際にこの記憶部から上記所定値を取得する。
【０２２８】
また例えば、推定部２０４０は、各推定方法による推定結果の重み付き和を算出し、その算出結果に基づいて総合的な推定結果を生成してもよい。数式（１）は、各推定方法による推定結果の重み付き和を算出する式の例である。ｉは推定方法に割り当てた ID である。wi は推定方法ｉの推定結果に与える重みである。ri は推定方法ｉの推定結果である。例えば ri は、推定方法ｉの推定結果が「ネットワークインタフェース１２０は物理ネットワークインタフェースである」である場合に 1 を示し、「ネットワークインタフェース１２０は仮想ネットワークインタフェースである」である場合に -1 を示す。
【数１】
2016201690.tif 000003
【０２２９】
重み付き和 S の利用方法は様々である。例えば推定部２０４０は、重み付き和 S の値が 0 より大きい場合に、「ネットワークインタフェース１２０は物理ネットワークインタフェースである」という総合的な推定結果を生成する。一方、推定部２０４０は、重み付き和 S の値が 0 未満である場合に、「ネットワークインタフェース１２０は仮想ネットワークインタフェースである」という総合的な推定結果を生成する。さらに、推定部２０４０は、重み付き和 S の値が 0 である場合に、「推定不能」という総合的な推定結果を生成する。
【０２３０】
また推定部２０４０は、物理ネットワークインタフェースの数が既知である場合、各ネットワークインタフェース１２０の重み付き和 S の順位を用いて、各ネットワークインタフェース１２０が物理ネットワークインタフェースなのか仮想ネットワークインタフェースなのかを推定してもよい。例えば物理ネットワークインタフェースが１つであることが既知の場合、推定部２０４０は、「重み付き和 S が最も大きいネットワークインタフェース１２０は物理ネットワークインタフェースであり、それ以外のネットワークインタフェース１２０は仮想ネットワークインタフェースである」という総合的な推定結果を生成する。
【０２３１】
なお、物理ネットワークインタフェースの数は、実施形態３で説明したポート VLAN を用いる方法などにより、１つに限定することが可能である。
【０２３２】
＜作用・効果＞
本実施形態の情報処理装置２０００は、複数の推定方法による推定結果に基づいて総合的な推定を行うため、１つの推定方法のみを利用する場合よりも高い精度で推定を行うことができる。
【０２３３】
［実施形態１０］
図３２は、実施形態１０に係る情報処理装置２０００を例示するブロック図である。図３２において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【０２３４】
実施形態１０の情報処理装置２０００は、対応付け部２１４０を有する。実施形態１０の対応付け部２１４０は、物理ネットワークインタフェースと、その物理ネットワークインタフェースを用いて動作する仮想ネットワークインタフェースとの対応付けを行う。なお、対応付け部２１４０によって行われる対応付けは、「物理マシンと、その物理マシン上で動作している仮想化又はエミュレートされたマシンとの対応付け（例えば物理マシンと VM の対応付け）」や、「物理マシン上で動作する VMM 又はエミュレータと、その物理マシン上で動作する仮想化又はエミュレートされたマシンとの対応付け（例えば VMM とゲストOS との対応付け）」とも言い換えることができる。
【０２３５】
実施形態１０において、推定部２０４０は、物理ネットワークインタフェースの数が１つに限定される環境を構築した上で、各ネットワークインタフェースに関する推定を行う。そして、対応付け部２１４０は、この環境下で推定された物理ネットワークインタフェースと仮想ネットワークインタフェースとを対応づける。物理ネットワークインタフェースの数が１つに限定されているので、各仮想ネットワークインタフェースは、必ずこの物理ネットワークインタフェースを用いて動作する仮想ネットワークインタフェースであるためである。なお、物理ネットワークインタフェースの数が１つに限定される環境を構築する方法は、実施形態３で説明した通りである。
【０２３６】
ネットワークインタフェース１２０同士の対応付けを表す方法は様々である。例えば対応付け部２１４０は、物理ネットワークインタフェースの MAC アドレスや IP アドレスと、仮想ネットワークインタフェースの MAC アドレスや IP アドレスとを対応づける。また実施形態１０の対応付け部２１４０は、物理ネットワークインタフェースを有する物理マシンのホスト名や UUID と、仮想ネットワークインタフェースを有する VM などのホスト名や UUID とを対応づけてもよい。なお、対応付け部２１４０は、実施形態８で説明したマシン情報などを利用することで、物理マシンや VM のホスト名などを把握する。
【０２３７】
図３３は、対応付け部２１４０によって生成される対応付けを例示する図である。図３３（ａ）は物理ネットワークインタフェースの MAC アドレスと仮想ネットワークインタフェースの MAC アドレスとを対応付けたテーブルを示す。このテーブルから、例えば、「MAC アドレスが BB:BB:BB:BB である仮想ネットワークインタフェースを持つ VM と、MAC アドレスCC:CC:CC:CC である仮想ネットワークインタフェースを持つ VM は、MAC アドレスが AA:AA:AA:AA である物理ネットワークインタフェースを持つ物理マシン上で動作している」ということが分かる。
【０２３８】
一方、図３３（ｂ）は、物理マシンのホスト名と仮想マシンのホスト名とを対応付けたテーブルを示す。このテーブルから、例えば、「ホスト名が hostB である VM とホスト名が hostC である VM は、ホスト名が hostA である物理マシン上で動作している」ということが分かる。
【０２３９】
＜作用・効果＞
本実施形態の情報処理装置２０００によれば、物理ネットワークインタフェースと仮想ネットワークインタフェースとの対応付け（物理マシンと VM などとの対応付け）が行われる。これにより、ネットワーク１３０の管理者やネットワーク１３０を管理する装置は、ネットワーク１３０に存在するネットワークインタフェース１２０やマシンの対応関係（従属関係）を容易に把握することができる。よって、ネットワーク１３０の管理者等は、ネットワーク１３０の管理をより適切に行うことができる。
【０２４０】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【０２４１】
以下、参考形態の例を付記する。
１．  データを受信する受信手段と、
前記受信されたデータを用いて、そのデータの送信元のネットワークインタフェースが、物理的なネットワークインタフェースと仮想的なネットワークインタフェースのどちらであるかの推定を行う推定手段と、
を有する情報処理装置。
２．  前記推定手段は、前記データが示す送信元のネットワークインタフェースのレイヤ２アドレスに含まれる OUI（Organizationally Unique Identifier）を用いて前記推定を行う１．に記載の情報処理装置。
３．  複数のネットワークインタフェースそれぞれに対して送信データを送信する送信手段を有し、
前記受信手段は、各前記ネットワークインタフェースから、前記送信データに対する応答データを受信し、
前記推定手段は、前記送信データが送信されてから前記応答データが受信されるまでの時間を用いて前記推定を行う１．に記載の情報処理装置。
４．  前記送信手段は、各前記ネットワークインタフェースに対し、複数の前記送信データを送信し、
前記受信手段は、各前記ネットワークインタフェースから、複数の前記送信データそれぞれについて前記応答データを受信し、
前記推定手段は、各前記ネットワークインタフェースについて、前記時間の大きさの統計値又は前記時間のばらつきの統計値を算出し、前記算出した統計値を用いて前記推定を行う３．に記載の情報処理装置。
５．  前記データを用いて、前記ネットワークインタフェースがデータの送受信を行える状態になったことを検出する検出手段を有し、
前記推定手段は、データの送受信を行える状態になった時点が最も早い前記ネットワークインタフェースが、物理的なネットワークインタフェースであると推定する、１．に記載の情報処理装置。
６．  前記受信したデータの履歴を用いて、前記ネットワークインタフェースがデータの送受信を行える状態であるか否かを判定する判定手段を有し、
前記推定手段は、第１の前記ネットワークインタフェースがデータの送受信を行えない状態であり、かつ第１の前記ネットワークインタフェースとは異なる第２の前記ネットワークインタフェースがデータの送受信を行える状態である場合に、第１の前記ネットワークインタフェースは仮想的なネットワークインタフェースであると推定する、１．に記載の情報処理装置。
７．  ネットワークインタフェースに対して送信データを送信する送信手段を有し、
前記受信手段は、前記送信データに対する応答データを受信し、
前記推定手段は、前記送信データの送信先のネットワークインタフェースと、その送信データに対する応答データの送信元のネットワークインタフェースが異なる場合、前記送信データの送信先のネットワークインタフェースが仮想的なネットワークインタフェースであると推定するか、又は前記応答データの受信元のネットワークインタフェースが物理的なネットワークインタフェースであると推定する１．に記載の情報処理装置。
８．  前記送信データは、ARP（Address Resolution Protocol）リクエスト又は NS（Neighbor Solicitation）メッセージであり、
ARP リクエストに対する応答データは ARP リプライであり、
NS メッセージに対する応答データは NA（Neighbor Advertisement）メッセージである７．に記載の情報処理装置。
９．  前記受信手段は、複数の前記ネットワークインタフェースからデータを受信し、
複数の前記ネットワークインタフェースそれぞれから受信したデータを用いて、１つの レイヤ２アドレスに対して IPv4（Internet Protocol version 4）アドレスが複数対応付けられているか否か、又は１つのレイヤ２アドレスに対して同一スコープの IPv6（IP version 6）アドレスが複数対応付けられているか否かを判定する判定手段を有し、
前記推定手段は、１つのレイヤ２アドレスに対して IPv4 アドレスが複数対応付けられているか、又は １つのレイヤ２アドレスに対して同一スコープの IPv6 アドレスが複数対応付けられている場合に、そのレイヤ２アドレスを持つネットワークインタフェースが、物理的なネットワークインタフェースであると推定する、１．に記載の情報処理装置。
１０．  前記ネットワークインタフェースから受信するデータは、そのネットワークインタフェースに関する情報又はそのネットワークインタフェースを動作させているマシンに関する情報を示しており、
前記推定手段は、前記ネットワークインタフェースに関する情報又はそのネットワークインタフェースを動作させているマシンに関する情報を用いて、そのネットワークインタフェースについて前記推定を行う、１．に記載の情報処理装置。
１１．  前記推定手段は、前記ネットワークインタフェースの名前、又はそのネットワークインタフェースを用いて動作しているマシンに割り当てられたホスト名を用いて、そのネットワークインタフェースについて前記推定を行う、１０．に記載の情報処理装置。
１２．  物理ネットワークインタフェースであると推定されたネットワークインタフェースと、仮想ネットワークインタフェースであると推定されたネットワークインタフェースとの対応付けを行う対応付け手段を有する、１．乃至１１に記載の情報処理装置。
１３．  コンピュータを、１．乃至１２．いずれか一つに記載の情報処理装置として動作させるプログラム。
１４．  コンピュータによって実行される制御方法であって、
データを受信する受信ステップと、
前記受信されたデータを用いて、そのデータの送信元のネットワークインタフェースが、物理的なネットワークインタフェースと仮想的なネットワークインタフェースのどちらであるかの推定を行う推定ステップと、
を有する制御方法。
１５．  前記推定ステップは、前記データが示す送信元のネットワークインタフェースのレイヤ２アドレスに含まれる OUI（Organizationally Unique Identifier）を用いて前記推定を行う１４．に記載の制御方法。
１６．  複数のネットワークインタフェースそれぞれに対して送信データを送信する送信ステップを有し、
前記受信ステップは、各前記ネットワークインタフェースから、前記送信データに対する応答データを受信し、
前記推定ステップは、前記送信データが送信されてから前記応答データが受信されるまでの時間を用いて前記推定を行う１４．に記載の制御方法。
１７．  前記送信ステップは、各前記ネットワークインタフェースに対し、複数の前記送信データを送信し、
前記受信ステップは、各前記ネットワークインタフェースから、複数の前記送信データそれぞれについて前記応答データを受信し、
前記推定ステップは、各前記ネットワークインタフェースについて、前記時間の大きさの統計値又は前記時間のばらつきの統計値を算出し、前記算出した統計値を用いて前記推定を行う１６．に記載の制御方法。
１８．  前記データを用いて、前記ネットワークインタフェースがデータの送受信を行える状態になったことを検出する検出ステップを有し、
前記推定ステップは、データの送受信を行える状態になった時点が最も早い前記ネットワークインタフェースが、物理的なネットワークインタフェースであると推定する、１４．に記載の制御方法。
１９．  前記受信したデータの履歴を用いて、前記ネットワークインタフェースがデータの送受信を行える状態であるか否かを判定する判定ステップを有し、
前記推定ステップは、第１の前記ネットワークインタフェースがデータの送受信を行えない状態であり、かつ第１の前記ネットワークインタフェースとは異なる第２の前記ネットワークインタフェースがデータの送受信を行える状態である場合に、第１の前記ネットワークインタフェースは仮想的なネットワークインタフェースであると推定する、１４．に記載の制御方法。
２０．  ネットワークインタフェースに対して送信データを送信する送信ステップを有し、
前記受信ステップは、前記送信データに対する応答データを受信し、
前記推定ステップは、前記送信データの送信先のネットワークインタフェースと、その送信データに対する応答データの送信元のネットワークインタフェースが異なる場合、前記送信データの送信先のネットワークインタフェースが仮想的なネットワークインタフェースであると推定するか、又は前記応答データの受信元のネットワークインタフェースが物理的なネットワークインタフェースであると推定する１４．に記載の制御方法。
２１．  前記送信データは、ARP（Address Resolution Protocol）リクエスト又は NS（Neighbor Solicitation）メッセージであり、
ARP リクエストに対する応答データは ARP リプライであり、
NS メッセージに対する応答データは NA（Neighbor Advertisement）メッセージである２０．に記載の制御方法。
２２．  前記受信ステップは、複数の前記ネットワークインタフェースからデータを受信し、
複数の前記ネットワークインタフェースそれぞれから受信したデータを用いて、１つの レイヤ２アドレスに対して IPv4（Internet Protocol version 4）アドレスが複数対応付けられているか否か、又は１つのレイヤ２アドレスに対して同一スコープの IPv6（IP version 6）アドレスが複数対応付けられているか否かを判定する判定ステップを有し、
前記推定ステップは、１つのレイヤ２アドレスに対して IPv4 アドレスが複数対応付けられているか、又は １つのレイヤ２アドレスに対して同一スコープの IPv6 アドレスが複数対応付けられている場合に、そのレイヤ２アドレスを持つネットワークインタフェースが、物理的なネットワークインタフェースであると推定する、１４．に記載の制御方法。
２３．  前記ネットワークインタフェースから受信するデータは、そのネットワークインタフェースに関する情報又はそのネットワークインタフェースを動作させているマシンに関する情報を示しており、
前記推定ステップは、前記ネットワークインタフェースに関する情報又はそのネットワークインタフェースを動作させているマシンに関する情報を用いて、そのネットワークインタフェースについて前記推定を行う、１４．に記載の制御方法。
２４．  前記推定ステップは、前記ネットワークインタフェースの名前、又はそのネットワークインタフェースを用いて動作しているマシンに割り当てられたホスト名を用いて、そのネットワークインタフェースについて前記推定を行う、２３．に記載の制御方法。
２５．  物理ネットワークインタフェースであると推定されたネットワークインタフェースと、仮想ネットワークインタフェースであると推定されたネットワークインタフェースとの対応付けを行う対応付けステップを有する、１４．乃至２４に記載の制御方法。
【符号の説明】
【０２４２】
１０  物理マシン
２０  VMM
３０  物理ネットワークインタフェース
４０  NAT インタフェース
５０  VM
６０  ゲスト OS
７０  仮想ネットワークインタフェース
８０  仮想ブリッジ
９０  仮想ルータ
１００  物理ネットワーク
１１０  仮想ネットワーク
１２０  ネットワークインタフェース
１３０  ネットワーク
２００  リスト
１０２０  バス
１０４０  プロセッサ
１０６０  メモリ
１０８０  ストレージ
１１００  入出力インタフェース
１１２０  ネットワークインタフェース
２０００  情報処理装置
２０２０  受信部
２０４０  推定部
２０６０  送信部
２０８０  検出部
２１００  判定部
２１２０  第２判定部
２１４０  対応付け部
【図１】
2016201690.tif 000004
【図２】
2016201690.tif 000005
【図３】
2016201690.tif 000006
【図４】
2016201690.tif 000007
【図５】
2016201690.tif 000008
【図６】
2016201690.tif 000009
【図７】
2016201690.tif 000010
【図８】
2016201690.tif 000011
【図９】
2016201690.tif 000012
【図１０】
2016201690.tif 000013
【図１１】
2016201690.tif 000014
【図１２】
2016201690.tif 000015
【図１３】
2016201690.tif 000016
【図１４】
2016201690.tif 000017
【図１５】
2016201690.tif 000018
【図１６】
2016201690.tif 000019
【図１７】
2016201690.tif 000020
【図１８】
2016201690.tif 000021
【図１９】
2016201690.tif 000022
【図２０】
2016201690.tif 000023
【図２１】
2016201690.tif 000024
【図２２】
2016201690.tif 000025
【図２３】
2016201690.tif 000026
【図２４】
2016201690.tif 000027
【図２５】
2016201690.tif 000028
【図２６】
2016201690.tif 000029
【図２７】
2016201690.tif 000030
【図２８】
2016201690.tif 000031
【図２９】
2016201690.tif 000032
【図３０】
2016201690.tif 000033
【図３１】
2016201690.tif 000034
【図３２】
2016201690.tif 000035
【図３３】
2016201690.tif 000036