JP6743696B2 - 計算機システム、遠隔デバイスの接続管理方法及びプログラム - Google Patents

計算機システム、遠隔デバイスの接続管理方法及びプログラム Download PDF

Info

Publication number
JP6743696B2
JP6743696B2 JP2016527631A JP2016527631A JP6743696B2 JP 6743696 B2 JP6743696 B2 JP 6743696B2 JP 2016527631 A JP2016527631 A JP 2016527631A JP 2016527631 A JP2016527631 A JP 2016527631A JP 6743696 B2 JP6743696 B2 JP 6743696B2
Authority
JP
Japan
Prior art keywords
remote device
operating system
guest operating
remote
guest
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016527631A
Other languages
English (en)
Other versions
JPWO2015190079A1 (ja
Inventor
高橋 雅彦
雅彦 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2015190079A1 publication Critical patent/JPWO2015190079A1/ja
Application granted granted Critical
Publication of JP6743696B2 publication Critical patent/JP6743696B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/604Address structures or formats
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/622Layer-2 addresses, e.g. medium access control [MAC] addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Small-Scale Networks (AREA)
  • Stored Programmes (AREA)
  • Bus Control (AREA)

Description

本発明は、計算機システム、遠隔デバイスの接続管理方法及びプログラム記録媒体に関し、特に、ネットワークを介して遠隔デバイスとの入出力を行う計算機システム、遠隔デバイスの接続管理方法及びプログラム記録媒体に関する。
コンピュータは、システムバス(以下「バス」ともいう。)を介して接続されたCPU(Central Processing Unit)とデバイスを備えており、CPU上で実行されるプログラムの指示によってデバイスへのアクセスが行われる。デバイスへのアクセスは、「入出力処理」または「I/O処理」と呼ばれる。一方、デバイスを制御するソフトウェアは、「OS(Operating System)」と呼ばれる。OSのうちの特にデバイスを制御するためのソフトウェアは、「デバイスドライバ」と呼ばれる。また、OS上では、複数のユーザープログラムがOSの制御によって実行される。ユーザープログラムからデバイスに直接アクセスできないようにするため、OSとユーザープログラムとでは実行権限が異なる。
CPUの例として、Intel社のXeon(登録商標)やAtomなどがある。一方、OSの例として、Linux(登録商標)やMicrosoft社のWindows(登録商標)がある。また、システムバスの例として、PCI(Peripheral Component Interconnect)やPCI−Expressがある。さらに、デバイスの例として、ハードディスクドライブ(HDD:Hard Disk Drive)やネットワークインターフェースカード(NIC:Network Interface Card)などがある。
デバイスは、コンピュータの起動時にBIOS(Basic Input/Output System)によってスキャンされ、ID(識別子、Identifier)やメモリ領域などが割り当てられる。この時点では、デバイスは利用可能な状態ではない。OSの起動後、スキャンされたデバイスのうちのOSが対応しているデバイスに対するデバイスドライバによって、デバイスの初期化が行われる。これにより、デバイスは利用可能な状態となる。このIDの一例としては「バス番号/デバイス番号/ファンクション番号」の組(BDF)があり、コンピュータに接続されたデバイスはこの組によって一意に指定できる。なお、この組は論理番号であり、デバイスの数や構成やスキャン順によって変わることがある。
実行中のOSがデバイスにアクセスする方法として、I/O命令の発行と、MMIO(Memory−Mapped I/O)によるアクセスの2通りの方法が知られている。
前者の方法では、CPUの命令セットとしてI/O命令が定義されている。したがって、プログラムがCPU命令を発行することによってバスにI/O命令が出力され、デバイスへのアクセスが行われる。一方、後者の方法では、OSが特定のメモリアドレスにアクセスした際、CPUまたはバスを制御するチップセットが、これをI/O処理に変換してバスに出力することで、デバイスへのアクセスが行われる。上述のように、BIOSがデバイスをスキャンするとき、デバイスが要求するメモリ空間サイズを物理メモリ空間に割り当てるため、割り当てられた物理メモリ空間へのメモリアクセスがI/O命令に置き換わる。以下では、これら2つのデバイスアクセスの方法を総称して「I/O命令」という。
デバイスにアクセスする際には、デバイスを特定するメモリアドレスやIDなどをI/O命令で指定する。
最近では、CPUの高性能化により、多少のソフトウェアオーバヘッドを許容できるようになってきている。これに伴い、ハードウェアを仮想化して、単一のCPU上で複数の仮想ハードウェア環境を稼働させることが可能になっている。
図9は、このような複数の仮想ハードウェア環境を稼働させた仮想化コンピュータの構成を例示するブロック図である。図9に示すような仮想ハードウェア環境を管理するOSを、ホストOS X110と呼ぶ。一方、仮想ハードウェア環境上で実行されるOSを、ゲストOSと呼ぶ。ホストOS X110は1つであるが、ゲストOSは複数実行することができる(符号X101〜X10n参照)。また、ゲストOSはホストOS X110と種類が異なってもよく、ゲストOSの種類が互いに異なっていてもよい。仮想ハードウェア環境を提供するホストOS X110の例として、kvmやVMWare社のVMWare(登録商標)やESXiサーバなどが知られている。
一般に、仮想化環境においては、ホストOS X110に繋がっているデバイスB X131をゲストOSに対して直接認識させる代わりに、ゲストOS(例えば、ゲストOS X101)に対して仮想化されたデバイスA(以下、「仮想デバイス」という。)が提供される。すなわち、ホストOS X110が有するデバイスドライバBは、デバイスB X131を制御する。一方、ゲストOS(例えば、ゲストOS X101)が有するデバイスドライバAは、仮想デバイスAを制御する。このとき、ホストOS X110は、ゲストOS(例えば、ゲストOS X101)のデバイスドライバAが発行したI/O命令を、デバイスB X131のデバイスドライバが解釈できるように変換する。
一方、デバイスの管理をホストOSではなくゲストOSのデバイスドライバが行う「パススルー技術」が、特許文献1に開示されている。特許文献1に記載された技術によると、ホストOSの代わりにゲストOSが、コンピュータに繋がっている一部のデバイスを制御することができる。
また、バスを仮想的に延長する技術が、特許文献2に開示されている。特許文献2に記載された技術によると、PCI−Express上のデータをイーサネット(Ethernet、登録商標)などのネットワークに転送することで、CPUとデバイスの距離を物理的に延長することが可能となる。PCI−Expressバスでは、データはパケットの形式で転送される。ここで、パケットとは、2点間の通信を行うための転送単位のことであり、一般に、送信元と送信先のアドレスがパケット内に記載されている。
図10は、特許文献2に記載されたバス延長技術を適用したコンピュータの構成を示すブロック図である。図10を参照すると、特許文献2に記載された技術では、CPU X120側に上流ブリッジX140が設けられ、デバイス(周辺機器X130)側に下流ブリッジX420が設けられている。ブリッジX140、X420は、パケットのカプセル化またはデカプセル化(すなわち、カプセル化の解除)を行う。カプセル化によって、Ethernet(登録商標)のネットワーク上にバスのデータを流すことが可能になる。
Ethernetもパケットによってデータを転送しているため、以下ではネットワーク上を流れるパケットのことを「ネットワークパケット」と呼ぶ。
特許文献3には、仮想化環境のUSB(Universal Serial Bus)デバイスの接続を容易化する手法が開示されている。具体的には、特許文献3は、許可リストと他のデバイスの接続状態を管理するデバイス管理テーブルを参照し、エニュメレーションの可否を判断するデバイス管理部を有する仮想バスシステムを開示している。
特開2010−237737号公報 特開2007−219873号公報 特開2011−145827号公報
上記特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。特許文献1に記載されたパススルー技術(図9)と、特許文献2に記載されたバス延長技術(図10)を組み合わせることにより、ゲストOSがネットワークを介して接続された遠隔デバイスを直接制御するコンピュータシステムを実現することが可能となる。図11は複数のリモート装置と複数のゲストOSがパススルーによって直接結びつけられた例である。リモート装置はそれぞれが離れた場所に配置されることもあるため、あるゲストOSは毎回同じリモート装置と結び付けられなければならない。図11の例ではゲストOS−AはデバイスA(バス番号/デバイス番号/ファンクション番号は1/0/0)を制御し、ゲストOS−BはデバイスB(バス番号/デバイス番号/ファンクション番号は2/0/0)を制御している。
しかしながら、上記パススルー技術とバス延長技術とを組み合わせた構成では、複数ある遠隔デバイスの一部が起動しなかった場合にゲストOSと結びつける遠隔デバイスの指定方法が変わってしまうという問題点がある。例えば、図11の例では、リモート装置X20Aが起動しなかった場合、リモート装置X20BにあるデバイスBのバス番号/デバイス番号/ファンクション番号が2/0/0ではなく例えば1/0/0になってしまう。このためゲストOS−AがデバイスBを制御してしまう可能性がある。これは、毎回同じデバイスが同じ構成である(常に起動している)ということを前提にし、デバイス番号の割り当てに論理番号を用いている点に原因がある。そこで、複数ある遠隔デバイスの一部が起動しなかった場合でもゲストOSからの遠隔デバイスの指定方法が変わらない方法を提供する手法の提案が求められている。
本発明の目的は、パススルー技術とバス延長技術とを組み合わせた構成におけるゲストOSと遠隔デバイス間の接続容易性を向上させることにある。
第1の視点によれば、ネットワークを介して接続された1つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備え、前記バス延長手段は、前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムと前記遠隔デバイス間の通信を制御する通信制御手段を含む計算機システムが提供される。
第2の視点によれば、ネットワークを介して接続された1つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムにおいて、前記遠隔デバイスの起動状態によって変化しない識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送し、前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別する遠隔デバイスの接続管理方法が提供される。本方法は、ゲストオペレーティングシステムに遠隔デバイスを制御させる計算機システムという、特定の機械に結びつけられている。
第3の視点によれば、上記した計算機システムの機能を実現するためのプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な(非トランジエントな)記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
本発明によれば、パススルー技術とバス延長技術とを組み合わせた構成におけるゲストOSと遠隔デバイス間の接続容易性を向上させることが可能となる。
図1は、本発明の一実施形態の構成を示す図である。 図2は、本発明の第1の実施形態の構成を示す図である。 図3は、本発明の第1の実施形態のリモート装置の構成を示すブロック図である。 図4は、本発明の第1の実施形態の計算機システムの構成を示すブロック図である。 図5は、本発明の第1の実施形態の計算機システムが保持するデバイス管理テーブルのエントリ構成の一例を示す図である。 図6は、本発明の第1の実施形態の計算機システムが保持するデバイス管理テーブルの設定例を示す図である。 図7は、本発明の第1の実施形態のリモート装置の動作を示す流れ図である。 図8は、本発明の第1の実施形態の計算機システムの動作を示す流れ図である。 図9は、仮想化コンピュータの構成を説明するためのブロック図である。 図10は、バス延長技術を適用した計算機システムの構成を説明するためのブロック図である。 図11は、本発明の課題を説明するための参考図である。 図12は、本発明の変形実施形態の構成を示した図である。
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
本発明は、その一実施形態において、図1に示すバス延長部140Aと、OS実行部120Aと、通信制御部142Aと、を備える計算機システムにて実現できる。バス延長部140Aは、ネットワークを介して接続された1つ以上の遠隔デバイスとの間に仮想的なバスを構築する。OS実行部120Aは、仮想ハードウェア環境を構成し、ゲストOS101〜10nに遠隔デバイスを制御させるホストOS110を実行する。通信制御部142Aは、ゲストOS101〜10nと遠隔デバイス間の通信を制御する。
通信制御部142Aは、より具体的には、遠隔デバイスの起動状態によって変化しない識別情報を用いて、ゲストOS101〜10nと遠隔デバイスとの対応関係を管理する管理テーブル141Aを参照して、ゲストOS101〜10nと遠隔デバイス間の通信を制御する。
本実施形態の計算機システムは、上記のように、遠隔デバイスの起動状態によって変化しない識別情報を用いてゲストOSと遠隔デバイスとの対応関係を管理する。これにより、遠隔デバイスの一部が起動しなかった場合においても、ゲストOSから遠隔デバイスを正確に指定することが可能となる。
[第1の実施形態]
次に、本発明の第1の実施形態について図面を参照して詳細に説明する。なお、以下で付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
図2は、本発明の第1の実施形態の構成を示す図である。図2に示すように、計算機システム100とリモート装置200とは、ネットワーク300を介して接続されている。
図3は、リモート装置200の構成を例示するブロック図である。以下、図3を参照して、リモート装置200の構成について詳細に説明する。
リモート装置200は、通信部210と、下流ブリッジ(バス延長部(リモート))220と、n台(nは1以上の整数)の遠隔デバイス231〜23nとを備えている。遠隔デバイス231〜23nは、システムバスに繋がるデバイスであればよい。遠隔デバイス231〜23nは、例えば、バスに直接接続できるハードディスクやネットワークインターフェースカードなどである。
下流ブリッジ(バス延長部(リモート))220は、後述する計算機システム側の上流ブリッジ(バス延長部(ホスト))と対になる。下流ブリッジ(バス延長部(リモート))220は、遠隔デバイス231〜23n向けのデータ、および、遠隔デバイス231〜23nから送出されたバス上のデータを、それぞれ、デカプセル化およびカプセル化する。また、下流ブリッジ(バス延長部(リモート))220は、送信レート制御やネットワーク上でパケットが損失したときのための再送制御などの機能を備えていてもよい。
通信部210は、ネットワーク300と通信するためのインターフェース部である。ネットワーク300の例として、Ethernet(登録商標)やInfiniBandなどがある。ただし、これらネットワークは、あくまで一例として挙げたものである。ネットワーク300は、計算機システム100とリモート装置200間において背景技術として述べたバス延長技術が使えるものであれば特に制限されない。
また、リモート装置200の通信部210には、ネットワーク300上で一意に特定できるようなアドレス(例えば、MAC(Media Access Control)アドレス)が付与されている。本実施形態では、このMACアドレスは、遠隔デバイスの起動状態によって変化しない識別情報として用いられる(後に詳述する)。
また、下流ブリッジ(バス延長部(リモート))220は、ネットワーク300に向かって通信部210経由でハートビート(HB:Heart Beat)情報を間欠的に送信する。一般に、このハートビート情報はブロードキャストされる。しかし、下流ブリッジ(バス延長部(リモート))220は、予めホスト側のアドレスを把握している場合、当該アドレスによって特定されるホストに対してのみハートビート情報を送出してもよい。ハートビート情報は、リモート装置200に搭載されている遠隔デバイス231〜23nの情報と、通信部210のMACアドレスを含む。
図4は、本実施形態の計算機システム100の構成を示すブロック図である。図4を参照すると、計算機システム100は、CPU120と、周辺デバイス130と、上流ブリッジ(バス延長部(ホスト))140と、通信部150と、を備えている。また、CPU120は、ホストOS110とゲストOS101〜10n(nは1以上の整数)を含む各種プログラムを実行する。
周辺デバイス130は、システムバスに接続可能なデバイスである。
上流ブリッジ(バス延長部(ホスト))140は、リモート装置200の下流ブリッジ(バス延長部(リモート))220と対をなす。上流ブリッジ(バス延長部(ホスト))140は、バス上を流れるデータパケットをネットワーク300に送出する際に、当該パケットをカプセル化してから送出する。一方、上流ブリッジ(バス延長部(ホスト))140は、ネットワーク300からカプセル化されたネットワークパケットを受け取ると、そのカプセル化を解いて(デカプセル化して)から、ゲストOS101〜10n又はシステムバスにデータパケットを転送する。
上流ブリッジ(バス延長部(ホスト))140と下流ブリッジ(バス延長部(リモート))220間の通信プロトコルとしては、TCP(Transmission Control Protocol)/IP(Internet Protocol)などを用いることができる。ただし、TCP/IPはあくまで一例として示したものであり、通信プロトコルはこれに限定されない。
また、計算機システム100は、ホストOS110を備えている。ホストOS110は、リモート装置200に設けられたデバイス(遠隔デバイス231〜23n)との間でI/O処理を行うゲストOS101〜10nに対して、仮想ハードウェア環境を提供する。ホストOS110は、ゲストOS101〜10nが発行したI/O命令をカプセル化して、リモート装置200に向けてパケットとして送出するよう上流ブリッジ(バス延長部(ホスト))140を制御する。なお、以下においてゲストOS101〜10nを特に区別しない場合には、「ゲストOS10x」と記す。
また、上流ブリッジ(バス延長部(ホスト))140は、送出したパケットに対するリモート装置200からの応答パケットを受け取ると、応答パケットをデカプセル化してデータを抽出し、抽出したデータをゲストOS10xに転送する。
通信部150は、ネットワーク600に接続されるためのインターフェースであり、リモート装置200の通信部210とつながるネットワーク300とは別のネットワークに接続される。
ゲストOS10xは、リモート装置200の遠隔デバイス231〜23nを制御するためのデバイスドライバを備えている。なお、ゲストOS10xは、遠隔デバイス231〜23nのすべてに対応するデバイスドライバを備えている必要はなく、遠隔デバイス231〜23nのうち必要な遠隔デバイスを制御可能なデバイスドライバを備えていればよい。
また、本実施形態の上流ブリッジ(バス延長部(ホスト))140は、デバイス管理テーブル141と、スキャン結果検査部142と、ネットワークアダプター143とを備えている。
図5は、デバイス管理テーブル141の1エントリの構成を示した図である。デバイス管理テーブル141は、ゲストOSと遠隔デバイスの組み合わせをあらかじめ指定した表である。図5の例では、デバイス管理テーブル141は、MACアドレス、ベンダーID、デバイスID及び対応ゲストOSを対応付けたエントリを格納可能である。
ベンダーIDとデバイスIDは、リモート装置200にある遠隔デバイス231〜23nを識別する番号である。ベンダーIDとデバイスIDは、同種のデバイスの場合、同じベンダーID、デバイスIDとなる。MACアドレスは、そのデバイスを保持しているリモート装置の通信部が有するMACアドレスである。対応ゲストOSは、当該エントリで指定されたリモート装置200の遠隔デバイス231〜23nと組み合わせられる(当該遠隔デバイス231〜23nにアクセス権を有する)ゲストOSの識別子を示している。
図6は、デバイス管理テーブル141の具体的な設定例を示している。図6の例では、通信部210のMACアドレスがAA::AAであるリモート装置200の遠隔デバイスと、通信部210のMACアドレスがBB::BBであるリモート装置200との遠隔デバイスの情報が設定されている。
例えば、MACアドレスがAA::AAで、ベンダーID、デバイスIDがそれぞれ0xabcd、0x1234である遠隔デバイスには、対応ゲストOSとしてゲストOS−Aが設定されている。同様に、MACアドレスがBB::BBで、ベンダーID、デバイスIDがそれぞれ0xabcd、0x1234である遠隔デバイスには、対応ゲストOSとしてゲストOS−Bが設定されている。このように、ベンダーID、デバイスIDが同一のIDであっても、MACアドレスを用いることで、両者を区別してゲストOSに対応付けることが可能となっている。
また、MACアドレスがAA::AAで、ベンダーID、デバイスIDがそれぞれ0xcdef、0x9876である別の遠隔デバイスには、対応ゲストOSとしてゲストOS−Bが設定されている。
図6のような設定の場合、ゲストOS−Aによるデバイススキャン命令が発行されると、ベンダーIDが0xcdefでデバイスIDが0x9876の遠隔デバイスのスキャン結果(応答)が上流ブリッジ(バス延長部(ホスト))140に届くことになる。上流ブリッジ(バス延長部(ホスト))140のスキャン結果検査部142は、図6に示すデバイス管理テーブル141を参照して、許可されていない組み合わせであることが確認されると、当該スキャン結果(応答)を破棄する。このときスキャン結果検査部142は、ゲストOS−Aにはエラーを返す。このため、ゲストOS−Aは、ベンダーIDが0xcdefでデバイスIDが0x9876のデバイスを認識しない。
なお、図5、図6の例では、遠隔デバイスの起動状態によって変化しない識別情報として、リモート装置の通信部210のMACアドレスが用いられている。しかし、遠隔デバイスの起動状態によって変化しない識別情報は、MACアドレスに限定されず、リモート装置に付与された別の識別情報がMACアドレスの代わりに用いられてもよい。
なお、図4に示した計算機システム100のスキャン結果検査部142は、ホストOS110上で動作するコンピュータプログラムにより実現することもできる。また、デバイス管理テーブル141及びスキャン結果検査部142は、ホストOS110が提供する仮想BIOS(Basic Input/Output System)に組み込むことも可能である。図12は、この変形実施形態の構成に係る計算機システム100aの構成を示した図である。図12の例では、ホストOS110が提供する仮想BIOS111に、デバイス管理テーブル141a及びスキャン結果検査部142aが組み込まれている。
続いて、本実施形態の動作について図面を参照して詳細に説明する。以下の説明では、リモート装置200は、計算機システム100の起動前に起動されているものとする。図7は、本実施形態のリモート装置の起動後の動作を示す流れ図である。図7を参照すると、まず、リモート装置200の通信部210と下流ブリッジ(バス延長部(リモート))220とが起動する(ステップS001)。この時点では、遠隔デバイス231〜23nは、通電されて電源オン状態となるが、遠隔デバイス231〜23n上のハードウェアによる初期化が行われるに過ぎず、デバイスドライバによる初期化は行われない。
次に、下流ブリッジ(バス延長部(リモート))220は、ネットワーク300に向かって通信部210経由でハートビート情報のパケットの間欠的な送信を開始する(ステップS002)。なお、計算機システム100のホストOS110が起動していない場合、ハートビート情報は受け取られることなく、ネットワーク300上で破棄される。
次に、計算機システム100の起動後の動作について説明する。図8は、本実施形態の計算機システム100の動作を示す流れ図である。計算機システム100が起動すると、まず、ホストOS110が起動する(ステップS101)。ホストOS110は、計算機システム100内にある周辺デバイス130や通信部150の初期化を行い、同時に上流ブリッジ(バス延長部(ホスト))140を通じて遠隔デバイス231〜23nのスキャンを行う。これによって、計算機システム100内にある通信部150が利用可能となる。ただし、リモート装置200内にある遠隔デバイス231〜23nを初期化する必要はない。
前述のとおり、リモート装置200は起動済みであるので、上流ブリッジ(バス延長部(ホスト))140は、リモート装置200から送信されているハートビート情報を受信する(ステップS102)。これによって、上流ブリッジ(バス延長部(ホスト))140は、リモート装置200に繋がっている遠隔デバイス231〜23nを認識し、その情報を取得することができる。また、上流ブリッジ(バス延長部(ホスト))140は、このハートビート情報に基づいて、リモート装置200の通信部210のMACアドレスを取得する。
次に、任意のゲストOS10xが起動されると、ゲストOS10xはデバイスをスキャンする命令を発行する(ステップS103)。上流ブリッジ(バス延長部(ホスト))140は、デバイス管理テーブル141を検索して、当該ゲストOS10xが許可されているリモート装置200の通信部210のMACアドレスを指定してデバイススキャン命令を発行する。前述のとおり、通信部210のMACアドレスは一意に決まるIDであるため、例え複数あるリモート装置200の一部が起動していなかったとしてもゲストOS10xとの組み合わせは変わらない。
前記デバイススキャン命令を受け取ったリモート装置200は、デバイススキャン命令の発行元に対し、デバイスの種別を返答する。デバイスの種別の返答としては、図5、図6に示した「ベンダーIDとデバイスID」の組み合わせが挙げられる。もちろん、「ベンダーIDとデバイスID」は、返答の一例を挙げたものである。リモート装置200は、「ベンダーIDとデバイスID」に代わるデバイス種別情報を送ってもよいし、その他の情報を付加する等してもよい。
上流ブリッジ(バス延長部(ホスト))140のスキャン結果検査部142は、前記返答されたデバイスの種別を受け取ると、デバイス管理テーブルを参照して、当該ゲストOS10xが許可されているデバイスの種別であるかを確認する(ステップS104〜S105)。前記デバイスの種別とゲストOS10xの組が許可されている組み合わせである場合(ステップS105のYes)、スキャン結果検査部142は、当該スキャン結果をゲストOS10xに返す(ステップS106)。遠隔デバイスを検出したゲストOS10xは、デバイスドライバにより遠隔デバイスを初期化し、必要に応じてアクセスする(ステップS108)。
一方、前記デバイスの種別とゲストOS10xの組が許可されていない組み合わせであった場合(ステップS105のNo)、スキャン結果検査部142は、当該スキャン結果は破棄し、ゲストOS10xに対してはエラー(デバイス不検出)を返す(ステップS107)。
以上説明したように、本実施形態によれば、1以上あるリモート装置200の一部が起動しなかった場合でも、ゲストOS10xに対して割り当てるリモート装置200の指定方法を変える必要がない、という顕著な効果が奏される。この効果は、遠隔デバイスを指定するための識別情報として、リモート装置200の通信部210の固有の識別子(MACアドレス)を使うことによって奏される。また、図12の構成においては、上流ブリッジ(バス延長部(ホスト))140a側にデバイス管理テーブル141及びスキャン結果検査部142を設けなくとも、同様の効果を得ることができる。
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による計算機システム参照)
[第2の形態]
第1の形態の計算機システムにおいて、
前記通信制御手段は、前記管理テーブルを参照して、ゲストオペレーティングシステムからのスキャン命令に対する遠隔デバイスからの応答のうち、スキャン命令の送信元のゲストオペレーティングシステムと対応付けられていない遠隔デバイスからの応答を破棄するスキャン結果検査手段として機能する計算機システム。
[第3の形態]
第1又は第2の形態の計算機システムにおいて、
前記遠隔デバイスの起動状態によって変化しない識別情報として、前記遠隔デバイスを備えるリモート装置からのハートビート情報に含まれるMACアドレスを用い、
前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記バス延長手段は、前記スキャン命令の宛先を前記MACアドレスに書き換えてから転送する計算機システム。
[第4の形態]
第1から第3いずれか一の形態の計算機システムにおいて、
前記遠隔デバイスは、PCI−Expressプロトコルに対応したPCI−Expressデバイスであり、
前記バス延長手段は、PCI−Expressプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に仮想的なバスを構築する計算機システム。
[第5の形態]
(上記第2の視点による遠隔デバイスの接続管理方法参照)
[第6の形態]
第5の形態の遠隔デバイスの接続管理方法において、
前記遠隔デバイスの起動状態によって変化しない識別情報として、前記遠隔デバイスを備えるリモート装置からのハートビート情報に含まれるMACアドレスを用い、
前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記バス延長手段は、前記スキャン命令の宛先を前記MACアドレスに書き換えてから転送する遠隔デバイスの接続管理方法。
[第7の形態]
第5又は第6の形態の遠隔デバイスの接続管理方法において、
前記遠隔デバイスは、PCI−Expressプロトコルに対応したPCI−Expressデバイスであり、
前記ゲストオペレーティングシステムと遠隔デバイス間の通信は、PCI−Expressプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に構築された仮想的なバスを介して行われる遠隔デバイスの接続管理方法。
[第8の形態]
(上記第3の視点によるプログラム参照)
なお、上記第8の形態は、第1の形態と同様に、第2〜第4の形態に展開することが可能である。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
この出願は、2014年6月12日に出願された日本出願特願2014−121450を基礎とする優先権を主張し、その開示の全てをここに取り込む。
100、100a、100A、X100、X500 計算機システム
101〜10n、10x、X101〜X10n ゲストOS
110、X110 ホストOS
111 仮想BIOS
120、X120 CPU
120A OS実行部
130 周辺デバイス
140、X140、140a 上流ブリッジ(バス延長部(ホスト))
140A バス延長部
141、141a デバイス管理テーブル
141A 管理テーブル
142、142a スキャン結果検査部
142A 通信制御部
143、X141、X421 ネットワークアダプター
150、X150、X510 通信部
200、X20A、X20B、X200 リモート装置
210 通信部
220、X420 下流ブリッジ(バス延長部(リモート))
231〜23n 遠隔デバイス
300、600 ネットワーク
X130 周辺機器
X131 デバイスB
X410 イーサスイッチ
X600 スイッチ

