(57)【要約】【課題】  コストを増加させることなく、高速、かつ自由な帯域値での通信制御を実現する計算機等を提供する。【解決手段】  物理機能と、該物理機能により生成された仮想機能とを含むＩ／Ｏデバイスと、物理機能と、計算機のリソースを分割して生成された第１の仮想計算機との間で振分ルールにしたがってパケットを振り分ける振分手段と、仮想機能が計算機のリソースを分割して生成された第２の仮想計算機から受け取るパケットを物理機能に伝送するように、前記仮想機能と前記物理機能とを接続する伝送手段と、前記仮想機能に関する所定の条件が満たされると、前記伝送手段に対して前記仮想機能と前記物理機能とを接続することを指示すると共に、前記接続により前記振分手段が受け取る前記第２の仮想計算機から送出されたパケットを、前記物理機能に送出するように制御する振分制御手段とを備える。【選択図】      図３
2016146077.tif 000002
【特許請求の範囲】
【請求項１】
物理機能と、該物理機能により生成された仮想機能とを含むＩ／Ｏデバイスを備えた計算機であって、
前記物理機能と、前記計算機のリソースを分割して生成された第１の仮想計算機との間で振分ルールにしたがってパケットを振り分ける振分手段と、
前記仮想機能が前記計算機のリソースを分割して生成された第２の仮想計算機から受け取るパケットを前記物理機能に伝送するように、前記仮想機能と前記物理機能とを接続する伝送手段と、
前記仮想機能に関する所定の条件が満たされると、前記伝送手段に対して前記仮想機能と前記物理機能とを接続することを指示すると共に、前記接続により前記振分手段が受け取る前記第２の仮想計算機から送出されたパケットを、前記物理機能に送出するように制御する振分制御手段と
を備えた計算機。
【請求項２】
前記振分制御手段は、前記振分手段における、前記物理機能にパケットを送出する出力インタフェースに、前記接続により前記振分手段が受け取る前記第２の仮想計算機から送出されたパケットを格納するキューを設定する
請求項１記載の計算機。
【請求項３】
前記振分制御手段は、前記仮想機能における、前記第２の仮想計算機からパケットを受け取る入力インタフェースに指定された帯域値が、当該仮想機能に指定可能な帯域値を超えたとき、前記所定の条件が満たされたとして、前記伝送手段に前記仮想機能と前記物理機能とを接続することを指示する
請求項１または請求項２記載の計算機。
【請求項４】
前記振分制御手段は、前記振分手段が前記物理機能から受け取るパケットのうち、送信元アドレスが前記第２の仮想計算機を示すパケットを、前記振分手段における、前記物理機能にパケットを送出する出力インタフェースに振り分ける前記振分ルールを生成する
請求項１ないし請求項３のいずれか１項記載の計算機。
【請求項５】
物理機能と、該物理機能により生成された仮想機能とを含むＩ／Ｏデバイスを備えた計算機において、
前記物理機能と、前記計算機のリソースを分割して生成された第１の仮想計算機との間で振分ルールにしたがって振分手段がパケットを振り分け、
前記仮想機能が前記計算機のリソースを分割して生成された第２の仮想計算機から受け取るパケットを前記物理機能に伝送するように、伝送手段が前記仮想機能と前記物理機能とを接続し、
前記仮想機能に関する所定の条件が満たされると、前記伝送手段に対して前記仮想機能と前記物理機能とを接続することを指示すると共に、前記接続により前記振分手段が受け取る前記第２の仮想計算機から送出されたパケットを、前記物理機能に送出するように制御する
通信制御方法。
【請求項６】
前記振分手段における、前記物理機能にパケットを送出する出力インタフェースに、前記接続により前記振分手段が受け取る前記第２の仮想計算機から送出されたパケットを格納するキューを設定する
請求項５記載の通信制御方法。
【請求項７】
前記仮想機能における、前記第２の仮想計算機からパケットを受け取る入力インタフェースに指定された帯域値が、当該仮想機能に指定可能な帯域値を超えたとき、前記所定の条件が満たされたとして、前記伝送手段に前記仮想機能と前記物理機能とを接続することを指示する
請求項５または請求項６記載の通信制御方法。
【請求項８】
前記振分手段が前記物理機能から受け取るパケットのうち、送信元アドレスが前記第２の仮想計算機を示すパケットを、前記振分手段における、前記物理機能にパケットを送出する出力インタフェースに振り分ける前記振分ルールを生成する
請求項５ないし請求項７のいずれか１項記載の通信制御方法。
【請求項９】
物理機能と、該物理機能により生成された仮想機能とを含むＩ／Ｏデバイスを備えた計算機に、
前記物理機能と、前記計算機のリソースを分割して生成された第１の仮想計算機との間で振分ルールにしたがってパケットを振り分ける処理と、
前記仮想機能が前記計算機のリソースを分割して生成された第２の仮想計算機から受け取るパケットを前記物理機能に伝送するように、前記仮想機能と前記物理機能とを接続する処理と、
前記仮想機能に関する所定の条件が満たされると、前記仮想機能と前記物理機能とを接続することを指示すると共に、前記接続により、前記パケットを振り分ける処理において受け取る前記第２の仮想計算機から送出されたパケットを、前記物理機能に送出するように制御する処理と
を実行させる通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンが動作するサーバにおける帯域制御（ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）制御）に関する。
【背景技術】
【０００２】
現在、サーバの仮想化技術が広く利用されるようになっている。サーバの仮想化技術とは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、ストレージ等を仮想的に分割し、それぞれを利用して仮想的なコンピュータ（仮想マシン）を構成することで、サーバ機器に仮想マシンを導入する技術である。
【０００３】
また、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）仮想化技術も利用されている。Ｉ／Ｏ仮想化技術とは、物理Ｉ／Ｏカード、例えばネットワーク接続用のＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を、仮想的に分割することで、複数のマシン間で共有可能とする技術である。
【０００４】
図１０は、仮想化技術によって実現された仮想マシンが導入された計算機１０の構成を示すブロック図である。計算機１０では、例えば、計算機１０の動作を管理するホストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）２０において、ゲストＯＳ１１ａないし１１ｄが動作すると仮定する。なお、計算機１０の動作を管理するＯＳを「ホストＯＳ」、計算機１０で動作する仮想マシンの動作を管理するＯＳを「ゲストＯＳ」と、それぞれ称する。
【０００５】
ホストＯＳ３５は、ＮＩＣ４０を介して外部システム（外部装置）との通信を行う。
【０００６】
ＮＩＣ４０は、ＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）に準拠する。ＳＲ−ＩＯＶに準拠するＮＩＣ４０は、仮想Ｉ／Ｏデバイス（仮想機能（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ：以下、ＶＦと称する））と、物理Ｉ／Ｏデバイス（物理機能（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ：以下、ＰＦと称する））とを備える。ＶＦは、ＰＦによって生成される。図１０の例では、ＰＦ４１によってＶＦ４４が生成されたと仮定する。ＮＩＣ４０は、さらにＮＩＣスイッチ４７を備える。ＮＩＣスイッチ４７は、外部システムから送信されたパケットを、ＰＦ４１、ＶＦ４２またはＶＦ４４に振り分けたり、ＰＦ４１、ＶＦ４２またはＶＦ４４から受け取ったパケットを、外部システムに送信したりする。
【０００７】
ホストＯＳ３５で動作するゲストＯＳ１１ａ、１１ｂは、ホストＯＳ３５上で動作する仮想スイッチ３０にそれぞれ接続されると共に、仮想スイッチ３０によりＱｏＳ制御（帯域制御）される。ＱｏＳ制御とは、通信のサービス品質を保証するために通信に使用される帯域を制御することである。
【０００８】
仮想スイッチ３０は、ＮＩＣ４０のＰＦ４１に接続され、ゲストＯＳ１１ａおよび１１ｂからのパケットを、それぞれ伝送路を介して取得すると、取得したパケットをＰＦ４１に送出する。
【０００９】
ホストＯＳ３５で動作するゲストＯＳ１１ｃ、１１ｄは、それぞれＮＩＣ４０のＶＦ４２、４４に接続される。ＳＲ−ＩＯＶ機能を有するＮＩＣ４０が使用される場合、それぞれのゲストＯＳ１１ｃおよび１１ｄに対して、仮想Ｉ／ＯデバイスであるＶＦ４２および４４が１対１で接続される。
【００１０】
ゲストＯＳ１１ｃ、１１ｄから送出されたパケットは、それぞれ接続されるＶＦ４２、４４に送出される。
【００１１】
ＮＩＣ４０は、仮想スイッチ３０またはゲストＯＳ１１ｃ、１１ｄから、ＰＦ４１またはＶＦ４２、４４において取得したパケットを、ＮＩＣスイッチ４７を介して外部システム（外部スイッチ等）に送信する。
【００１２】
ここで、ＳＲ−ＩＯＶとは、ハードウェアによるＩ／Ｏデバイス仮想化支援機構として、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）規格の策定等を行なう業界団体により標準化された、ＰＣＩデバイス側で仮想化をサポートする機能である。ＳＲ−ＩＯＶでは、ＰＣＩＥｘｐｒｅｓｓデバイスが複数の仮想Ｉ／Ｏデバイスを提供しており、仮想マシンにＶＦを占有で割り当てることによってＰＣＩデバイスを仮想マシン間で共有することができる。
【００１３】
このＳＲ−ＩＯＶを代表とするＩ／Ｏ仮想化技術により、ネットワーク通信を高速化することが可能となる。ＳＲ−ＩＯＶに準拠したＮＩＣが備えるＶＦを介して仮想マシンからのパケットを外部に送信する場合、ＮＩＣの物理インタフェースが許容する最大スループットの範囲に収まるように、ＶＦにて帯域制御を実施する必要がある。したがって、図１０の構成では、ＶＦ４２、４４は、それぞれゲストＯＳ１１ｃ、１１ｄからの入力インタフェース４３、４５において、ゲストＯＳ１１ｃ、１１ｄからの通信の帯域制御を実施する。
【００１４】
一方、ゲストＯＳ１１ａ、１１ｂからの通信は、仮想スイッチ３０により帯域制御される。すなわち、仮想スイッチ３０は、ゲストＯＳ１１ａからの入力インタフェース（入力ポート）３３およびゲストＯＳ１１ｂからの入力インタフェース３４において、ゲストＯＳ１１ａおよび１１ｂからのパケットに関するＱｏＳ制御（帯域制御）を実施する。
【００１５】
また仮想スイッチ３０は、ＮＩＣ４０への出力インタフェース（出力ポート）３２において、ゲストＯＳ１１ａおよび１１ｂからのスループットの合計値に対してＱｏＳ制御（帯域制御）を実施する。
【先行技術文献】
【非特許文献】
【００１６】
【非特許文献１】http://www.pcisig.com/specifications/iov/single_root/［平成２７年１月２８日検索］
【発明の概要】
【発明が解決しようとする課題】
【００１７】
上述のような複数のゲストＯＳそれぞれに対して帯域制御を行う計算機において、以下の課題がある。
【００１８】
すなわち、仮想スイッチ３０により帯域制御を行う場合、仮想スイッチ３０は、入出力インタフェースにおいて、柔軟に、すなわち指定される（所望の）帯域値での帯域制御が可能である。一方で、仮想スイッチ３０は、トラフィックが増加した場合に高スループットを実現できない虞がある。
【００１９】
その理由は、仮想スイッチ３０による帯域制御はソフトウェア制御であるので、ゲストＯＳ１１ａおよび１１ｂからのトラフィックが増大した場合に、ソフトウェア負荷増大、すなわちＣＰＵの処理負荷が増大し、ソフトウェアにより制御しきれなくなる虞があるためである。
【００２０】
一方、ＶＦ４２、４４により帯域制御を行う場合、計算機１０は、高いスループットを実現可能であるが、帯域制御が可能な帯域値に制約がある。
【００２１】
その理由は、ＳＲ−ＩＯＶ対応のＮＩＣ４０は、ＶＦ毎に帯域値の指定は可能であるが、一般に、ＶＦに指定可能な帯域値は粗く、例えば、１Ｇｂｐｓ、２Ｇｂｐｓ・・・などの離散値となるためである。この場合、例えば、１．５Ｇｂｐｓといった帯域値での帯域制御が望まれたとしても、１Ｇｂｐｓという帯域値での帯域制御しかできない。制約なく（自由に）指定される帯域値での通信制御が可能なＮＩＣは、構造が複雑であるため高価である。よって、コストを抑えた市販のＮＩＣでは、このように自由に指定される帯域値での通信制御を実施することは困難である。
【００２２】
本願発明は、上記課題を鑑みてなされたものであり、コストを増加させることなく、高速、かつ自由な帯域値での帯域制御を実現可能な計算機等を提供することを主要な目的とする。
【課題を解決するための手段】
【００２３】
本発明の第１の計算機は、物理機能と、該物理機能により生成された仮想機能とを含むＩ／Ｏデバイスを備えた計算機であって、前記物理機能と、前記計算機のリソースを分割して生成された第１の仮想計算機との間で振分ルールにしたがってパケットを振り分ける振分手段と、前記仮想機能が前記計算機のリソースを分割して生成された第２の仮想計算機から受け取るパケットを前記物理機能に伝送するように、前記仮想機能と前記物理機能とを接続する伝送手段と、前記仮想機能に関する所定の条件が満たされると、前記伝送手段に対して前記仮想機能と前記物理機能とを接続することを指示すると共に、前記接続により前記振分手段が受け取る前記第２の仮想計算機から送出されたパケットを、前記物理機能に送出するように制御する振分制御手段とを備える。
【００２４】
本発明の第１の通信制御方法は、物理機能と、該物理機能により生成された仮想機能とを含むＩ／Ｏデバイスを含む計算機において、前記物理機能と、前記計算機のリソースを分割して生成された第１の仮想計算機との間で振分ルールにしたがって振分手段がパケットを振り分け、前記仮想機能が前記計算機のリソースを分割して生成された第２の仮想計算機から受け取るパケットを前記物理機能に伝送するように、伝送手段が前記仮想機能と前記物理機能とを接続し、前記仮想機能に関する所定の条件が満たされると、前記伝送手段に対して前記仮想機能と前記物理機能とを接続することを指示すると共に、前記接続により前記振分手段が受け取る前記第２の仮想計算機から送出されたパケットを、前記物理機能に送出するように制御する。
【００２５】
なお同目的は、上記の各構成を有する通信制御方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００２６】
本願発明によれば、計算機において、コストを増加させることなく、高速、かつ自由な帯域値での帯域制御を実現することができるという効果が得られる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施形態に係る計算機を実現するハードウエア構成を例示する図である。
【図２】本発明の第１の実施形態に係る計算機の具体的な構成を示す図である。
【図３】本発明の第１の実施形態に係る計算機の一部のさらなる具体的な構成を示す図である。
【図４】本発明の第１の実施形態に係る計算機の指定帯域テーブルの一例を示す図である。
【図５】本発明の第１の実施形態に係る計算機のＮＩＣの帯域情報の一例を示す図である。
【図６】本発明の第１の実施形態に係る計算機における帯域値の設定動作について説明するフローチャートである。
【図７】本発明の第１の実施形態に係る計算機の振分ルールの一例を示す図である。
【図８】本発明の第１の実施形態に係る計算機の仮想スイッチの出力インタフェースの構成（ａ）および（ｂ）について説明する図である。
【図９】本発明の第２の実施形態に係る計算機の構成を示す図である。
【図１０】本発明と関連する計算機の構成を示す図である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態について図面を参照して詳細に説明する。各実施形態で参照する図面において、同一要素には同一符号を付し、重複する説明を省略する場合がある。
【００２９】
第１の実施形態
本発明の第１の実施形態について図面を参照して説明する。
【００３０】
図１は、本発明の第１の実施形態に係る計算機１００を実現するハードウエア構成を例示する図である。図１に示すように、計算機１００は、複数のＣＰＵ１３−１乃至ＣＰＵ１３−ｎ、コントローラ１４、メインメモリ１５、Ｉ／ＯデバイスであるＮＩＣ１２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１９および記憶媒体２０を備える。ＣＰＵ１３−１乃至ＣＰＵ１３−ｎ（以降、これらを総称してＣＰＵ１３と称する）は、インターコネクト１６を介して、コントローラ１４、メインメモリ１５、ＲＯＭ１９、記憶媒体２０に接続される。コントローラ１４には、ＮＩＣ１２が接続される。
【００３１】
ＣＰＵ１３は、インターコネクト１６を介してメインメモリ１５にアクセスする。またＣＰＵ１３は、コントローラ１４を介してＮＩＣ１２にアクセスする。またＮＩＣ１２は、コントローラ１４を介してメインメモリ１５にアクセスする。
【００３２】
ＣＰＵ１３は、ＲＯＭ１９または記憶媒体２０に記憶された各種コンピュータ・プログラムを、メインメモリ１５に読み出して実行することにより、計算機１００の全体的な動作を司る。すなわち、以下の各実施形態において、ＣＰＵ１３は、ＲＯＭ１９を適宜参照しながら、計算機１００が備える各機能を実行するコンピュータ・プログラムを実行する。
【００３３】
ＣＰＵ１３は、メインメモリ１５にハイパバイザ１８をロードし、実行することで、計算機１００の計算機資源（リソース）を複数の仮想マシン１７ａ乃至１７ｂに割り当てる。仮想マシン１７ａ乃至１７ｄでは、それぞれゲストＯＳが動作する。
【００３４】
ＮＩＣ１２は、ＳＲ−ＩＯＶに準拠し、複数の送受信キューを有するマルチキューのＩ／Ｏデバイスで構成される。ＮＩＣ１２は、ＳＲ−ＩＯＶに準拠する物理機能（ＰＦ）２１０と、仮想機能（ＶＦ）２２０、２３０とを備える。
【００３５】
図２は、図１に例示したハードウエア構成により実現される第１の実施形態に係る計算機１００の具体的な構成を示す図である。計算機１００において、ＣＰＵ１３は、コンピュータ・プログラムを実行することにより、汎用或いは専用のオペレーションシステムであるホストＯＳ１１と、ホストＯＳ１１上で動作するゲストＯＳ１１１ａ乃至１１１ｄ、振分制御部１２０および仮想スイッチ１３０が実行される。
【００３６】
ホストＯＳ１１は、ＮＩＣ１２を介して外部システムとのＩ／Ｏ（入出力）を行う。
【００３７】
ゲストＯＳは、ホストＯＳ１１が管理する資源（プロセッサ、ディスク、メモリ等）が許す限り、ゲストＯＳ１１１ａ乃至１１１ｄのように、ホストＯＳ１１に複数存在することが可能である。またゲストＯＳが複数存在する場合、それぞれのゲストＯＳの種類（Ｌｉｎｕｘ（登録商標）やＷｉｎｄｏｗｓ（登録商標）等）は同一である必要はないし、また全て同一であっても構わない。
【００３８】
ＮＩＣ１２は、ＰＦ２１０と、ＶＦ２２０、２３０とを備える。ＰＦ２１０と、ＶＦ２２０、２３０は、それぞれＮＩＣスイッチ２６０に接続されることで、ＮＩＣ１２を共有する。ＮＩＣスイッチ２６０は、ＰＦ２１０と、ＶＦ２２０、２３０、および外部システムとの間でパケットの振分および伝送を行う。
【００３９】
ＶＦ２２０、２３０は、仮想的なネットワークインタフェースカードとして動作し、計算機１００では、それぞれゲストＯＳ１１１ｃ、１１１ｄと接続して、ＮＩＣスイッチ２６０を介して外部システムと通信する。そのため、ＶＦ２２０、２３０は、ゲストＯＳ１１１ｃ、１１１ｄからは、直接接続するネットワークインタフェースカードとして見えている。計算機１００では、ＶＦ２２０、２３０は、それぞれゲストＯＳ１１１ｃ、１１１ｄと１対１で接続するので、ＶＦは、ゲストＯＳと同数以上存在する。但し、ＶＦの最大数はＮＩＣ１２の諸元に依存するので、使用できるＶＦの数は無限ではなく限界値を有する。ＶＦ２２０、２３０は、ＮＩＣ１２が許容する帯域内で通信を制御する。
【００４０】
ゲストＯＳ１１１ｃ、１１１ｄからの通信の帯域制御は、それぞれＶＦ２２０、２３０の入力インタフェース２２５、２３５にて行われる。なお、本実施形態および以下の実施形態では、計算機１００から外部への送信方向の帯域制御を計算機１００にて行い、外部からの受信方向の帯域制御は、外部接続機器により実施されていることを前提とする。
【００４１】
ゲストＯＳ１１１ａ、１１１ｂからの通信の帯域制御については、仮想スイッチ１３０が実施する。
【００４２】
ホストＯＳ１１で動作する構成要素の概要について説明する。
【００４３】
仮想スイッチ１３０は、ゲストＯＳ１１１ａ、１１１ｂとの入出力インタフェース１３１、１３２、ＰＦ２１０との入出力インタフェース１３４、振分部１３６および振分ルール１３７を備える。入出力インタフェース１３１、１３２および入出力インタフェース１３４は、それぞれ受け取ったパケットを帯域制御しながら、接続される相手に送出する。振分部１３６は、受け取ったパケットが宛先に送出されるように、振分ルール１３７に基づいて、その宛先に接続される入出力インタフェースにパケットを振り分ける。振分ルール１３７は、パケットに付与された情報（送信元ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス等）に基づいて、パケットをいずれの入出力インタフェースを介して送出するかを規定するルールを含む。
【００４４】
仮想スイッチ１３０は、ＮＩＣ１２のＰＦ２１０に接続される。仮想スイッチ１３０は、ゲストＯＳ１１１ａ、１１１ｂから伝送されたパケットを、振分部１３６により振分ルール１３７を参照しながら、振り分けてＰＦ２１０に伝送する。
【００４５】
振分制御部１２０は、ＶＦ２２０の入力インタフェース２２５へのパケットを他へ振り分ける制御を行う（詳細は後述する）。なお、以下の説明では、ＶＦ２２０の入力インタフェース２２５へのパケットの振分について説明するが、ＶＦ２３０の入力インタフェース２３５へのパケットの振分についても同様の動作で実現できる。
【００４６】
ＮＩＣ１２が備える構成要素の概要について説明する。
【００４７】
ＰＦ２１０は、入出力インタフェース２１５を介して仮想スイッチ１３０から受け取ったパケットを、入出力インタフェース２１７を介してＮＩＣスイッチ２６０に送出する。ＶＦ２２０、２３０は、それぞれゲストＯＳ１１１ｃ、１１１ｄから、入力インタフェース２２５、２３５を介して受け取ったパケットを、出力インタフェース２２７、２３７を介してＮＩＣスイッチ２６０に送出する。ＮＩＣスイッチ２６０は、受け取ったパケットを外部システムに転送する。
【００４８】
振分回路２４０は、振分制御部１２０の指示に基づいて、ＶＦ２２０の入力インタフェース２２５とＰＦ２１７の入出力インタフェース２１７とを接続することにより、ＶＦ２２０の入力インタフェース２２５が受け取ったパケットを、ＰＦ２１０の入出力インタフェース２１７に伝送する。
【００４９】
記憶領域２５０は、ＶＦ２２０、２３０の入力インタフェース２２５、２３５に指定可能な帯域値を含む帯域情報２５１を格納する。
【００５０】
計算機１００は、ＳＲ−ＩＯＶ技術の一機能であるＶＦ２２０、ＶＦ２３０およびＰＦ２１０と、仮想スイッチ１３０とを組み合わせることで、自由な帯域値での帯域制御を実施することができる。
【００５１】
以下、計算機１００の構成要素の詳細について説明する。
【００５２】
図３は、図２に示した計算機１００の構成要素における、振分制御部１２０、仮想スイッチ１３０、ＰＦ２１０、ＶＦ２２０および振分回路２４０の構成を詳細に説明する図である。図３において、二点鎖線矢印は、パケットが伝送される方向を示す。
【００５３】
各構成要素について、具体的に説明する。
【００５４】
振分制御部１２０は、振分設定部１２１、指定帯域取得部１２２および指定帯域テーブル１２３を備える。
【００５５】
指定帯域取得部１２２は、ユーザから、ＶＦ２２０、２３０の入力インタフェース２２５、２３５に指定したい帯域値を取得すると共に、取得した帯域値に関するエントリを指定帯域テーブル１２３に追加する。
【００５６】
図４は、指定帯域テーブル１２３の一例を示す図である。図４に示すように、指定帯域テーブル１２３は、インタフェース識別情報と、指定帯域値とを含む。図４では、ＮＩＣ１２が有するＶＦ２２０、２３０の入力インタフェース２２５、２３５に対して、ユーザから指定された帯域値が格納された指定帯域テーブル１２３を示す。例えば、図４では、ＶＦ２２０の入力インタフェース２２５に１７５ｋｂｐｓの帯域値が指定され、ＶＦ２３０の入力インタフェース２３５に１．５Ｇｂｐｓの帯域値が指定されていることを示す。
【００５７】
振分設定部１２１は、指定帯域テーブル１２３とＮＩＣ１２の帯域情報２５１とを参照しながら、ＶＦ２２０、２３０に対して、帯域値の設定を行う。
【００５８】
図５は、ＮＩＣ１２の帯域情報２５１の一例を示す図である。図５に示すように、帯域情報２５１には、ＮＩＣ１２にて指定可能な帯域値が、帯域値にて昇順にソートされた状態で記憶されている。ＮＩＣ１２にて指定可能な帯域値はＮＩＣ１２の諸元に依存するため、読み出し専用データとなっており、変更されることはないと仮定する。図５に示す例では、ＮＩＣ１２において、最小１ｋｂｐｓから最大１０Ｇｂｐｓまでの帯域値が指定可能であることを示す。ユーザからは、この範囲で帯域値が指定されることを前提とする。
【００５９】
図３に示すように、ＶＦ２２０は、入力インタフェース２２５に、キュー２２６と、キュー２２６を管理するキュー管理部２２８とを備える。入力インタフェース２２５は、ゲストＯＳ１１１ｃから受け取ったパケットを、キュー２２６に格納する。キュー管理部２２８は、振分制御部１２０の振分設定部１２１の指示により、キュー２２６に帯域値を設定すると共に、その帯域値を超えないようにパケットが送出されるように制御する。なお、このような、キューおよびキューによる帯域の制御は、他の入出力インタフェースでも行われるが、本実施形態に関わる制御以外は、その説明を省略する。
【００６０】
振分回路２４０は、ＶＦ２２０の入力インタフェース２２５とＰＦ２１０の入力インタフェース２１７ｂとを接続する伝送路を含む接続回路である。振分回路２４０は、スイッチ機能を有しており、振分制御部１２０の振分設定部１２１からの指示に応じて、ＶＦ２２０の入力インタフェース２２５とＰＦ２１０の入力インタフェース２１７ｂとを接続、または接続解除する。これにより、キュー２２６から溢れたパケットが、ＰＦ２１０の入力インタフェース２１７ｂに伝送される（詳細は後述する）。
【００６１】
ここで、ＶＦ２２０の入力インタフェース２２５にユーザから自由な帯域値を指定されると、入力インタフェース２２５に指定可能な帯域値よりも、ユーザから指定された帯域値が大きい場合、ＶＦ２２０は、指定された帯域値での通信を実現できない。ここで、「入力インタフェース２２５に指定可能な帯域値」とは、ユーザから指定された帯域値を超えない最大の指定可能帯域値を意味する。このとき、ゲストＯＳ１１１ｃから送られたパケットは、キュー２２６から溢れて破棄されてしまう虞がある。
【００６２】
そこで、本実施形態の計算機１００では、上記のようにキュー２２６から溢れたパケットを、ＰＦ２１０に振り分けることにより、ユーザから指定された帯域値での帯域制御を実現する。
【００６３】
まず、計算機１００における通常時のＰＦ２１０と仮想スイッチ１３０の動作について説明する。
【００６４】
例えばゲストＯＳ１１１ａを宛先とするパケットが外部システムから計算機１００に伝送されたと仮定する。この場合、ＮＩＣスイッチ２６０は、例えばそのパケットの宛先ＭＡＣアドレスに基づいて、ゲストＯＳ１１１ａが接続している仮想スイッチ１３０に接続されるＰＦ２１０に、パケットを振り分ける。ＰＦ２１０は、ＮＩＣスイッチ２６０からの入力インタフェース２１７ｂにおいてパケットを受け取り、仮想スイッチ１３０に接続される出力インタフェース２１５ｂからそのパケットを仮想スイッチ１３０に送る。
【００６５】
仮想スイッチ１３０は、受け取ったパケットを、振分部１３６において振分ルール１３７を参照しながら、ゲストＯＳ１１１ａに接続される入出力インタフェース１３１を介してゲストＯＳ１１１ａに送る。
【００６６】
一方、ゲストＯＳ１１１ａから外部システムにパケットを伝送する際、仮想スイッチ１３０は、入出力インタフェース１３１を介してパケットを受け取る。仮想スイッチ１３０の振分部１３６は、そのパケットの宛先ＭＡＣアドレスから、外部システム宛てのパケットであることが分かると、出力インタフェース１３４ａを介してＰＦ２１０に送る。
【００６７】
ＰＦ２１０は、入力インタフェース２１５ａを介して上記パケットを受け取ると、出力インタフェース２１７ａからそのパケットをＮＩＣスイッチ２６０に送出する。ＮＩＣスイッチ２６０は、宛先に向けてパケットを送信する。各インタフェースは、それぞれキューを備え、キューに設定された帯域値にて帯域制御を実施する。
【００６８】
次に、ゲストＯＳ１１１ｃから外部システムに宛ててパケットを伝送する場合の計算機１００の動作を説明する。すなわち、ゲストＯＳ１１１ｃは、そのパケットをＶＦ２２０に送る。ＶＦ２２０は、取得したパケットを入力インタフェース２２５のキュー２２６に格納し、キュー２２６に設定された帯域値にて通信を制御しながら、出力インタフェース２２７を介してパケットをＮＩＣスイッチ２６０に送る。ＮＩＣスイッチ２６０は、パケットを外部スイッチに送る。
【００６９】
図６は、本実施形態に係る計算機１００における帯域値の設定動作について説明するフローチャートである。図６を参照して、計算機１００の動作について説明する。ユーザは、計算機１００に対して、ＶＦ２２０の帯域値として、例えば「１７５ｋｂｐｓ」を指定したと仮定する。振分制御部１２０は、指定帯域取得部１２２において、指定された帯域値を取得する（Ｓ２０１）と共に、図４に示すように、指定帯域テーブル１２３に、指定されたエントリ（インタフェース識別情報および指定帯域値）を追加する（Ｓ２０２）。
【００７０】
続いて、振分設定部１２１は、指定帯域取得部１２２が取得した帯域値を元に、その帯域値を超えない最大の指定可能帯域値を、帯域情報２５１から読み出す（Ｓ２０３）。ここでは、振分設定部１２１は、「１７５ｋｂｐｓ」を超えない最大の指定可能帯域値として、「１００ｋｂｐｓ」を読み出す。振分設定部１２１は、読み出した指定可能帯域値をキュー管理部２２８に通知する。キュー管理部２２８は、通知された帯域値にて通信が制御されるように、１００ｋｂｐｓをキュー２２６に設定する。この設定により、入力インタフェース２２５では、１００ｋｂｐｓの帯域にて通信制御が行われる。このとき、振分設定部１２１は、キュー２２６から溢れたパケットが他の伝送路に伝送されるように設定する。
【００７１】
すなわち、振分設定部１２１は、上記帯域情報２５１から読み出した指定可能帯域値と、ユーザから指定された帯域値との差分を算出する（Ｓ２０４）。ここでは、１７５ｋｂｐｓ−１００ｋｂｐｓ＝７５ｋｂｐｓが算出される。差分がゼロである場合（Ｓ２０５においてＹｅｓ）、入力インタフェース２２５では指定された帯域値での通信の制御が可能であるので、振分設定部１２１は、帯域値の設定動作を終了する。
【００７２】
差分がゼロでない場合（Ｓ２０５においてＮｏ）、振分設定部１２１は、振分回路２４０に対して接続オンを指示する（Ｓ２０６）。振分回路２４０は、上記指示に応じて、ＶＦ２２０の入力インタフェース２２５と、ＰＦ２１０の入力インタフェース２１７ｂとを接続する。例えば、振分回路２４０は、入力インタフェース２２５のアドレスと入力インタフェース２１７ｂのアドレスを関連付けることにより、両者を接続してもよい。この接続により、上記のように入力インタフェース２２５にてキュー２２６から溢れたパケットが、ＰＦ２１０の入力インタフェース２１７ｂに伝送される。
【００７３】
なお、ＮＩＣ１２の各インタフェースに指定される帯域値の合計は、ＮＩＣ１２が許容する最大帯域値を超えないので、入力インタフェース２１７ｂにおいてパケットが溢れることはないことを前提とする。
【００７４】
そして、入力インタフェース２１７ｂに入力されたパケットは、出力インタフェース２１５ｂを介して、仮想スイッチ１３０に伝送される。仮想スイッチ１３０は、上記パケットを、入力インタフェース１３４ｂにて受け取る。
【００７５】
振分設定部１２１は、仮想スイッチ１３０が受け取ったパケットが適切に振り分けられるように、仮想スイッチ１３０に対して振分ルール１３７のエントリを追加する（Ｓ２０７）。すなわち、振分設定部１２１は、仮想スイッチ１３０の振分ルール１３７に、ＶＦ２２０から伝送されたパケットを出力インタフェース１３４ａに振り分けるという振分ルールのエントリを追加する。
【００７６】
図７は、振分設定部１２１が振分ルール１３７に追加するエントリの例を示す図である。図７に示すように、振分ルール１３７は、例えば、入力パケット情報と出力インタフェース識別情報とを含む。入力パケット情報は、送信元ＭＡＣアドレスおよび入力インタフェース識別情報を含む。
【００７７】
図７の例では、入力インタフェース１３４ｂが取得したパケットの送信元ＭＡＣアドレスが、仮想スイッチ１３０に接続されないゲストＯＳ（ここではゲストＯＳ１１１ｃ）を示すアドレスである場合、そのパケットを出力インタフェース１３４ａに伝送する振分ルールを示す。あるいは、振分設定部１２１は、入力インタフェース１３４ｂが取得したパケットの宛先が外部システムを示すアドレスである場合、そのパケットを出力インタフェース１３４ａに伝送する振分ルールを生成してもよい。
【００７８】
振分設定部１２１は、上記のように振分ルール１３７を追加すると共に、仮想スイッチ１３０の出力インタフェース１３４ａにキューの設定を行う（Ｓ２０８）。図８は、出力インタフェース１３４ａにおけるキューについて説明する図である。図８（ａ）は、出力インタフェース１３４ａの通常時の構成を示す。図８（ｂ）は、振分設定部１２１によりキューを設定された出力インタフェース１３４ａの構成を示す。
【００７９】
通常時、出力インタフェース１３４ａは、キュー管理部１３５およびキュー１３４ａ−１を備える。振分設定部１２１は、上記Ｓ２０８において、ＶＦ２２０から伝送されたパケットを格納するキュー１３４ａ−２を設定する。ここでは、振分設定部１２１は、上記Ｓ２０４において算出された差分（７５ｋｂｐｓ）の帯域値を超えないように通信を制御するキュー１３４ａ−２を設定する。キュー管理部１３５は、キュー１３４ａ−２に対して７５ｋｂｐｓの帯域値を超えないように制御する。これにより、ＶＦ２２０から振分回路２４０を介して振り分けられたパケットを、キュー１３４ａ−２に格納することにより、Ｓ２０４において算出された差分（７５ｋｂｐｓ）を上限として、出力インタフェース１３４ａからＰＦ２１０に伝送される。
【００８０】
ＰＦ２１０は、伝送されたパケットを、入力インタフェース２１５ａにおいて受け取り、出力インタフェース２１７ａからＮＩＣスイッチ２６０に伝送する。ＮＩＣスイッチ２６０は、宛先に向けてパケットを伝送する。以上の動作により、ゲストＯＳ１１１ｃからＶＦ２２０に伝送されたパケットは、正常に、宛先に向けて伝送される。
【００８１】
以上のように、本第１の実施形態によれば、計算機１００のＮＩＣ１２は、ＶＦ２２０の入力インタフェース２２５とＰＦ２１０の入力インタフェース２１７ｂとを接続する振分回路２４０を備える。また、振分設定部１２１は、仮想スイッチ１３０が自身に接続されないゲストＯＳ１１１ｃからのパケットを受けると、そのパケットをＰＦ２１０に伝送するように振り分ける振分ルールを生成する。
【００８２】
この構成を採用することにより、本第１の実施形態によれば、一般に、指定可能な帯域値が離散値であるＶＦに対して、ユーザから指定された帯域値が、ＶＦに指定可能な帯域値を超えた分の通信を、他へ振り分ける。よって、ユーザから指定された自由な帯域値での帯域制御が可能になるという効果が得られる。また、上記構成により、構造が複雑で高価なＮＩＣは不要であるので、コストを抑えることができるという効果が得られる。また、ＮＩＣにより帯域制御を実施するので、ソフトウエア負荷増大によるスループット低下を回避し、高速な通信を実現できるという効果が得られる。
【００８３】
第２の実施形態
図９は、本発明の第２の実施形態に係る計算機５００の構成を示す図である。図９に示すように、計算機５００は、Ｉ／Ｏデバイス５１０、振分部５２０、伝送部５３０および振分制御部５４０を備える。
【００８４】
Ｉ／Ｏデバイス５１０は、物理機能と、該物理機能により生成された仮想機能とを含む。振分部５２０は、物理機能と、計算機のリソースを分割して生成された第１の仮想計算機との間で振分ルールにしたがってパケットを振り分ける。
【００８５】
伝送部５３０は、仮想機能が計算機のリソースを分割して生成された第２の仮想計算機から受け取るパケットを物理機能に伝送するように、仮想機能と物理機能とを接続する。
【００８６】
振分制御部５４０は、仮想機能に関する所定の条件が満たされると、伝送部５３０に対して仮想機能と物理機能とを接続することを指示すると共に、接続により振分部５２０が受け取る第２の仮想計算機から送出されたパケットを、物理機能に送出するように制御する。
【００８７】
振分部５２０は、第１の実施形態における仮想スイッチ１３０に相当し、伝送部５３０は、同じく振分回路２４０に相当する。
【００８８】
上記構成を採用することにより、本第２の実施形態によれば、一般に、指定可能な帯域値が離散値である仮想機能に対して、ユーザから指定された帯域値が、指定可能な帯域値を超えた分の通信を、他へ振り分けることができる。よって、計算機５００において自由な帯域値での帯域制御を、コストを増加させることなく実現可能であるという効果が得られる。
【００８９】
なお、各実施形態を例に説明した本発明は、計算機１００に対して、上記説明した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、図１に示したＣＰＵ１３がメインメモリ１５に読み出して実行することによって達成される。
【００９０】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【産業上の利用可能性】
【００９１】
本発明は、例えば、仮想マシンが動作する仮想化環境と、仮想マシンと外部装置との間のＩ／Ｏを行うＩ／Ｏデバイスとを備えた計算機に適用できる。
【符号の説明】
【００９２】
１１  ホストＯＳ
１２  ＮＩＣ
１３  ＣＰＵ
１４  コントローラ
１５  メインメモリ
１６  インターコネクト
１７ａ乃至１７ｄ  仮想マシン
１８  ハイパバイザ
１９  ＲＯＭ
２０  記憶媒体
１００  計算機
１１１ａ乃至１１１ｄ  ゲストＯＳ
１２０  振分制御部
１３０  仮想スイッチ
１３１、１３２、１３４、２１５、２１７  入出力インタフェース
１３５、２２８  キュー管理部
１３６  振分部
１３７  振分ルール
２１０  ＰＦ
２２０、２３０  ＶＦ
２２５、２３５、２１７ｂ、１３４ｂ、２１５ａ  入力インタフェース
１３４ａ−１、１３４ａ−２、２２６  キュー
２４０  振分回路
２５０  記憶領域
２５１  帯域情報
２６０  ＮＩＣスイッチ
【図１】
2016146077.tif 000003
【図２】
2016146077.tif 000004
【図３】
2016146077.tif 000005
【図４】
2016146077.tif 000006
【図５】
2016146077.tif 000007
【図６】
2016146077.tif 000008
【図７】
2016146077.tif 000009
【図８】
2016146077.tif 000010
【図９】
2016146077.tif 000011
【図１０】
2016146077.tif 000012