(57)【要約】【課題】サーバの汎用ＣＰＵとアクセラレータとの間の通信量を抑制しながら、汎用ＣＰＵとアクセラレータとの負荷分散を適切に行うこと。【解決手段】アクセラレータ２０で、分離部２０ｃが受信したパケットをヘッダとペイロードとに分離して、ヘッダを振り分け部１１ａに転送し、ペイロードをバッファ２１に蓄積し、転送部２０ｄが指定されたヘッダに対応するペイロードをパケット処理部１１ｂに転送し、パケット処理部２０ｅが指示部１１ｃにより指示されたヘッダに対応するペイロードに対する処理を実行する。サーバ１０で、振り分け部１１ａが転送されたヘッダを用いて振り分け先を判定し、制御部１１と判定された場合に、パケット処理部１１ｂがヘッダを指定して対応するペイロードをバッファ２１から取得して処理を実行し、アクセラレータ２０と判定された場合に、指示部１１ｃがヘッダに対応するペイロードの処理をアクセラレータ２０に指示する。【選択図】図２
2018026681.tif 000002
【特許請求の範囲】
【請求項１】
サーバと、アクセラレータとを有する通信システムであって、
前記アクセラレータは、
バッファと、
受信したパケットをヘッダとペイロードとに分離して、該ヘッダを前記サーバに転送するとともに、該ペイロードを前記バッファに蓄積する分離部と、
前記サーバにより指定されたヘッダに対応するペイロードを該サーバに転送する転送部と、
前記サーバにより指示されたヘッダに対応するペイロードに対する処理を実行する第１パケット処理部と、を備え、
前記サーバは、
前記アクセラレータから転送された前記ヘッダを用いて、該サーバで該ヘッダに対応するペイロードに対する処理を行うか否かを判定する振り分け部と、
該サーバで処理を行うと判定された場合に、前記ヘッダを指定して該ヘッダに対応するペイロードを前記アクセラレータから取得し、該ペイロードに対する処理を実行する第２パケット処理部と、
該サーバで処理を行わないと判定された場合に、前記ヘッダに対応するペイロードに対する処理を前記アクセラレータに指示する指示部と、を備える、
ことを特徴とする通信システム。
【請求項２】
前記分離部は、パケットの先頭から所定の固定長の部分をヘッダとし、該パケットの残りの部分をペイロードとして分離することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記アクセラレータは、さらに、受信したパケットに所定の識別子が付与されている場合に、該パケットを前記バッファに蓄積し、該バッファの蓄積量が所定の閾値を超えた場合に、前記分離部に転送し、該所定の識別子が付与されていない場合に、該パケットを前記第２パケット処理部に転送する識別部を備え、
前記第１パケット処理部は、さらに、前記バッファにペイロードを含むパケットが蓄積されている場合に、該パケットのペイロードに対する処理を実行し、
前記第２パケット処理部は、さらに、ペイロードを含むパケットが転送された場合に、該パケットのペイロードに対する処理を実行することを特徴とする請求項１または２に記載の通信システム。
【請求項４】
サーバと、バッファを備えたアクセラレータとを有する通信システムにおいて実行される通信方法であって、
前記アクセラレータにおける、
受信したパケットをヘッダとペイロードとに分離して、該ヘッダを前記サーバに転送するとともに、該ペイロードを前記バッファに蓄積する分離工程と、
前記サーバにより指定されたヘッダに対応するペイロードを該サーバに転送する転送工程と、
前記サーバにより指示されたヘッダに対応するペイロードに対する処理を実行する第１パケット処理工程と、
前記サーバにおける、
前記アクセラレータから転送された前記ヘッダを用いて、該サーバで該ヘッダに対応するペイロードに対する処理を行うか否かを判定する振り分け工程と、
該サーバで処理を行うと判定された場合に、前記ヘッダを指定して該ヘッダに対応するペイロードを前記バッファから取得し、該ペイロードに対する処理を実行する第２パケット処理工程と、
該サーバで処理を行わないと判定された場合に、前記ヘッダに対応するペイロードに対する処理を前記アクセラレータに指示する指示工程と、
を含んだことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムおよび通信方法に関する。
【背景技術】
【０００２】
通信ネットワークにおいて、サーバにＮＰ（Network  Processor）やＦＰＧＡ（Field  Programmable  Gate  Array）等で実現されるアクセラレータを組み合わせてパケットの並列処理を行うことにより、パケットを高速に処理する技術が知られている（非特許文献１〜３参照）。例えば、パケットの転送性能が１０Ｇｂｐｓ程度のサーバにアクセラレータを組み合わせることにより、１００Ｇｂｐｓ以上に拡大する技術が検討されている。
【０００３】
この技術において、サーバの汎用ＣＰＵ（Central  Processing  Unit）とアクセラレータとで処理内容に応じてパケットを振り分けることにより、全体の性能を向上させることが可能となる。その際、パケットの振り分けはアクセラレータまたは汎用ＣＰＵのいずれか一方で行われる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Z.Bronstein，E.Roch，J.Xia，and  A.Molkho，“Uniform  Handling  and  Abstraction  of  NFV  Hardware  Accelerators”，IEEE  Network，Volume:29，Issue:3，pp.22-29，２０１５年
【非特許文献２】K.Yamazaki，T.Osaka，S.Yasuda，S.Ohteru，and  A.Miyazaki，“Accelerating  SDN/NFV  with  transparent  offloading  architecture”，Open  Network  Summit  2014，２０１４年３月２日
【非特許文献３】L.Nobach，D.Hausheer，“Open，Elastic  Provisioning  of  Hardware  Acceleration  in  NFV  Environments”，IEEE  Networked  Systems(NetSys)，2015  International  Conference  and  Workshops  on，２０１５年３月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術において、アクセラレータがパケットの振り分けを行う場合には、例えば、ＨＴＴＰパラメータ等のヘッダの可変長の多項目の情報を総合的に勘案して、処理内容に応じた振り分けを行うことは困難であった。また、汎用ＣＰＵがパケットの振り分けを行う場合には、アクセラレータが受信した全てのパケットが一旦は汎用ＣＰＵに転送されるため、汎用ＣＰＵとアクセラレータとの間のバスの通信帯域が逼迫していた。
【０００６】
本発明は、上記に鑑みてなされたものであって、サーバの汎用ＣＰＵとアクセラレータとの間の通信量を抑制しながら、汎用ＣＰＵとアクセラレータとの負荷分散を適切に行うことを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明に係る通信システムは、サーバと、アクセラレータとを有する通信システムであって、前記アクセラレータは、バッファと、受信したパケットをヘッダとペイロードとに分離して、該ヘッダを前記サーバに転送するとともに、該ペイロードを前記バッファに蓄積する分離部と、前記サーバにより指定されたヘッダに対応するペイロードを該サーバに転送する転送部と、前記サーバにより指示されたヘッダに対応するペイロードに対する処理を実行する第１パケット処理部と、を備え、前記サーバは、前記アクセラレータから転送された前記ヘッダを用いて、該サーバで該ヘッダに対応するペイロードに対する処理を行うか否かを判定する振り分け部と、該サーバで処理を行うと判定された場合に、前記ヘッダを指定して該ヘッダに対応するペイロードを前記アクセラレータから取得し、該ペイロードに対する処理を実行する第２パケット処理部と、該サーバで処理を行わないと判定された場合に、前記ヘッダに対応するペイロードに対する処理を前記アクセラレータに指示する指示部と、を備える、ことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、サーバの汎用ＣＰＵとアクセラレータとの間の通信量を抑制しながら、汎用ＣＰＵとアクセラレータとの負荷分散を適切に行うことができる。
【図面の簡単な説明】
【０００９】
【図１Ａ】図１Ａは、本発明の一実施形態に係る通信システムの概要を説明するための説明図である。
【図１Ｂ】図１Ｂは、本実施形態に係る通信システムの概要を説明するための説明図である。
【図１Ｃ】図１Ｃは、本実施形態に係る通信システムの概要を説明するための説明図である。
【図２】図２は、通信システムの概略構成を例示する模式図である。
【図３】図３は、通信処理手順を例示するシーケンス図である。
【図４】図４は、通信プログラムを実行するコンピュータを例示する図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１１】
［通信システムの処理概要］
本実施形態に係る通信システムは、サーバにＮＰやＦＰＧＡ等で実現されるアクセラレータが組み込まれて構成される。この通信システムにおいて、アクセラレータが通信ネットワークの他のネットワーク装置から受信したパケットが、振り分け部によってアクセラレータとサーバの汎用ＣＰＵ等で実現される制御部とに振り分けられる。
【００１２】
振り分け部は、ＨＴＴＰパラメータ等のヘッダの可変長の多項目の情報を総合的に勘案して、処理内容に応じてパケットの振り分け先を判定する処理（以下、パース処理と称する。）を行って、パケットをアクセラレータと制御部とに振り分ける。また、振り分け先のアクセラレータまたは制御部において、パケットのデータ部分であるペイロードに対して、例えば、フィルタリングの処理方法を決めるためのＤＰＩ（Deep  Packet  Inspection）等の処理が行われる。
【００１３】
ここで、図１Ａ〜図１Ｃを参照して、本実施形態に係る通信システムの処理概要について説明する。図１Ａに例示するように、通信システム１において、上記の振り分け部３０がアクセラレータ２０に配備されている場合には、アクセラレータ２０が処理Ａ，Ｂの各内容に応じてパース処理を行うことは困難であるため、パケットが適切に振り分けられない恐れがある。
【００１４】
一方、図１Ｂに例示するように、振り分け部３０がサーバ１０の制御部１１に配備されている場合には、一旦、全てのパケットが制御部１１に転送され、その後、アクセラレータ２０と制御部１１とに振り分けられる。そのため、アクセラレータ２０と制御部１１との間のバス４０の通信帯域が逼迫する恐れがある。
【００１５】
そこで、本実施形態の通信システム１では、図１Ｃに例示するように、アクセラレータ２０が、一旦、全てのパケットをバッファ２１に蓄積するとともに、パケットのヘッダのみを制御部１１に配備された振り分け部１１ａに転送する。この振り分け部１１ａが、転送されたヘッダを用いてパース処理を行って、制御部１１で処理Ａを行うパケットと、アクセラレータ２０で処理Ｂを行うパケットとを判定する。また、制御部１１は、処理対象と判定したパケットのペイロードをアクセラレータ２０のバッファ２１から取得して処理を行う。このように、制御部１１がパケットのヘッダのみを参照（以下、ルックアップ処理とも称する。）してパケットの振り分け先を判定することにより、通信システム１は、バス４０の通信帯域の使用量を抑制しながら、制御部１１とアクセラレータ２０との負荷分散を適切に行うことができる。
【００１６】
なお、本実施形態の通信システム１では、アクセラレータ２０が他のネットワーク装置からパケットを受信して、まず、予め指定された５ｔｕｐｌｅ等の識別子が付与されているパケットを処理対象として識別する。また、アクセラレータ２０が、識別したパケットのデータ部分であるペイロードに対して処理を行い、その他のアクセラレータ２０の処理対象ではないパケットを制御部１１に転送する。
【００１７】
また、アクセラレータ２０の処理対象に指定されているパケットのうち、アクセラレータ２０の処理能力を超えるパケットが、上記の振り分け部１１ａによりアクセラレータ２０と制御部１１とに振り分けられる。このように、アクセラレータ２０と制御部１１との双方でパケットの振り分けを行うことにより、より適切に負荷分散が行われる。
【００１８】
［通信システムの構成］
図２は、通信システム１の概略構成を例示する模式図である。図２に例示するように、本実施形態の通信システム１は、サーバ１０と、このサーバ１０に組み込まれたアクセラレータ２０とを含む。アクセラレータ２０は、サーバ１０の制御部１１とバス４０で接続される。
【００１９】
サーバ１０は、ワークステーションやパソコン等の汎用コンピュータで実現され、入力部１２、出力部１３、記憶部１４、および制御部１１を備える。
【００２０】
入力部１２は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部１１に対して処理開始などの各種指示情報を入力する。出力部１３は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置、情報通信装置等によって実現される。
【００２１】
記憶部１４は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。なお、記憶部１４は、ＬＡＮ（Local  Area  Network）やインターネット等の電気通信回線を介して制御部１１と通信する構成でもよい。
【００２２】
制御部１１は、上記したとおり汎用ＣＰＵ等で実現され、メモリに記憶された処理プログラムを実行して、図２に示すように、振り分け部１１ａ、パケット処理部１１ｂおよび指示部１１ｃとして機能する。振り分け部１１ａ、パケット処理部１１ｂおよび指示部１１ｃの具体的な機能については後述する。
【００２３】
アクセラレータ２０は、上記したとおりＮＰやＦＰＧＡ等で実現され、メモリに記憶された処理プログラムを実行して、通信制御部２０ａ、識別部２０ｂ、分離部２０ｃ、転送部２０ｄおよびパケット処理部２０ｅとして機能する。また、アクセラレータ２０は、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子で実現されるバッファ２１を備える。
【００２４】
通信制御部２０ａは、ＬＡＮやインターネットなどの電気通信回線を介したネットワーク装置等の外部の装置とアクセラレータ２０との通信を制御する。例えば、通信制御部２０ａは、他のネットワーク装置から転送されたパケットを受信する。また、通信制御部２０ａは、他のネットワーク装置にパケットを転送する。
【００２５】
識別部２０ｂは、受信したパケットに所定の識別子が付与されている場合に、該パケットをバッファ２１に蓄積し、該バッファ２１の蓄積量が所定の閾値を超えた場合に、後述する分離部２０ｃに転送する。また、識別部２０ｂは、受信したパケットに該所定の識別子が付与されていない場合に、該パケットをサーバ１０の制御部１１の後述するパケット処理部１１ｂに転送する。
【００２６】
具体的に、識別部２０ｂは、受信したパケットの５ｔｕｐｌｅ等の識別子を参照して、予め指定された識別子が付与されている場合にアクセラレータ２０の処理対象のパケットとして識別する。また、識別部２０ｃは、識別したパケットをバッファ２１に蓄積し、バッファ２１の蓄積量を監視する。そして、識別部２０ｂは、バッファ２１の蓄積量が所定の閾値を超えた場合に、識別したパケットを分離部２０ｃに転送する。また、識別部２０ｂは、アクセラレータ２０の処理対象のパケットと識別したパケット以外のパケットを、バス４０を介してサーバ１０のパケット処理部１１ｂに転送する。
【００２７】
分離部２０ｃは、受信したパケットをヘッダとペイロードとに分離して、該ヘッダを制御部１１に転送するとともに、該ペイロードをバッファ２１に蓄積する。具体的に、分離部２０ｃは、識別部２０ｂから転送されたパケットをヘッダとペイロードとに分離するとともに、パケットを識別する内部ＩＤを付与する。また、分離部２０ｃは、内部ＩＤを付加したヘッダをバス４０を介して制御部１１に転送し、同一の内部ＩＤを付加したペイロードをバッファ２１に蓄積する。
【００２８】
なお、分離部２０ｃは、パケットを分離する際、パケットの先頭から所定の固定長の部分をヘッダとし、該パケットの残りの部分をペイロードとして分離する。固定長の所定値は、パース処理に必要な情報が含まれるように設定すればよい。これにより、分離部２０ｃの処理が可変長のヘッダを分離するより簡易になる。
【００２９】
転送部２０ｄは、制御部１１により指定されたヘッダに対応するペイロードを該サーバ１０に転送する。具体的に、転送部２０ｄは、後述するパケット処理部１１ｂが内部ＩＤを用いてヘッダを指定した場合に、内部ＩＤで指定されたヘッダに対応するペイロードをバッファ２１から抽出して、バス４０を介してパケット処理部１１ｂに転送する。
【００３０】
パケット処理部２０ｅは、制御部１１により指示されたヘッダに対応するペイロードに対する処理を実行する。具体的に、パケット処理部２０ｅは、後述する指示部１１ｃから内部ＩＤが付加されたヘッダが返送された場合に、内部ＩＤに対応するペイロードをバッファ２１から抽出し、このペイロードに対するＤＰＩ等の処理を実行する。
【００３１】
また、パケット処理部２０ｅは、バッファ２１にペイロードを含むパケットが蓄積されている場合に、該パケットのペイロードに対する処理を実行する。具体的に、パケット処理部２０ｅは、識別部２０ｂがアクセラレータ２０の処理対象として識別したパケットのペイロードに対する処理を実行する。
【００３２】
サーバ１０の制御部１１において、振り分け部１１ａは、アクセラレータ２０から転送されたヘッダを用いて、制御部１１で該ヘッダに対応するペイロードに対する処理を行うか否かを判定する。
【００３３】
具体的に、振り分け部１１ａは、分離部２０ｃから転送されたヘッダを用いてパース処理を行って、パケットのペイロードに対する処理を制御部１１で行うかアクセラレータ２０で行うかの振り分けを行う。例えば、ヘッダのサービス識別情報を参照して、サービスの提供に必要な処理を特定し、特定した処理を制御部１１またはアクセラレータ２０のいずれで実行させるのが適切かを判定する。
【００３４】
パケット処理部１１ｂは、パケットのペイロードに対する処理を制御部１１で行うと判定された場合に、判定されたパケットのヘッダを指定して、該ヘッダに対応するペイロードをアクセラレータ２０の転送部２０ｄから取得し、該ペイロードに対する処理を実行する。
【００３５】
具体的に、パケット処理部１１ｂは、振り分け部１１ａが制御部１１で処理を行うと判定したパケットのヘッダの内部ＩＤを指定して、ヘッダに対応するペイロードを転送部２０ｄに要求する。また、パケット処理部１１ｂは、転送部２０ｄから転送されたペイロードに対する処理を実行する。
【００３６】
また、パケット処理部１１ｂは、ペイロードを含むパケットが転送された場合に、該パケットのペイロードに対する処理を実行する。具体的に、パケット処理部１１ｂは、識別部２０ｂがアクセラレータ２０の処理対象のパケットと識別したパケット以外のパケットのペイロードに対する処理を実行する。
【００３７】
指示部１１ｃは、パケットのペイロードに対する処理を制御部１１で行わないと判定された場合に、判定されたパケットのヘッダに対応するペイロードに対する処理をアクセラレータ２０に指示する。具体的に、指示部１１ｃは、例えば、振り分け部１１ａがアクセラレータ２０で処理を行うと判定したパケットのヘッダを内部ＩＤとともにアクセラレータ２０に返送する。
【００３８】
なお、指示部１１ｃは、内部ＩＤのみを通知して対応するペイロードに対する処理をアクセラレータ２０に指示してもよい。その場合には、分離部２０ｃはヘッダも併せてバッファ２１に蓄積する。
【００３９】
また、識別部２０ｂによるパケットの振り分けは必ずしも実施されなくてもよい。アクセラレータ２０が受信した全パケットについて、サーバ１０の制御部１１のパース処理により、制御部１１とアクセラレータ２０との間のバス４０の通信量を抑制しながら、適切にパケットが振り分けることが可能である。
【００４０】
［通信処理］
次に、図３を参照して、本実施形態に係る通信システム１による通信処理について説明する。図３は、通信処理手順を例示するシーケンス図である。図３のシーケンス図は、アクセラレータ２０の分離部２０ｃがパケットを受信したタイミングで開始される。
【００４１】
分離部２０ｃは、識別部２０ｂからパケットを受信すると（ステップＳ１）、受信したパケットをヘッダとペイロードとに分離するとともに、パケットを識別する内部ＩＤを付与する（ステップＳ２）。また、分離部２０ｃは、内部ＩＤを付加したヘッダをバス４０を介して制御部１１に転送し（ステップＳ３）、同一の内部ＩＤを付加したペイロードをバッファ２１に蓄積する（ステップＳ４）。
【００４２】
振り分け部１１ａは、分離部２０ｃから転送されたヘッダを用いてパース処理を行って、パケットのペイロードに対する処理が制御部１１で必要か否かの判定、すなわち、制御部１１で行うかアクセラレータ２０で行うかの振り分けを行う（ステップＳ５）。
【００４３】
振り分け部１１ａが制御部１１でパケットの処理を行うと判定した場合に（ステップＳ５，Ｙｅｓ）、パケット処理部１１ｂは、判定されたパケットのヘッダの内部ＩＤを指定して、ヘッダに対応するペイロードを転送部２０ｄに要求する（ステップＳ６）。
【００４４】
転送部２０ｄは、内部ＩＤにより指定されたヘッダに対応するペイロードをバッファ２１から抽出して（ステップＳ７〜Ｓ８）、パケット処理部１１ｂに転送する（ステップＳ９）。
【００４５】
パケット処理部１１ｂは、転送されたペイロードに対する処理を実行する（ステップＳ１０）。また、パケット処理部１１ｂは、処理を行ったヘッダとペイロードとを結合したパケットを、アクセラレータ２０の通信制御部２０ａを介してネットワークに送信する（ステップＳ１１〜Ｓ１２）。
【００４６】
一方、振り分け部１１ａが制御部１１でパケットの処理を行わないと判定した場合に（ステップＳ５，Ｎｏ）、指示部１１ｃが、判定されたパケットのヘッダと内部ＩＤとをアクセラレータ２０のパケット処理部２０ｅに返送する（ステップＳ１３）。
【００４７】
パケット処理部２０ｅは、返送されたヘッダの内部ＩＤに対応するペイロードをバッファ２１から抽出し（ステップＳ１４〜Ｓ１５）、このペイロードに対する処理を実行する（ステップＳ１６）。また、パケット処理部２０ｅは、処理を行ったヘッダとペイロードとを結合したパケットを、通信制御部２０ａを介してネットワークに送信する（ステップＳ１７）。これにより、一連の通信処理が終了する。
【００４８】
以上、説明したように、本実施形態の通信システム１のアクセラレータ２０では、分離部２０ｃが、受信したパケットをヘッダとペイロードとに分離して、ヘッダを制御部１１に転送するとともに、ペイロードをバッファ２１に蓄積する。また、転送部２０ｄが、制御部１１により指定されたヘッダに対応するペイロードを制御部１１に転送する。また、パケット処理部２０ｅが、制御部１１から指示されたヘッダに対応するペイロードに対する処理を実行する。
【００４９】
また、サーバ１０では、振り分け部１１ａが、アクセラレータ２０から転送されたヘッダを用いて、制御部１１で該ヘッダに対応するペイロードに対する処理を行うか否かを判定する。また、制御部１１で処理を行うと判定された場合に、パケット処理部１１ｂが、ヘッダを指定して該ヘッダに対応するペイロードをアクセラレータ２０の転送部２０ｄから取得し、該ペイロードに対する処理を実行する。また、制御部１１で処理を行わないと判定された場合に、指示部１１ｃが、ヘッダに対応するペイロードの処理をアクセラレータ２０に指示する。
【００５０】
このように、制御部１１がパケットのヘッダのみを参照するルックアップ処理により、制御部１１とアクセラレータ２０との間のバス４０の通信帯域の使用量を抑制しながら、パース処理を行って、適切にパケットが振り分けられる。したがって、サーバ１０の制御部１１とアクセラレータ２０との間の通信量を抑制しながら、汎用ＣＰＵとアクセラレータとの負荷分散を適切に行うことができる。
【００５１】
また、識別部２０ｂが、受信したパケットに所定の識別子が付与されている場合に、該パケットをバッファ２１に蓄積し、該バッファの蓄積量が所定の閾値を超えた場合に、分離部２０ｃに転送し、該所定の識別子が付与されていない場合に、該パケットをパケット処理部１１ｂに転送する。
【００５２】
これにより、通信システム１において、アクセラレータ２０の識別部２０ｂが識別子によるパケットの振り分けを行い、制御部１１がパース処理によるパケットの振り分けを行う。このように、パケットの振り分けを制御部１１とアクセラレータ２０との双方で行うため、より適切に負荷分散が行われる。
【００５３】
また、分離部２０ｃは、パケットを分離する際、パケットの先頭から所定の固定長の部分をヘッダとし、該パケットの残りの部分をペイロードとして分離する。これにより、分離部２０ｃの処理が可変長のヘッダを分離するより簡易になる。
【００５４】
［プログラム］
上記実施形態に係る通信システム１が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。一実施形態として、通信システム１を構成するサーバ１０およびアクセラレータ２０は、パッケージソフトウェアやオンラインソフトウェアとして上記の通信処理を実行する通信プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の通信プログラムを情報処理装置に実行させることにより、情報処理装置を通信システム１のサーバ１０およびアクセラレータ２０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）などの移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistants）などのスレート端末などがその範疇に含まれる。また、サーバ１０およびアクセラレータ２０は、アウトソーシングによって上記の通信処理に関するサービスを提供するクラウドとして実装することとしてもかまわない。以下に、通信システム１のサーバ１０およびアクセラレータ２０と同様の機能を実現する通信プログラムを実行するコンピュータの一例を説明する。
【００５５】
図４に示すように、通信プログラムを実行するコンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００５６】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。ディスクドライブ１０４１には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１０５１およびキーボード１０５２が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１０６１が接続される。
【００５７】
ここで、図４に示すように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ１０３１やメモリ１０１０に記憶される。
【００５８】
また、通信プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュール１０９３として、ハードディスクドライブ１０３１に記憶される。具体的には、上記実施形態で説明した通信システム１が実行する各処理が記述されたプログラムモジュール１０９３が、ハードディスクドライブ１０３１に記憶される。
【００５９】
また、通信プログラムによる情報処理に用いられるデータは、プログラムデータ１０９４として、例えば、ハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００６０】
なお、通信プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、通信プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００６１】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【００６２】
１  通信システム
１０  サーバ
１１  制御部
１１ａ  振り分け部
１１ｂ  パケット処理部
１１ｃ  指示部
１２  入力部
１３  出力部
１４  記憶部
２０  アクセラレータ
２０ａ  通信制御部
２０ｂ  識別部
２０ｃ  分離部
２０ｄ  転送部
２０ｅ  パケット処理部
２１  バッファ
４０  バス
【図１Ａ】
2018026681.tif 000003
【図１Ｂ】
2018026681.tif 000004
【図１Ｃ】
2018026681.tif 000005
【図２】
2018026681.tif 000006
【図３】
2018026681.tif 000007
【図４】
2018026681.tif 000008