Claims (8)

  1. ネットワークを介して接続されたリモート装置に含まれる1つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
    仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備え、
    前記バス延長手段は、前記遠隔デバイスの起動状態によって変化しない前記リモート装置の識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムと前記遠隔デバイス間の通信を制御する通信制御手段を含み、
    前記通信制御手段は、
    前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記スキャン命令の宛先を前記リモート装置の前記識別情報に書き換えてから転送する
    計算機システム。
  2. 前記通信制御手段は、前記管理テーブルを参照して、ゲストオペレーティングシステムからのスキャン命令に対する遠隔デバイスからの応答のうち、スキャン命令の送信元のゲストオペレーティングシステムと対応付けられていない遠隔デバイスからの応答を破棄するスキャン結果検査手段として機能する請求項1の計算機システム。
  3. 前記通信制御手段は、前記遠隔デバイスを備える前記リモート装置から受信したハートビート情報に含まれる前記リモート装置のMACアドレスを前記識別情報として用い、前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記スキャン命令の宛先を前記リモート装置のMACアドレスに書き換えてから転送する請求項1又は2の計算機システム。
  4. 前記遠隔デバイスは、PCI−Expressプロトコルに対応したPCI−Expressデバイスであり、
    前記バス延長手段は、PCI−Expressプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に仮想的なバスを構築する請求項1から3いずれか一の計算機システム。
  5. ネットワークを介して接続されたリモート装置に含まれる1つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
    仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムにおいて、
    前記遠隔デバイスの起動状態によって変化しない前記リモート装置の識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送し、
    前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別し、
    前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記スキャン命令の宛先を前記リモート装置の前記識別情報に書き換えてから転送する
    遠隔デバイスの接続管理方法。
  6. 前記遠隔デバイスの起動状態によって変化しない前記識別情報として、前記遠隔デバイスを備える前記リモート装置からのハートビート情報に含まれる前記リモート装置のMACアドレスを用い、
    前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記スキャン命令の宛先を前記リモート装置のMACアドレスに書き換えてから転送する請求項5の遠隔デバイスの接続管理方法。
  7. 前記遠隔デバイスは、PCI−Expressプロトコルに対応したPCI−Expressデバイスであり、
    前記ゲストオペレーティングシステムと遠隔デバイス間の通信を、PCI−Expressプロトコルに基づくカプセル化を行うことにより前記遠隔デバイスとの間に構築された仮想的なバスを介して行う請求項5又は6の遠隔デバイスの接続管理方法。
  8. ネットワークを介して接続されたリモート装置に含まれる1つ以上の遠隔デバイスとの間に仮想的なバスを構築するバス延長手段と、
    仮想ハードウェア環境を構成し、前記遠隔デバイスをゲストオペレーティングシステムに制御させるホストオペレーティングシステムを実行する実行手段と、を備える計算機システムに搭載されたコンピュータに、
    前記遠隔デバイスの起動状態によって変化しない前記リモート装置の識別情報を用いて前記ゲストオペレーティングシステムと前記遠隔デバイスとの対応関係を管理する管理テーブルを参照して、前記ゲストオペレーティングシステムからのスキャン命令を前記遠隔デバイスに転送する処理と、
    前記管理テーブルを参照して、前記遠隔デバイスからの応答のうち、前記ゲストオペレーティングシステムに転送する応答を選別する処理と、
    前記ゲストオペレーティングシステムからスキャン命令が発行された場合、前記スキャン命令の宛先を前記リモート装置の前記識別情報に書き換えてから転送する処理と、
    を実行させるためのプログラム。
