(57)【要約】  本発明の計算機システムは、パススルー技術とバス延長技術とを組み合わせた構成におけるゲストＯＳと遠隔デバイス間の接続容易性を向上させる。計算機システムは、ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備え、前記バス延長手段は、前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムと前記遠隔デバイス間の通信を制御する通信制御手段を含む。
2015190079.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備え、
前記バス延長手段は、前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムと前記遠隔デバイス間の通信を制御する通信制御手段を含む
計算機システム。
【請求項２】
前記通信制御手段は、前記管理テーブルを参照して、ゲストオペレーティングシステムからのスキャン命令に対する遠隔デバイスからの応答のうち、スキャン命令の送信元のゲストオペレーティングシステムと対応付けられていない遠隔デバイスからの応答を破棄するスキャン結果検査手段として機能する請求項１の計算機システム。
【請求項３】
前記通信制御手段は、前記遠隔デバイスを備えるリモート装置から受信したハートビート情報に含まれるＭＡＣアドレスを前記識別情報として用い、前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記スキャン命令の宛先を前記ＭＡＣアドレスに書き換えてから転送する請求項１又は２の計算機システム。
【請求項４】
前記遠隔デバイスは、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに対応したＰＣＩ−Ｅｘｐｒｅｓｓデバイスであり、
前記バス延長手段は、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に仮想的なバスを構築する請求項１から３いずれか一の計算機システム。
【請求項５】
ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムにおいて、
前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送し、
前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別する
遠隔デバイスの接続管理方法。
【請求項６】
前記遠隔デバイスの起動状態によって変化しない識別情報として、前記遠隔デバイスを備えるリモート装置からのハートビート情報に含まれるＭＡＣアドレスを用い、
前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記通信制御手段は、前記スキャン命令の宛先を前記ＭＡＣアドレスに書き換えてから転送する請求項５の遠隔デバイスの接続管理方法。
【請求項７】
前記遠隔デバイスは、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに対応したＰＣＩ−Ｅｘｐｒｅｓｓデバイスであり、
前記前記ゲストオペレーティングシステムと遠隔デバイス間の通信を、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に構築された仮想的なバスを介して行う請求項５又は６の遠隔デバイスの接続管理方法。
【請求項８】
ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムに搭載されたコンピュータに、
前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送する処理と、
前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別する処理と、
を実行させるためのプログラムを記録したコンピュータ読み取り可能なプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム、遠隔デバイスの接続管理方法及びプログラム記録媒体に関し、特に、ネットワークを介して遠隔デバイスとの入出力を行う計算機システム、遠隔デバイスの接続管理方法及びプログラム記録媒体に関する。
【背景技術】
【０００２】
コンピュータは、システムバス（以下「バス」ともいう。）を介して接続されたＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とデバイスを備えており、ＣＰＵ上で実行されるプログラムの指示によってデバイスへのアクセスが行われる。デバイスへのアクセスは、「入出力処理」または「Ｉ／Ｏ処理」と呼ばれる。一方、デバイスを制御するソフトウェアは、「ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）」と呼ばれる。ＯＳのうちの特にデバイスを制御するためのソフトウェアは、「デバイスドライバ」と呼ばれる。また、ＯＳ上では、複数のユーザープログラムがＯＳの制御によって実行される。ユーザープログラムからデバイスに直接アクセスできないようにするため、ＯＳとユーザープログラムとでは実行権限が異なる。【０００３】
ＣＰＵの例として、Ｉｎｔｅｌ社のＸｅｏｎ（登録商標）やＡｔｏｍなどがある。一方、ＯＳの例として、Ｌｉｎｕｘ（登録商標）やＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）がある。また、システムバスの例として、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）やＰＣＩ−Ｅｘｐｒｅｓｓがある。さらに、デバイスの例として、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やネットワークインターフェースカード（ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）などがある。【０００４】
デバイスは、コンピュータの起動時にＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によってスキャンされ、ＩＤ（識別子、Ｉｄｅｎｔｉｆｉｅｒ）やメモリ領域などが割り当てられる。この時点では、デバイスは利用可能な状態ではない。ＯＳの起動後、スキャンされたデバイスのうちのＯＳが対応しているデバイスに対するデバイスドライバによって、デバイスの初期化が行われる。これにより、デバイスは利用可能な状態となる。このＩＤの一例としては「バス番号／デバイス番号／ファンクション番号」の組（ＢＤＦ）があり、コンピュータに接続されたデバイスはこの組によって一意に指定できる。なお、この組は論理番号であり、デバイスの数や構成やスキャン順によって変わることがある。【０００５】
実行中のＯＳがデバイスにアクセスする方法として、Ｉ／Ｏ命令の発行と、ＭＭＩＯ（Ｍｅｍｏｒｙ−Ｍａｐｐｅｄ  Ｉ／Ｏ）によるアクセスの２通りの方法が知られている。
前者の方法では、ＣＰＵの命令セットとしてＩ／Ｏ命令が定義されている。したがって、プログラムがＣＰＵ命令を発行することによってバスにＩ／Ｏ命令が出力され、デバイスへのアクセスが行われる。一方、後者の方法では、ＯＳが特定のメモリアドレスにアクセスした際、ＣＰＵまたはバスを制御するチップセットが、これをＩ／Ｏ処理に変換してバスに出力することで、デバイスへのアクセスが行われる。上述のように、ＢＩＯＳがデバイスをスキャンするとき、デバイスが要求するメモリ空間サイズを物理メモリ空間に割り当てるため、割り当てられた物理メモリ空間へのメモリアクセスがＩ／Ｏ命令に置き換わる。以下では、これら２つのデバイスアクセスの方法を総称して「Ｉ／Ｏ命令」という。
デバイスにアクセスする際には、デバイスを特定するメモリアドレスやＩＤなどをＩ／Ｏ命令で指定する。【０００６】
最近では、ＣＰＵの高性能化により、多少のソフトウェアオーバヘッドを許容できるようになってきている。これに伴い、ハードウェアを仮想化して、単一のＣＰＵ上で複数の仮想ハードウェア環境を稼働させることが可能になっている。【０００７】
図９は、このような複数の仮想ハードウェア環境を稼働させた仮想化コンピュータの構成を例示するブロック図である。図９に示すような仮想ハードウェア環境を管理するＯＳを、ホストＯＳ  Ｘ１１０と呼ぶ。一方、仮想ハードウェア環境上で実行されるＯＳを、ゲストＯＳと呼ぶ。ホストＯＳ  Ｘ１１０は１つであるが、ゲストＯＳは複数実行することができる（符号Ｘ１０１〜Ｘ１０ｎ参照）。また、ゲストＯＳはホストＯＳ  Ｘ１１０と種類が異なってもよく、ゲストＯＳの種類が互いに異なっていてもよい。仮想ハードウェア環境を提供するホストＯＳ  Ｘ１１０の例として、ｋｖｍやＶＭＷａｒｅ社のＶＭＷａｒｅ（登録商標）やＥＳＸｉサーバなどが知られている。【０００８】
一般に、仮想化環境においては、ホストＯＳ  Ｘ１１０に繋がっているデバイスＢ  Ｘ１３１をゲストＯＳに対して直接認識させる代わりに、ゲストＯＳ（例えば、ゲストＯＳ  Ｘ１０１）に対して仮想化されたデバイスＡ（以下、「仮想デバイス」という。）が提供される。すなわち、ホストＯＳ  Ｘ１１０が有するデバイスドライバＢは、デバイスＢ  Ｘ１３１を制御する。一方、ゲストＯＳ（例えば、ゲストＯＳ  Ｘ１０１）が有するデバイスドライバＡは、仮想デバイスＡを制御する。このとき、ホストＯＳ  Ｘ１１０は、ゲストＯＳ（例えば、ゲストＯＳ  Ｘ１０１）のデバイスドライバＡが発行したＩ／Ｏ命令を、デバイスＢ  Ｘ１３１のデバイスドライバが解釈できるように変換する。【０００９】
一方、デバイスの管理をホストＯＳではなくゲストＯＳのデバイスドライバが行う「パススルー技術」が、特許文献１に開示されている。特許文献１に記載された技術によると、ホストＯＳの代わりにゲストＯＳが、コンピュータに繋がっている一部のデバイスを制御することができる。【００１０】
また、バスを仮想的に延長する技術が、特許文献２に開示されている。特許文献２に記載された技術によると、ＰＣＩ−Ｅｘｐｒｅｓｓ上のデータをイーサネット（Ｅｔｈｅｒｎｅｔ、登録商標）などのネットワークに転送することで、ＣＰＵとデバイスの距離を物理的に延長することが可能となる。ＰＣＩ−Ｅｘｐｒｅｓｓバスでは、データはパケットの形式で転送される。ここで、パケットとは、２点間の通信を行うための転送単位のことであり、一般に、送信元と送信先のアドレスがパケット内に記載されている。【００１１】
図１０は、特許文献２に記載されたバス延長技術を適用したコンピュータの構成を示すブロック図である。図１０を参照すると、特許文献２に記載された技術では、ＣＰＵ  Ｘ１２０側に上流ブリッジＸ１４０が設けられ、デバイス（周辺機器Ｘ１３０）側に下流ブリッジＸ４２０が設けられている。ブリッジＸ１４０、Ｘ４２０は、パケットのカプセル化またはデカプセル化（すなわち、カプセル化の解除）を行う。カプセル化によって、Ｅｔｈｅｒｎｅｔ（登録商標）のネットワーク上にバスのデータを流すことが可能になる。
Ｅｔｈｅｒｎｅｔもパケットによってデータを転送しているため、以下ではネットワーク上を流れるパケットのことを「ネットワークパケット」と呼ぶ。【００１２】
特許文献３には、仮想化環境のＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）デバイスの接続を容易化する手法が開示されている。具体的には、特許文献３は、許可リストと他のデバイスの接続状態を管理するデバイス管理テーブルを参照し、エニュメレーションの可否を判断するデバイス管理部を有する仮想バスシステムを開示している。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１０−２３７７３７号公報
【特許文献２】特開２００７−２１９８７３号公報
【特許文献３】特開２０１１−１４５８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。特許文献１に記載されたパススルー技術（図９）と、特許文献２に記載されたバス延長技術（図１０）を組み合わせることにより、ゲストＯＳがネットワークを介して接続された遠隔デバイスを直接制御するコンピュータシステムを実現することが可能となる。図１１は複数のリモート装置と複数のゲストＯＳがパススルーによって直接結びつけられた例である。リモート装置はそれぞれが離れた場所に配置されることもあるため、あるゲストＯＳは毎回同じリモート装置と結び付けられなければならない。図１１の例ではゲストＯＳ−ＡはデバイスＡ(バス番号／デバイス番号／ファンクション番号は１／０／０）を制御し、ゲストＯＳ−ＢはデバイスＢ（バス番号／デバイス番号／ファンクション番号は２／０／０）を制御している。【００１５】
しかしながら、上記パススルー技術とバス延長技術とを組み合わせた構成では、複数ある遠隔デバイスの一部が起動しなかった場合にゲストＯＳと結びつける遠隔デバイスの指定方法が変わってしまうという問題点がある。例えば、図１１の例では、リモート装置Ｘ２０Ａが起動しなかった場合、リモート装置Ｘ２０ＢにあるデバイスＢのバス番号／デバイス番号／ファンクション番号が２／０／０ではなく例えば１／０／０になってしまう。このためゲストＯＳ−ＡがデバイスＢを制御してしまう可能性がある。これは、毎回同じデバイスが同じ構成である（常に起動している）ということを前提にし、デバイス番号の割り当てに論理番号を用いている点に原因がある。そこで、複数ある遠隔デバイスの一部が起動しなかった場合でもゲストＯＳからの遠隔デバイスの指定方法が変わらない方法を提供する手法の提案が求められている。【００１６】
本発明の目的は、パススルー技術とバス延長技術とを組み合わせた構成におけるゲストＯＳと遠隔デバイス間の接続容易性を向上させることにある。
【課題を解決するための手段】
【００１７】
第１の視点によれば、ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備え、前記バス延長手段は、前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムと前記遠隔デバイス間の通信を制御する通信制御手段を含む計算機システムが提供される。【００１８】
第２の視点によれば、ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムにおいて、前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送し、前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別する遠隔デバイスの接続管理方法が提供される。本方法は、ゲストオペレーティングシステムに遠隔デバイスを制御させる計算機システムという、特定の機械に結びつけられている。【００１９】
第３の視点によれば、上記した計算機システムの機能を実現するためのプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００２０】
本発明によれば、パススルー技術とバス延長技術とを組み合わせた構成におけるゲストＯＳと遠隔デバイス間の接続容易性を向上させることが可能となる。
【図面の簡単な説明】
【００２１】
【図１】図１は、本発明の一実施形態の構成を示す図である。
【図２】図２は、本発明の第１の実施形態の構成を示す図である。
【図３】図３は、本発明の第１の実施形態のリモート装置の構成を示すブロック図である。
【図４】図４は、本発明の第１の実施形態の計算機システムの構成を示すブロック図である。
【図５】図５は、本発明の第１の実施形態の計算機システムが保持するデバイス管理テーブルのエントリ構成の一例を示す図である。
【図６】図６は、本発明の第１の実施形態の計算機システムが保持するデバイス管理テーブルの設定例を示す図である。
【図７】図７は、本発明の第１の実施形態のリモート装置の動作を示す流れ図である。
【図８】図８は、本発明の第１の実施形態の計算機システムの動作を示す流れ図である。
【図９】図９は、仮想化コンピュータの構成を説明するためのブロック図である。
【図１０】図１０は、バス延長技術を適用した計算機システムの構成を説明するためのブロック図である。
【図１１】図１１は、本発明の課題を説明するための参考図である。
【図１２】図１２は、本発明の変形実施形態の構成を示した図である。
【発明を実施するための形態】
【００２２】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００２３】
本発明は、その一実施形態において、図１に示すバス延長部１４０Ａと、ＯＳ実行部１２０Ａと、通信制御部１４２Ａと、を備える計算機システムにて実現できる。バス延長部１４０Ａは、ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築する。ＯＳ実行部１２０Ａは、仮想ハードウェア環境を構成し、ゲストＯＳ１０１〜１０ｎに遠隔デバイスを制御させるホストＯＳ１１０を実行する。通信制御部１４２Ａは、ゲストＯＳ１０１〜１０ｎと遠隔デバイス間の通信を制御する。
【００２４】
通信制御部１４２Ａは、より具体的には、遠隔デバイスの起動状態によって変化しない識別情報を用いて、ゲストＯＳ１０１〜１０ｎと遠隔デバイスとの対応関係を管理する管理テーブル１４１Ａを参照して、ゲストＯＳ１０１〜１０ｎと遠隔デバイス間の通信を制御する。
【００２５】
本実施形態の計算機システムは、上記のように、遠隔デバイスの起動状態によって変化しない識別情報を用いてゲストＯＳと遠隔デバイスとの対応関係を管理する。これにより、遠隔デバイスの一部が起動しなかった場合においても、ゲストＯＳから遠隔デバイスを正確に指定することが可能となる。
【００２６】
［第１の実施形態］
次に、本発明の第１の実施形態について図面を参照して詳細に説明する。なお、以下で付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００２７】
図２は、本発明の第１の実施形態の構成を示す図である。図２に示すように、計算機システム１００とリモート装置２００とは、ネットワーク３００を介して接続されている。
【００２８】
図３は、リモート装置２００の構成を例示するブロック図である。以下、図３を参照して、リモート装置２００の構成について詳細に説明する。
【００２９】
リモート装置２００は、通信部２１０と、下流ブリッジ（バス延長部（リモート））２２０と、ｎ台（ｎは１以上の整数）の遠隔デバイス２３１〜２３ｎとを備えている。遠隔デバイス２３１〜２３ｎは、システムバスに繋がるデバイスであればよい。遠隔デバイス２３１〜２３ｎは、例えば、バスに直接接続できるハードディスクやネットワークインターフェースカードなどである。
【００３０】
下流ブリッジ（バス延長部（リモート））２２０は、後述する計算機システム側の上流ブリッジ（バス延長部（ホスト））と対になる。下流ブリッジ（バス延長部（リモート））２２０は、遠隔デバイス２３１〜２３ｎ向けのデータ、および、遠隔デバイス２３１〜２３ｎから送出されたバス上のデータを、それぞれ、デカプセル化およびカプセル化する。また、下流ブリッジ（バス延長部（リモート））２２０は、送信レート制御やネットワーク上でパケットが損失したときのための再送制御などの機能を備えていてもよい。
【００３１】
通信部２１０は、ネットワーク３００と通信するためのインターフェース部である。ネットワーク３００の例として、Ｅｔｈｅｒｎｅｔ（登録商標）やＩｎｆｉｎｉＢａｎｄなどがある。ただし、これらネットワークは、あくまで一例として挙げたものである。ネットワーク３００は、計算機システム１００とリモート装置２００間において背景技術として述べたバス延長技術が使えるものであれば特に制限されない。
【００３２】
また、リモート装置２００の通信部２１０には、ネットワーク３００上で一意に特定できるようなアドレス（例えば、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス）が付与されている。本実施形態では、このＭＡＣアドレスは、遠隔デバイスの起動状態によって変化しない識別情報として用いられる（後に詳述する）。
【００３３】
また、下流ブリッジ（バス延長部（リモート））２２０は、ネットワーク３００に向かって通信部２１０経由でハートビート（ＨＢ：Ｈｅａｒｔ  Ｂｅａｔ）情報を間欠的に送信する。一般に、このハートビート情報はブロードキャストされる。しかし、下流ブリッジ（バス延長部（リモート））２２０は、予めホスト側のアドレスを把握している場合、当該アドレスによって特定されるホストに対してのみハートビート情報を送出してもよい。ハートビート情報は、リモート装置２００に搭載されている遠隔デバイス２３１〜２３ｎの情報と、通信部２１０のＭＡＣアドレスを含む。
【００３４】
図４は、本実施形態の計算機システム１００の構成を示すブロック図である。図４を参照すると、計算機システム１００は、ＣＰＵ１２０と、周辺デバイス１３０と、上流ブリッジ（バス延長部（ホスト））１４０と、通信部１５０と、を備えている。また、ＣＰＵ１２０は、ホストＯＳ１１０とゲストＯＳ１０１〜１０ｎ（ｎは１以上の整数）を含む各種プログラムを実行する。
【００３５】
周辺デバイス１３０は、システムバスに接続可能なデバイスである。
【００３６】
上流ブリッジ（バス延長部（ホスト））１４０は、リモート装置２００の下流ブリッジ（バス延長部（リモート））２２０と対をなす。上流ブリッジ（バス延長部（ホスト））１４０は、バス上を流れるデータパケットをネットワーク３００に送出する際に、当該パケットをカプセル化してから送出する。一方、上流ブリッジ（バス延長部（ホスト））１４０は、ネットワーク３００からカプセル化されたネットワークパケットを受け取ると、そのカプセル化を解いて（デカプセル化して）から、ゲストＯＳ１０１〜１０ｎ又はシステムバスにデータパケットを転送する。
【００３７】
上流ブリッジ（バス延長部（ホスト））１４０と下流ブリッジ（バス延長部（リモート））２２０間の通信プロトコルとしては、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）などを用いることができる。ただし、ＴＣＰ／ＩＰはあくまで一例として示したものであり、通信プロトコルはこれに限定されない。
【００３８】
また、計算機システム１００は、ホストＯＳ１１０を備えている。ホストＯＳ１１０は、リモート装置２００に設けられたデバイス（遠隔デバイス２３１〜２３ｎ）との間でＩ／Ｏ処理を行うゲストＯＳ１０１〜１０ｎに対して、仮想ハードウェア環境を提供する。ホストＯＳ１１０は、ゲストＯＳ１０１〜１０ｎが発行したＩ／Ｏ命令をカプセル化して、リモート装置２００に向けてパケットとして送出するよう上流ブリッジ（バス延長部（ホスト））１４０を制御する。なお、以下においてゲストＯＳ１０１〜１０ｎを特に区別しない場合には、「ゲストＯＳ１０ｘ」と記す。
【００３９】
また、上流ブリッジ（バス延長部（ホスト））１４０は、送出したパケットに対するリモート装置２００からの応答パケットを受け取ると、応答パケットをデカプセル化してデータを抽出し、抽出したデータをゲストＯＳ１０ｘに転送する。
【００４０】
通信部１５０は、ネットワーク６００に接続されるためのインターフェースであり、リモート装置２００の通信部２１０とつながるネットワーク３００とは別のネットワークに接続される。
【００４１】
ゲストＯＳ１０ｘは、リモート装置２００の遠隔デバイス２３１〜２３ｎを制御するためのデバイスドライバを備えている。なお、ゲストＯＳ１０ｘは、遠隔デバイス２３１〜２３ｎのすべてに対応するデバイスドライバを備えている必要はなく、遠隔デバイス２３１〜２３ｎのうち必要な遠隔デバイスを制御可能なデバイスドライバを備えていればよい。
【００４２】
また、本実施形態の上流ブリッジ（バス延長部（ホスト））１４０は、デバイス管理テーブル１４１と、スキャン結果検査部１４２と、ネットワークアダプター１４３とを備えている。
【００４３】
図５は、デバイス管理テーブル１４１の１エントリの構成を示した図である。デバイス管理テーブル１４１は、ゲストＯＳと遠隔デバイスの組み合わせをあらかじめ指定した表である。図５の例では、デバイス管理テーブル１４１は、ＭＡＣアドレス、ベンダーＩＤ、デバイスＩＤ及び対応ゲストＯＳを対応付けたエントリを格納可能である。
【００４４】
ベンダーＩＤとデバイスＩＤは、リモート装置２００にある遠隔デバイス２３１〜２３ｎを識別する番号である。ベンダーＩＤとデバイスＩＤは、同種のデバイスの場合、同じベンダーＩＤ、デバイスＩＤとなる。ＭＡＣアドレスは、そのデバイスを保持しているリモート装置の通信部が有するＭＡＣアドレスである。対応ゲストＯＳは、当該エントリで指定されたリモート装置２００の遠隔デバイス２３１〜２３ｎと組み合わせられる（当該遠隔デバイス２３１〜２３ｎにアクセス権を有する）ゲストＯＳの識別子を示している。
【００４５】
図６は、デバイス管理テーブル１４１の具体的な設定例を示している。図６の例では、通信部２１０のＭＡＣアドレスがＡＡ：：ＡＡであるリモート装置２００の遠隔デバイスと、通信部２１０のＭＡＣアドレスがＢＢ：：ＢＢであるリモート装置２００との遠隔デバイスの情報が設定されている。
【００４６】
例えば、ＭＡＣアドレスがＡＡ：：ＡＡで、ベンダーＩＤ、デバイスＩＤがそれぞれ０ｘａｂｃｄ、０ｘ１２３４である遠隔デバイスには、対応ゲストＯＳとしてゲストＯＳ−Ａが設定されている。同様に、ＭＡＣアドレスがＢＢ：：ＢＢで、ベンダーＩＤ、デバイスＩＤがそれぞれ０ｘａｂｃｄ、０ｘ１２３４である遠隔デバイスには、対応ゲストＯＳとしてゲストＯＳ−Ｂが設定されている。このように、ベンダーＩＤ、デバイスＩＤが同一のＩＤであっても、ＭＡＣアドレスを用いることで、両者を区別してゲストＯＳに対応付けることが可能となっている。
【００４７】
また、ＭＡＣアドレスがＡＡ：：ＡＡで、ベンダーＩＤ、デバイスＩＤがそれぞれ０ｘｃｄｅｆ、０ｘ９８７６である別の遠隔デバイスには、対応ゲストＯＳとしてゲストＯＳ−Ｂが設定されている。
【００４８】
図６のような設定の場合、ゲストＯＳ−Ａによるデバイススキャン命令が発行されると、ベンダーＩＤが０ｘｃｄｅｆでデバイスＩＤが０ｘ９８７６の遠隔デバイスのスキャン結果（応答）が上流ブリッジ（バス延長部（ホスト））１４０に届くことになる。上流ブリッジ（バス延長部（ホスト））１４０のスキャン結果検査部１４２は、図６に示すデバイス管理テーブル１４１を参照して、許可されていない組み合わせであることが確認されると、当該スキャン結果（応答）を破棄する。このときスキャン結果検査部１４２は、ゲストＯＳ−Ａにはエラーを返す。このため、ゲストＯＳ−Ａは、ベンダーＩＤが０ｘｃｄｅｆでデバイスＩＤが０ｘ９８７６のデバイスを認識しない。
【００４９】
なお、図５、図６の例では、遠隔デバイスの起動状態によって変化しない識別情報として、リモート装置の通信部２１０のＭＡＣアドレスが用いられている。しかし、遠隔デバイスの起動状態によって変化しない識別情報は、ＭＡＣアドレスに限定されず、リモート装置に付与された別の識別情報がＭＡＣアドレスの代わりに用いられてもよい。
【００５０】
なお、図４に示した計算機システム１００のスキャン結果検査部１４２は、ホストＯＳ１１０上で動作するコンピュータプログラムにより実現することもできる。また、デバイス管理テーブル１４１及びスキャン結果検査部１４２は、ホストＯＳ１１０が提供する仮想ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）に組み込むことも可能である。図１２は、この変形実施形態の構成に係る計算機システム１００ａの構成を示した図である。図１２の例では、ホストＯＳ１１０が提供する仮想ＢＩＯＳ１１１に、デバイス管理テーブル１４１ａ及びスキャン結果検査部１４２ａが組み込まれている。
【００５１】
続いて、本実施形態の動作について図面を参照して詳細に説明する。以下の説明では、リモート装置２００は、計算機システム１００の起動前に起動されているものとする。図７は、本実施形態のリモート装置の起動後の動作を示す流れ図である。図７を参照すると、まず、リモート装置２００の通信部２１０と下流ブリッジ（バス延長部（リモート））２２０とが起動する（ステップＳ００１）。この時点では、遠隔デバイス２３１〜２３ｎは、通電されて電源オン状態となるが、遠隔デバイス２３１〜２３ｎ上のハードウェアによる初期化が行われるに過ぎず、デバイスドライバによる初期化は行われない。
【００５２】
次に、下流ブリッジ（バス延長部（リモート））２２０は、ネットワーク３００に向かって通信部２１０経由でハートビート情報のパケットの間欠的な送信を開始する（ステップＳ００２）。なお、計算機システム１００のホストＯＳ１１０が起動していない場合、ハートビート情報は受け取られることなく、ネットワーク３００上で破棄される。
【００５３】
次に、計算機システム１００の起動後の動作について説明する。図８は、本実施形態の計算機システム１００の動作を示す流れ図である。計算機システム１００が起動すると、まず、ホストＯＳ１１０が起動する（ステップＳ１０１）。ホストＯＳ１１０は、計算機システム１００内にある周辺デバイス１３０や通信部１５０の初期化を行い、同時に上流ブリッジ（バス延長部（ホスト））１４０を通じて遠隔デバイス２３１〜２３ｎのスキャンを行う。これによって、計算機システム１００内にある通信部１５０が利用可能となる。ただし、リモート装置２００内にある遠隔デバイス２３１〜２３ｎを初期化する必要はない。
【００５４】
前述のとおり、リモート装置２００は起動済みであるので、上流ブリッジ（バス延長部（ホスト））１４０は、リモート装置２００から送信されているハートビート情報を受信する（ステップＳ１０２）。これによって、上流ブリッジ（バス延長部（ホスト））１４０は、リモート装置２００に繋がっている遠隔デバイス２３１〜２３ｎを認識し、その情報を取得することができる。また、上流ブリッジ（バス延長部（ホスト））１４０は、このハートビート情報に基づいて、リモート装置２００の通信部２１０のＭＡＣアドレスを取得する。
【００５５】
次に、任意のゲストＯＳ１０ｘが起動されると、ゲストＯＳ１０ｘはデバイスをスキャンする命令を発行する（ステップＳ１０３）。上流ブリッジ（バス延長部（ホスト））１４０は、デバイス管理テーブル１４１を検索して、当該ゲストＯＳ１０ｘが許可されているリモート装置２００の通信部２１０のＭＡＣアドレスを指定してデバイススキャン命令を発行する。前述のとおり、通信部２１０のＭＡＣアドレスは一意に決まるＩＤであるため、例え複数あるリモート装置２００の一部が起動していなかったとしてもゲストＯＳ１０ｘとの組み合わせは変わらない。
【００５６】
前記デバイススキャン命令を受け取ったリモート装置２００は、デバイススキャン命令の発行元に対し、デバイスの種別を返答する。デバイスの種別の返答としては、図５、図６に示した「ベンダーＩＤとデバイスＩＤ」の組み合わせが挙げられる。もちろん、「ベンダーＩＤとデバイスＩＤ」は、返答の一例を挙げたものである。リモート装置２００は、「ベンダーＩＤとデバイスＩＤ」に代わるデバイス種別情報を送ってもよいし、その他の情報を付加する等してもよい。
【００５７】
上流ブリッジ（バス延長部（ホスト））１４０のスキャン結果検査部１４２は、前記返答されたデバイスの種別を受け取ると、デバイス管理テーブルを参照して、当該ゲストＯＳ１０ｘが許可されているデバイスの種別であるかを確認する（ステップＳ１０４〜Ｓ１０５）。前記デバイスの種別とゲストＯＳ１０ｘの組が許可されている組み合わせである場合（ステップＳ１０５のＹｅｓ）、スキャン結果検査部１４２は、当該スキャン結果をゲストＯＳ１０ｘに返す（ステップＳ１０６）。遠隔デバイスを検出したゲストＯＳ１０ｘは、デバイスドライバにより遠隔デバイスを初期化し、必要に応じてアクセスする（ステップＳ１０８）。
【００５８】
一方、前記デバイスの種別とゲストＯＳ１０ｘの組が許可されていない組み合わせであった場合（ステップＳ１０５のＮｏ）、スキャン結果検査部１４２は、当該スキャン結果は破棄し、ゲストＯＳ１０ｘに対してはエラー（デバイス不検出）を返す（ステップＳ１０７）。
【００５９】
以上説明したように、本実施形態によれば、１以上あるリモート装置２００の一部が起動しなかった場合でも、ゲストＯＳ１０ｘに対して割り当てるリモート装置２００の指定方法を変える必要がない、という顕著な効果が奏される。この効果は、遠隔デバイスを指定するための識別情報として、リモート装置２００の通信部２１０の固有の識別子（ＭＡＣアドレス）を使うことによって奏される。また、図１２の構成においては、上流ブリッジ（バス延長部（ホスト））１４０ａ側にデバイス管理テーブル１４１及びスキャン結果検査部１４２を設けなくとも、同様の効果を得ることができる。
【００６０】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【００６１】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による計算機システム参照）
［第２の形態］
第１の形態の計算機システムにおいて、
前記通信制御手段は、前記管理テーブルを参照して、ゲストオペレーティングシステムからのスキャン命令に対する遠隔デバイスからの応答のうち、スキャン命令の送信元のゲストオペレーティングシステムと対応付けられていない遠隔デバイスからの応答を破棄するスキャン結果検査手段として機能する計算機システム。
［第３の形態］
第１又は第２の形態の計算機システムにおいて、
前記遠隔デバイスの起動状態によって変化しない識別情報として、前記遠隔デバイスを備えるリモート装置からのハートビート情報に含まれるＭＡＣアドレスを用い、
前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記バス延長手段は、前記スキャン命令の宛先を前記ＭＡＣアドレスに書き換えてから転送する計算機システム。
［第４の形態］
第１から第３いずれか一の形態の計算機システムにおいて、
前記遠隔デバイスは、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに対応したＰＣＩ−Ｅｘｐｒｅｓｓデバイスであり、
前記バス延長手段は、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に仮想的なバスを構築する計算機システム。
［第５の形態］
（上記第２の視点による遠隔デバイスの接続管理方法参照）
［第６の形態］
第５の形態の遠隔デバイスの接続管理方法において、
前記遠隔デバイスの起動状態によって変化しない識別情報として、前記遠隔デバイスを備えるリモート装置からのハートビート情報に含まれるＭＡＣアドレスを用い、
前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記バス延長手段は、前記スキャン命令の宛先を前記ＭＡＣアドレスに書き換えてから転送する遠隔デバイスの接続管理方法。
［第７の形態］
第５又は第６の形態の遠隔デバイスの接続管理方法において、
前記遠隔デバイスは、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに対応したＰＣＩ−Ｅｘｐｒｅｓｓデバイスであり、
前記ゲストオペレーティングシステムと遠隔デバイス間の通信は、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に構築された仮想的なバスを介して行われる遠隔デバイスの接続管理方法。
［第８の形態］
（上記第３の視点によるプログラム参照）
なお、上記第８の形態は、第１の形態と同様に、第２〜第４の形態に展開することが可能である。
【００６２】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【００６３】
この出願は、２０１４年６月１２日に出願された日本出願特願２０１４−１２１４５０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００６４】
１００、１００ａ、１００Ａ、Ｘ１００、Ｘ５００  計算機システム
１０１〜１０ｎ、１０ｘ、Ｘ１０１〜Ｘ１０ｎ  ゲストＯＳ
１１０、Ｘ１１０  ホストＯＳ
１１１  仮想ＢＩＯＳ
１２０、Ｘ１２０  ＣＰＵ
１２０Ａ  ＯＳ実行部
１３０  周辺デバイス
１４０、Ｘ１４０、１４０ａ  上流ブリッジ（バス延長部（ホスト））
１４０Ａ  バス延長部
１４１、１４１ａ  デバイス管理テーブル
１４１Ａ  管理テーブル
１４２、１４２ａ  スキャン結果検査部
１４２Ａ  通信制御部
１４３、Ｘ１４１、Ｘ４２１  ネットワークアダプター
１５０、Ｘ１５０、Ｘ５１０  通信部
２００、Ｘ２０Ａ、Ｘ２０Ｂ、Ｘ２００  リモート装置
２１０  通信部
２２０、Ｘ４２０  下流ブリッジ（バス延長部（リモート））
２３１〜２３ｎ  遠隔デバイス
３００、６００  ネットワーク
Ｘ１３０  周辺機器
Ｘ１３１  デバイスＢ
Ｘ４１０  イーサスイッチ
Ｘ６００  スイッチ
【図１】
2015190079.tif 000003
【図２】
2015190079.tif 000004
【図３】
2015190079.tif 000005
【図４】
2015190079.tif 000006
【図５】
2015190079.tif 000007
【図６】
2015190079.tif 000008
【図７】
2015190079.tif 000009
【図８】
2015190079.tif 000010
【図９】
2015190079.tif 000011
【図１０】
2015190079.tif 000012
【図１１】
2015190079.tif 000013
【図１２】
2015190079.tif 000014
【手続補正書】
【提出日】平成28年11月18日(2016.11.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備え、
前記バス延長手段は、前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムと前記遠隔デバイス間の通信を制御する通信制御手段を含む
計算機システム。
【請求項２】
前記通信制御手段は、前記管理テーブルを参照して、ゲストオペレーティングシステムからのスキャン命令に対する遠隔デバイスからの応答のうち、スキャン命令の送信元のゲストオペレーティングシステムと対応付けられていない遠隔デバイスからの応答を破棄するスキャン結果検査手段として機能する請求項１の計算機システム。
【請求項３】
前記通信制御手段は、前記遠隔デバイスを備えるリモート装置から受信したハートビート情報に含まれるＭＡＣアドレスを前記識別情報として用い、前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記スキャン命令の宛先を前記ＭＡＣアドレスに書き換えてから転送する請求項１又は２の計算機システム。
【請求項４】
前記遠隔デバイスは、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに対応したＰＣＩ−Ｅｘｐｒｅｓｓデバイスであり、
前記バス延長手段は、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に仮想的なバスを構築する請求項１から３いずれか一の計算機システム。
【請求項５】
ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムにおいて、
前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送し、
前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別する
遠隔デバイスの接続管理方法。
【請求項６】
前記遠隔デバイスの起動状態によって変化しない識別情報として、前記遠隔デバイスを備えるリモート装置からのハートビート情報に含まれるＭＡＣアドレスを用い、
前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記通信制御手段は、前記スキャン命令の宛先を前記ＭＡＣアドレスに書き換えてから転送する請求項５の遠隔デバイスの接続管理方法。
【請求項７】
前記遠隔デバイスは、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに対応したＰＣＩ−Ｅｘｐｒｅｓｓデバイスであり、
前記前記ゲストオペレーティングシステムと遠隔デバイス間の通信を、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に構築された仮想的なバスを介して行う請求項５又は６の遠隔デバイスの接続管理方法。
【請求項８】
ネットワークを介して接続された１つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムに搭載されたコンピュータに、
前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送する処理と、
前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別する処理と、
を実行させるためのプログラム。
【国際調査報告】
2015190079.tif 000015
2015190079.tif 000016