(57)【要約】【課題】  仮想マシンがパケットの送信の停止を要求することが困難な場合でも、パケットロスを抑制できる技術を提供することを目的とする。【解決手段】  パケットを保持し、保持したパケットを、パケット処理部を有する処理装置に出力する保持部と、パケット処理部でパケット処理されたパケットを、処理装置から受信する受信部と、保持部から処理装置に出力したパケットと、処理装置から受信したパケットとに基づいて、保持部から処理装置へのパケットの出力を制御する制御部とを有する。【選択図】    図１
2017147690.tif 000002
【特許請求の範囲】
【請求項１】
パケットを保持し、前記保持したパケットを、パケット処理部を有する処理装置に出力する保持部と、
前記パケット処理部でパケット処理されたパケットを、前記処理装置から受信する受信部と、
前記保持部から前記処理装置に出力したパケットと、前記処理装置から受信したパケットとに基づいて、前記保持部から前記処理装置へのパケットの出力を制御する制御部と
を備えることを特徴とする切替装置。
【請求項２】
請求項１に記載の切替装置において、
パケットに含まれる情報に基づいて、前記処理装置がパケットに対して実行する処理を示す処理情報を識別する識別部と、
前記識別部が識別した前記処理情報毎にパケットを保持する複数の前記保持部と、
前記識別部が識別した前記処理情報毎に前記処理量を算出する複数の前記第１算出部とを備え、
前記制御部は、前記処理情報毎の前記処理量に基づいて、前記各保持部から前記処理装置へのパケットの出力を制御する
ことを特徴とする切替装置。
【請求項３】
請求項１に記載の切替装置において、
パケットに含まれる情報に基づいて、前記処理装置がパケットに対して実行する処理を示す処理情報を識別する識別部と、
前記処理装置においてパケットの処理にかかる処理時間を前記処理情報毎に計測する第１計測部と、
前記保持部が最後にパケットを出力してからの経過時間を計測する第２計測部と、
前記第１計測部が計測した前記処理情報毎の前記処理時間に基づいて、前記各処理情報が示す処理間において、前記第２計測部が計測する前記経過時間から一方の処理が前記処理装置で終了したと推定される時間を算出する第２算出部とを備え、
前記制御部は、前記保持部が次に出力するパケットに対する処理が、前記保持部が最後に出力したパケットに対する処理の処理負荷より軽く、かつ前記経過時間が前記第２算出部が算出した時間より長い場合、前記処理量に拘わらず、前記保持部から前記処理装置に次のパケットを出力させる
ことを特徴とする切替装置。
【請求項４】
請求項３に記載の切替装置において、
前記処理情報毎の処理を前記処理装置に擬似的に実行させる擬似パケットを前記処理情報毎に生成し、前記処理装置に出力する生成部を備え、
前記第１計測部は、前記擬似パケットを用いて前記処理情報毎の前記処理時間を計測する
ことを特徴とする切替装置。
【請求項５】
請求項１ないし請求項４のいずれか１項に記載の切替装置において、
前記第１算出部は、前記保持部から前記処理装置に出力したパケットの数と、前記処理装置から前記切替部に出力された前記処理後のパケットの数とに基づいて、前記処理装置で処理されているパケットの処理数を算出し、
前記制御部は、前記第１算出部により算出された前記処理数に基づいて、前記処理装置が処理可能な最大の処理数を超えない範囲で、前記保持部から前記処理装置へのパケットの出力を制御する
ことを特徴とする切替装置。
【請求項６】
請求項１ないし請求項４のいずれか１項に記載の切替装置において、
前記第１算出部は、前記保持部から前記処理装置に出力されたパケットのうちの前記処理装置で処理されるデータ量と、前記処理装置から受信した前記処理後のパケットのうち前記処理装置で処理されたデータ量とに基づいて前記処理装置で処理されているパケットのデータ量を算出し、
前記制御部は、前記第１算出部により算出された前記データ量に基づいて、前記処理装置が処理可能な最大のデータ量を超えない範囲で、前記保持部から前記処理装置へのパケットの出力を制御する
ことを特徴とする切替装置。
【請求項７】
請求項１に記載の切替装置において、
パケットに含まれる情報に基づいて、前記処理装置における複数の前記パケット処理部のうち、受信するパケットを処理する前記パケット処理部の組合せを示す処理情報を識別する識別部と、
前記識別部が識別した前記処理情報毎にパケットを保持する複数の前記保持部と、
前記複数のパケット処理部の各々におけるパケットの処理量を算出する複数の前記第１算出部と、
前記保持部がパケットを出力してからの経過時間を計測する時間計測部と、
前記時間計測部が計測する前記経過時間に基づいて、前記複数の第１算出部の各々が算出した前記各パケット処理部におけるパケットの処理量を調整させる調整部とを備え、
前記制御部は、前記処理情報が示す処理を実行する前記各パケット処理部におけるパケットの処理量に基づいて、前記複数の保持部の各々から前記処理装置へのパケットの出力を制御する
ことを特徴とする切替装置。
【請求項８】
請求項７に記載の切替装置において、
前記処理装置の前記複数のパケット処理部のうちの第１のパケット処理部が、前記第１のパケット処理部よりパケットの処理時間が短い第２のパケット処理部に転送するパケットの処理量を監視する監視部を備え、
前記制御部は、前記第１の算出部が算出した前記第２のパケット処理部の処理量と、前記監視部が監視する処理量と、前記処理情報とに基づいて、前記第２のパケット処理部による処理が最初に実行されるパケットを保持する前記保持部に対して、前記処理装置へのパケットの出力を制御する
ことを特徴とする切替装置。
【請求項９】
請求項７または請求項８に記載の切替装置において、
前記処理装置の前記複数のパケット処理部の各々に出力する擬似パケットを生成する生成部を備え、
前記時間計測部は、前記擬似パケットを用いて、前記各パケット処理部における処理にかかる処理時間を計測し、
前記調整部は、前記時間計測部が計測する前記経過時間と、前記時間計測部が計測する前記各パケット処理部の前記処理時間とに基づいて、前記複数の第１算出部の各々が算出した前記各パケット処理部におけるパケットの処理量を調整する
ことを特徴とする切替装置。
【請求項１０】
請求項１に記載の切替装置において、
パケットに含まれる情報に基づいて、前記処理装置における複数の前記パケット処理部のうち、受信するパケットを処理する前記パケット処理部の組合せを示す処理情報を識別する識別部と、
前記識別部が識別した前記処理情報毎にパケットを保持する複数の前記保持部と、
前記複数のパケット処理部の各々におけるパケットの処理量を算出する複数の前記第１算出部と、
前記複数の保持部から前記処理装置に出力される単位時間当たりのパケットの数を示す出力レートと、前記複数のパケット処理部が処理する単位時間当たりの処理量を示す処理レートとを計測するレート計測部と、
前記識別部が識別した前記処理情報と、前記レート計測部が計測した前記各パケット処理部の処理レートとに基づいて、前記各パケット処理部に送信されるパケットの帯域を制御する帯域制御部とを備え、
前記制御部は、前記各パケット処理部におけるパケットの処理量と、レート計測部が計測した前記出力レートとに基づいて、前記複数の保持部の各々から前記処理装置へのパケットの出力を制御する
ことを特徴とする切替装置。
【請求項１１】
請求項１０に記載の切替装置において、
前記処理装置の前記複数のパケット処理部の各々に出力する擬似パケットを生成する生成部を備え、
前記レート計測部は、前記擬似パケットを用いて、前記パケット処理部毎に前記処理レートを計測する
ことを特徴とする切替装置。
【請求項１２】
パケット処理部を有する少なくとも１つの処理装置と、
パケットを前記処理装置に出力し、前記パケット処理部で処理された処理後のパケットを、前記処理装置から受信する切替装置とを備え、
前記切替装置は、
パケットを保持し、前記保持したパケットを、前記処理装置に出力する保持部と、
前記パケット処理部でパケット処理されたパケットを、前記処理装置から受信する受信部と、
前記保持部から前記処理装置に出力したパケットと、前記処理装置から受信したパケットとに基づいて、前記保持部から前記処理装置へのパケットの出力を制御する制御部とを備える
ことを特徴とするパケット処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、切替装置およびパケット処理システムに関する。
【背景技術】
【０００２】
近時、サーバ等のコンピュータ装置上で仮想マシン（ＶＭ：Virtual Machine）を動作させ、パケットの伝送経路を決定するルーティング等の通信処理を仮想マシンに実行させるパケット処理システムが知られている。
【０００３】
上記のようなパケット処理システムを用いた場合、スループット性能を確保することが困難となるため、切替装置で、仮想マシンが動作する複数のコンピュータ装置にパケットを振り分ける。
【０００４】
例えば、コンピュータ装置の負荷に応じて各仮想マシンに割り当てるＮＩＣをインターコネクトスイッチ等の切替装置を用いて変更することで、仮想マシンから送信されたパケットの転送時間を短縮する技術が提案されている（例えば、特許文献１参照）。なお、ＮＩＣは、ネットワークインタフェースカード（Network Interface Card）の略である。
【０００５】
また、仮想マシンを動作させるコンピュータ装置のリソース使用率を、仮想マシン毎に監視し、各仮想マシンに割り当てるリソースを調整することで、各仮想マシンの動作状態を最適化する技術が提案されている（例えば、特許文献２参照）。なお、コンピュータ装置のリソースとは、プロセッサの処理能力やメモリの容量等である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１８６４１１号公報
【特許文献２】特開２００８−２９３１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、パケットの通信処理を実行するサーバ等のコンピュータ装置は、処理能力以上のパケットを切替装置を介してネットワークから受信した場合、パケットの送信の停止を指示する停止要求を切替装置等に出力する。一方、パケットの通信処理等を実行する仮想マシンがパケットの停止要求を出力する機能を持たない場合、仮想マシンは、処理能力以上のパケットを受信し、パケットが溢れてしまい、パケットロスが発生してしまう場合がある。
【０００８】
１つの側面では、本件開示の切替装置およびパケット処理システムでは、仮想マシンがパケットの送信の停止を要求する機能を持たない場合でも、切替装置によりパケットの転送量を制御し、パケットロスを抑制することを目的とする。
【課題を解決するための手段】
【０００９】
一つの観点によれば、切替装置は、パケットを保持し、保持したパケットを、パケット処理部を有する処理装置に出力する保持部と、パケット処理部でパケット処理されたパケットを、処理装置から受信する受信部と、保持部から処理装置に出力したパケットと、処理装置から受信したパケットとに基づいて、保持部から処理装置へのパケットの出力を制御する制御部とを有する。
【００１０】
別の観点によれば、パケット処理システムは、パケット処理部を有する少なくとも１つの処理装置と、パケットを処理装置に出力し、パケット処理部で処理された処理後のパケットを、処理装置から受信する切替装置とを有し、切替装置は、パケットを保持し、保持したパケットを、処理装置に出力する保持部と、パケット処理部でパケット処理されたパケットを、処理装置から受信する受信部と、保持部から処理装置に出力したパケットと、処理装置から受信したパケットとに基づいて、保持部から処理装置へのパケットの出力を制御する制御部とを有する。
【発明の効果】
【００１１】
本件開示の切替装置およびパケット処理システムでは、仮想マシンがパケットの送信の停止を要求する機能を持たない場合でも、切替装置によりパケットの転送量を制御し、パケットロスを抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】切替装置およびパケット処理システムの一実施形態を示す図である。
【図２】図１に示したパケット処理システムにおけるパケット転送の動作例を模式的に示す図である。
【図３】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図４】図３に示した切替装置における切替処理の一例を示す図である。
【図５】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図６】図５に示した処理テーブルの一例を示す図である。
【図７】図５に示した切替装置における切替処理の一例を示す図である。
【図８】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図９】図８に示した第１計測部により計測されたチェインＩＤ毎の処理時間の分布の一例を示す図である。
【図１０】図８に示したパケット処理システムにおけるパケット転送の動作例を模式的に示す図である。
【図１１】図８に示した切替装置における切替処理の一例を示す図である。
【図１２】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図１３】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図１４】図１３に示したパケット処理システムにおける処理閾値の設定処理の一例を示す図である。
【図１５】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図１６】図１５に示した切替装置における切替処理の一例を示す図である。
【図１７】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図１８】図１７に示した処理テーブルの一例を示す図である。
【図１９】図１７に示したパケット処理システムにおけるパケット転送の動作例を模式的に示す図である。
【図２０】図１７に示したパケット処理システムにおける処理時間の設定処理の一例を示す図である。
【図２１】図１７に示した切替装置における切替処理の一例を示す図である。
【図２２】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図２３】図２２に示したパケット処理システムにおけるパケット転送の動作例を模式的に示す図である。
【図２４】図２３に示したパケット転送の動作例の続きを示す図である。
【図２５】図２２に示した切替装置における切替処理の一例を示す図である。
【図２６】図２５に示した切替処理の続きを示す図である。
【図２７】切替装置およびパケット処理システムの別の実施形態を示す図である。
【図２８】図２７に示した処理テーブルの一例を示す図である。
【図２９】図２７に示したパケット処理システムにおける処理レートの設定処理の一例を示す図である。
【図３０】図２７に示した切替装置における切替処理の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を用いて実施形態を説明する。
【００１４】
図１は、切替装置およびパケット処理システムの一実施形態を示す。
【００１５】
図１に示すパケット処理システムＳＹＳは、ネットワークＮＷに接続された切替装置１００、およびパケット処理装置２００を有する。切替装置１００は、有線または無線を介して、パケット処理装置２００と接続される。なお、切替装置１００は、有線または無線を介して、複数のパケット処理装置２００と接続されてもよい。
【００１６】
パケット処理装置２００は、プロセッサ等の演算処理装置およびハードディスク装置等の記憶装置を含むサーバ等のコンピュータ装置である。パケット処理装置２００は、例えば、通信処理を実行する１以上のパケット処理部５０を有する。パケット処理装置２００が複数のパケット処理部５０を有する場合、複数のパケット処理部５０は、互いに異なる通信処理を実行してもよい。そして、パケット処理装置２００は、切替装置１００を介して、ネットワークＮＷから受信するＩＰ（Internet Protocol）パケットに応じた通信処理を、パケット処理部５０に実行させる。なお、パケット処理部５０の機能は、例えば、パケット処理装置２００が実行する仮想マシンにより実現される。
【００１７】
例えば、パケット処理装置２００において実行される通信処理は、受信したＩＰパケット（以下、パケットとも称される）に対して、ネットワークにおける複数の経路のうちの最適な経路を選択するルーティングの処理を含む。また、パケット処理装置２００において実行される通信処理は、パケットに含まれるデータを暗号化するＩＰｓｅｃ（Security Architecture for Internet Protocol）の処理を含む。また、パケット処理装置２００において実行される通信処理は、パケットに含まれるＩＰアドレスおよびＴＣＰ／ＵＤＰポート番号を、他のアドレスおよびポート番号に変換するＮＡＰＴ等の処理を含む。なお、ＴＣＰは、Transmission Control Protocolの略である。また、ＵＤＰは、User Datagram Protocolの略である。また、ＮＡＰＴは、Network Address Port Translationの略である。
【００１８】
なお、各通信処理は、１つのパケット処理部５０で実行されてもよい。
【００１９】
そして、パケット処理装置２００は、例えば、受信したパケットに含まれるＶＬＡＮ（Virtual Local Area Network）等の情報に基づいて、受信したパケットに対して実行する通信処理の内容を取得する。パケット処理装置２００は、受信したパケットに対して、取得した通信処理の内容に応じた通信処理を、パケット処理部５０に実行させる。パケット処理装置２００は、処理後のパケットを切替装置１００に出力する。
【００２０】
切替装置１００は、切替部１０、保持部２０、算出部３０および制御部４０を有する。なお、切替装置１００が、複数のパケット処理装置２００と接続される場合、切替装置１００は、複数のパケット処理装置２００の各々に対応して複数の保持部２０および複数の算出部３０を有する。
【００２１】
切替部１０は、レイヤ２スイッチあるいはルータ等である。切替部１０は、例えば、ネットワークＮＷから受信したパケットの出力先を、パケット処理装置２００に切り替える。そして、切替部１０は、受信したパケットを、保持部２０を介して、切り替えたパケット処理装置２００に出力する。また、切替部１０は、パケット処理部５０により通信処理が実行された処理後のパケットをパケット処理装置２００から受信し、処理後のパケットをネットワークＮＷ上の所定の転送先に送信する。
【００２２】
保持部２０は、キューあるいはＦＩＦＯ（First In, First Out）等の先入れ先出しの機能を有するメモリである。保持部２０は、切替部１０から出力されたパケットを順に保持し、保持した順序でパケット処理装置２００にパケットを出力する。
【００２３】
算出部３０は、保持部２０がパケット処理装置２００に出力したパケットの数と、パケット処理装置２００から受信した処理後のパケットの数とに基づいて、パケット処理装置２００が通信処理を実行中のパケットの数（以下、処理数とも称される）を算出する。例えば、算出部３０は、保持部２０がパケット処理装置２００に出力したパケットの数と、パケット処理装置２００から受信した処理後のパケットの数との差分を、パケット処理装置２００が実行中のパケットの処理数として算出する。算出部３０は、第１算出部の一例である。
【００２４】
制御部４０は、例えば、切替装置１００に含まれるプロセッサ等が、切替装置１００に含まれるメモリ等の記憶部に記憶されたプログラムを実行することにより実現され、切替装置１００の動作を制御する。制御部４０は、算出部３０が算出した処理数に基づいて、保持部２０からパケット処理装置２００へのパケットの出力を制御する。例えば、制御部４０は、パケットの処理数がパケット処理装置２００で並列に処理可能な最大のパケット数以上か否かを判定する。以下の説明では、パケット処理装置２００で処理可能な最大のパケット数は、クレジット数と称される。そして、処理数がクレジット数より小さい場合、制御部４０は、パケット処理装置２００へパケットを出力させる指示を、保持部２０に出力する。一方、処理数がクレジット数以上の場合、制御部４０は、保持部２０に対して、パケット処理装置２００へのパケットの出力を抑止する指示を出力する。このように、制御部４０は、パケット処理装置２００が通信処理を実行中のパケットの数がクレジット数以下となるように、保持部２０からパケット処理装置２００へのパケットの出力を制御する。
【００２５】
図２は、図１に示したパケット処理システムＳＹＳにおけるパケット転送の動作例を模式的に示す。なお、図２に示す例では、説明を分かりやすくするため、クレジット数は“３”とする。
【００２６】
図２（ａ）は、図１に示した制御部４０による制御に基づいて、切替装置１００の保持部２０がパケットＰ１、Ｐ２をパケット処理装置２００に出力し、保持部２０がパケットＰ３、Ｐ４、Ｐ５を保持している状態を示す。パケットＰ１、Ｐ２は、図１に示したパケット処理部５０により処理される。切替装置１００は、パケット処理装置２００で処理されたパケットを１つも受信していない。このため、算出部３０は、パケット処理装置２００へのパケットＰ１、Ｐ２の出力数（“２”）と、パケット処理装置２００からの処理後のパケットの受信数（“０”）との差（“２”）を、パケット処理装置２００が実行中のパケットの処理数として算出する。処理数（“２”）がクレジット数（“３”）より１つ少ないため、保持部２０は、制御部４０からの指示に基づいてパケット制御装置２００に１つのパケットを出力可能である。
【００２７】
このため、図２（ｂ）において、保持部２０は、パケットＰ３をパケット制御装置２００に出力し、パケット処理装置２００は、パケットＰ３の処理を開始する。保持部２０からパケット制御装置２００へのパケットの出力数は“３”になる。パケット制御装置２００は、パケットＰ１、Ｐ２を未だ処理中である。このため、算出部３０は、パケット処理装置２００へのパケットＰ１−Ｐ３の出力数（“３”）と、パケット処理装置２００からの処理後のパケットの受信数（“０”）との差（“３”）を、パケット処理装置２００における処理数として算出する。処理数はクレジット数と等しいため、制御部４０は、保持部２０にパケット制御装置２００へのパケットの出力を抑止する指示を出力する。
【００２８】
次に、図２（ｃ）において、パケット制御装置２００は、パケットＰ１の処理を完了し、処理後のパケットＰ１を切替装置１００に出力する。切替装置１００は、パケット制御装置２００からの処理後のパケットＰ１を受信する。算出部３０は、パケット処理装置２００へのパケットＰ１−Ｐ３の出力数（“３”）と、パケット処理装置２００からの処理後のパケットＰ１の受信数（“１”）との差（“２”）を、パケット処理装置２００における処理数として算出する。処理数（“２”）がクレジット数（“３”）より１つ少ないため、制御部４０は、保持部２０からパケット制御装置２００に１つのパケットを出力可能と判断する。
【００２９】
次に、図２（ｄ）において、図２（ｂ）と同様に、保持部２０は、制御部５０からの指示に基づいてパケットＰ４をパケット制御装置２００に出力し、パケット処理装置２００は、パケットＰ４の処理を開始する。このため、算出部３０は、パケット処理装置２００へのパケットＰ１−Ｐ４の出力数（“４”）と、パケット処理装置２００からの処理後のパケットの受信数（“１”）との差（“３”）を、パケット処理装置２００における処理数として算出する。処理数はクレジット数と等しいため、制御部４０は、保持部２０にパケット制御装置２００へのパケットの出力を抑止する指示を出力する。
【００３０】
以上、図１および図２に示した実施形態では、算出部３０は、パケット処理装置２００に出力したパケットの数と、パケット処理装置２００から受信した処理後のパケットの数との差分からパケット処理装置２００が実行中のパケットの処理数を算出する。そして、制御部４０は、パケット処理装置２００における処理数が、パケット処理装置２００で処理可能な最大のパケット数であるクレジット数以下となるように、保持部２０からパケット処理装置２００へのパケットの出力を制御する。すなわち、切替装置１００は、パケットの処理能力に余裕がないことを示す情報をパケット処理装置２００から受信することなく、パケット制御装置２００へのパケットの出力を制御する。これにより、パケット処理装置２００のパケット処理部５０が、例えば、仮想マシンにより実現され、切替装置１００にパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳは、切替装置１００によりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳは、パケットロスを抑制できる。
【００３１】
例えば、仮想マシン（すなわち、パケット処理部５０）とパケット数とを対応付けて、切替装置１００に記憶させ、仮想マシンに対応付けられている数が、仮想マシンの処理能力を示すとする。
【００３２】
図３は、切替装置およびパケット処理システムの別の実施形態を示す。図１で説明した要素と同一または同様の機能を有する要素については、同一あるいは同様の符号を付し、これらについては、詳細な説明を省略する。
【００３３】
図３に示したパケット処理システムＳＹＳ１は、切替装置１００ａおよびＮ個のサーバ２００ａ（２００ａ（１）−２００ａ（Ｎ））を有する。切替装置１００ａは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【００３４】
サーバ２００ａの各々は、例えば、Ｍ個の仮想マシン５０ａ（５０ａ（１）−５０ａ（Ｍ））を実行する。そして、仮想マシン５０ａの各々は、プログラムを実行することで、ルーティングやＩＰｓｅｃ等の互いに異なる通信処理のプログラムを実行する。サーバ２００ａは、受信したパケットに含まれるＶＬＡＮ等の情報に基づいて、受信したパケットに実行する通信処理の内容を示す情報を取得する。サーバ２００ａは、取得した通信処理の内容に基づいて、複数の仮想マシン５０ａの各々に、受信したパケットを転送し、ルーティングやＩＰｓｅｃ等の通信処理を実行させる。サーバ２００ａは、処理後のパケットを切替装置１００ａに出力する。サーバ２００ａは、処理装置の一例であり、仮想マシン５０ａは、パケット処理部の一例である。
【００３５】
切替装置１００ａは、スイッチ部１１、Ｎ個の転送ユニット６０（６０（１）−６０（Ｎ））、および制御部４０ａを有する。
【００３６】
スイッチ部１１は、例えば、レイヤ２スイッチあるいはルータ等であり、ネットワークＮＷから受信したパケットの送信先として、Ｎ個のサーバ２００ａのうちの１つに切り替える。そして、スイッチ部１１は、切り替えたサーバ２００ａに受信したパケットを出力する。また、スイッチ部１１は、各転送ユニット６０を介して、通信処理が実行された処理後のパケットを各サーバ２００ａから受信し、受信したパケットをネットワークＮＷ上の所定の転送先に送信する。スイッチ部１１は、切替部の一例である。
【００３７】
転送ユニット６０（１）は、保持部２０およびカウンタ部３１を有する。なお、転送ユニット６０（２）−６０（Ｎ）の各々についても、図３に示した転送ユニット６０（１）と同一または同様の要素を有する。
【００３８】
カウンタ部３１は、例えば、アップダウンカウンタ等であり、保持部２０からサーバ２００ａ（１）にパケットを出力する度に、カウント数を１つ増加させる。また、カウンタ部３１は、サーバ２００ａ（１）から通信処理が実行された処理後のパケットを受信する度に、カウンタ数を１つ減少させる。すなわち、カウンタ部３１が示すカウント数は、サーバ２００ａ（１）において通信処理が実行されているパケットの数を示す。カウンタ部３１は、算出部の一例であり、カウント数は、処理数の一例である。
【００３９】
制御部４０ａは、例えば、切替装置１００ａに含まれるプロセッサ等が、切替装置１００ａに含まれるメモリ等の記憶部に記憶されたプログラムを実行することにより実現され、切替装置１００ａの動作を制御する。そして、制御部４０ａは、図１および図２に示した制御部４０と同様に、各転送ユニット６０において、保持部２０からサーバ２００ａへのパケットの出力を、カウンタ部３１がカウントしたカウント数に基づいて制御する。すなわち、制御部４０ａは、カウント数がクレジット数以下となるように、各転送ユニット６０において、保持部２０からサーバ２００ａへのパケットの出力を制御する。なお、クレジット数は、サーバ２００ａで並列に処理可能な最大のパケット数である。
【００４０】
例えば、制御部４０ａは、転送ユニット６０（１）のカウンタ部３１におけるカウント数がクレジット数より小さい場合、転送ユニット６０（１）の保持部２０に対して、サーバ２００ａ（１）へパケットを出力させる指示を出力する。一方、制御部４０ａは、転送ユニット６０（１）のカウンタ部３１のカウント数がクレジット数以上の場合、転送ユニット６０（１）の保持部２０に対して、サーバ２００ａ（１）へのパケットの出力を抑止する指示を出力する。なお、制御部４０ａは、転送ユニット６０（２）−６０（Ｎ）についても、転送ユニット６０（１）と同一あるいは同様の制御を実行する。
【００４１】
なお、パケット処理システムＳＹＳ１は、図３に示した例に限定されない。例えば、制御部４０ａは、各転送ユニット６０に設けられ、転送ユニット６０の各々の動作を制御してもよい。また、クレジット数は、転送ユニット６０毎に異なる値でもよい。
【００４２】
図４は、図３に示した切替装置１００ａにおける切替処理の一例を示す。図４に示した処理は、切替装置１００ａ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０および制御部４０ａが動作することで実現される。
【００４３】
なお、図４に示した処理は、切替装置１００ａの転送ユニット６０（１）とサーバ２００ａ（１）との間でパケットが転送される場合を示す。また、転送ユニット６０（２）−６０（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間でパケットが転送される場合についても、図４に示した処理と同一あるいは同様の処理が実行される。
【００４４】
ステップＳ１０では、制御部４０ａは、転送ユニット６０（１）がスイッチ部１１からパケットを受信したか否かを判定する。パケットを受信した場合、切替装置１００ａの処理は、ステップＳ１１に移る。一方、パケットを受信していない場合、切替装置１００ａの処理は、ステップＳ１２に移る。
【００４５】
ステップＳ１１では、保持部２０は、ステップＳ１０で受信したパケットを順に保持する。ステップＳ１１の処理が実行された後、切替装置１００ａの処理は、ステップＳ１２に移る。
【００４６】
ステップＳ１２では、制御部４０ａは、転送ユニット６０（１）の保持部２０にパケットが保持されているか否かを判定する。パケットが転送ユニット６０（１）の保持部２０に保持されている場合、切替装置１００ａの処理は、ステップＳ１３に移る。一方、パケットが転送ユニット６０（１）の保持部２０に保持されていない場合、切替装置１００ａの処理は、ステップＳ１６に移る。
【００４７】
ステップＳ１３では、制御部４０ａは、転送ユニット６０（１）のカウンタ部３１のカウント数がクレジット数以上か否かを判定する。カウント数がクレジット数より小さい場合、切替装置１００ａの処理は、ステップＳ１４に移る。一方、カウント数がクレジット数以上の場合、切替装置１００ａの処理は、ステップＳ１６に移る。
【００４８】
ステップＳ１４では、制御部４０ａは、転送ユニット６０（１）の保持部２０に対して、保持部２０の先頭に保持されたパケットをサーバ２００ａ（１）に出力させる指示を出力する。そして、切替装置１００ａの処理は、ステップＳ１５に移る。ここで、保持部２０の先頭に保持されたパケットは、保持部２０に保持されているパケットのうち受信した時刻が最も古いパケットである。
【００４９】
ステップＳ１５では、転送ユニット６０（１）のカウンタ部３１は、保持部２０からサーバ２００ａ（１）にパケットが出力されたことに基づいて、カウント数を１つ増加させる。ステップＳ１５の処理が実行された後、切替装置１００ａの処理は、ステップＳ１６に移る。
【００５０】
ステップＳ１６では、転送ユニット６０（１）のカウンタ部３１は、サーバ２００ａ（１）から処理後のパケットを受信したか否かを判定する。処理後のパケットを受信した場合、切替装置１００ａの処理は、ステップＳ１７に移る。一方、処理後のパケットを受信していない場合、切替装置１００ａの処理は、ステップＳ１０に戻る。
【００５１】
ステップＳ１７では、転送ユニット６０（１）のカウンタ部３１は、カウント数を１つ減少させる。ステップＳ１７の処理が実行された後、切替装置１００ａは、処理を終了する。
【００５２】
そして、切替装置１００ａは、ステップＳ１０からステップＳ１７の処理を繰り返し実行する。なお、ステップＳ１０からステップＳ１５の処理と、ステップＳ１６およびステップＳ１７の処理とは、並列に実行されてもよい。
【００５３】
以上、図３および図４に示した実施形態では、カウンタ部３１は、サーバ２００ａに出力したパケットの数と、サーバ２００ａから受信した処理後のパケットの数との差分からサーバ２００ａが実行中のパケットの処理数を算出する。そして、制御部４０ａは、サーバ２００ａにおける処理数が、サーバ２００ａで処理可能な最大のパケット数であるクレジット数以下となるように、保持部２０からサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ａは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが、例えば、切替装置１００ａにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ１は、切替装置１００ａによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ１は、パケットロスを抑制できる。
【００５４】
図５は、切替装置およびパケット処理システムの別の実施形態を示す。図３で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【００５５】
図５に示したパケット処理システムＳＹＳ２は、切替装置１００ｂおよびＮ個のサーバ２００ａを有する。切替装置１００ｂは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【００５６】
切替装置１００ｂは、スイッチ部１１、Ｎ個の転送ユニット６０ａ（６０ａ（１）−６０ａ（Ｎ））、制御部４０ｂおよび記憶部７０を有する。
【００５７】
転送ユニット６０ａ（１）は、識別部１５、ＤＥＭＵＸ（Demultiplexer）２１、Ｋ個の保持部２０ａ（２０ａ（１）−２０ａ（Ｋ））およびＭＵＸ（Multiplexer）２２を有する。また、転送ユニット６０ａ（１）は、ＤＥＭＵＸ３５およびＫ個のカウンタ部３１ａ（３１ａ（１）−３１ａ（Ｋ））を有する。なお、転送ユニット６０ａ（２）−６０ａ（Ｎ）の各々についても、図５に示した転送ユニット６０ａ（１）と同一あるいは同様の要素を有する。
【００５８】
識別部１５は、例えば、ＩＥＥＥ８０２．１ｐ等の通信規格に基づいてパケットに付加されるＶＬＡＮタグヘッダに含まれるＶＩＤ（VLAN Identifier）等の情報を取得する。なお、ＩＥＥＥは、The Institute of Electrical and Electronics Engineers, Inc.の略である。識別部１５は、取得したＶＩＤ等の情報と記憶部７０に記憶される処理テーブルＰＴとに基づいて、サーバ２００ａ（１）において実行される通信処理の内容を識別する。そして、識別部１５は、識別した通信処理の内容を示す識別情報をパケットに付加し、識別情報を付加したパケットをＤＥＭＵＸ２１に出力する。識別部１５の動作、処理テーブルＰＴおよび通信処理の内容については、図６で説明する。通信処理の内容は、処理情報の一例である。
【００５９】
ＤＥＭＵＸ２１は、パケットに付加された識別情報に基づいて、受信したパケットを保持部２０ａのいずれかに出力する。例えば、ＤＥＭＵＸ２１は、パケットを、識別情報の種類毎に保持部２０ａに出力する。すなわち、ＤＥＭＵＸ２１は、サーバ２００ａ（１）で実行される通信処理が同一あるいは同様のパケットを、同じ保持部２０ａに出力する。換言すれば、保持部２０ａは、サーバ２００ａ（１）で実行される通信処理の種類毎に設けられる。
【００６０】
各保持部２０ａは、キュー等の先入れ先出しの機能を有するメモリである。各保持部２０ａは、ＤＥＭＵＸ２１から受信したパケットを順に保持する。各保持部２０ａは、保持した順にサーバ２００ａ（１）にパケットを出力する。
【００６１】
ＭＵＸ２２は、各保持部２０ａから出力されるパケットを、サーバ２００ａ（１）に出力する。
【００６２】
ＤＥＭＵＸ３５は、サーバ２００ａ（１）から処理後のパケットを受信する。ＤＥＭＵＸ３５は、受信したパケットに含まれる識別情報に基づいて、パケットの受信を示す情報をカウンタ部３１ａのいずれかに出力する。なお、識別情報は、識別部１５によりパケットに付加される。
【００６３】
カウンタ３１ａは、保持部２０ａにそれぞれ対応して設けられる。各カウンタ部３１ａは、図３に示したカウンタ部３１と同様に、アップダウンカウンタ等であり、ＤＥＭＵＸ２１から受信したパケットを各保持部２０ａがサーバ２００ａ（１）に出力する度に、カウント数を１つ増加させる。また、各カウンタ部３１ａは、ＤＥＭＵＸ３５からパケットの受信を示す情報を受信する度に、カウンタ数を１つ減少させる。これにより、各カウンタ部３１ａが示すカウント数は、通信処理サーバ２００ａ（１）において同一あるいは同様の内容の通信処理を実行中のパケットの数を示す。
【００６４】
制御部４０ｂは、例えば、切替装置１００ｂに含まれるプロセッサ等が、記憶部７０に記憶されたプログラムを実行することにより実現され、切替装置１００ｂの動作を制御する。そして、制御部４０ｂは、各転送ユニット６０ａにおいて、各カウンタ部３１ａがカウントしたカウント数に基づいて、各保持部２０ａからサーバ２００ａへのパケットの出力を制御する。例えば、制御部４０ｂは、転送ユニット６０ａ（１）のカウンタ部３１ａ（１）におけるカウント数がクレジット数より小さい場合、転送ユニット６０ａ（１）の保持部２０ａ（１）に対して、サーバ２００ａ（１）へパケットを出力させる指示を出力する。一方、制御部４０ｂは、転送ユニット６０ａ（１）のカウンタ部３１ａ（１）のカウント数がクレジット数以上の場合、転送ユニット６０ａ（１）の保持部２０ａ（１）に対して、サーバ２００ａ（１）へのパケットの出力を抑止する指示を出力する。すなわち、制御部４０ｂにより各保持部２０ａに対する出力制御は、図２に示した制御部４０による動作例と同様である。
【００６５】
なお、制御部４０ｂは、転送ユニット６０ａ（１）の保持部２０ａ（２）−２０ａ（Ｋ）についても、カウンタ部３１ａ（２）−３１ａ（Ｋ）の各々のカウント数とクレジット数との比較に基づいて、保持部２０ａ（１）と同一あるいは同様の制御を実行する。また、制御部４０ｂは、転送ユニット６０ａ（２）−６０ａ（Ｎ）についても、転送ユニット６０ａ（１）と同一あるいは同様の制御を実行する。
【００６６】
記憶部７０は、ＲＡＭ（Random Access Memory）等のメモリであり、制御部４０ｂが実行するプログラムおよび処理テーブルＰＴ等を記憶する記憶領域を有する。処理テーブルＰＴの例は、図６に示される。
【００６７】
なお、パケット処理システムＳＹＳ２は、図５に示した例に限定されない。例えば、制御部４０ｂは、各転送ユニット６０ａに設けられてもよい。また、クレジット数は、転送ユニット６０ａ毎に異なる値でもよく、保持部２０ａ（またはカウンタ部３１ａ）毎に異なる値でもよい。
【００６８】
図６は、図５に示した処理テーブルＰＴの一例を示す。処理テーブルＰＴは、識別番号を保持する識別領域ＩＡと、チェインを保持するチェイン領域ＣＡと、チェイングループを保持するグループ領域ＧＡとをそれぞれ含む複数のエントリーを有する。識別領域ＩＡには、パケットが所属するＶＬＡＮを識別するＶＩＤの値が識別番号として格納される。ＶＩＤの値は、ネットワークＮＷから受信するパケットに付加されるＶＬＡＮタグヘッダに含まれる。なお、識別領域ＩＡには、ＶＩＤの代わりに、受信するパケットの送信先あるいは送信元を示すＩＰアドレスやＭＡＣ（Media Access Control）アドレス等が格納されてもよい。
【００６９】
チェイン領域ＣＡには、識別領域ＩＡに格納されるＶＩＤ（識別番号）を有するパケット毎に実行される通信処理の内容を示す情報（以下、チェインとも称される）が格納される。例えば、識別番号が１のパケットに実行されるチェインがルーティングの通信処理の場合、識別番号（ＶＩＤ）が１に対応するチェイン領域ＣＡには、ルーティングを示す情報が格納される。また、識別番号が２のパケットに実行されるチェインがＩＰｓｅｃの通信処理の場合、識別番号（ＶＩＤ）が２のチェイン領域ＣＡには、ＩＰｓｅｃを示す情報が格納される。また、識別番号が３のパケットに実行されるチェインがルーティングとＩＰｓｅｃとの通信処理の場合、識別番号（ＶＩＤ）が３に対応するチェイン領域ＣＡには、ルーティングとＩＰｓｅｃとを示す情報が格納される。
【００７０】
グループ領域ＧＡには、チェイン領域ＣＡに格納された各チェインが示す通信処理のうち、互いに共通する通信処理に基づいて各チェインをグループ分けしたグループを示す情報が格納される。例えば、図６に示した処理テーブルＰＴにおいて、識別番号（ＶＩＤ）が１のチェインと、識別番号（ＶＩＤ）が３のチェインとは、ルーティングの通信処理が共通する。そこで、識別番号が１と３のグループ領域ＧＡには、同じグループ（以下、チェイングループとも称される）を示す“１”が格納される。一方、識別番号が２のチェインは、識別番号が１、３のチェインのルーティングの通信処理を含まない。このため、識別番号が２のグループ領域ＧＡには、識別領域ＩＡの識別番号が１、３のチェイングループと異なるチェイングループを示す“２”が格納される。なお、グループ領域ＧＡには、各チェイングループを示すために、数字が格納されたが、文字あるいは文字と数字との組合せ等が格納されてもよい。
【００７１】
なお、図６に示した処理テーブルＰＴでは、識別番号が２のチェインと、識別番号が３のチェインとでは、ＩＰｓｅｃの通信処理が互いに共通して含まれる。このため、ＩＰｓｅｃの通信処理に着目して、識別番号が３のグループ領域ＧＡには、１の代わりに２が格納されてもよい。
【００７２】
なお、処理テーブルＰＴは、切替装置１００ｂがパケットの送受信動作を実行する前に、パケット処理システムＳＹＳ２、あるいはネットワークＮＷに接続されたコンピュータ装置等の監視装置により、記憶部７０に予め格納される。
【００７３】
図５に示した識別部１５は、例えば、受信したパケットに付加されるＶＬＡＮタグヘッダに含まれるＶＩＤを取得する。識別部１５は、制御部４０ｂを介して処理テーブルＰＴを参照し、取得したＶＩＤに対応する通信処理の内容（チェイン）に対応するチェイングループを取得する。そして、識別部１５は、パケットのチェインを示す識別情報として、取得したチェイングループを、受信したパケットに付加する。なお、識別部１５は、パケットのチェインを示す識別情報として、チェインに対応する識別領域ＩＡの識別番号を、受信したパケットに付加してもよい。
【００７４】
そして、図５に示したＤＥＭＵＸ２１は、識別部１５から受信したパケットに付加された識別情報に基づいて、識別部１５から受信したパケットをいずれかの保持部２０ａに出力する。例えば、ＤＥＭＵＸ２１は、受信したパケットに含まれる識別情報がチェイングループ“１”を示す場合、受信したパケットを保持部２０ａ（１）に出力する。ＤＥＭＵＸ２１は、受信したパケットに含まれる識別情報がチェイングループ“２”を示す場合、受信したパケットを保持部２０ａ（２）に出力する。これにより、保持部２０ａの各々は、同じチェイングループのパケットを順に保持する。
【００７５】
一方、ＤＥＭＵＸ３５は、サーバ２００ａ（１）から処理後のパケットを受信する毎に、パケット含まれる識別情報に基づいて、パケットの受信を示す情報をいずれかのカウンタ部３１ａに出力する。例えば、ＤＥＭＵＸ３５は、受信した処理後のパケットに含まれる識別情報がチェイングループ“１”の場合、パケットの受信を示す情報をカウンタ部３１ａ（１）に出力する。また、ＤＥＭＵＸ３５は、受信した処理後のパケットに含まれる識別情報がチェイングループ“２”を示す場合、パケットの受信を示す情報をカウンタ部３１ａ（２）に出力する。各カウンタ３１ａは、ＤＥＭＵＸ３５からパケットの受信を示す情報を受信する毎に、カウンタ数を１つ減少する。すなわち、各カウンタ部３１ａは、サーバ２００ａ（１）において通信処理が実行されているパケットの数を、チェイングループ毎にカウントする。なお、サーバ２００ａ（１）がパケットの通信処理を実行する場合の処理負荷は、チェイングループ（通信処理の内容）に応じて異なる。このため、各カウンタ部３１ａがチェイングループ毎に処理数をカウントし、制御部４０ｂは、各カウンタ部３１ａの処理数と各チェイングループのクレジット数とに基づいて、各保持部２０ａに対して、サーバ２００ａ（１）へのパケットの出力を制御する。すなわち、制御部４０ｂが、チェイングループ毎に、サーバ２００ａ（１）へのパケットの出力を制御することで、パケット処理システムＳＹＳ２は、図３に示した１つのカウンタ部３１がパケットの数をカウントする場合より効率的にパケットを処理できる。
【００７６】
図７は、図５に示した切替装置１００ｂにおける切替処理の一例を示す。なお、図７に示したステップの処理のうち、図４に示したステップと同一または同様の処理を示すものについては、同一のステップ番号を付し、詳細な説明を省略する。図７に示した処理は、切替装置１００ｂ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ａおよび制御部４０ｂが動作することで実現される。
【００７７】
なお、図７に示した処理は、転送ユニット６０ａ（１）とサーバ２００ａ（１）との間でパケットが転送される場合を示す。また、転送ユニット６０ａ（２）−６０ａ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間でパケットが転送される場合についても、図７に示した処理と同一あるいは同様の処理が実行される。
【００７８】
切替装置１００ｂは、ステップＳ１０において、パケットを受信したと判定した場合、ステップＳ１００の処理に移り、パケットを受信してないと判定した場合、ステップＳ１２０の処理に移る。
【００７９】
ステップＳ１００では、識別部１５は、ステップＳ１０で受信したパケットに付加されるＶＬＡＮタグヘッダのＶＩＤと、図６に示した処理テーブルＰＴとに基づいて、受信したパケットのチェイングループを識別する。ステップＳ１００の処理が実行された後、切替装置１００ｂの処理は、ステップＳ１１０に移る。
【００８０】
ステップＳ１１０では、各保持部２０ａは、ステップＳ１００で識別されたチェイングループに応じてＤＥＭＵＸ２１で振り分けられたパケットを受信し、受信したパケットを順に保持する。ステップＳ１１０の処理が実行された後、切替装置１００ｂの処理は、ステップＳ１２０に移る。
【００８１】
ステップＳ１２０では、制御部４０ｂは、パケットが保持されているか否かを、保持部２０ａ（すなわち、チェイングループ）毎に判定する。そして、パケットを保持する保持部２０ａに対する切替装置１００ｂの処理は、ステップＳ１３０に移る。一方、パケットを保持しない保持部２０ａに対する切替装置１００ｂの処理は、ステップＳ１６に移る。
【００８２】
ステップＳ１３０では、制御部４０ｂは、ステップＳ１２０でパケットを保持していると判定された保持部２０ａに対応する、チェイングループのカウンタ部３１ａのカウント数がクレジット数以上か否かを判定する。カウント数がクレジット数より小さい場合、切替装置１００ｂの処理は、ステップＳ１４０に移る。一方、カウント数がクレジット数以上の場合、切替装置１００ｂの処理は、ステップＳ１６に移る。
【００８３】
ステップＳ１４０では、制御部４０ｂは、ステップＳ１４０でカウンタ部３１ａのカウント数がクレジット数より小さいと判定されたチェイングループの保持部２０ａに対して、サーバ２００ａ（１）へパケットを出力させる指示を出力する。ステップＳ１４０の処理が実行された後、切替装置１００ｂの動作は、ステップＳ１５０に移る。
【００８４】
ステップＳ１５０では、ステップＳ１４０で出力されたパケットのチェイングループに対応するカウンタ部３１ａは、カウント数を１つ増加させる。ステップＳ１５０の処理が実行された後、切替装置１００ｂは、ステップＳ１６およびステップＳ１６０の処理を実行する。なお、図７に示したステップＳ１６において、カウンタ部３１ａがサーバ２００ａ（１）から処理後のパケットを受信した場合、切替装置１００ｂの処理は、ステップＳ１６０に移る。
【００８５】
ステップＳ１６０では、ステップＳ１６で受信された処理後のパケットに付加されたチェイングループに対応するカウンタ部３１ａは、カウント数を１つ減少させる。ステップＳ１６０の処理が実行された後、切替装置１００ｂは、パケット処理を終了する。
【００８６】
そして、切替装置１００ｂは、ステップＳ１０、ステップＳ１００からステップＳ１５０、ステップＳ１６およびステップＳ１６０の処理を繰り返し実行する。なお、ステップＳ１０、ステップＳ１００からステップＳ１５０の処理と、ステップＳ１６およびステップＳ１６０の処理とは、並列に実行されてもよい。
【００８７】
以上、図５から図７に示した実施形態では、各カウンタ部３１ａは、サーバ２００ａで通信処理が実行されているパケットの処理数を、チェイングループ（通信処理の内容）毎に算出する。そして、制御部４０ｂは、チェイングループ毎の処理数が、サーバ２００ａで処理可能な最大のパケット数であるクレジット数以下となるように、各保持部２０ａからサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ｂは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｂにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ２は、切替装置１００ｂによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ２は、パケットロスを抑制できる。
【００８８】
また、サーバ２００ａにおける処理負荷がチェイングループ毎に異なる。このため、制御部４０ｂは、各カウンタ部３１ａの処理数と各チェイングループのクレジット数とに基づいて、各保持部２０ａに対して、サーバ２００ａへのパケットの出力を制御する。これにより、切替装置１００ｂは、図３に示した１つのカウンタ部３１がパケットの数をカウントする場合より効率的にパケットを転送でき、パケット処理システムＳＹＳ２におけるパケットの処理効率を向上させることができる。
【００８９】
図８は、切替装置およびパケット処理システムの別の実施形態を示す。図３または図５で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【００９０】
図８に示したパケット処理システムＳＹＳ３は、切替装置１００ｃおよびＮ個のサーバ２００ａを有する。切替装置１００ｃは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【００９１】
切替装置１００ｃは、スイッチ部１１、Ｎ個の転送ユニット６０ｂ（６０ｂ（１）−６０ｂ（Ｎ））、制御部４０ｃおよび記憶部７０を有する。
【００９２】
転送ユニット６０ｂ（１）は、識別部１５ａ、保持部２０、ＩＦ（Interface）部２５、カウンタ部３１、第１計測部Ｃ１、第２計測部Ｃ２および閾値算出部Ｃ３を有する。なお、転送ユニット６０ｂ（２）−６０ｂ（Ｎ）の各々についても、図８に示した転送ユニット６０ｂ（１）と同一または同様の要素を有する。
【００９３】
識別部１５ａは、例えば、図５に示した識別部１５と同様に、受信したパケットに付加されるＶＩＤ（識別番号）を取得する。そして、識別部１５ａは、図６に示した処理テーブルＰＴを参照して、取得したＶＩＤと同じ識別領域ＩＡの識別番号（以下、チェインＩＤとも称される）を、受信したパケットのチェイン（通信処理の内容）を示す情報として、受信したパケットに付加する。
【００９４】
また、識別部１５ａは、各パケットを識別するシリアル番号等の情報をパケットに付加する。そして、識別部１５ａは、チェインＩＤおよびシリアル番号を付加したパケットを保持部２０に出力する。
【００９５】
ＩＦ部２５は、Ｉ／Ｏ（Input/Output）インタフェース等であり、保持部２０から受信するパケットをサーバ２００ａ（１）へ出力し、サーバ２００ａ（１）から受信する処理後のパケットをスイッチ部１１に出力する。また、ＩＦ部２５は、例えば、保持部２０から受信するパケットをサーバ２００ａ（１）に出力する場合、パケットに付加されたチェインＩＤおよびシリアル番号を第１計測部Ｃ１および第２計測部Ｃ２に出力する。また、ＩＦ部２５は、切替装置１００ｃに含まれるクロック回路等から出力される時刻を示す情報を参照して、保持部２０から受信するパケットをサーバ２００ａ（１）に出力した時の送信時刻を示すタイムスタンプ等の時刻情報を取得する。ＩＦ部２５は、取得した時刻情報を第１計測部Ｃ１および第２計測部Ｃ２に出力する。
【００９６】
また、ＩＦ部２５は、例えば、切替装置１００ｃのクロック回路等が出力する時刻を示す情報を参照して、サーバ２００ａ（１）から処理後のパケットを受信した時の受信時刻を示すタイムスタンプ等の時刻情報を取得する。ＩＦ部２５は、処理後のパケットを受信した時刻情報と、処理後のパケットに付加されたチェインＩＤおよびシリアル番号とを、第１計測部Ｃ１に出力する。
【００９７】
第１計測部Ｃ１は、サーバ２００ａ（１）におけるパケットの通信処理にかかる処理時間を、チェインＩＤ（すなわち通信処理の内容）毎に計測する。例えば、第１計測部Ｃ１は、互いに同じシリアル番号が付加されたパケットの受信時刻のタイムスタンプと送信時刻のタイムスタンプとの差分から処理時間を計測する。第１計測部Ｃ１は、計測した処理時間をパケットのチェインＩＤと対応付けて、閾値算出部Ｃ３に出力する。
【００９８】
第２計測部Ｃ２は、カウンタ部３１のカウント数がクレジット数に等しい場合、保持部２０が最後にパケットを出力した時刻からの経過時間を計測する。例えば、第２計測部Ｃ２は、保持部２０から最後に出力されたパケットのチェインＩＤ、シリアル番号および送信時刻のタイムスタンプをＩＦ部２５から取得する。そして、第２計測部Ｃ２は、切替装置１００ｃのクロック回路から出力される時刻を示す情報と、ＩＦ部２５から取得した送信時刻のタイムスタンプとに基づいて、保持部２０が最後にパケットを出力した時刻からの経過時間を計測する。第２計測部Ｃ２は、計測した経過時間をパケットのチェインＩＤと対応付けて、閾値算出部Ｃ３に出力する。
【００９９】
閾値算出部Ｃ３は、第１計測部Ｃ１が計測した各チェインＩＤ（通信処理の内容）の処理時間を用いて、各チェインＩＤ間において、第２計測部Ｃ２が計測する経過時間から一方のチェインＩＤの処理がサーバ２００ａで終了したと推定される時間の閾値を算出する。閾値算出部Ｃ３の動作については、図９および図１０で説明する。閾値算出部Ｃ３は、第２算出部の一例である。
【０１００】
制御部４０ｃは、例えば、切替装置１００ｃに含まれるプロセッサ等が、記憶部７０に記憶された制御プログラムを実行することにより実現され、切替装置１００ｃの動作を制御する。そして、制御部４０ｃは、図３に示した制御部４０ａと同様に、各転送ユニット６０ｂにおける保持部２０によるサーバ２００ａへのパケットの出力を、カウンタ部３１がカウントしたカウント数に基づいて制御する。
【０１０１】
但し、制御部４０ｃは、カウンタ部３１のカウント数がクレジット数以上の場合でも、所定の条件（以下、クレジット超過条件とも称される）を満たす場合、転送ユニット６０ｂ（１）の保持部２０に対して、サーバ２００ａ（１）へパケットを出力させる。クレジット超過条件および制御部４０ｃの動作については、図９および図１０で説明する。
【０１０２】
なお、制御部４０ｃは、転送ユニット６０ｂ（２）−６０ｂ（Ｎ）についても、転送ユニット６０ｂ（１）と同一または同様の制御を実行する。
【０１０３】
なお、クレジット数は、転送ユニット６０ｂ毎に異なる値でもよい。
【０１０４】
図９は、図８に示した第１計測部Ｃ１により計測されたチェインＩＤ毎の処理時間の分布の一例を示す。図９の縦軸は、第１計測部Ｃ１により計測されたパケットの数を示し、横軸は、サーバ２００ａでのパケットの処理時間を示す。図９に示した分布ＰＣ１は、例えば、チェインＩＤが“１”（すなわち、サーバ２００ａにおいて実行される通信処理がルーティング）のパケットの処理時間の分布を示す。分布ＰＣ３は、例えば、チェインＩＤが“３”（すなわち、サーバ２００ａにおいて実行される通信処理がルーティングおよびＩＰｓｅｃ）のパケットの処理時間の分布を示す。処理時間ｔ１は、分布ＰＣ１のピークの時間を示し、処理時間ｔ３は、分布ＰＣ３のピークの時間を示す。なお、処理時間ｔ１、ｔ３の各々は、分布ＰＣ１、ＰＣ３の平均時間でもよい。
【０１０５】
図９に示すように、チェインＩＤが“３”の処理時間の分布ＰＣ３は、パケットに対してルーティングおよびＩＰｓｅｃの２つの通信処理が実行されるため、チェインＩＤが１の処理時間の分布Ｐ１より右側に位置する。すなわち、サーバ２００ａ（１）において、チェインＩＤが“３”のパケットに対する通信処理は、チェインＩＤが“１”のパケットに対する通信処理より負荷が重いことを示す。
【０１０６】
また、チェインＩＤが“１”であるルーティングのみの通信処理の処理時間は、分布ＰＣ１に含まれるため、ルーティングのみの通信処理は、分布ＰＣ１より処理時間が長い側に離れた時間ｔ１３までに完了する。このため、チェインＩＤが“３”のパケットがルーティングおよびＩＰｓｅｃの順に処理される場合、時間ｔ１３までに、チェインＩＤが３のパケットの通信処理のうちルーティングの通信処理は終了していると推定される。なお、時間ｔ１３は、例えば、処理時間ｔ１と処理時間ｔ３との平均値等である。
【０１０７】
図１０は、図８に示したパケット処理システムＳＹＳ３におけるパケット転送の動作例を模式的に示す。なお、図１０に示す例では、図２の場合と同様に、サーバ２００ａ（１）の処理可能な最大のパケット数（クレジット数）は“３”とし、サーバ２００ａ（１）で処理中のパケット数（処理数）は“２”とする。また、図１０に示す例では、パケットＰａ１のチェインＩＤは“３”とする。
【０１０８】
図１０（ａ）において、処理数“２”がクレジット数“３”より１つ少ないため、図８に示した制御部４０ｃによる制御に基づいて、転送ユニット６０ｂ（１）の保持部２０がパケットＰａ１をサーバ２００ａ（１）に出力し、パケットＰａ２を保持する。この場合、転送ユニット６０ｃ（１）のカウンタ部３１は、処理数を１つ増加し、“３”とカウントする。そして、処理数はクレジット数と等しいため、制御部４０ｃは、保持部２０にサーバ２００ａ（１）へのパケットＰａ２の出力を抑止する指示を出力する。
【０１０９】
また、転送ユニット６０ｂ（１）の第２計測部Ｃ２は、パケットＰａ１が保持部２０に出力された最後のパケットとなるため、経過時間の計測を開始する。また、パケットＰａ１のチェインＩＤが３であるため、サーバ２００ａ（１）は、ルーティングの通信処理を実行する仮想マシン５０ａ（１）にパケットＰａ１を転送し、仮想マシン５０ａ（１）は、パケットＰａ１にルーティングの通信処理を開始する。
【０１１０】
次に、図１０（ｂ）において、第２計測部Ｃ２の経過時間が図９に示した時間ｔ１３までに、サーバ２００ａ（１）は、仮想マシン５０ａ（１）でのルーティング処理が終了したパケットＰａ１を、ＩＰｓｅｃの処理を実行する仮想マシン５０ａ（２）に転送する。この場合、処理数（“３”）はクレジット数（“３”）と等しいため、制御部４０ｃは、保持部２０にサーバ２００ａ（１）へのパケットＰａ２の出力を抑止する指示を出力する。
【０１１１】
しかしながら、第２計測部Ｃ２の経過時間が時間ｔ１３までに、チェインＩＤが３のパケットＰａ１は、仮想マシン５０ａ（２）に転送されるため、仮想マシン５０ａ（１）は、パケットＰａ２を受信するまで待機することになる。すなわち、サーバ２００ａは、サーバ２００ａの処理能力の範囲内で、少なくともルーティングの通信処理または同等の処理負荷の通信処理を実行できる。
【０１１２】
そこで、図１０（ｃ）に示すように、制御部４０ｃの指示に基づいて、保持部２０は、経過時間が時間ｔ１３以上の場合で、次のパケットＰａ２のチェインＩＤが１の場合、処理数に拘わらず、サーバ２００ａ（１）へパケットＰａ２を出力する。すなわち、制御部４０ｃは、経過時間が時間ｔ１３以上の場合、サーバ２００ａ（１）において、最後に保持部２０が出力したパケットＰａ１に対するルーティングの通信処理が終了したと判定する。そして、制御部４０ｃは、次のパケットＰａ２のチェインＩＤが１等の場合（すなわち、最後のパケットＰａ１のチェインＩＤ（“３”）の処理負荷より軽い場合）、処理数に拘わらず、保持部２０に対して、サーバ２００ａ（１）へパケットＰａ２を出力させる。これにより、サーバ２００ａ（１）は、クレジット数より多くのパケットを受信する場合でも、チェインＩＤに応じて受信したパケットを各仮想マシン５０ａに配分することで、パケットの処理効率を向上させることができる。
【０１１３】
なお、転送ユニット６０ｃ（１）のカウンタ部３１は、処理数を１つ増加し、“４”とカウントする。
【０１１４】
一方、図１０には示さないが、制御部４０ｃは、経過時間が時間ｔ１３以上の場合でも、次のパケットＰａ２のチェインＩＤが“３”等の場合、保持部２０にパケットＰａ２の出力を抑止する指示を出力する。すなわち、例えば、図１０（ｄ）に示すように、パケットＰａ１よりも前に、保持部２０からサーバ２００ａ（１）へ出力されたパケットＰａ０が、サーバ２００ａ（１）から受信されるまで、制御部４０ｃは、保持部２０にパケットＰａ２の出力を抑止する。転送ユニット６０ｂ（１）がパケットＰａ０を受信することで、転送ユニット６０ｂ（１）のカウンタ部３１は、処理数を１つ減少させ、“２”とカウントする。そして、処理数がクレジット数（“３”）より小さくなることで、制御部４０ｃの制御に基づいて、保持部２０は、サーバ２００ａ（１）へパケットＰａ２を出力する。
【０１１５】
すなわち、第２計測部Ｃ２の経過時間が時間ｔ１３以上で、次のパケットのチェインＩＤが示す通信処理の内容が、保持部２０が最後に出力したパケットのチェインＩＤの通信処理の内容より処理負荷が軽いという条件が、クレジット超過条件の一例である。
【０１１６】
閾値算出部Ｃ３は、第１計測部Ｃ１が計測したチェインＩＤ毎の処理時間を用い、各チェインＩＤ間において、第２計測部Ｃ２の経過時間から一方のチェインＩＤの処理がサーバ２００ａで終了したと推定される時間（例えば、時間ｔ１３等の処理閾値）を算出する。
【０１１７】
なお、例えば、図９に示した処理時間の分布ＰＣ１、ＰＣ３等を用いて、閾値算出部Ｃ３が、チェインＩＤ間の処理閾値を算出することが困難な場合がある。この場合、閾値算出部Ｃ３は、処理閾値を算出せず、制御部４０ｃは、処理数とクレジット数に基づいて、保持部２０からサーバ２００ａへのパケットの出力を制御する。
【０１１８】
なお、閾値算出部Ｃ３の処理は、切替装置１００ｃが動作している間実行され、閾値算出部Ｃ３は、各チェインＩＤ間の処理閾値を更新してもよい。また、閾値算出部Ｃ３は、サーバ２００ａ（１）において新たな仮想マシン５０ａ（すなわち、実行中の通信処理と異なる新たな通信処理）が実行される場合に、新たなチェインＩＤとの間の処理閾値を算出してもよい。また、閾値算出部Ｃ３は、切替装置１００ｃのクロック回路から出力される時刻情報に基づいて、所定の時間間隔で各チェインＩＤ間の処理閾値を更新してもよい。
【０１１９】
なお、パケット処理システムＳＹＳ３は、図８に示した例に限定されない。例えば、制御部４０ｃは、各転送ユニット６０ｂに設けられ、転送ユニット６０ｂの各々の動作を制御してもよい。また、クレジット数は、転送ユニット６０ｂ毎に異なる値でもよい。
【０１２０】
図１１は、図８に示した切替装置１００ｃにおける切替処理の一例を示す。なお、図１１に示したステップの処理のうち、図４に示したステップと同一または同様の処理を示すものについては、同一のステップ番号を付し、詳細な説明を省略する。図１１に示した処理は、切替装置１００ｃ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ｂおよび制御部４０ｃが動作することで実現される。
【０１２１】
なお、図１１に示した処理は、転送ユニット６０ｂ（１）とサーバ２００ａ（１）との間でパケットが転送される場合を示す。また、転送ユニット６０ｂ（２）−６０ｂ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間でパケットが伝送される場合についても、図１１に示した処理と同様の処理が実行される。
【０１２２】
切替装置１００ｃは、ステップＳ１０の処理を実行した後、ステップＳ２００の処理を実行する。
【０１２３】
ステップＳ２００では、識別部１５ａは、ステップＳ１０で受信したパケットに付加されるＶＬＡＮタグヘッダのＶＩＤと、図６に示した処理テーブルＰＴとに基づいて、受信したパケットのチェインを識別する。そして、識別部１５ａは、識別したチェインを示す情報として、図５に示した処理テーブルＰＴの識別領域ＩＡの識別番号（チェインＩＤ）と、シリアル番号とをパケットに付加する。識別部１５ａは、チェインＩＤおよびシリアル番号を付加したパケットを保持部２０に出力する。切替装置１００ｃは、ステップＳ２００の処理を実行した後、ステップＳ１１、ステップＳ１２およびステップＳ２１０の処理を実行する。なお、図１１に示したステップＳ１２において、保持部２０にパケットが保持されている場合、切替装置１００ｃの処理は、ステップＳ２１０に移る。
【０１２４】
ステップＳ２１０では、制御部４０ｃは、転送ユニット６０ｂ（１）のカウンタ部３１のカウント数がクレジット数以上か否かを判定する。カウント数がクレジット数より小さい場合、切替装置１００ｃの処理は、ステップＳ１４に移る。一方、カウント数がクレジット数以上の場合、第２計測部Ｃ２は、経過時間の計測を開始し、切替装置１００ｃの処理は、ステップＳ２５０に移る。
【０１２５】
そして、切替装置１００ｃは、ステップＳ１４の処理を実行した後、ステップＳ１５、ステップＳ１６およびステップＳ２２０の処理を順次に実行する。
【０１２６】
ステップＳ２２０では、第１計測部Ｃ１は、サーバ２００ａ（１）においてパケットの通信処理にかかる処理時間を、チェインＩＤ毎に計測する。例えば、第１計測部Ｃ１は、ＩＦ部２５からパケットのチェインＩＤ、シリアル番号、送信時刻のタイムスタンプおよび受信時刻のタイムスタンプ等を取得する。そして、第１計測部Ｃ１は、互いに同じシリアル番号が付加された処理後のパケットの受信時刻のタイムスタンプと、サーバ２００ａ（１）出力されたパケットの送信時刻のタイムスタンプとの差分から処理時間を計測する。第１計測部Ｃ１は、計測した処理時間をパケットのチェインＩＤと対応付けて、閾値算出部Ｃ３に出力する。ステップＳ２２０の処理が実行された後、切替装置１００ｃの処理は、ステップＳ２３０に移る。
【０１２７】
ステップＳ２３０では、閾値算出部Ｃ３は、ステップＳ２２０で計測された各チェインＩＤの処理時間から、各チェインＩＤ間において、第２計測部Ｃ２の経過時間から一方の処理がサーバ２００ａ（１）で終了したと推定される時間（処理閾値）を算出する。例えば、閾値算出部Ｃ３は、第１計測部Ｃ１により計測された２つのチェインＩＤ間における処理時間の分布において、ピークの時間の平均値を、２つのチェインＩＤ間の処理閾値と算出する。ステップＳ２３０の処理が実行された後、切替装置１００ｃの処理は、ステップＳ２４０に移る。
【０１２８】
ステップＳ２４０では、制御部４０ｃは、ステップＳ２３０で算出された各チェインＩＤ間の処理閾値を、転送ユニット６０ｂ（１）に設定する。例えば、制御部４０ｃは、算出された各チェインＩＤ間の処理閾値を、転送ユニット６０（１）に対応付けて記憶部７０等に記憶する。ステップＳ２４０の処理が実行された後、切替装置１００ｃの処理は、ステップＳ１７に移る。
【０１２９】
一方、ステップＳ２５０では、制御部４０ｃは、保持部２０が最後に出力したパケットのチェインＩＤと、保持部２０が次に出力するパケットのチェインＩＤとの間の処理閾値が、転送ユニット６０ｂ（１）に設定されているかを判定する。処理閾値が転送ユニット６０ｂ（１）に設定されている場合、切替装置１００ｃの処理は、ステップＳ２６０に移る。一方、処理閾値が転送ユニット６０ｂ（１）に設定されていない場合、切替装置１００ｃの処理は、ステップＳ１６に移る。
【０１３０】
ステップＳ２６０では、制御部４０ｃは、保持部２０から最後に出力されたパケットの経過時間が処理閾値より長いか否かを判定する。経過時間が処理閾値より長い場合、切替装置１００ｃの処理は、ステップＳ２７０に移る。一方、経過時間が処理閾値以下の場合、切替装置１００ｃの処理は、ステップＳ１６に移る。
【０１３１】
ステップＳ２７０では、制御部４０ｃは、ステップＳ２２０で計測された各チェインＩＤの処理時間に基づいて、最後に出力されたパケットのチェインＩＤの通信処理より、保持部２０が次に出力するパケットのチェインＩＤの通信処理の負荷が軽いかを判定する。すなわち、制御部４０ｃは、保持部２０が最後に出力したパケットのチェインＩＤにおける通信時間より、保持部２０が次に出力するパケットのチェインＩＤにおける処理時間が短いか否かを判定する。そして、保持部２０が次に出力するパケットの通信処理の負荷が、最後に出力したパケットの通信処理の負荷より軽い場合、切替装置１００ｃの処理は、ステップＳ２８０に移る。一方、保持部２０が次に出力するパケットの通信処理の負荷が、最後に出力したパケットの通信処理の負荷以上に重い場合、切替装置１００ｃの処理は、ステップＳ１６に移る。
【０１３２】
ステップＳ２８０では、制御部４０ｃは、転送ユニット６０ｂ（１）の保持部２０に対して、先頭に保持されるパケットをサーバ２００ａ（１）に出力させる。ステップＳ２８０の処理が実行された後、切替装置１００ｃの処理は、ステップＳ２９０に移る。
【０１３３】
ステップＳ２９０では、転送ユニット６０ｂ（１）のカウンタ部３１は、カウント数を１つ増加させる。ステップＳ２９０の処理が実行された後、切替装置１００ｃの処理は、ステップＳ１６に移る。
【０１３４】
そして、切替装置１００ｃは、図１１に示した処理を繰り返し実行する。なお、ステップＳ１０、Ｓ２００、Ｓ１１、Ｓ１２、Ｓ２１０、Ｓ１４、Ｓ１５およびＳ２５０からＳ２９０の処理と、ステップＳ１６、Ｓ２２０、Ｓ２３０からＳ２４０およびＳ１７の処理とは、並列に実行されてもよい。
【０１３５】
以上、図８から図１１に示した実施形態では、カウンタ部３１は、サーバ２００ａに出力したパケットの数と、サーバ２００ａから受信した処理後のパケットの数との差分からサーバ２００ａが実行中のパケットの処理数をカウントする。そして、制御部４０ｃは、サーバ２００ａにおける処理数が、サーバ２００ａで処理可能な最大のパケット数であるクレジット数以下となるように、保持部２０からサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ｃは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｃにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ３は、切替装置１００ａによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ３は、パケットロスを抑制できる。
【０１３６】
また、制御部４０ｃは、クレジット超過条件を満たす場合、処理数に拘わらず、保持部２０に次のパケットを出力させる。なお、クレジット超過条件とは、保持部２０が次に出力するパケットの通信処理が最後に出力したパケットの通信処理より軽く、かつ経過時間が処理閾値より長い場合を示す。これにより、サーバ２００ａは、クレジット数より多くのパケットを受信する場合でも、チェインＩＤ（通信処理の内容）に応じて受信したパケットを各仮想マシン５０ａに配分することで、パケットの処理効率を向上させることができる。
【０１３７】
図１２は、切替装置およびパケット処理システムの別の実施形態を示す。図５または図８で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【０１３８】
図１２に示したパケット処理システムＳＹＳ４は、切替装置１００ｄおよびＮ個のサーバ２００ａを有する。切替装置１００ｄは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【０１３９】
切替装置１００ｄは、スイッチ部１１、Ｎ個の転送ユニット６０ｃ（６０ｃ（１）−６０ｃ（Ｎ））、制御部４０ｄおよび記憶部７０を有する。
【０１４０】
転送ユニット６０ｃ（１）は、識別部１５ｂ、ＤＥＭＵＸ２１、Ｋ個の保持部２０ａ、ＭＵＸ２２、ＩＦ部２５、ＤＥＭＵＸ３５、Ｋ個のカウンタ部３１ａ、第１計測部Ｃ１、第２計測部Ｃ２および閾値算出部Ｃ３を有する。なお、転送ユニット６０ｃ（２）−６０ｃ（Ｎ）の各々についても、図１２に示した転送ユニット６０ｃ（１）と同一または同様の要素を有する。
【０１４１】
識別部１５ｂは、例えば、図４に示した識別部１５と同様に、受信したパケットに付加されるＶＬＡＮタグヘッダに含まれるＶＩＤを取得する。識別部１５ｂは、制御部４０ｄを介して処理テーブルＰＴを参照し、取得したＶＩＤに対応する通信処理の内容（チェイン）およびチェイングループを取得する。そして、識別部１５ｂは、パケットのチェインを示す情報として、取得したチェイングループを受信したパケットに付加する。
【０１４２】
また、識別部１５ｂは、図８に示した識別部１５ａと同様に、各パケットを識別するシリアル番号をパケットに付加する。さらに、識別部１５ｂは、取得したＶＩＤに対応する図６に示した処理テーブルＰＴの識別領域ＩＡの識別番号を、チェインＩＤとしてパケットに付加する。そして、識別部１５ｂは、チェインＩＤ、シリアル番号およびチェイングループを付加したパケットをＤＥＭＵＸ２１に出力する。
【０１４３】
制御部４０ｄは、例えば、切替装置１００ｄに含まれるプロセッサ等が、記憶部７０に記憶されたプログラムを実行することにより実現され、切替装置１００ｄの動作を制御する。そして、制御部４０ｄは、図５に示した制御部４０ｂと同様に、各転送ユニット６０ｃにおいて、各保持部２０ａからサーバ２００ａへのパケットの出力を、各カウンタ部３１ａがカウントしたカウント数に基づいて制御する。
【０１４４】
また、制御部４０ｄは、図８に示した制御部４０ｃと同様に、カウンタ部３１ａ（１）のカウント数がクレジット数以上の場合でも、クレジット超過条件を満たす場合、保持部２０ａに対して、サーバ２００ａへパケットを出力させる。これにより、サーバ２００ａは、クレジット数より多くのパケットを受信する場合でも、チェインＩＤに応じて受信したパケットを各仮想マシン５０ａに配分することで、パケットの処理効率を向上させることができる。
【０１４５】
なお、制御部４０ｄは、転送ユニット６０ｃ（２）−６０ｃ（Ｎ）についても、転送ユニット６０ｃ（１）と同一または同様の制御を実行する。
【０１４６】
なお、パケット処理システムＳＹＳ４は、図１２に示した例に限定されない。例えば、制御部４０ｄは、各転送ユニット６０ｃに設けられ、転送ユニット６０ｃの各々の動作を制御してもよい。また、クレジット数は、転送ユニット６０ｃ毎に異なる値でもよく、保持部２０ａ（またはカウンタ部３１ａ）毎に異なる値でもよい。
【０１４７】
図１２に示した切替装置１００ｄにおける切替処理は、図１１と同様であり、詳細な説明については省略する。なお、図１１に示したステップ２００では、識別部１５ｂは、ステップＳ１０で受信したパケットに付加されるＶＬＡＮタグヘッダのＶＩＤと、図６に示した処理テーブルＰＴとに基づいて、受信したパケットのチェイングループを識別する。そして、識別部１５ｂは、識別したチェイングループと、図６に示した処理テーブルＰＴの識別領域ＩＡの識別番号（チェインＩＤ）と、シリアル番号とをパケットに付加する。そして、識別部１５ｂは、パケットをＤＥＭＵＸ２１に出力する。
【０１４８】
また、ステップＳ２１０では、制御部４０ｄは、ステップＳ１１で保持部２０ａがパケットを保持していると判定されたチェイングループのカウンタ部３１ａのカウント数がクレジット数以上か否かを判定する。カウント数がクレジット数より小さい場合、切替装置１００ｄの処理は、ステップＳ１４に移る。一方、カウント数がクレジット数以上の場合、切替装置１００ｄの処理は、ステップＳ２５０に移る。
【０１４９】
また、ステップＳ２６０では、制御部４０ｄは、ステップＳ２１０でカウント数がクレジット数以上と判定されたチェイングループの保持部２０ａから最後に出力されたパケットの経過時間が処理閾値より長いか否かを判定する。経過時間が処理閾値より長い場合、切替装置１００ｄの処理は、ステップＳ２７０に移る。一方、経過時間が処理閾値以下の場合、切替装置１００ｄの処理は、ステップＳ１６に移る。
【０１５０】
また、ステップＳ２７０では、制御部４０ｄは、ステップＳ２６０で経過時間が処理閾値より長いと判定されたチェイングループの保持部２０ａで、次に出力されるパケットの通信処理の負荷が、最後に出力されたパケットの通信処理より軽いか否かを判定する。次に出力されるパケットの通信処理の負荷が軽い場合、切替装置１００ｄの処理は、ステップＳ２８０に移る。一方、次に出力されるパケットの通信処理の負荷が、最後に出力されたパケットの通信処理以上に重い場合、切替装置１００ｄの処理は、ステップＳ１６に移る。
【０１５１】
また、ステップＳ２８０では、制御部４０ｄは、ステップＳ２７０で次に出力されるパケットの通信処理の負荷が軽いと判定されたチェイングループの保持部２０ａに対して、保持部２０ａの先頭に保持するパケットをサーバ２００ａ（１）に出力させる。ステップＳ２８０の処理が実行された後、切替装置１００ｄの動作は、ステップＳ２９０に移る。
【０１５２】
そして、切替装置１００ｄは、図１１に示した処理を繰り返し実行する。なお、ステップＳ１０、Ｓ２００、Ｓ１１、Ｓ１２、Ｓ２１０、Ｓ１４、Ｓ１５およびＳ２５０からＳ２９０の処理と、ステップＳ１６、Ｓ２２０、Ｓ２３０からＳ２４０およびＳ１７の処理とは、並列に実行されてもよい。
【０１５３】
以上、図１２に示した実施形態では、各カウンタ部３１ａは、サーバ２００ａで通信処理が実行されているパケットの処理数を、チェイングループ（通信処理の内容）毎に算出する。そして、制御部４０ｄは、チェイングループ毎の処理数が、サーバ２００ａで処理可能な最大のパケット数であるクレジット数以下となるように、各保持部２０ａからサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ｄは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｄにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ４は、切替装置１００ｄによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ４は、パケットロスを抑制できる。
【０１５４】
また、サーバ２００ａにおける処理負荷がチェイングループ毎に異なるため、制御部４０ｄは、各カウンタ部３１ａの処理数と各チェイングループのクレジット数とに基づいて、各保持部２０ａに対して、サーバ２００ａへのパケットの出力を制御する。これにより、切替装置１００ｄは、図８に示した１つのカウンタ部３１がパケットの数をカウントする場合より効率的にパケットを転送でき、パケット処理システムＳＹＳ４におけるパケットの処理効率を向上させることができる。
【０１５５】
また、制御部４０ｄは、クレジット超過条件を満たす場合、処理数に拘わらず、保持部２０ａに次のパケットを出力させる。なお、クレジット超過条件とは、保持部２０が次に出力するパケットの通信処理が最後に出力したパケットの通信処理より軽く、かつ経過時間が処理閾値より長い場合を示す。これにより、サーバ２００ａは、クレジット数より多くのパケットを受信する場合でも、チェインＩＤ（通信処理の内容）に応じて受信したパケットを各仮想マシン５０ａに配分することで、パケットの処理効率を向上させることができる。
【０１５６】
図１３は、切替装置およびパケット処理システムの別の実施形態を示す。図８で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【０１５７】
図１３に示したパケット処理システムＳＹＳ５は、切替装置１００ｅおよびＮ個のサーバ２００ａを有する。切替装置１００ｅは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【０１５８】
切替装置１００ｅは、スイッチ部１１、Ｎ個の転送ユニット６０ｄ（６０ｄ（１）−６０ｄ（Ｎ））、制御部４０ｅおよび記憶部７０を有する。
【０１５９】
転送ユニット６０ｄ（１）は、識別部１５ａ、保持部２０、ＩＦ部２５、パケット生成部２７、カウンタ部３１、第１計測部Ｃ１、第２計測部Ｃ２および閾値算出部Ｃ３を有する。すなわち、転送ユニット６０ｄは、図８に示した転送ユニット６０ｂに、パケット生成部２７を追加している。なお、転送ユニット６０ｄ（２）−６０ｄ（Ｎ）の各々についても、図１３に示した転送ユニット６０ｄ（１）と同一または同様の要素を有する。
【０１６０】
パケット生成部２７は、転送ユニット６０ｄ（１）において動作し、各チェインＩＤ（通信処理の内容）の処理をサーバ２００ａ（１）に擬似的に実行させる擬似パケットを生成する。擬似パケットは、第１計測部Ｃ１が各チェインＩＤの処理時間を計測するために使用されるダミーのパケットである。
【０１６１】
制御部４０ｅは、例えば、切替装置１００ｅに含まれるプロセッサ等が、記憶部７０に記憶されたプログラムを実行することにより実現され、切替装置１００ｅの動作を制御する。そして、制御部４０ｅは、図８に示した制御部４０ｃと同様に、各転送ユニット６０ｄにおいて、保持部２０からサーバ２００ａへのパケットの出力を、カウンタ部３１がカウントしたカウント数に基づいて制御する。
【０１６２】
また、制御部４０ｅは、図８に示した制御部４０ｃと同様に、カウンタ部３１のカウント数がクレジット数以上の場合でも、所定の条件を満たす場合、転送ユニット６０ｄの保持部２０に対して、サーバ２００ａへパケットを出力させる。
【０１６３】
さらに、制御部４０ｅは、例えば、パケット処理システムＳＹＳ５がネットワークＮＷとの間で伝送するパケットに通信処理を実行する前に、各転送ユニット６０ｄのパケット生成部２７に、各チェインＩＤの擬似パケットを生成させる指示を出力する。そして、制御部４０ｅは、パケット生成部２７に、生成された各チェインＩＤの擬似パケットをサーバ２００ａに出力させる指示を出力する。各転送ユニット６０ｄの第１計測部Ｃ１は、チェインＩＤ毎の処理時間を計測する。各転送ユニット６０ｄの閾値算出部Ｃ３は、第１計測部Ｃ１により計測された各チェインＩＤにおける処理時間の分布に基づいて、チェインＩＤ間毎の処理閾値（例えば、図９に示した時間ｔ１３等）を算出する。制御部４０ｅは、例えば、各転送ユニット６０ｄにおいて算出されたチェインＩＤ間毎の処理閾値を、転送ユニット６０ｄ毎に対応付けて記憶部７０等に記憶する。すなわち、制御部４０ｅは、算出されたチェインＩＤ間毎の処理閾値を、各転送ユニット６０ｄに設定する。
【０１６４】
なお、制御部４０ｅは、パケット処理システムＳＹＳ５がネットワークＮＷとの間で伝送するパケットに通信処理を実行している場合でも、パケット生成部２７に擬似パケットを生成させ、閾値算出部Ｃ３は、各チェインＩＤ間の処理閾値を更新してもよい。例えば、パケット処理システムＳＹＳ５において、所定のチェインＩＤのパケットのネットワークＮＷからの受信数が、他のチェインＩＤのパケットの受信数より少ない場合、閾値算出部Ｃ３は、所定のチェインＩＤの閾値の更新が困難となる場合がある。この場合、制御部４０ｅは、例えば、受信数が少ない所定のチェインＩＤの擬似パケットをパケット生成部２７に生成させ、閾値算出部Ｃ３は、生成されたパケット信号を用いて、所定のチェインＩＤの処理閾値を更新することができる。
【０１６５】
図１４は、図１３に示したパケット処理システムＳＹＳ５における処理閾値の設定処理の一例を示す。図１４に示したステップ処理は、切替装置１００ｅ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ｄおよび制御部４０ｅが動作することで実現される。
【０１６６】
なお、図１４に示した処理は、転送ユニット６０ｄ（１）とサーバ２００ａ（１）との間で擬似パケットが転送される場合を示す。また、転送ユニット６０ｄ（２）−６０ｄ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間で擬似パケットが転送される場合についても、図１４に示した処理と同様の処理が実行される。
【０１６７】
また、図１４に示した処理は、パケット処理システムＳＹＳ５がパケット処理を実行する前に実行される。しかしながら、図１４に示した処理は、パケット処理システムＳＹＳ５におけるパケット処理と並列に実行されてもよい。
【０１６８】
ステップＳ４００では、パケット生成部２７は、制御部４０ｅからの制御に基づいて、チェインＩＤ毎に擬似パケットを生成する。ステップＳ４００の処理が実行された後、切替装置１００ｅの処理は、ステップＳ４１０に移る。
【０１６９】
ステップＳ４１０では、パケット生成部２７は、ステップＳ４００で生成した各チェインＩＤの擬似パケットを、サーバ２００ａ（１）に順に出力する。ステップＳ４１０の処理を実行した後、切替装置１００ｅの処理は、ステップＳ４２０の処理に移る。
【０１７０】
ステップＳ４２０では、第１計測部Ｃ１は、図１１に示したステップＳ２２０の処理と同一あるいは同様に、ステップＳ４１０で出力された擬似パケットに対するサーバ２００ａ（１）での通信処理の処理時間を、チェインＩＤ毎に計測する。ステップＳ４２０の処理が実行された後、切替装置１００ｅの処理は、ステップＳ４３０に移る。
【０１７１】
ステップＳ４３０では、制御部４０ｅは、ステップＳ４２０における第１計測部Ｃ１によるチェインＩＤ毎の処理時間の計測が所定の回数以上か否かを判定する。チェインＩＤ毎の処理時間の計測が所定の回数より少ない場合、切替装置１００ｅの処理は、ステップＳ４００に移る。一方、チェインＩＤ毎の処理時間の計測が所定の回数以上の場合、切替装置１００ｅの処理は、ステップＳ４４０に移る。所定の回数は、１回でもよく、各仮想マシン５０ａにおける処理時間のゆらぎの大きさ等に応じて決定されるのが好ましい。
【０１７２】
ステップＳ４４０では、閾値算出部Ｃ３は、図１１に示したステップＳ２３０の処理と同一あるいは同様に、ステップＳ４２０で計測された各チェインＩＤの処理時間に基づいて、各チェインＩＤの処理閾値を、各チェインＩＤ間で算出する。ステップＳ４４０の処理が実行された後、切替装置１００ｅの処理は、ステップＳ４５０に移る。
【０１７３】
ステップＳ４５０では、制御部４０ｅは、ステップＳ４４０で算出された処理閾値を、転送ユニット６０ｄ（１）に設定する。そして、切替装置１００ｅは、処理閾値の設定処理を終了する。
【０１７４】
なお、図１３に示した切替装置１００ｅにおける切替処理は、図１１に示した処理と同様であり、詳細な説明については省略する。なお、図１３に示したパケット処理システムＳＹＳ５では、切替装置１００ｅが切替処理を実行する前に、図１４に示した処理閾値の設定処理が実行される。このため、切替装置１００ｅにおける切替処理は、図１１に示した処理のうちのステップＳ２２０からステップＳ２４０の処理が省略されてもよい。
【０１７５】
なお、パケット処理システムＳＹＳ５は、図１３に示した例に限定されない。例えば、切替装置１００ｅは、転送ユニット６０ｄの代わりに、図１３に示したパケット生成部２７が配置された図１２に示した転送ユニット６０ｃを有してもよい。この場合のパケット処理システムＳＹＳ５における処理閾値の設定処理は、図１４に示した処理と同一あるいは同様に実行される。また、この場合の切替装置１００ｅにおける切替処理は、図１１に示した切替処理と同様に実行される。なお、図１１に示した処理が実行される前に、図１４に示した処理閾値の設定処理が実行される場合、図１１に示した処理のうちのステップＳ２２０からステップＳ２４０の処理は、省略されてもよい。
【０１７６】
以上、図１３および図１４に示した実施形態では、カウンタ部３１は、サーバ２００ａに出力したパケットの数と、サーバ２００ａから受信した処理後のパケットの数との差分からサーバ２００ａが実行中のパケットの処理数をカウントする。そして、制御部４０ｅは、サーバ２００ａにおける処理数が、サーバ２００ａで処理可能な最大のパケット数であるクレジット数以下となるように、保持部２０からサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ｅは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｅにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ５は、切替装置１００ｅによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ５は、パケットロスを抑制できる。
【０１７７】
また、制御部４０ｅは、クレジット超過条件を満たす場合、処理数に拘わらず、保持部２０に次のパケットを出力させる。なお、クレジット超過条件とは、保持部２０が次に出力するパケットの通信処理が最後に出力したパケットの通信処理より軽く、かつ経過時間が処理閾値より長い場合を示す。これにより、サーバ２００ａは、クレジット数より多くのパケットを受信する場合でも、チェインＩＤ（通信処理の内容）に応じて受信したパケットを各仮想マシン５０ａに配分することで、パケットの処理効率を向上させることができる。
【０１７８】
図１５は、切替装置およびパケット処理システムの別の実施形態を示す。図８で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【０１７９】
図１５に示したパケット処理システムＳＹＳ６は、切替装置１００ｆおよびＮ個のサーバ２００ａを有する。切替装置１００ｆは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【０１８０】
切替装置１００ｆは、スイッチ部１１、Ｎ個の転送ユニット６０ｅ（６０ｅ（１）−６０ｅ（Ｎ））、制御部４０ｆおよび記憶部７０を有する。
【０１８１】
転送ユニット６０ｅ（１）は、識別部１５ａ、保持部２０、ＩＦ部２５、算出部３０ａ、第１計測部Ｃ１、第２計測部Ｃ２および閾値算出部Ｃ３を有する。すなわち、転送ユニット６０ｅ（１）は、図８に示したカウンタ部３１の代わりに、算出部３０ａを有する。なお、転送ユニット６０ｅ（２）−６０ｅ（Ｎ）の各々についても、図１５に示した転送ユニット６０ｅ（１）と同一または同様の要素を有する。
【０１８２】
算出部３０ａは、例えば、保持部２０がパケットをサーバ２００ａ（１）に出力した場合、パケットに付加されたチェインＩＤまたはチェイングループに基づいて、パケットのうちの通信処理に用いられるデータ量（以下、出力データ量とも称される）を求める。また、算出部３０ａは、サーバ２００ａ（１）から処理後のパケットを受信した場合、受信した処理後のパケットに付加されたチェインＩＤまたはチェイングループに基づいて、通信処理に用いられたデータ量（以下、受信データ量とも称される）を求める。そして、算出部３０ａは、算出した出力データ量および受信データ量に基づいてサーバ２００ａ（１）で通信処理が実行されているパケットのデータ量（以下、処理データ量とも称される）を算出する。
【０１８３】
例えば、パケットに付加されたチェインＩＤまたはチェイングループが、ルーティングの通信処理を示す場合、パケットに格納される送信元のＩＰアドレスおよびあて先のＩＰアドレスが、ルーティングの通信処理に用いられる。この場合、算出部３０ａは、送信元とあて先とのＩＰアドレスのデータの量を、出力データ量または受信データ量として求める。また、パケットに付加されたチェインＩＤまたはチェイングループがＩＰｓｅｃの通信処理を示す場合、パケットのデータフィールドに格納されるデータが、ＩＰｓｅｃの通信処理に用いられる。この場合、算出部３０ａは、パケットのデータフィールドに格納されたデータの量を、出力データ量または受信データ量として求める。
【０１８４】
制御部４０ｆは、例えば、切替装置１００ｆに含まれるプロセッサ等が、記憶部７０に記憶されたプログラムを実行することにより実現され、切替装置１００ｆの動作を制御する。そして、制御部４０ｆは、保持部２０からサーバ２００ａ（１）へのパケットの出力を、算出部３０ａが算出する処理データ量に基づいて制御する。
【０１８５】
例えば、制御部４０ｆは、保持部２０が出力するパケットの出力データ量と、サーバ２００ａ（１）において処理中の処理データ量との和が、サーバ２００ａ（１）が処理可能な最大のデータ量以上か否かを判定する。以下では、サーバ２００ａ（１）が処理可能な最大のデータ量は、クレジット量とも称される。そして、保持部２０が次に出力するパケットの出力データ量と、サーバ２００ａ（１）が処理中の処理データ量との和がクレジット量より小さい場合、制御部４０ｆは、保持部２０に対して、サーバ２００ａ（１）へパケットを出力させる。一方、保持部２０が次に出力するパケットの出力データ量と、処理データ量との和がクレジット量以上の場合、制御部４０ｆは、保持部２０に対して、サーバ２００ａ（１）へのパケットの出力を抑止する指示を出力する。このように、制御部４０ｆは、保持部２０が次に出力するパケットの出力データ量と、処理データ量との和がクレジット量以下となるように、保持部２０からサーバ２００ａ（１）へのパケットの出力を制御する。
【０１８６】
なお、制御部４０ｆは、図８に示した制御部４０ｃと同様に、クレジット超過条件を満たす場合、保持部２０が次に出力するパケットの出力データ量を加えた処理データ量に拘わらず、保持部２０に対して、サーバ２００ａへパケットを出力させる。すなわち、制御部４０ｆは、保持部２０が次に出力するパケットの通信処理が最後に出力したパケットの通信処理より軽く、かつ経過時間が処理閾値より長い場合、保持部２０に対して、サーバ２００ａへパケットを出力させてもよい。
【０１８７】
なお、パケット処理システムＳＹＳ６は、図１５に示した例に限定されない。例えば、図１に示した切替装置１００において、図１５に示した算出部３０ａが、算出部３０の代わりに配置されてもよい。また、図３に示した切替装置１００ａにおいて、図１５に示した算出部３０ａが、カウンタ部３１の代わりに配置されてもよい。また、図５に示した切替装置１００ｂにおいて、図１５に示した算出部３０ａが、Ｋ個のカウンタ部３１ａの代わりに、Ｋ個配置されてもよい。また、図８に示した切替装置１００ｃにおいて、図１５に示した算出部３０ａが、カウンタ部３１の代わりに配置されてもよい。また、図１２に示した切替装置１００ｄにおいて、図１５に示した算出部３０ａが、Ｋ個のカウンタ部３１ａの代わりに、Ｋ個配置されてもよい。また、図１３に示した切替装置１００ｅにおいて、図１５に示した算出部３０ａが、カウンタ部３１の代わりに配置されてもよい。
【０１８８】
図１６は、図１５に示した切替装置１００ｆにおける切替処理の一例を示す。なお、図１６に示したステップの処理のうち、図１１に示したステップと同一または同様の処理を示すものについては、同一のステップ番号を付し、詳細な説明を省略する。すなわち、図１６に示した処理では、図１１に示した処理のステップＳ２１０、ステップＳ１５、ステップＳ１７およびステップＳ２９０の代わりに、ステップＳ５００、ステップＳ５１０、ステップＳ５２０およびステップＳ５３０が実行される。
【０１８９】
ステップＳ５００では、制御部４０ｆは、転送ユニット６０ｅ（１）において、保持部２０が次に出力するパケットの出力データ量を加えた処理データ量がクレジット量以上か否かを判定する。次のパケットの出力データ量を加えた処理データ量がクレジット量以上の場合、切替装置１００ｆの処理は、ステップＳ２５０に移る。一方、次のパケットの出力データ量を加えた処理データ量がクレジット量より小さい場合、切替装置１００ｆの処理は、ステップＳ１４に移る。
【０１９０】
ステップＳ５１０では、転送ユニット６０ｅ（１）の算出部３０ａは、ステップＳ１４で出力されたパケットの出力データ量を処理データ量に加算する。
【０１９１】
ステップＳ５２０では、転送ユニット６０ｅ（１）の算出部３０ａは、ステップＳ１６で受信された処理後のパケットの受信データ量を、処理データ量から減算し、処理を終了する。
【０１９２】
ステップＳ５３０では、転送ユニット６０ｅ（１）の算出部３０ａは、ステップＳ２８０で出力されたパケットの出力データ量を処理データ量に加算する。ステップＳ５３０の処理が実行された後、切替装置１００ｆの処理は、ステップＳ１６に移る。
【０１９３】
そして、切替装置１００ｆは、図１６に示した処理を繰り返し実行する。なお、ステップＳ１０、Ｓ２００、Ｓ１１、Ｓ１２、Ｓ５００、Ｓ１４、Ｓ５１０、Ｓ２５０からＳ２８０およびＳ５３０の処理と、ステップＳ１６、Ｓ２２０からＳ２４０およびＳ５２０の処理とは、並列に実行されてもよい。
【０１９４】
なお、図１６に示した処理は、転送ユニット６０ｅ（１）とサーバ２００ａ（１）との間でパケットが転送される場合を示す。また、転送ユニット６０ｅ（２）−６０ｅ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間でパケットが転送される場合についても、図１６に示した処理と同一あるいは同様に実行される。
【０１９５】
以上、図１５および図１６に示した実施形態では、算出部３０ａは、出力したパケットの出力データ量と、サーバ２００ａから受信したパケットの受信データ量とから、サーバ２００ａが実行中のパケットの処理データ量を算出する。そして、制御部４０ｆは、保持部２０が次に出力する出力データ量を加算した処理データ量がサーバ２００ａで処理可能な最大のデータ量であるクレジット量以下となるように、保持部２０からサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ｆは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｆにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ６は、切替装置１００ｆによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ６は、パケットロスを抑制できる。
【０１９６】
また、制御部４０ｆは、クレジット超過条件を満たす場合、処理データ量に拘わらず、保持部２０にパケットを出力させる。なお、クレジット超過条件とは、保持部２０が次に出力するパケットの通信処理が最後に出力したパケットの通信処理より軽く、かつ経過時間が処理閾値より長い場合を示す。これにより、サーバ２００ａは、クレジット数より多くのパケットを受信する場合でも、チェインＩＤ（通信処理の内容）に応じて受信したパケットを各仮想マシン５０ａに配分することで、パケットの処理効率を向上させることができる。
【０１９７】
図１７は、切替装置およびパケット処理システムの別の実施形態を示す。図１２または図１３で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【０１９８】
図１７に示したパケット処理システムＳＹＳ７は、切替装置１００ｇおよびＮ個のサーバ２００ａを有する。切替装置１００ｇは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【０１９９】
切替装置１００ｇは、スイッチ部１１、Ｎ個の転送ユニット６０ｆ（６０ｆ（１）−６０ｆ（Ｎ））、制御部４０ｇおよび記憶部７０を有する。記憶部７０は、図１２に示した処理テーブルＰＴの代わりに、処理テーブルＰＴ２を格納する記憶領域を有する。処理テーブルＰＴ２については、図１８で説明する。
【０２００】
転送ユニット６０ｆ（１）は、識別部１５ｃ、ＤＥＭＵＸ２１、Ｌ個の保持部２０ｂ（２０ｂ（１）−２０ｂ（Ｌ））、ＭＵＸ２２、ＩＦ部２５ａ、パケット生成部２７ａ、Ｍ個のカウンタ部３１ｂ（（３１ｂ（１）−３１ｂ（Ｍ））、時間計測部Ｃ４および調整部８０を有する。なお、転送ユニット６０ｆ（２）−６０ｆ（Ｎ）の各々についても、図１７に示した転送ユニット６０ｆ（１）と同一または同様の要素を有する。
【０２０１】
識別部１５ｃは、例えば、図４に示した識別部１５と同様に、受信したパケットに付加されるＶＬＡＮタグヘッダに含まれるＶＩＤを取得する。識別部１５ｃは、制御部４０ｇを介して、記憶部７０に記憶される処理テーブルＰＴ２を参照し、取得したＶＩＤに対応する識別番号（チェインＩＤ）、通信処理の内容（チェイン）および処理の順序を取得する。そして、識別部１５ｃは、パケットのチェインを示す情報として、取得したチェインＩＤを受信したパケットに付加する。
【０２０２】
また、識別部１５ｃは、図各パケットを識別するシリアル番号等の情報をパケットに付加する。そして、識別部１５ｃは、チェインＩＤおよびシリアル番号を付加したパケットをＤＥＭＵＸ２１に出力する。
【０２０３】
各保持部２０ｂは、キュー等の先入れ先出しの機能を有するメモリである。各保持部２０ｂは、ＤＥＭＵＸ２１により振り分けられた同じチェインＩＤ（通信処理の内容）のパケットを順に保持する。各保持部２０ｂは、保持した順にサーバ２００ａ（１）にパケットを出力する。なお、通信処理の内容には、通信処理の組合せと通信処理を実行する順番との情報を含み、Ｌ通りの内容が有るものとする。このため、Ｌ個の保持部２０ｂが、各転送ユニット６０ｆに設けられる。
【０２０４】
ＩＦ部２５ａは、図１３に示したＩＦ部２５と同様に、保持部２０ｂから受信するパケットをサーバ２００ａ（１）へ出力し、サーバ２００ａ（１）から受信する処理後のパケットをスイッチ部１１に出力する。また、ＩＦ部２５ａは、例えば、切替装置１００ｇに含まれるクロック回路等から出力される時刻を示す情報を参照して、保持部２０ｂから受信するパケットをサーバ２００ａ（１）に出力した時の送信時刻を示すタイムスタンプ等の時刻情報を取得する。ＩＦ部２５ａは、パケットに付加されたチェインＩＤおよびシリアル番号と、取得した時刻情報とを時間計測部Ｃ４に出力する。
【０２０５】
また、ＩＦ部２５ａは、例えば、切替装置１００ｆのクロック回路等から出力される時刻を示す情報を参照して、サーバ２００ａ（１）から処理後のパケットを受信した時の受信時刻を示すタイムスタンプ等の時刻情報を取得する。ＩＦ部２５ａは、処理後のパケットを受信した時刻情報と、処理後のパケットに付加されたチェインＩＤおよびシリアル番号とを、時間計測部Ｃ４に出力する。
【０２０６】
パケット生成部２７ａは、サーバ２００ａ（１）の仮想マシン５０ａの各々に、擬似的に処理を実行させる擬似パケットを生成する。擬似パケットは、時間計測部Ｃ４が各仮想マシン５０ａの処理時間を計測するために使用されるダミーのパケットである。
【０２０７】
カウンタ部３１ｂ（１）−３１ｂ（Ｍ）は、仮想マシン５０ａ（１）−５０ａ（Ｍ）に対応してそれぞれ設けられること、および調整部８０の制御に基づいて動作することを除き、図１２に示すカウンタ３１ａと同様である。すなわち、カウンタ部３１ｂ（１）−３１ｂ（Ｍ）は、仮想マシン５０ａ（１）−５０ａ（Ｍ）において処理されているパケットの数（処理数）をそれぞれカウントする。カウンタ部３１ｂの動作については、図１９で説明する。
【０２０８】
時間計測部Ｃ４は、パケットの各々が、保持部２０ｂからサーバ２００ａ（１）に出力されてからの経過時間を計測する。例えば、時間計測部Ｃ４は、切替装置１００ｇのクロック回路等から出力される時刻を示す情報と、ＩＦ部２５ａから取得したパケットの送信時刻のタイムスタンプとを用いて、保持部２０ｂがパケットを出力した時刻からの経過時間を計測する。時間計測部Ｃ４は、計測した経過時間をパケットのチェインＩＤおよびシリアル番号と対応付けて、調整部８０に出力する。
【０２０９】
また、時間計測部Ｃ４は、パケット生成部２７ａが生成した擬似パケットを用いて、サーバ２００ａ（１）の仮想マシン５０ａの各々におけるパケットの通信処理にかかる処理時間を計測する。例えば、パケット生成部２７ａは、１つの仮想マシン５０ａに処理させるためのチェインＩＤと、シリアル番号とを付加した擬似パケットを生成し、生成した擬似パケットをサーバ２００ａ（１）に出力する。時間計測部Ｃ４は、出力された擬似パケットのチェインＩＤ、シリアル番号および送信時刻のタイムスタンプをＩＦ部２５ａから取得する。また、時間計測部Ｃ４は、サーバ２００ａ（１）から受信した処理後の擬似パケットのチェインＩＤ、シリアル番号および受信時刻のタイムスタンプをＩＦ部２５ａから取得する。そして、時間計測部Ｃ４は、互いに同じシリアル番号が付加された擬似パケットの受信時刻のタイムスタンプと送信時刻のタイムスタンプとの差分を算出し、各仮想マシン５０ａの処理時間を計測する。時間計測部Ｃ４は、計測した各仮想マシン５０ａの処理時間を、調整部８０に出力する。
【０２１０】
なお、時間計測部Ｃ４は、ネットワークＮＷから受信されるパケットを用いて、各仮想マシン５０ａの処理時間を計測してもよい。
【０２１１】
調整部８０は、時間計測部Ｃ４が計測した各保持部２０ｂから出力されたパケットの経過時間およびチェインＩＤと、処理テーブルＰＴ２とを用いて、各保持部２０ｂから出力されたパケットがいずれの仮想マシン５０ａで処理されているかを特定する。調整部８０は、特定した結果に基づいて、各カウンタ部３１ｂによりカウントされた各仮想マシン５０ａの処理数を調整する。調整部８０の動作については、図１９で説明する。
【０２１２】
制御部４０ｇは、例えば、切替装置１００ｇに含まれるプロセッサ等が、記憶部７０に記憶された制御プログラムを実行することにより実現され、切替装置１００ｇの動作を制御する。そして、制御部４０ｇは、転送ユニット６０ｆ（１）の各保持部２０ｂによるサーバ２００ａへのパケットの出力を、各カウンタ部３１ｂがカウントした各仮想マシン５０ａの処理数に基づいて制御する。制御部４０ｇの動作については、図１９で説明する。
【０２１３】
なお、制御部４０ｇは、転送ユニット６０ｆ（２）−６０ｆ（Ｎ）についても、転送ユニット６０ｆ（１）と同一または同様の制御を実行する。
【０２１４】
なお、パケット処理システムＳＹＳ７は、図１７に示した例に限定されない。例えば、制御部４０ｇは、各転送ユニット６０ｆに設けられ、転送ユニット６０ｆの各々の動作を制御してもよい。また、記憶部７０は、転送ユニット６０ｆ毎の処理テーブルＰＴ２を記憶してもよい。
【０２１５】
図１８は、図１７に示した処理テーブルＰＴ２の一例を示す。処理テーブルＰＴ２は、識別番号を保持する識別領域ＩＡと、１番目の処理からｚ番目の処理の内容を保持する第１処理領域Ａ１から第ｚ処理領域Ａｚとをそれぞれ含む複数のエントリーを有する。
【０２１６】
識別領域ＩＡには、図６に示した処理テーブルＰＴと同一あるいは同様に、パケットが所属するＶＬＡＮを識別するＶＩＤの値が識別番号として格納される。ＶＩＤの値は、ネットワークＮＷから受信するパケットに付加されるＶＬＡＮタグヘッダに含まれる。なお、識別領域ＩＡには、ＶＩＤの代わりに、受信するパケットの送信先あるいは送信元を示すＩＰアドレスやＭＡＣアドレス等が格納されてもよい。
【０２１７】
第１処理領域Ａ１から第ｚ処理領域Ａｚの各々は、通信処理を実行する仮想マシンを示す情報と、通信処理の処理時間を示す情報とを保持する。第１処理領域Ａ１から第ｚ処理領域Ａｚの各々に保持される情報は、ＶＩＤ（識別番号）を有するパケット毎に実行される通信処理の内容に応じた順番で保持される。例えば、識別番号が“１”のパケットに実行される通信処理がルーティングで、仮想マシン５０ａ（１）がルーティングの処理を実行している場合、第１処理領域Ａ１には、仮想マシン５０ａ（１）を示す情報が格納される。また、第１処理領域Ａ１には、例えば、パケット生成部２７ａにより生成された擬似パケットを用いて、時間計測部Ｃ４が計測した、擬似パケットのルーティングの処理にかかった仮想マシン５０ａ（１）の処理時間（例えば、１秒）が格納される。なお、図１８に示した処理テーブルＰＴ２では、情報が格納されていない領域または格納されている情報が無効な領域は、“−”で示す。例えば、識別番号が１のパケットに対する処理は、ルーティングの処理のみであるため、２番目の処理からｚ番目の処置までの各領域には、情報が格納されない。
【０２１８】
また、識別番号が“２”のパケットに実行される通信処理の内容が、ルーティングとＩＰｓｅｃとの２つで、かつ最初にルーティングの処理が実行される場合、第１処理領域Ａ１には、ルーティングの処理を実行する仮想マシン５０ａ（１）を示す情報が格納される。また、第２処理領域Ａ２には、例えば、ＩＰｓｅｃの処理を実行する仮想マシン５０ａ（２）を示す情報が格納される。また、識別番号が“２”の第１処理領域Ａ１には、仮想マシン５０ａ（１）によるルーティングの処理時間が格納される。また、識別番号が“２”の第２処理領域Ａ２には、仮想マシン５０ａ（２）によるＩＰｓｅｃの処理時間が格納される。ルーティングの処理時間およびＩＰｓｅｃの処理時間は、時間計測部Ｃ４により、擬似パケットを用いて計測される。
【０２１９】
なお、図１８に示した処理テーブルＰＴ２では、識別番号が“４”のパケットに実行される通信処理は、識別番号が“２”と同じ、ルーティングとＩＰｓｅｃとであるが、通信処理が実行される順番が、識別番号が“２”のパケットと逆となる。
【０２２０】
図１９は、図１７に示したパケット処理システムＳＹＳ７におけるパケット転送の動作例を模式的に示す。図１９に示す例では、識別番号が２のパケットを保持する保持部２０ｂ（２）が、サーバ２００ａ（１）にパケットＰｂ１を転送する場合を示す。なお、保持部２０ｂ（１）、２０ｂ（３）−２０ｂ（Ｌ）についても、保持部２０ｂ（２）と同様に動作する。また、図１９に示す例では、各仮想マシン５０ａの処理可能な最大のパケット数（クレジット数）は３とし、仮想マシン５０ａ（１）で処理中のパケット数（処理数）は２とし、仮想マシン５０ａ（２）での処理数は０とする。なお、クレジット数は、仮想マシン５０ａ毎に異なってもよい。
【０２２１】
図１９（ａ）は、図１７に示した制御部４０ｇによる制御に基づいて、転送ユニット６０ｆ（１）の保持部２０ｂ（２）がパケットＰｂ１をサーバ２００ａ（１）に出力した後、パケットＰｂ２を保持する状態を示す。この場合、転送ユニット６０ｆ（１）のカウンタ部３１ｂ（１）は、調整部８０の制御に基づいて、処理数を１つ増加し、仮想マシン５０ａ（１）の処理数をクレジット数と等しい“３”にする。一方、カウンタ部３１ｂ（２）の処理数は、“０”に維持される。
【０２２２】
また、図１８に示した処理テーブルＰＴ２において、保持部２０ｂ（２）に保持されるチェインＩＤは“２”のパケットは、仮想マシン５０ａ（１）、５０ａ（２）の順番で処理される。このため、カウンタ部３１ｂ（２）の処理数がクレジット数より小さい場合でも、制御部４０ｇは、保持部２０ｂ（２）にパケットＰｂ２の出力を抑止する。換言すれば、例えば、制御部４０ｇは、カウンタ部３１ｂ（１）の処理数とクレジット数との差分と、カウンタ部３１ｂ（２）の処理数とクレジット数との差分との論理積（ＡＮＤ演算）求め、保持部２０ｂ（２）にパケットＰｂ２を出力させるか否かを判定する。図１９（ａ）では、例えば、カウンタ部３１ｂ（１）の処理数とクレジット数との差分の絶対値は“０”であり、カウンタ部３１ｂ（２）の処理数とクレジット数との差分の絶対値は“３”であり、これらの論理積は“０”である。この場合、制御部４０ｇは、保持部２０ｂ（１）、２０ｂ（２）等に対して、サーバ２００ａ（１）へのパケットの出力を抑止する指示を出力する。
【０２２３】
また、転送ユニット６０ｆ（１）の時間計測部Ｃ４は、保持部２０ｂ（２）がパケットＰｂ１を出力したことにより、パケットＰｂ１に対する経過時間の計測を開始する。サーバ２００ａ（１）は、受信したパケットＰｂ１のチェインＩＤが“２”であることから、ルーティングの通信処理を実行する仮想マシン５０ａ（１）にパケットＰｂ１を転送する。そして、仮想マシン５０ａ（１）は、パケットＰｂ１にルーティングの通信処理を開始する。
【０２２４】
次に、図１９（ｂ）において、時間計測部Ｃ４の経過時間が、処理テーブルＰＴ２における仮想マシン５０ａ（１）の処理時間（１秒）を経過した場合、調整部８０は、仮想マシン５０ａ（１）によるパケットＰｂ１の処理が終了したと判定する。そして、調整部８０は、処理テーブルＰＴ２の識別番号が“２”の第２処理領域Ａ２の仮想マシン５０ａを参照し、ＩＰｓｅｃの処理を実行する仮想マシン５０ａ（２）に、パケットＰｂ１が転送されたと判定する。この場合、調整部８０は、カウンタ部３１ｂ（１）を１つ減少させて、仮想マシン５０ａ（１）の処理数を“２”にする。一方、調整部８０は、カウンタ部３１ｂ（２）を１つ増加させて、仮想マシン５０ａ（２）の処理数を“１”にする。この結果、カウンタ部３１ｂ（１）の処理数がクレジット数より小さくなるため、論理積は１となる。この場合、制御部４０ｇは、パケットＰｂ２を保持部２０ｂ（１）からサーバ２００ａ（１）に出力させてもよいと判定する。あるいは、制御部４０ｇは、仮想マシン５０ａ（１）での処理が実行される、チェインＩＤが“１”や“４”等のパケットを保持する保持部２０ｂからサーバ２００ａ（１）にパケットを出力させてもよいと判定する。
【０２２５】
次に、図１９（ｃ）において、時間計測部Ｃ４の経過時間が、処理テーブルＰＴ２における仮想マシン５０ａ（１）、５０ａ（２）の処理時間の合計（３秒）を経過した場合、調整部８０は、仮想マシン５０ａ（２）でのパケットＰｂ１の処理が終了したと判定する。この場合、調整部８０は、カウンタ部３１ｂ（２）を１つ減少させて、仮想マシン５０ａ（２）の処理数を“０”にする。なお、調整部８０は、パケットＰｂ１をサーバ２００ａ（１）から受信した時に、カウンタ部３１ｂ（２）を１つ減少させてもよい。
【０２２６】
図２０は、図１７に示したパケット処理システムＳＹＳ７における処理時間の設定処理の一例を示す。なお、図２０に示したステップの処理のうち、図１４に示したステップと同一または同様の処理を示すものについては、同一のステップ番号を付し、詳細な説明を省略する。図２０に示した処理は、切替装置１００ｇ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ｆおよび制御部４０ｇが動作することで実現される。
【０２２７】
なお、図２０に示した処理は、転送ユニット６０ｆ（１）とサーバ２００ａ（１）との間で擬似パケットが転送される場合を示す。また、転送ユニット６０ｆ（２）−６０ｆ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間で擬似パケットが転送される場合についても、図２０に示した処理と同様の処理が実行される。
【０２２８】
また、図２０に示した処理は、パケット処理システムＳＹＳ７におけるパケット処理の前に実行される。しかしながら、図２０に示した処理は、パケット処理システムＳＹＳ７におけるパケット処理と並列に実行されてもよい。
【０２２９】
あるいは、図１８に示した処理テーブルＰＴ２を用いて算出される仮想マシン５０ａ（１）、５０ａ（２）の処理時間の合計時間と、時間計測部Ｃ４が計測するパケットＰｂ１の処理時間との時間差が、所定の時間差以上の場合、図２０の処理が実行されてもよい。すなわち、処理テーブルＰＴ２から算出される処理の合計時間と、時間計測部Ｃ４が計測する処理時間との時間差が所定の時間差以上の場合、パケット処理システムＳＹＳ７は、処理テーブルＰＴ２の仮想マシン５０ａ（１）、５０ａ（２）の処理時間を更新する。なお、処理テーブルＰＴ２から算出される処理の合計時間と、時間計測部Ｃ４が計測する処理時間との時間差が所定の時間差以上の場合、パケット処理システムＳＹＳ７は、処理テーブルＰＴ２の全ての仮想マシン５０ａの処理時間を更新してもよい。
【０２３０】
図１４に示した処理では、チェインＩＤ毎に、擬似パケットが生成され、処理時間が計測され、処理閾値が算出されたのに対して、図２０に示す処理では、仮想マシン毎に、擬似パケットが生成され、処理時間が計測され、処理時間の平均値が算出される。
【０２３１】
ステップＳ４０５では、パケット生成部２７ａは、調整部８０の制御に基づいて、各仮想マシン５０ａに処理させるための擬似パケットを生成する。ステップＳ４０５の処理が実行された後、切替装置１００ｇの処理は、ステップＳ４１０に移る。そして、切替装置１００ｇは、ステップＳ４１０の処理を実行した後、ステップＳ４２５の処理を実行する。
【０２３２】
ステップＳ４２５では、時間計測部Ｃ４は、ステップＳ４１０で出力された擬似パケットに対するサーバ２００ａ（１）の各仮想マシン５０ａでの通信処理の処理時間を計測する。ステップＳ４２５の処理が実行された後、切替装置１００ｇの処理は、ステップＳ４３０に移る。そして、切替装置１００ｇは、ステップＳ４３０の処理において、仮想マシン５０ａ毎の処理時間の計測が所定の回数以上の場合、ステップＳ４４５の処理を実行する。また、ステップＳ４３０の処理において、仮想マシン５０ａ毎の処理時間の計測が所定の回数より小さい場合、ステップＳ４０５に移行する。なお、所定の回数は、１回でもよい。
【０２３３】
ステップＳ４４５では、調整部８０は、所定の回数以上、ステップＳ４２０で計測された各仮想マシン５０ａの処理時間を用いて、各仮想マシン５０ａの処理時間の平均値を算出する。ステップＳ４４５の処理が実行された後、切替装置１００ｇの処理は、ステップＳ４５５に移る。
【０２３４】
ステップＳ４５５では、制御部４０ｇは、ステップＳ４４５で算出された各仮想マシン５０ａの処理時間の平均値を、処理テーブルＰＴ２に設定する。そして、切替装置１００ｇは、処理時間の設定処理を終了する。
【０２３５】
なお、制御部４０ｇは、各仮想マシン５０ａにおいて、ステップＳ４４５で算出した処理時間の平均値が、設定前の処理時間との差が所定の閾値より大きい場合、仮想マシン５０ａに設定されたクレジット数を１つ減少させる等の調整をしてもよい。そして、制御部４０ｇは、次回の処理時間の測定処理において算出した処理時間の平均値が、設定前の処理時間との差が所定の閾値以下の場合、仮想マシン５０ａに設定されたクレジット数を元に戻す等してもよい。すなわち、パケット処理システムＳＹＳ７は、サーバ２００ａ（１）の各仮想マシン５０ａにおける処理時間の変動が大きい場合、各仮想マシン５０ａのクレジット数を調整する。これにより、パケット処理システムＳＹＳ７は、切替装置１００ｇあるいはサーバ２００ａ（１）において発生した故障等により、サーバ２００ａ（１）でパケットが破棄されることを回避でき、パケットロスを抑制できる。
【０２３６】
図２１は、図１７に示した切替装置１００ｇにおける切替処理の一例を示す。図２１に示した処理は、切替装置１００ｇ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ｆおよび制御部４０ｇが動作することで実現される。
【０２３７】
なお、図２１に示した処理は、切替装置１００ｇの転送ユニット６０ｆ（１）とサーバ２００ａ（１）との間でパケットが転送される場合を示す。また、転送ユニット６０ｆ（２）−６０ｆ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間でパケットが転送される場合についても、図２１に示した処理と同一あるいは同様の処理が実行される。
【０２３８】
ステップＳ６００では、制御部４０ｇは、転送ユニット６０ｆ（１）がスイッチ部１１からパケットを受信したか否かを判定する。パケットを受信した場合、切替装置１００ｇの処理は、ステップＳ６１０に移る。一方、パケットを受信していない場合、切替装置１００ａの処理は、ステップＳ６３０に移る。
【０２３９】
ステップＳ６１０では、識別部１５ｃは、ステップＳ６００で受信したパケットに付加されるＶＬＡＮタグヘッダのＶＩＤと、図１８に示した処理テーブルＰＴ２とに基づいて、受信したパケットのチェインを識別する。そして、識別部１５ｃは、識別したチェインを示す情報として、図１８に示した処理テーブルＰＴ２の識別領域ＩＡの識別番号（チェインＩＤ）と、シリアル番号とをパケットに付加する。識別部１５ｃは、チェインＩＤと、シリアル番号とを付加したパケットを、ＤＥＭＵＸ２１に出力する。そして、切替装置１００ｇの処理は、ステップＳ６２０に移る。
【０２４０】
ステップＳ６２０では、ＤＥＭＵＸ２１は、ステップＳ６１０で出力されたパケットを、パケットに付加されたチェインＩＤに対応する保持部２０ｂに振り分けて、各保持部２０ｂは、同じチェインＩＤが付加されたパケットを保持する。そして、切替装置１００ｇの処理は、ステップＳ６３０に移る。
【０２４１】
ステップＳ６３０では、制御部４０ｇは、各保持部２０ｂ（すなわち、チェインＩＤ）がパケットを保持しているか否かを判定する。そして、保持部２０ｂがパケットを保持している場合、切替装置１００ｇの処理は、ステップＳ６４０に移る。一方、保持部２０ｂがパケットを保持していない場合、切替装置１００ｇの処理は、ステップＳ６００に移る。
【０２４２】
ステップＳ６４０は、制御部４０ｇは、処理テーブルＰＴ２を参照し、チェインＩＤが示す通信処理の内容を実行するサーバ２００ａ（１）の各仮想マシン５０ａ（カウンタ部３１ｂ）のいずれかの処理数が、クレジット数以上かを判定する。チェインＩＤが示す通信処理の内容を実行するいずれかの仮想マシン５０ａの処理数が、クレジット数以上の場合、制御部４０ｇは、チェインＩＤのパケットを保持していると判定された保持部２０ｂに対して、パケットの出力を抑止する指示を出力する。この場合、切替装置１００ｇの処理は、ステップＳ６００に戻る。一方、チェインＩＤが示す通信処理の内容を実行する全ての仮想マシン５０ａの処理数が、クレジット数より小さい場合、切替装置１００ｇの処理は、ステップＳ６５０に移る。
【０２４３】
ステップＳ６５０では、ステップＳ６４０で判定されたチェインＩＤのパケットを保持する保持部２０ｂは、パケットをサーバ２００ａ（１）に出力する。この場合、時間計測部Ｃ４は、出力されたパケットの経過時間の計測を開始する。そして、切替装置１００ｇの処理は、ステップＳ６６０に移る。
【０２４４】
ステップＳ６６０では、調整部８０は、ステップＳ６５０で出力されたパケットのチェインＩＤと、時間計測部Ｃ４が計測する経過時間と、処理テーブルＰＴ２とに基づいて、パケットを処理中の仮想マシン５０ａを特定する。このために、調整部８０は、変数Ｓを“１”に初期化し、処理テーブルＰＴ２の第１処理領域Ａ１に格納される情報から順次に参照する。そして、切替装置１００ｇの処理は、ステップＳ６７０に移る。
【０２４５】
ステップＳ６７０では、調整部８０は、第Ｓ処理領域に格納される仮想マシン５０ａのカウンタ部３１ｂに、処理数を１つ増加させる。そして、切替装置１００ｇの処理は、ステップＳ６８０に移る。
【０２４６】
ステップＳ６８０では、調整部８０は、時間計測部Ｃ４が計測する経過時間が、第１処理領域Ａ１から第Ｓ処理領域に格納される処理時間を合計した時間以上となったか否かを判定する。時間計測部Ｃ４が計測する経過時間が、第１処理領域Ａ１から第Ｓ処理領域までの処理時間を合計した時間以上の場合、切替装置１００ｇの処理は、ステップＳ６９０に移る。一方、経過時間が、第１処理領域Ａ１から第Ｓ処理領域までの処理時間を合計した時間より短い場合、切替装置１００ｇは、経過時間が合計した時間以上となるまで、ステップＳ６８０の処理を繰り返す。
【０２４７】
ステップＳ６９０では、調整部８０は、第Ｓ処理領域に格納される仮想マシン５０ａのカウンタ部３１ｂに、処理数を１つ減少させる。そして、切替装置１００ｇの処理は、ステップＳ７００に移る。
【０２４８】
ステップＳ７００では、調整部８０は、ステップＳ６４０で出力されたパケットのチェインＩＤと、処理テーブルＰＴ２とに基づいて、第（Ｓ＋１）処理領域に仮想マシン５０ａおよび処理時間を示す情報が格納されているか否かを判定する。第（Ｓ＋１）処理領域に情報が格納されている場合、調整部８０は、変数Ｓの値を１つ増加する。そして、切替装置１００ｇの処理は、ステップＳ６７０に移る。一方、第（Ｓ＋１）処理領域に情報が格納されていない場合、パケット処理システムＳＹＳ７は、パケット処理を終了する。
【０２４９】
そして、切替装置１００ｇは、図２１に示した処理を繰り返し実行する。なお、ステップＳ６００からＳ６５０の処理と、ステップＳ６６０からＳ７００の処理とは、並列に実行されてもよい。
【０２５０】
以上、図１７から図２１に示した実施形態では、調整部８０は、保持部２０ｂが出力するパケットのチェインＩＤと、時間計測部Ｃ４が計測する経過時間と、処理テーブルＰＴ２とに基づいて、各パケットがいずれの仮想マシン５０ａで処理されているかを特定する。調整部８０は、特定の結果に基づいて、各カウンタ部３１ｂにおける、各仮想マシン５０ａが実行中のパケットの処理数を調整する。そして、制御部４０ｇは、各パケットのチェインＩＤが示す通信処理の内容を実行する各仮想マシン５０ａの処理数と、クレジット数との比較に基づいて、保持部２０ｂからサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ｇは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｇにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ７は、切替装置１００ｇによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ７は、パケットロスを抑制できる。
【０２５１】
また、各カウンタ部３１ｂは、各仮想マシン５０ａにおける処理数をカウントするため、チェインＩＤが示す通信処理の内容が変更される場合でも、パケット処理システムＳＹＳ７は、従来と比べて柔軟に対応させることができる。
【０２５２】
図２２は、切替装置およびパケット処理システムの別の実施形態を示す。図１７で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【０２５３】
図２２に示したパケット処理システムＳＹＳ８は、切替装置１００ｈおよびＮ個のサーバ２００ａを有する。切替装置１００ｈは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【０２５４】
切替装置１００ｈは、スイッチ部１１、Ｎ個の転送ユニット６０ｇ（６０ｇ（１）−６０ｇ（Ｎ））、制御部４０ｈおよび記憶部７０を有する。
【０２５５】
転送ユニット６０ｈ（１）は、識別部１５ｃ、ＤＥＭＵＸ２１、Ｌ個の保持部２０ｂ、ＭＵＸ２２、ＩＦ部２５ａ、パケット生成部２７ａ、Ｍ個のカウンタ部３１ｂ、Ｊ個の合流監視部３３（３３（１）−３３（Ｊ））、時間計測部Ｃ４および調整部８０ａを有する。なお、転送ユニット６０ｇ（２）−６０ｇ（Ｎ）の各々についても、図２２に示した転送ユニット６０ｇ（１）と同一または同様の要素を有する。
【０２５６】
調整部８０ａは、図１７に示した調整部８０と同様に、時間計測部Ｃ４が計測した各パケットの経過時間と、各パケットのチェインＩＤと、処理テーブルＰＴ２とを用いて、各パケットがいずれの仮想マシン５０ａで処理されているかを特定する。調整部８０ａは、特定した結果に基づいて、各カウンタ部３１ｂが示す各仮想マシン５０ａの処理数を調整する。また、調整部８０ａは、特定した結果に基づいて、合流監視部３３を制御する。
【０２５７】
合流監視部３３は、アップダウンカウンタ等である。例えば、合流監視部３３（１）は、調整部８０ａによる特定の結果に基づいて、仮想マシン５０ａ（２）から仮想マシン５０ａ（１）に転送されるパケットを監視する。即ち、合流監視部３３（１）は、現在の時刻より仮想マシン５０ａ（１）の処理時間（例えば、１秒）前の時刻から仮想マシン５０ａ（２）の処理時間（例えば、２秒）前の時刻までに、仮想マシン５０ａ（２）が処理を開始したパケットの処理数をカウントする。また、合流監視部３３（２）−３３（Ｊ）の各々は、処理テーブルＰＴ２に基づいて、合流監視部３３（１）と同様に、転送元の仮想マシン５０ａから、転送元の仮想マシン５０ａより処理時間が短い転送先の仮想マシン５０ａに転送されるパケットを監視する。すなわち、合流監視部３３（２）−３３（Ｊ）の各々は、現在の時刻より転送先の仮想マシン５０ａの処理時間前から、転送元の仮想マシン５０ａの処理時間前の範囲で、転送元の仮想マシン５０ａが処理を開始したパケットの処理数をカウントする。合流監視部３３の動作については、図２３および図２４で説明する。
【０２５８】
制御部４０ｈは、切替装置１００ｈに含まれるプロセッサ等により実現され、記憶部７０に記憶された制御プログラムを実行することで、切替装置１００ｈの動作を制御する。そして、合流監視部３３の監視に基づいて、制御部４０ｈは、仮想マシン５０ａ（１）等において、保持部２０ｂ（１）等から出力されるパケットと、仮想マシン５０ａ（２）等からのパケットとの衝突を回避するように、各保持部２０ｂを制御する。制御部４０ｈの動作については、図２３および図２４で説明する。
【０２５９】
なお、制御部４０ｈは、転送ユニット６０ｇ（２）−６０ｇ（Ｎ）についても、転送ユニット６０ｇ（１）と同一または同様の制御を実行する。
【０２６０】
なお、パケット処理システムＳＹＳ８は、図２２に示した例に限定されない。例えば、制御部４０ｈは、各転送ユニット６０ｇに設けられ、転送ユニット６０ｇの各々の動作を制御してもよい。また、記憶部７０は、転送ユニット６０ｇ毎の処理テーブルＰＴ２を記憶してもよい。
【０２６１】
ところで、図１７に示したパケット処理システムＳＹＳ７の制御部４０ｇは、図１９（ａ）に示す状況のように、仮想マシン５０ａ（１）の処理数がクレジット数と等しい場合、仮想マシン５０ａ（１）の処理を含むチェインＩＤのパケットの出力を抑止する。
【０２６２】
しかしながら、図１８に示した処理テーブルＰＴ２では、仮想マシン５０ａ（２）の処理時間は、仮想マシン５０ａ（１）の処理時間の１秒より長い、２秒である。また、図１９（ａ）に示した状況では、仮想マシン５０ａ（２）の処理量は、クレジット数より小さい。このことから、図１９（ａ）の状況で、例えば、保持部２０ｂ（４）によりチェインＩＤが４のパケットが出力された場合、最初の仮想マシン５０ａ（２）の処理が終了する２秒後では、仮想マシン５０ａ（１）の処理数は、クレジット数より小さいと推定される。すなわち、図１９（ａ）の状況において、チェインＩＤが“４”のパケットが出力された場合でも、仮想マシン５０ａ（２）のＩＰｓｅｃの処理と、仮想マシン５０ａ（１）のルーティングの処理との順番で、チェインＩＤが“４”のパケットは正常に処理される。そして、システム全体におけるパケット処理の効率化を図ることができる。
【０２６３】
しかしながら、図１９（ａ）に示す状況において、例えば、保持部２０ｂ（４）が３つのパケットを仮想マシン５０ａ（２）に出力した場合、仮想マシン５０ａ（２）の処理時間である２秒後では、仮想マシン５０ａ（１）は、３つのパケットで占有される。この場合、チェインＩＤが１または２等の最初に仮想マシン５０ａ（１）で処理されるパケットを保持する保持部２０ｂは、パケットを出力することが困難となる。あるいは、チェインＩＤが１等のパケットを保持する保持部２０ｂがパケットを出力した場合、チェインＩＤが１等のパケットは、仮想マシン５０ａ（２）から転送される３つのパケットと、仮想マシン５０ａ（１）で合流し、互いに衝突してしまう。そして、サーバ２００ａ（１）は、仮想マシン５０ａ（１）の処理数がクレジット数より小さくなるように、一部のパケットを破棄することがある。この結果、システム全体のパケットの処理効率が低下してしまう。
【０２６４】
図２３および図２４は、図２２に示したパケット処理システムＳＹＳ８におけるパケット転送の動作例を模式的に示す。図２３および図２４に示す例では、各仮想マシン５０ａの処理可能な最大のパケット数（クレジット数）は“３”とする。なお、クレジット数は、仮想マシン５０ａ毎に異なってもよい。また、図２３および図２４に示す例では、保持部２０ｂ（１）は、チェインＩＤが“１”で、最初に仮想マシン５０ａ（１）で処理されるパケットＰｃ２を有する。また、図２３および図２４に示す例では、保持部２０ｂ（４）は、チェインＩＤが“４”で、仮想マシン５０ａ（２）、５０ａ（１）の順番で処理されるパケットを保持する。
【０２６５】
なお、図２３（ａ）に示す状況の直前では、仮想マシン５０ａ（１）が処理中のパケット数（処理数）を示すカウンタ部３１ｂ（１）は“３”とし、仮想マシン５０ａ（２）が処理中の処理数を示すカウンタ部３１ｂ（２）は“０”とする。さらに、合流監視部３３（１）が示す処理数は、“０”とする。
【０２６６】
図２３（ａ）において、カウンタ部３１ｂ（２）の処理数“０”がクレジット数より小さいことから、制御部４０ｈは、保持部２０ｂ（４）に対して、パケットＰｃ１をサーバ２００ａ（１）に出力させる指示を出力する。そして、サーバ２００ａ（１）は、チェインＩＤに基づいて、パケットＰｃ１を仮想マシン５０ａ（２）に転送する。この結果、カウンタ部３１ｂ（２）は、仮想マシン５０ａ（２）の処理数を１つ増加し、“１”とする。一方、図２３（ａ）において、カウンタ部３１ｂ（１）の処理数“３”がクレジット数と等しい。このため、図２２に示した制御部４０ｈは、保持部２０（１）に対して、サーバ２００ａ（１）へのパケットＰｃ２の出力を抑止する指示を出力する。
【０２６７】
次に、図２３（ｂ）では、時間計測部Ｃ４が計測する経過時間が、パケットＰｃ１の出力から１秒（仮想マシン５０ａ（１）の処理時間）より短い時点での状況を示す。図２３（ｂ）において、例えば、仮想マシン５０ａ（１）において、１つのパケットに対する処理が終了する。これにより、カウンタ部３１ｂ（１）は、仮想マシン５０ａ（１）の処理数を１つ減少し、“２”とする。また、図２３（ｂ）の状況における時刻より１秒前の時刻から２秒前の時刻の範囲で、調整部８０ａによる特定の結果から、仮想マシン５０ａ（２）が処理を開始したパケットが１つある場合、合流監視部３３（１）は、処理数を１つ増加し、“１”とする。
【０２６８】
一方、制御部４０ｈは、カウンタ部３１ｂ（１）の処理数と、合流監視部３３（１）が示す処理数とに基づいて、保持部２０ｂ（１）にパケットＰｃ２を出力させるか否かを判定する。図２３（ｂ）に示した例では、合流監視部３３（１）が示す処理数は、“１”である。すなわち、パケットＰｃ２が出力された場合、次の１秒（仮想マシン５０ａ（１）の処理時間）が経過するまでに、仮想マシン５０ａ（２）から転送され、かつパケットＰｃ２と仮想マシン５０ａ（１）で合流するパケットが、１つあることを示す。そして、合流した場合、仮想マシン５０ａ（１）において、処理中の２つのパケットのうちの少なくとも１つのパケットの処理が終了しない場合、制御部４０ｈは、仮想マシン５０ａ（２）からの１つのパケットとパケットＰｃ２とが衝突すると判定する。この場合、制御部４０ｈは、サーバ２００ａ（１）へのパケットＰｃ２の出力を抑止する指示を、保持部２０ｂ（１）に出力する。
【０２６９】
なお、例えば、仮想マシン５０ａ（２）に対して、仮想マシン５０ａ（２）の処理時間より長い他の仮想マシン５０ａからパケットが転送される場合、図２３（ａ）において、制御部４０ｈは、図２３（ｂ）の説明と同様の判定処理を実行する。
【０２７０】
次に、図２４（ａ）では、時間計測部Ｃ４が計測する経過時間が、パケットＰｃ１が出力されてから１秒（仮想マシン５０ａ（１）の処理時間）以上、かつ２秒（仮想マシン５０ａ（２）の処理時間）より短い場合の状況を示す。例えば、仮想マシン５０ａ（１）では、図２３（ｂ）において処理していた２つのパケットの処理が終了し、仮想マシン５０ａ（２）から転送された１つのパケットを処理している。この場合、カウンタ部３１ｂ（１）は、仮想マシン５０ａ（１）の処理数を“１”とカウントする。また、図２４（ａ）の状況の時刻より１秒前から２秒前の範囲で、仮想マシン５０ａ（２）が処理を開始したパケットが１つある場合、合流監視部３３（１）は、処理数を“１”にする。
【０２７１】
この場合、カウンタ部３１ｂ（１）の処理数と、合流監視部３３（１）が示す処理数との合計は、仮想マシン５０ａ（１）のクレジット数より小さくなる。すなわち、制御部４０ｈは、パケットＰｃ２を保持部２０ｂ（１）に出力させた場合でも、次の１秒が経過するまでに仮想マシン５０ａ（２）から転送される１つのパケットと、パケットＰｃ２とが、仮想マシン５０ａ（１）で衝突しないと判定する。
【０２７２】
図２４（ｂ）において、制御部４０ｈは、保持部２０ｂ（１）に対して、パケットＰｃ２をサーバ２００ａ（１）に出力させる指示を出力する。そして、仮想マシン５０ａ（２）からの１つのパケットと、パケットＰｃ２とを、仮想マシン５０ａ（１）が受信した場合、カウンタ部３１ｂ（１）は、仮想マシン５０ａ（１）の処理数を２つ増加し、“３”にする。一方、図２４（ｂ）に示す状況の時刻より１秒前から２秒前の範囲において、仮想マシン５０ａ（２）が処理を開始したパケットがない場合、合流監視部３３（１）は、処理数を１つ減少し、“０”にする。
【０２７３】
図２５および図２６は、図２２に示した切替装置１００ｈにおける切替処理の一例を示す。なお、図２５および図２６に示したステップの処理のうち、図２１に示したステップと同一または同様の処理を示すものについては、同一のステップ番号を付し、詳細な説明を省略する。図２５および図２６に示した処理は、切替装置１００ｈ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ｇおよび制御部４０ｈが動作することで実現される。
【０２７４】
なお、図２５および図２６に示した処理は、転送ユニット６０ｇ（１）とサーバ２００ａ（１）との間でパケットが転送される場合を示す。また、転送ユニット６０ｇ（２）−６０ｇ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間でパケットが伝送される場合についても、図２５および図２６に示した処理と同様の処理が実行される。
【０２７５】
切替装置１００ｈは、ステップＳ６００からステップＳ６４０の処理を実行する。なお、ステップＳ６４０では、チェインＩＤが示す通信処理の内容を実行する仮想マシン５０ａのいずれかの処理数が、クレジット数以上の場合、切替装置１００ｈの処理は、ステップＳ８００に移る。一方、チェインＩＤが示す通信処理の内容を実行する全ての仮想マシン５０ａの処理数が、クレジット数より小さい場合、切替装置１００ｈの処理は、ステップＳ６５０に移る。
【０２７６】
ステップＳ８００では、制御部４０ｈは、処理テーブルＰＴ２を参照して、ステップＳ６１０で識別されたチェインＩＤ（識別番号）の第１処理領域Ａ１に格納された仮想マシン５０ａにおいて、他の仮想マシン５０ａからのパケットが合流するか否かを判定する。以下、第１処理領域Ａ１の仮想マシン５０ａは、１番目の仮想マシン５０ａとも称される。１番目の仮想マシン５０ａで、他の仮想マシン５０ａからのパケットが合流する場合、切替装置１００ｈの処理は、ステップＳ８２０に移る。１番目の仮想マシン５０ａで、他の仮想マシン５０ａからのパケットが合流する場合とは、処理テーブルＰＴ２の第２処理領域Ａ２等の領域に、１番目の仮想マシン５０ａを示す情報が格納されている場合である。
【０２７７】
一方、１番目の仮想マシン５０ａで、他の仮想マシン５０ａからのパケットが合流しない場合、切替装置１００ｈの処理は、ステップＳ８１０に移る。
【０２７８】
ステップＳ８１０では、制御部４０ｈは、１番目の仮想マシン５０ａの処理数が、クレジット数以上か否かを判定する。１番目の仮想マシン５０ａの処理数が、クレジット数以上の場合、制御部４０ｈは、ステップＳ６１０で識別されたチェインＩＤのパケットを保持する保持部２０ｂに対して、サーバ２００ａ（１）へのパケットの出力を抑制する。この場合、切替装置１００ｈの処理は、ステップＳ６００に移る。一方、１番目の仮想マシン５０ａの処理数が、クレジット数より小さい場合、切替装置１００ｈの処理は、ステップＳ６５０に移る。
【０２７９】
ステップＳ８２０では、制御部４０ｈは、他の仮想マシン５０ａからのパケットが合流する、１番目の仮想マシン５０ａの処理数が、クレジット数以上か否かを判定する。１番目の仮想マシン５０ａの処理数が、クレジット数以上の場合、制御部４０ｈは、ステップＳ６１０で識別されたチェインＩＤのパケットを保持する保持部２０ｂに対して、サーバ２００ａ（１）へのパケットの出力を抑制させる指示を出力する。この場合、切替装置１００ｈの処理は、ステップＳ６００に移る。一方、１番目の仮想マシン５０ａの処理数が、クレジット数より小さい場合、切替装置１００ｈの処理は、ステップＳ８３０に移る。
【０２８０】
ステップＳ８３０では、制御部４０ｈは、１番目の仮想マシン５０ａの処理時間より長く、かつ１番目の仮想マシン５０ａにパケットを転送する各仮想マシン５０ａの合流監視部３３の処理数の全てと、１番目の仮想マシン５０ａの処理数とを合計する。そして、制御部４０ｈは、合計した値が１番目の仮想マシン５０ａのクレジット数以上か否かを判定する。合計した値が１番目の仮想マシン５０ａのクレジット数以上の場合、制御部４０ｈは、ステップＳ６１０で識別されたチェインＩＤのパケットを保持する保持部２０ｂに対して、サーバ２００ａ（１）へのパケットの出力を抑制する。この場合、切替装置１００ｈの処理は、ステップＳ６００に移る。一方、合計した値が１番目の仮想マシン５０ａのクレジット数より小さい場合、切替装置１００ｈの処理は、ステップＳ６５０に移る。
【０２８１】
切替装置１００ｈは、ステップＳ６５０、図２６に示したステップＳ６６０からステップＳ７００、およびステップＳ８４０の処理を実行する。なお、切替装置１００ｈは、ステップＳ６６０の処理を実行した後、ステップＳ６７０からステップＳ６９０の処理と、ステップＳ８４０の処理とを並列に実行する。
【０２８２】
ステップＳ８４０では、各合流監視部３３は、時間計測部Ｃ４が計測する経過時間に応じて、現在の時刻より転送先の仮想マシン５０ａの処理時間前から転送元の仮想マシン５０ａの処理時間前までに、転送元の仮想マシン５０ａが処理を開始した処理数を更新する。
【０２８３】
そして、切替装置１００ｈは、図２５および図２６に示した処理を繰り返し実行する。
【０２８４】
なお、ステップＳ８４０の処理は、ステップＳ６７０からステップＳ６９０の処理と並列して実行されたが、ステップＳ６００からステップＳ７００の処理と並列に実行されてもよい。
【０２８５】
以上、図２２から図２６に示した実施形態では、調整部８０ａは、保持部２０ｂが出力するパケットのチェインＩＤと、時間計測部Ｃ４の経過時間と、処理テーブルＰＴ２とに基づいて、各パケットがいずれの仮想マシン５０ａで処理されているかを特定する。調整部８０ａは、特定の結果に基づいて、各カウンタ部３１ｂがカウントする、各仮想マシン５０ａが実行中のパケットの処理数を調整する。そして、制御部４０ｈは、各仮想マシン５０ａにおける処理数とクレジット数との比較に基づいて、各保持部２０ｂからサーバ２００ａへのパケットの出力を制御する。すなわち、切替装置１００ｈは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。これにより、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｈにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ８は、切替装置１００ｈによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ８は、パケットロスを抑制できる。
【０２８６】
また、合流監視部３３は、調整部８０ａの特定の結果に基づいて、転送元の仮想マシン５０ａから、転送元の仮想マシン５０ａよりパケットの処理時間が短い転送先の仮想マシン５０ａに転送されるパケットを監視する。そして、合流監視部３３は、現在の時刻より転送先の仮想マシン５０ａの処理時間前から、転送元の仮想マシン５０ａの処理時間前の範囲で、転送元の仮想マシン５０ａが処理を開始したパケットの処理数をカウントする。制御部４０ｈは、各仮想マシン５０ａの処理数と、処理テーブルＰＴ２と、合流監視部３３の処理数とに基づいて、パケット処理においてパケット同士の衝突が発生するかを判定する。そして、制御部４０ｈは、パケット同士の衝突が発生しないと判定した場合、保持部２０ｂにパケットをサーバ２００ａに出力させる指示を出力する。これにより、パケット処理システムＳＹＳ８は、図１７に示したパケット処理システムＳＹＳ７と比べて、サーバ２００ａ（１）の各仮想マシン５０ａを効率的に利用することができ、パケット処理の効率化を図ることができる。
【０２８７】
また、各カウンタ部３１ｂは、各仮想マシン５０ａにおける処理数をカウントするため、チェインＩＤが示す通信処理の内容が変更される場合でも、パケット処理システムＳＹＳ８は、従来と比べて柔軟に対応させることができる。
【０２８８】
図２７は、切替装置およびパケット処理システムの別の実施形態を示す。図１７で説明した要素と同一または同様の機能を有する要素については、同一または同様の符号を付し、これらについては、詳細な説明を省略する。
【０２８９】
図２７に示したパケット処理システムＳＹＳ９は、切替装置１００ｉおよびＮ個のサーバ２００ａを有する。切替装置１００ｉは、有線または無線を介して、Ｎ個のサーバ２００ａおよびネットワークＮＷと接続される。
【０２９０】
切替装置１００ｉは、スイッチ部１１、Ｎ個の転送ユニット６０ｈ（６０ｈ（１）−６０ｈ（Ｎ））、制御部４０ｉおよび記憶部７０を有する。記憶部７０は、図１７に示した処理テーブルＰＴ２の代わりに、処理テーブルＰＴ３を格納する記憶領域を有する。処理テーブルＰＴ３については、図２８で説明する。
【０２９１】
転送ユニット６０ｈ（１）は、識別部１５ｃ、ＤＥＭＵＸ２１、Ｌ個の保持部２０ｂ（２０ｂ（１）−２０ｂ（Ｌ））、ＭＵＸ２２、帯域制御部２８、ＩＦ部２５ａ、Ｍ個のカウンタ部３１ｃ（３１ｃ（１）−３１ｃ（Ｍ））およびレート計測部Ｃ５を有する。なお、転送ユニット６０ｈ（２）−６０ｈ（Ｎ）の各々についても、図２７に示した転送ユニット６０ｈ（１）と同一または同様の要素を有する。
【０２９２】
帯域制御部２８は、例えば、ＱｏＳ（Quality of Service）等の優先度に応じて帯域を割り当てるシェイピング等の処理に基づいて、保持部２０ｂから出力されるパケットの帯域を制御する。例えば、帯域制御部２８は、処理テーブルＰＴ３に格納されている各仮想マシン５０ａの処理レートと、保持部２０ｂから出力されるパケットのチェインＩＤが示す通信処理の内容とに基づいて、帯域を制御する。なお、帯域制御部２８の動作については、図２８で説明する。
【０２９３】
カウンタ部３１ｃ（１）−３１ｃ（Ｍ）は、アップダウンカウンタ等であり、仮想マシン５０ａ（１）−５０ａ（Ｍ）の各々において処理されているパケットの数（処理数）をカウントする。例えば、各カウンタ部３１ｃは、各保持部２０ｂがサーバ２００ａ（１）にパケットを出力する度に、出力されたパケットのチェインＩＤが示す通信処理の内容に含まれる仮想マシン５０ａを示す情報に基づいて、各仮想マシン５０ａの処理数を１つ増加させる。また、各カウンタ部３１ｃは、サーバ２００ａ（１）から処理後のパケットを受信する度に、処理後のパケットのチェインＩＤが示す通信処理の内容に含まれる仮想マシン５０ａを示す情報に基づいて、各仮想マシン５０ａの処理数を１つ減少させる。
【０２９４】
レート計測部Ｃ５は、仮想マシン５０ａ毎のパケットの出力レートおよび処理レートをそれぞれ計測する。レート計測部Ｃ５は、切替装置１００ｉに含まれるクロック回路等からの時刻を示す情報を用いて、保持部２０ｂからサーバ２００ａ（１）に出力される単位時間（例えば、１秒等）当たりのパケット数を出力レートとして計測する。また、レート計測部Ｃ５は、サーバ２００ａ（１）から受信する処理後のパケットのチェインＩＤが示す通信処理の内容に基づいて、各仮想マシン５０ａで処理される単位時間当たりのパケットの数を、処理レートとしてそれぞれ算出する。そして、レート計測部Ｃ５は、算出した各仮想マシン５０ａの処理レートを、処理テーブルＰＴ３に格納する。レート計測部Ｃ５の動作については、図２９で説明する。
【０２９５】
なお、サーバ２００ａ（１）に出力されたパケットは、ネットワークＮＷから受信したものでもよく、パケット生成部２７ａにより生成された擬似パケットでもよい。また、擬似パケットを用いる場合、レート計測部Ｃ５は、各単位時間において、仮想マシン５０ａのうちのいずれかの仮想マシン５０ａで処理される擬似パケットを、パケット生成部２７ａに生成させて、各仮想マシン５０ａの処理レートを計測してもよい。
【０２９６】
制御部４０ｉは、例えば、切替装置１００ｉに含まれるプロセッサ等が、記憶部７０に記憶された制御プログラムを実行することにより実現され、切替装置１００ｉの動作を制御する。そして、制御部４０ｉは、各保持部２０ｂによるサーバ２００ａ（１）へのパケットの出力を、各カウンタ部３１ｃがカウントする各仮想マシン５０ａの処理数と、レート計測部Ｃ５が計測する各仮想マシン５０ａの出力レート及び処理レートとに基づいて制御する。
【０２９７】
なお、制御部４０ｉは、転送ユニット６０ｈ（２）−６０ｈ（Ｎ）についても、転送ユニット６０ｈ（１）と同一または同様の制御を実行する。
【０２９８】
なお、パケット処理システムＳＹＳ９は、図２７に示した例に限定されない。例えば、制御部４０ｉは、各転送ユニット６０ｈに設けられ、転送ユニット６０ｈの各々の動作を制御してもよい。また、記憶部７０は、転送ユニット６０ｈ毎の処理テーブルＰＴ３を記憶してもよい。
【０２９９】
図２８は、図２７に示した処理テーブルＰＴ３の一例を示す。処理テーブルＰＴ３は、図１８に示した処理テーブルＰＴ２と同様に、複数のエントリーを有する。各エントリーは、識別番号を保持する識別領域ＩＡと、１番目の処理からｚ番目の処理の内容を保持する第１処理領域Ａ１から第ｚ処理領域Ａｚとをそれぞれ含む。
【０３００】
識別番号の領域（識別領域ＩＡ）には、図１８に示した処理テーブルＰＴ２と同様に、パケットが所属するＶＬＡＮを識別するＶＩＤの値が識別番号として格納される。ＶＩＤの値は、ネットワークＮＷから受信するパケットに付加されるＶＬＡＮタグヘッダに含まれる。なお、識別領域ＩＡには、ＶＩＤの代わりに、受信するパケットの送信先あるいは送信元を示すＩＰアドレスやＭＡＣアドレス等でもよい。
【０３０１】
第１処理領域Ａ１から第ｚ処理領域Ａｚの各々は、通信処理を実行する仮想マシン５０ａを示す情報と、処理レートを示す情報とを保持する。第１処理領域Ａ１から第ｚ処理領域Ａｚの各々に保持される情報は、ＶＩＤ（識別番号）を有するパケット毎に実行される通信処理の内容に応じた順番で保持される。例えば、識別番号が“１”のパケットに実行される通信処理が、仮想マシン５０ａ（１）によるルーティングの処理の場合、図１８に示した処理テーブルＰＴ２と同様に、第１処理領域Ａ１には、仮想マシン５０ａ（１）を示す情報が格納される。また、第１処理領域Ａ１には、レート計測部Ｃ５が計測した、仮想マシン５０ａ（１）の処理レート（例えば、１０メガｐｐｓ（packet per second））が格納される。なお、図２８に示した処理テーブルＰＴ３では、図１８に示した処理テーブルＰＴ２と同様に、情報が格納されていない領域または格納されている情報が無効な領域は、“−”で示す。例えば、識別番号が１のパケットに対する処理は、ルーティングの処理のみであるため、２番目の処理からｚ番目の処置までの各領域には、情報が格納されない。
【０３０２】
図２９は、図２７に示したパケット処理システムＳＹＳ９における処理レートの設定処理の一例を示す。なお、図２９に示したステップの処理のうち、図２０に示したステップと同一または同様の処理を示すものについては、同一のステップ番号を付し、詳細な説明を省略する。図２９に示した処理は、切替装置１００ｉ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ｈおよび制御部４０ｉが動作することで実現される。
【０３０３】
なお、図２９に示した処理は、転送ユニット６０ｈ（１）とサーバ２００ａ（１）との間で擬似パケットが転送される場合を示す。また、転送ユニット６０ｈ（２）−６０ｈ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間で擬似パケットが転送される場合についても、図２９に示した処理と同様の処理が実行される。
【０３０４】
また、図２９に示した処理は、パケット処理システムＳＹＳ９におけるパケット処理の前に実行される。しかしながら、図２９に示した処理は、パケット処理システムＳＹＳ９におけるパケット処理と並列に実行されてもよい。
【０３０５】
ステップＳ４０７では、パケット生成部２７ａは、制御部４０ｉの制御に基づいて、仮想マシン５０ａのうちの１つの仮想マシン５０ａに処理させる擬似パケットを生成する。ステップＳ４０７の処理が実行された後、切替装置１００ｉの処理は、ステップＳ４１０に移る。そして、切替装置１００ｉは、ステップＳ４１０の処理を実行した後、ステップＳ４３５の処理を実行する。
【０３０６】
ステップＳ４３５では、レート計測部Ｃ５は、切替装置１００ｉのクロック回路等から出力される時間を示す情報を用いて、ステップＳ４１０で１つ目の擬似パケットが出力されてから、１秒等の単位時間が経過したか否かを判定する。単位時間が経過した場合、切替装置１００ｉの処理は、ステップＳ４４７に移る。一方、単位時間が経過していない場合、切替装置１００ｉの処理は、ステップＳ４０７に移る。
【０３０７】
ステップＳ４４７では、レート計測部Ｃ５は、ステップＳ４３５で単位時間が経過するまでに、サーバ２００ａ（１）から受信した処理後の擬似パケットの数に基づいて、仮想マシン５０ａの処理レートを算出する。そして、切替装置１００ｇの処理は、ステップＳ４５７に移る。
【０３０８】
ステップＳ４５７では、制御部４０ｉは、ステップＳ４４７で算出された仮想マシン５０ａの処理レートを、処理テーブルＰＴ３に設定する。そして、切替装置１００ｉの処理は、ステップＳ４６０に移る。
【０３０９】
ステップＳ４６０では、レート計測部Ｃ５は、次の仮想マシン５０ａの処理レートを計測するか否かを判定する。次の仮想マシン５０ａの処理レートを計測する場合、切替装置１００ｉの処理は、ステップＳ４０７に移る。一方、全ての仮想マシン５０ａの処理レートを計測した場合、切替装置１００ｉは、設定処理を終了する。
【０３１０】
なお、制御部４０ｉは、各仮想マシン５０ａにおいて、ステップＳ４４７で算出した処理レートが、設定前の処理レートとの差が所定の閾値より大きい場合、仮想マシン５０ａに設定されたクレジット数を１つ減少させる等の調整をしてもよい。そして、制御部４０ｉは、次回の処理時間の測定処理において算出した処理レートが、設定前の処理レートとの差が所定の閾値以下の場合、仮想マシン５０ａに設定されたクレジット数を元に戻す等の処理をしてもよい。すなわち、パケット処理システムＳＹＳ９は、サーバ２００ａ（１）の各仮想マシン５０ａにおける処理レートの変動が大きい場合、各仮想マシン５０ａのクレジット数を調整する。これにより、パケット処理システムＳＹＳ９は、切替装置１００ｉあるいはサーバ２００ａ（１）において発生した故障等により、サーバ２００ａ（１）でパケットが破棄されることを回避でき、パケットロスを抑制できる。
【０３１１】
図３０は、図２７に示した切替装置１００ｉにおける切替処理の一例を示す。なお、図３０に示したステップの処理のうち、図２１に示したステップと同一または同様の処理を示すものについては、同一のステップ番号を付し、詳細な説明を省略する。図３０に示した処理は、切替装置１００ｉ内に搭載されるスイッチ部１１、Ｎ個の転送ユニット６０ｈおよび制御部４０ｉが動作することで実現される。
【０３１２】
なお、図３０に示した処理は、切替装置１００ｉの転送ユニット６０ｈ（１）とサーバ２００ａ（１）との間でパケットが転送される場合を示す。また、転送ユニット６０ｈ（２）−６０ｈ（Ｎ）の各々と、サーバ２００ａ（２）−２００ａ（Ｎ）の各々との間でパケットが転送される場合についても、図３０に示した処理と同一あるいは同様の処理が実行される。
【０３１３】
図３０では、図２１に示すステップＳ６５０とステップＳ６６０の間にステップＳ６５５が挿入され、図２１に示すステップＳ６７０、Ｓ６８０、Ｓ６９０、Ｓ７００の代わりに、ステップＳ６８５、Ｓ７０５、Ｓ７１０が実行される。
【０３１４】
ステップＳ６５５では、カウンタ部３１ｃは、ステップＳ６５５で出力されたパケットのチェインＩＤと処理テーブルＰＴ３とに基づいて、出力されたパケットを処理する仮想マシン５０ａの処理数を、１つ増加する。そして、切替装置１００ｉの処理は、ステップＳ６６０に移り、変数Ｓが”１”に初期化され、さらにステップＳ６８５に移る。
【０３１５】
ステップＳ６８５では、制御部４０ｉは、レート計測部Ｃ５が計測する出力レートが、第Ｓ処理領域に格納される仮想マシン５０ａの処理レートより小さいか否かを判定する。レート計測部Ｃ５の出力レートが、第Ｓ処理領域の仮想マシン５０ａの処理レートより小さい場合、制御部４０ｉは、サーバ２００ａ（１）に出力されているパケットの数が、第Ｓ処理領域の仮想マシン５０ａが有する処理能力の範囲内と判定する。そして、切替装置１００ｉの処理は、ステップＳ７０５に移る。一方、レート計測部Ｃ５の出力レートが、第Ｓ処理領域の仮想マシン５０ａの処理レート以上の場合、制御部４０ｉは、サーバ２００ａ（１）に出力されているパケットの数が、第Ｓ処理領域の仮想マシン５０ａが有する処理能力の範囲を超えていると判定する。この場合、制御部４０ｉは、例えば、保持部２０ｂによるパケットの出力を抑制する。そして、切替装置１００ｉは、出力レートが第Ｓ処理領域の仮想マシン５０ａの処理レートより小さくなるまで、ステップＳ６８５の処理を繰り返す。そして、切替装置１００ｉの処理は、ステップＳ７０５に移る。
【０３１６】
ステップＳ７０５では、制御部４０ｉは、ステップＳ６４０で出力されたパケットのチェインＩＤと、処理テーブルＰＴ３とに基づいて、第（Ｓ＋１）処理領域に仮想マシン５０ａおよび処理レートを示す情報が格納されているか否かを判定する。第（Ｓ＋１）処理領域に情報が格納されている場合、制御部４０ｉは、変数Ｓの値を１つ増加する。そして、切替装置１００ｉの処理は、ステップＳ６８５に移る。一方、第（Ｓ＋１）処理領域に情報が格納されていない場合、切替装置１００ｉの処理は、ステップＳ７１０に移る。
【０３１７】
ステップＳ７１０では、カウンタ部３１ｃは、サーバ２００ａ（１）から処理後のパケットを受信した場合、処理後のパケットのチェインＩＤと処理テーブルＰＴ３とに基づいて、処理後のパケットを処理した仮想マシン５０ａの処理数を、１つ減少する。
【０３１８】
そして、切替装置１００ｉは、図３０に示した処理を繰り返し実行する。なお、ステップＳ６００からＳ６５０の処理と、ステップＳ６５５からＳ７１０の処理とは、並列に実行されてもよい。
【０３１９】
以上、図２７から図３０に示した実施形態では、各カウンタ部３１ｃは、保持部２０ｂがサーバ２００ａに出力するパケットのチェインＩＤと、処理テーブルＰＴ３とに基づいて、各仮想マシン５０ａが実行中のパケットの処理数をカウントする。そして、制御部４０ｉは、パケットのチェインＩＤが示す通信処理の内容を実行する仮想マシン５０ａの処理数と、クレジット数との比較に基づいて、保持部２０ｂからサーバ２００ａへのパケットの出力を制御する。
【０３２０】
また、レート計測部Ｃ５は、転送ユニット６０ｈからサーバ２００ａに転送されるパケットの出力レートと、各仮想マシン５０ａにおける処理レートとを計測する。そして、制御部４０ｉは、出力レートと各仮想マシン５０ａの処理レートとを比較することで、各仮想マシン５０ａにおける処理の負荷を監視し、保持部２０ｂからサーバ２００ａへのパケットの出力を制御する。
【０３２１】
これにより、切替装置１００ｉは、パケットの処理能力に余裕がないことを示す情報をサーバ２００ａから受信することなく、サーバ２００ａへのパケットの出力を制御する。そして、各サーバ２００ａで実行されている複数の仮想マシン５０ａが切替装置１００ｉにパケットの送信の停止を要求する機能を持たない場合でも、パケット処理システムＳＹＳ９は、切替装置１００ｉによりパケットの転送量を制御できる。この結果、パケット処理システムＳＹＳ９は、パケットロスを抑制できる。
【０３２２】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０３２３】
１０…切替部；１１…スイッチ部：１５，１５ａ，１５ｂ，１５ｃ…識別部；２０，２０ａ（１）−２０ａ（Ｋ）、２０ｂ（１）−２０ｂ（Ｍ）…保持部；２１，３５…ＤＥＭＵＸ；２２…ＭＵＸ；２５，２５ａ…ＩＦ部；２７，２７ａ…パケット生成部；２８…帯域制御部；３０，３０ａ…算出部；３１，３１ａ（１）−３１ａ（Ｋ），３１ｂ（１）−３１ｂ（Ｍ），３１ｃ（１）−３１ｂ（Ｍ）…カウンタ部；３３（１）−３３（Ｊ）…合流監視部；４０，４０ａ，４０ｂ，４０ｃ，４０ｄ，４０ｅ，４０ｆ，４０ｇ，４０ｈ，４０ｉ…制御部；５０…パケット処理部；５０ａ（１）−５０ａ（Ｍ）…仮想マシン；６０（１）−６０（Ｎ），６０ａ（１）−６０ａ（Ｎ），６０ｂ（１）−６０ｂ（Ｎ），６０ｃ（１）−６０ｃ（Ｎ），６０ｄ（１）−６０ｄ（Ｎ），６０ｅ（１）−６０ｅ（Ｎ）），６０ｆ（１）−６０ｆ（Ｎ），６０ｇ（１）−６０ｇ（Ｎ），６０ｈ（１）−６０ｈ（Ｎ）…転送ユニット；７０…記憶部；８０，８０ａ…調整部；１００，１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｅ，１００ｆ，１００ｇ，１００ｈ，１００ｉ…切替装置；２００…パケット処理装置：２００ａ（１）−２００ａ（Ｎ）…サーバ；Ｃ１…第１計測部；Ｃ２…第２計測部；Ｃ３…閾値算出部；Ｃ４…時間計測部；Ｃ５…レート計測部；ＮＷ…ネットワーク；Ｐ１−Ｐ５，Ｐａ０−Ｐａ２，Ｐｂ１，Ｐｂ２，Ｐｃ１，Ｐｃ２…パケット；ＰＴ，ＰＴ２，ＰＴ３…処理テーブル；ＳＹＳ，ＳＹＳ１，ＳＹＳ２，ＳＹＳ３，ＳＹＳ４，ＳＹＳ５，ＳＹＳ６，ＳＹＳ７，ＳＹＳ８，ＳＹＳ９…パケット処理システム
【図１】
2017147690.tif 000003
【図２】
2017147690.tif 000004
【図３】
2017147690.tif 000005
【図４】
2017147690.tif 000006
【図５】
2017147690.tif 000007
【図６】
2017147690.tif 000008
【図７】
2017147690.tif 000009
【図８】
2017147690.tif 000010
【図９】
2017147690.tif 000011
【図１０】
2017147690.tif 000012
【図１１】
2017147690.tif 000013
【図１２】
2017147690.tif 000014
【図１３】
2017147690.tif 000015
【図１４】
2017147690.tif 000016
【図１５】
2017147690.tif 000017
【図１６】
2017147690.tif 000018
【図１７】
2017147690.tif 000019
【図１８】
2017147690.tif 000020
【図１９】
2017147690.tif 000021
【図２０】
2017147690.tif 000022
【図２１】
2017147690.tif 000023
【図２２】
2017147690.tif 000024
【図２３】
2017147690.tif 000025
【図２４】
2017147690.tif 000026
【図２５】
2017147690.tif 000027
【図２６】
2017147690.tif 000028
【図２７】
2017147690.tif 000029
【図２８】
2017147690.tif 000030
【図２９】
2017147690.tif 000031
【図３０】
2017147690.tif 000032