JP2016527631A 2014-06-12 2015-06-05 計算機システム、遠隔デバイスの接続管理方法及びプログラム Active JP6743696B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014121450 2014-06-12
JP2014121450 2014-06-12
PCT/JP2015/002838 WO2015190079A1 (ja) 2014-06-12 2015-06-05 計算機システム、遠隔デバイスの接続管理方法及びプログラム記録媒体

Publications (2)

Publication Number Publication Date
JPWO2015190079A1 JPWO2015190079A1 (ja) 2017-04-20
JP6743696B2 true JP6743696B2 (ja) 2020-08-19

Family

ID=54833193

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016527631A Active JP6743696B2 (ja) 2014-06-12 2015-06-05 計算機システム、遠隔デバイスの接続管理方法及びプログラム

Country Status (3)

Country Link
US (1) US10157163B2 (ja)
JP (1) JP6743696B2 (ja)
WO (1) WO2015190079A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170097836A1 (en) * 2015-10-02 2017-04-06 Shigeya Senda Information processing apparatus
WO2019124259A1 (ja) * 2017-12-20 2019-06-27 日本電気株式会社 構成管理装置、構成管理システム、構成管理方法、および、構成管理プログラム
US11068295B2 (en) 2019-04-12 2021-07-20 Ghost Locomotion Inc. Device operation across multiple operating system modalities
US11157289B2 (en) * 2019-05-13 2021-10-26 Intel Corporation Power management method and apparatus for virtualized I/O devices
AT525057B1 (de) * 2021-06-25 2022-12-15 Kvm Tec Electronic Gmbh KVM-System

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4670676B2 (ja) 2006-02-17 2011-04-13 日本電気株式会社 スイッチ及びネットワークブリッジ装置
JP2008181387A (ja) * 2007-01-25 2008-08-07 Nec Corp I/oバスシステム及びその管理方法
US20110047313A1 (en) * 2008-10-23 2011-02-24 Joseph Hui Memory area network for extended computer systems
JP4947081B2 (ja) 2009-03-30 2012-06-06 日本電気株式会社 パススルーi/oデバイスを伴うlparの動的マイグレーション装置、その方法及びそのプログラム
JP2011145827A (ja) 2010-01-13 2011-07-28 Hitachi Omron Terminal Solutions Corp 仮想バスシステム、およびデバイス管理方法
JP2011145912A (ja) * 2010-01-15 2011-07-28 Fujitsu Ltd 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム
JP5598148B2 (ja) * 2010-08-05 2014-10-01 富士通株式会社 スイッチング装置、情報処理装置、及びスイッチング装置の制御方法
US9721443B2 (en) * 2013-03-05 2017-08-01 Comcast Cable Communications, Llc Processing security-related messages

Also Published As

Publication number Publication date
JPWO2015190079A1 (ja) 2017-04-20
US10157163B2 (en) 2018-12-18
US20170116151A1 (en) 2017-04-27
WO2015190079A1 (ja) 2015-12-17

Similar Documents

Publication Publication Date Title
JP6743696B2 (ja) 計算機システム、遠隔デバイスの接続管理方法及びプログラム
JP6605713B2 (ja) クラウドコンピューティングシステムにおけるパケット処理方法、ホスト及びシステム
CN108111470B (zh) 容器的部署方法、服务间的通信方法及相关装置
US10324883B2 (en) Computer system, data-processing apparatus, bus-data transferring method, and computer-readable recording medium for transferring data flowing through system bus
JP5529080B2 (ja) 複数のバーチャルマシーンが物理リソースを個別に設定及びアクセスすることを可能にする方法及びシステム
CN111490949B (zh) 用于转发数据包的方法、网卡、主机设备和计算机系统
US9462047B2 (en) Network interface controller supporting network virtualization
JP5858205B1 (ja) ネットワークシステムと拠点間ネットワーク連携制御装置及びネットワーク制御方法並びにプログラム
US8774055B2 (en) Switching method
US10684880B2 (en) Allocating and initializing I/O devices at virtual
US11165700B2 (en) Method for improving throughput for encapsulated network traffic
WO2015194534A1 (ja) スイッチ装置とコンピュータシステムと方法並びにプログラム
US10911405B1 (en) Secure environment on a server
US10761859B2 (en) Information processing system, management device, and method for controlling information processing system
US9483290B1 (en) Method and system for virtual machine communication
US8589610B2 (en) Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor
JPWO2013150792A1 (ja) I/oデバイス共有システムおよびi/oデバイス共有方法
JP6548010B2 (ja) 準仮想化ネットワークデバイス、情報処理装置、情報処理方法、および情報処理プログラム
US11722368B2 (en) Setting change method and recording medium recording setting change program
JP2013197919A (ja) 通信制御装置、通信制御方法および通信制御プログラム
US10025739B2 (en) Information processing system, information processing method, and recording medium

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161118

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190807

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200316

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20200325

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200713

R150 Certificate of patent or registration of utility model

Ref document number: 6743696

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150