(57)【特許請求の範囲】
【請求項１】
通信リンクを介してデータ通信を行う１つまたは複数の入出力回路と、
ユーザが利用するネットワークサービスを構成するデータ処理を、ハードウェアで実現するように構成されたハードウェア処理部とを備え、
前記ハードウェア処理部は、
入力されたデータに基づいて前記データ処理を実行するデータ処理回路と、
前記データ処理を実行するためのデータを含むパケットの受信、および、前記データ処理により得られたデータを含むパケットの送信を行うパケット転送回路と、
前記パケット転送回路で受信して入力されたパケットを、これらパケットのヘッダ情報に含まれるパケットＩＤの順序に従って順に選択し、選択したパケットに含まれるデータを前記データ処理回路へ転送する転送処理を行うパケット順序制御回路とを備え、
前記パケット順序制御回路は、
パケットを一時格納しておくためのバッファと、
入力されたパケットのパケットＩＤと、前記順序に従って次に選択すべきパケットのパケットＩＤを示す次選択ＩＤとを比較する比較回路と、
前記比較回路での比較の結果、前記パケットＩＤと前記次選択ＩＤとが一致しなかった場合は、前記バッファのうち前記パケットＩＤと対応する格納位置に前記入力されたパケットを格納し、前記パケットＩＤと前記次選択ＩＤとが一致した場合は、前記入力されたパケットを前記バッファに格納せずに前記転送処理の対象として選択する制御回路とを備え、
前記制御回路は、前記次選択ＩＤが前記バッファに格納されているパケットのパケットＩＤと一致した場合、前記パケットを前記転送処理の対象として選択する
ことを特徴とするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
前記制御回路は、前記バッファに前記入力されたパケットを格納する際、前記バッファのうち、前記パケットＩＤと前記次選択ＩＤとの差分だけ、前記次選択ＩＤに対応する基準位置から進んだ格納位置に前記入力されたパケットを格納することを特徴とするデータ処理装置。
【請求項３】
請求項１または請求項２に記載のデータ処理装置において、
前記制御回路は、前記転送処理の対象として前記バッファからパケットを選択する際、前記バッファに格納されているそれぞれのパケットの先頭位置と、前記次選択ＩＤに対応する基準位置とを比較し、これら先頭位置と前記基準位置とが一致した場合は、前記先頭位置に格納されているパケットを前記転送処理の対象として選択することを特徴とするデータ処理装置。
【請求項４】
請求項１〜請求項３のいずれかに記載のデータ処理装置において、
前記パケットＩＤは、前記パケットのうちＯＳＩ参照モデルにおける第５層、第６層、または第７層と対応する領域に格納されていることを特徴とするデータ処理装置。
【請求項５】
ネットワーク上に分散配置された複数のデータ処理装置を備え、これらデータ処理装置を連携させることにより、ユーザに対して各種のネットワークサービスを提供するネットワークシステムであって、少なくとも１つまたは複数の前記データ処理装置が、前記ネットワークサービスを構成するデータ処理をハードウェアで実現する、請求項１〜請求項４のいずれかに記載のデータ処理装置からなることを特徴とするネットワークシステム。
【請求項６】
予め設定されている処理を行うパケットを一時格納しておくためのバッファと、
入力されたパケットに含まれるパケットＩＤと、パケットＩＤの順序に従って次に選択すべきパケットのパケットＩＤを示す次選択ＩＤとを比較する比較回路と、
前記比較回路での比較の結果、前記パケットＩＤと前記次選択ＩＤとが一致しなかった場合は、前記バッファのうち前記パケットＩＤと対応する格納位置に前記入力されたパケットを格納し、前記パケットＩＤと前記次選択ＩＤとが一致した場合は、前記入力されたパケットを前記バッファに格納せずに前記処理の対象として選択する制御回路とを備え、
前記制御回路は、前記次選択ＩＤが前記バッファに格納されているパケットのパケットＩＤと一致した場合、前記パケットを前記処理の対象として選択する
ことを特徴とするパケット順序制御回路。
【請求項７】
通信リンクを介してデータ通信を行う１つまたは複数の入出力回路と、ユーザが利用するネットワークサービスを構成するデータ処理を、ハードウェアで実現するように構成されたハードウェア処理部とを備えるデータ処理装置で用いられるデータ処理方法であって、
データ処理回路が、入力されたデータに基づいて前記データ処理を実行するデータ処理ステップと、
パケット転送回路が、前記データ処理を実行するためのデータを含むパケットの受信、および、前記データ処理により得られたデータを含むパケットの送信を行うパケット転送ステップと、
パケット順序制御回路が、前記パケット転送ステップで受信して入力されたパケットを、これらパケットのヘッダ情報に含まれるパケットＩＤの順序に従って順に選択し、選択したパケットに含まれるデータを前記データ処理ステップへ転送する転送処理を行うパケット順序制御ステップとを備え、
前記パケット順序制御ステップは、
比較回路が、入力されたパケットのパケットＩＤと、前記順序に従って次に選択すべきパケットのパケットＩＤを示す次選択ＩＤとを比較する比較ステップと、
制御回路が、前記比較回路での比較の結果、前記パケットＩＤと前記次選択ＩＤとが一致しなかった場合は、パケットを一時格納しておくためのバッファのうち、前記パケットＩＤと対応する格納位置に前記入力されたパケットを格納し、前記パケットＩＤと前記次選択ＩＤとが一致した場合は、前記入力されたパケットを前記バッファに格納せずに前記転送処理の対象として選択する制御ステップとを備え、
前記制御ステップは、前記次選択ＩＤが前記バッファに格納されているパケットのパケットＩＤと一致した場合、前記パケットを前記転送処理の対象として選択する
ことを特徴とするデータ処理方法。
【請求項８】
請求項７に記載のデータ処理方法において、
前記制御ステップは、前記バッファに前記入力されたパケットを格納する際、前記バッファのうち、前記パケットＩＤと前記次選択ＩＤとの差分だけ、前記次選択ＩＤに対応する基準位置から進んだ格納位置に当該パケットを格納することを特徴とするデータ処理方法。
【請求項９】
請求項７または請求項８に記載のデータ処理方法において、
前記制御ステップは、前記転送処理の対象として前記バッファからパケットを選択する際、前記バッファに格納されているそれぞれのパケットの先頭位置と、前記次選択ＩＤに対応する基準位置とを比較し、これら先頭位置と前記基準位置とが一致した場合は、前記先頭位置に格納されているパケットを前記転送処理の対象として選択することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ処理装置を連携させてネットワークサービスを提供する際に用いるパケット順序制御技術に関する。
【背景技術】
【０００２】
従来、ユーザに対して提供するネットワークサービスに関する機能は、ルータやゲートウェイなど専用ハードウェアで構成されていたが、近年、設備コストの削減等を目的として汎用サーバ上でソフトウェアとして動作させるＮＦＶ（Network Functions Virtualization）技術に注目が集まっている。【０００３】
このような、ネットワーク上に点在する複数のＮＦＶアプリケーションを自由に組み合わせて柔軟にネットワークサービスを提供する仕組みとして、ネットワークサービスに含まれる機能に応じて適切な順序で、サービスデータをパケットで転送処理するＳＦＣ（Service Function Chaining）技術が検討されている（例えば、特許文献１など参照）。
一般に、ＳＦＣ技術を用いたシステムは、任意のアルゴリズムに基づいたサービス処理を行うデータ処理機能（ＳＦ：Service Function）と、ヘッダ情報を基にしてサービスデータを含むパケットを転送するパケット転送機能（ＳＦＦ：Service Function Forwarder）と、ネットワークシステム全体を制御する制御機能とから構成される。【０００４】
ＳＦＣ技術は、主にネットワークサービスに関する機能を仮想化して柔軟なサービス運用を可能とすることを目的に開発されているが、ネットワーク以外の機能に応用しても同様の効果が期待できると考えられる。例えば、画像処理機能を仮想化し、ネットワーク上で画像を分類することを考える。本来であれば、ユーザは対象となるすべての画像を取得してから目的の物体が写った画像を分類する必要がある。しかし、ネットワーク上で画像を分類することでユーザは必要な画像だけを受け取ることができ、自端末での処理を削減することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−４６７３６号公報
【非特許文献】
【０００６】
【非特許文献１】"DPDK Programmer’s Guide 15.Reorder Library"、［online］、2015年、Intel Corporation、［平成28年12月21日検索］、インターネット<URL:http://dpdk.org/doc/guides/prog_guide/reorder_lib.html>
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このような、画像処理機能は、一般に計算量が多くソフトウェア処理に向かないため、ＡＳＩＣ（Application Specific Integrated Circuit）やＧＰＵ（Graphics Processing Unit）、ＦＰＧＡ（Field-Programmable Gate Array）などのハードウェアを用いて計算することが望ましい。そのため、データ処理を行うネットワーク装置はソフトウェア処理機能に加えてハードウェア処理機能を備える必要がある。【０００８】
また、ネットワーク上でデータをやり取りする場合、一般にはパケット通信が用いられる。パケット通信ではデータを小さな単位であるパケットに分割して個別に送信する。パケットは様々な要因で処理順序が入れ替わる可能性があるため、受信側ではパケットの順序を入れ替えて正しいデータを組み立てる必要がある。【０００９】
ＯＳＩ（Open Systems Interconnection）参照モデルにおいて、ＩＰ（Internet Protocol）はネットワーク層における主要なプロトコルであり、ＴＣＰ（Transmission Control Protocol）はトランスポート層におけるプロトコルである。このＴＣＰを用いた通信では、パケットの処理順序をトランスポート層で保証することができるが、ＴＣＰは一般に複雑な処理を必要とする通信プロトコルであるため、遅延が致命的であるアプリケーションには向かない。【００１０】
このようなアプリケーションに対しては、トランスポート層における他のプロトコルであるＵＤＰ（User Datagram Protocol）を用いた通信を行うことがある。しかし、ＵＤＰではパケットの処理順序を保証することができないため、データの正しさはアプリケーション層で保証する必要がある。
よって、ハードウェアにおいてＵＤＰパケットを入力としたデータ処理を行う場合、アプリケーションと結合したパケット順序制御機構が必要となる。【００１１】
従来、パケットの処理順序を制御する仕組みとして、ＤＰＤＫ（Data Plane Development Kit）においてReorder Libraryが提供されている（例えば、非特許文献１など参照）。このＤＰＤＫは、ネットワーク処理に特化したソフトウェアライブラリ群であり、非常に高速なネットワーク処理を実現することができる。
具体的には、Reorder Libraryは、次のように動作する。まず、入力パケットをシーケンス番号に従ってOrder Bufferに格納する。次に、Order Bufferの中身をReady Bufferの空き領域に移動する。この後、アプリケーションがReady Bufferからパケットを取り出す。【００１２】
しかしながら、このようなＤＰＤＫのReorder Libraryによれば、パケットの処理順序を保証できるものの、構成上Order BufferとReady Bufferという２個のバッファが必要となる。このため、メモリリソースの制約が厳しいハードウェア実装には向いておらず、少ないメモリリソースでパケットの処理順序を保証できないという問題点があった。【００１３】
本発明はこのような課題を解決するためのものであり、少ないメモリリソースでパケットの処理順序を保証できるパケット順序制御技術を提供することを目的としている。
【課題を解決するための手段】
【００１４】
このような目的を達成するために、本発明にかかるデータ処理装置は、通信リンクを介してデータ通信を行う１つまたは複数の入出力回路と、ユーザが利用するネットワークサービスを構成するデータ処理を、ハードウェアで実現するように構成されたハードウェア処理部とを備え、前記ハードウェア処理部は、入力されたデータに基づいて前記データ処理を実行するデータ処理回路と、前記データ処理を実行するためのデータを含むパケットの受信、および、前記データ処理により得られたデータを含むパケットの送信を行うパケット転送回路と、前記パケット転送回路で受信して入力されたパケットを、これらパケットのヘッダ情報に含まれるパケットＩＤの順序に従って順に選択し、選択したパケットに含まれるデータを前記データ処理回路へ転送する転送処理を行うパケット順序制御回路とを備え、前記パケット順序制御回路は、パケットを一時格納しておくためのバッファと、入力されたパケットのパケットＩＤと、前記順序に従って次に選択すべきパケットのパケットＩＤを示す次選択ＩＤとを比較する比較回路と、前記比較回路での比較の結果、前記パケットＩＤと前記次選択ＩＤとが一致しなかった場合は、前記バッファのうち前記パケットＩＤと対応する格納位置に前記入力されたパケットを格納し、前記パケットＩＤと前記次選択ＩＤとが一致した場合は、前記入力されたパケットを前記バッファに格納せずに前記転送処理の対象として選択する制御回路とを備え、前記制御回路は、前記次選択ＩＤが前記バッファに格納されているパケットのパケットＩＤと一致した場合、前記パケットを前記転送処理の対象として選択するようにしたものである。【００１５】
また、本発明にかかるネットワークシステムは、ネットワーク上に分散配置された複数のデータ処理装置を備え、これらデータ処理装置を連携させることにより、ユーザに対して各種のネットワークサービスを提供するネットワークシステムであって、少なくとも１つまたは複数の前記データ処理装置が、前記ネットワークサービスを構成するデータ処理をハードウェアで実現する、上記のデータ処理装置からなるものである。【００１６】
また、本発明にかかるパケット順序制御回路は、予め設定されている処理を行うパケットを一時格納しておくためのバッファと、入力されたパケットに含まれるパケットＩＤと、パケットＩＤの順序に従って次に選択すべきパケットのパケットＩＤを示す次選択ＩＤとを比較する比較回路と、前記比較回路での比較の結果、前記パケットＩＤと前記次選択ＩＤとが一致しなかった場合は、前記バッファのうち前記パケットＩＤと対応する格納位置に前記入力されたパケットを格納し、前記パケットＩＤと前記次選択ＩＤとが一致した場合は、前記入力されたパケットを前記バッファに格納せずに前記処理の対象として選択する制御回路とを備え、前記制御回路は、前記次選択ＩＤが前記バッファに格納されているパケットのパケットＩＤと一致した場合、前記パケットを前記処理の対象として選択するようにしたものである。【００１７】
また、本発明にかかるデータ処理方法は、通信リンクを介してデータ通信を行う１つまたは複数の入出力回路と、ユーザが利用するネットワークサービスを構成するデータ処理を、ハードウェアで実現するように構成されたハードウェア処理部とを備えるデータ処理装置で用いられるデータ処理方法であって、データ処理回路が、入力されたデータに基づいて前記データ処理を実行するデータ処理ステップと、パケット転送回路が、前記データ処理を実行するためのデータを含むパケットの受信、および、前記データ処理により得られたデータを含むパケットの送信を行うパケット転送ステップと、パケット順序制御回路が、前記パケット転送ステップで受信して入力されたパケットを、これらパケットのヘッダ情報に含まれるパケットＩＤの順序に従って順に選択し、選択したパケットに含まれるデータを前記データ処理ステップへ転送する転送処理を行うパケット順序制御ステップとを備え、前記パケット順序制御ステップは、比較回路が、入力されたパケットのパケットＩＤと、前記順序に従って次に選択すべきパケットのパケットＩＤを示す次選択ＩＤとを比較する比較ステップと、制御回路が、前記比較回路での比較の結果、前記パケットＩＤと前記次選択ＩＤとが一致しなかった場合は、パケットを一時格納しておくためのバッファのうち、前記パケットＩＤと対応する格納位置に前記入力されたパケットを格納し、前記パケットＩＤと前記次選択ＩＤとが一致した場合は、前記入力されたパケットを前記バッファに格納せずに前記転送処理の対象として選択する制御ステップとを備え、前記制御ステップは、前記次選択ＩＤが前記バッファに格納されているパケットのパケットＩＤと一致した場合、前記パケットを前記転送処理の対象として選択するようにしたものである。
【発明の効果】
【００１８】
本発明によれば、パケットＩＤの順序に従って、パケット順序制御回路に入力されたパケットを、データ処理回路への転送対象として選択するか、もしくは、バッファに一時格納するかが、パケットＩＤと次選択ＩＤとに基づいて正確に判定されることになる。このため、パケットが転送対象として選択した場合は、バッファを経由することなくデータ処理部へ転送することができる。また、バッファに格納されているパケットはパケットＩＤに基づいてその格納場所を一意に特定することができるため、次選択ＩＤと対応するパケットをバッファから直ちに選択することが可能となる。【００１９】
したがって、１つのバッファを設けるだけで、順次入力されるパケットを、これらパケットのヘッダ情報に含まれるパケットＩＤの順序に従って、順に選択することができる。このため、メモリリソースの制約が厳しいハードウェア実装であっても、最小限のメモリリソースでパケットの処理順序を保証することが可能となる。これにより、画像処理など、計算量が多くソフトウェア処理に向かないデータ処理が必要となるネットワークサービスであっても、メモリリソースの制約が厳しいハードウェア実装で実現することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】図１は、ネットワークシステムの構成を示すブロック図である。
【図２】図２は、データ処理装置の構成を示すブロック図である。
【図３Ａ】図３Ａは、パケット順序制御回路の構成を示すブロック図である。
【図３Ｂ】図３Ｂは、パケット順序制御部の構成を示すブロック図である。
【図４】図４は、ネットワークシステムで用いるパケットフォーマットを示す説明図である。
【図５】図５は、パケット順序制御部の動作例を示す説明図である。
【図６】図６は、バッファの動作例を示す説明図である。
【図７】図７は、パケット順序制御部でのパケット受信処理を示すフローチャートである。
【図８】図８は、パケット順序制御部でのパケット転送処理を示すフローチャートである。
【図９】図９は、２枚の画像を連続して送信する動作例を示す説明図である。
【発明を実施するための形態】
【００２１】
次に、本発明の一実施の形態について図面を参照して説明する。
［ネットワークシステム］
まず、図１を参照して、本実施の形態にかかるネットワークシステム１について説明する。
図１に示すように、このネットワークシステム１は、ＳＦＣ（Service Function Chaining）技術に基づいて、ネットワーク上に分散して配置されている複数のデータ処理機能を連携させることにより、ユーザに対して各種のネットワークサービスを提供する機能を有している。なお、本発明におけるネットワークサービスとは、ネットワーク機能を提供するだけでなく、例えば、画像処理や動画処理など、ネットワーク上で動作する上位アプリケーションを含むものである。
【００２２】
ネットワークシステム１は、通信リンクＬを介して相互に接続されて、ユーザが利用するネットワークサービスを構成するデータ処理を実行する複数のデータ処理装置１０と、パケットにＳＦＣヘッダ情報を付与するＳＦＣヘッダ情報付与装置２２と、ネットワークサービスを構成するデータ処理の連携を示すサービスパターンに基づいて、データ処理装置１０を制御して所定の順序で連携させることにより、ネットワークサービスをユーザに対して提供する制御装置２０とから構成される。
【００２３】
データ処理装置１０は、主な機能部として、ユーザが利用するネットワークサービスを構成するデータ処理を実行するデータ処理部（ＳＦ）１１Ｓ、各パケットのヘッダ情報に基づいて処理順序の並び替えを行うパケット順序制御部（ＳＲ）１２Ｓ、および、データ処理部１１Ｓで処理するサービスデータを転送するパケット転送部（ＳＦＦ）１３Ｓと、ユーザが利用するネットワークサービスを構成するデータ処理を実行するデータ処理回路（ＨＦ）１１Ｈ、各パケットのヘッダ情報に基づいて処理順序の並び替えを行うパケット順序制御回路（ＨＲ）１２Ｈ、および、データ処理回路１１Ｈで処理するサービスデータを転送するパケット転送回路（ＨＦＦ）１３Ｈとを備えている。
【００２４】
ネットワークシステム１において、外部通信ネットワークＮＷからのパケットは、ＳＦＣヘッダ情報付与装置２２でＳＦＣヘッダ情報が付与される。ネットワークシステム１内では、このＳＦＣヘッダ情報を元にして、データ処理装置１０のパケット転送部１３Ｓまたはパケット転送回路１３Ｈでルーティングが行われる。
【００２５】
これにより、パケット転送部１３Ｓでは、パケット順序制御部１２Ｓを介して自装置のデータ処理部１１Ｓまたはパケット転送部１３Ｓに転送されるか、他のデータ処理装置１０に転送される。また、パケット転送回路１３Ｈでは、パケット順序制御回路１２Ｈを介して自装置のデータ処理回路１１Ｈまたはパケット転送回路１３Ｈに転送されるか、他のデータ処理装置１０に転送される。
この際、パケットは１つ以上のデータ処理部１１Ｓまたはデータ処理回路１１Ｈにおいて計算され、ユーザ端末２１に送られる。この仕組みにより、ユーザが必要とした処理はネットワーク上で行われるため、ユーザ端末２１での処理が削減される。
【００２６】
［データ処理装置］
次に、図２を参照して、本実施の形態にかかるデータ処理装置１０について説明する。
図２に示すように、データ処理装置１０は、主にＣＰＵ（ハードウェア）とプログラム（ソフトウェア）とが協働することにより、ユーザが利用するネットワークサービスを構成するデータ処理を実現するように構成されたソフトウェア処理部１０Ｓ、主にハードウェアにより、ユーザが利用するネットワークサービスを構成するデータ処理を実現するように構成されたハードウェア処理部１０Ｈ、および通信リンクＬを介してデータ通信を行う１つまたは複数の入出力回路１５から構成されており、例えば、汎用サーバとＦＰＧＡ（Field-Programmable Gate Array）を組み合わせることで実現される。
【００２７】
ソフトウェア処理部１０Ｓは、主な機能部として、サービスデータを含む１つ以上のパケットをまとめてデータ処理する１つまたは複数のデータ処理部（ＳＦ）１１Ｓと、入出力回路１５を介して装置外部から受信したパケットをデータ処理部１１Ｓまたは他のデータ処理装置１０に転送するパケット転送部（ＳＦＦ）１３Ｓと、データ処理部１１Ｓごとに設けられて、対応するデータ処理部１１Ｓとパケット転送部１３Ｓとの間でやり取りする各パケットのヘッダ情報に基づいて処理順序の並び替えを行うパケット順序制御部（ＳＲ）１２Ｓと、入出力回路１５を介して装置外部からパケット転送先情報を取得する転送制御部１４Ｓとを備えている。
【００２８】
ハードウェア処理部１０Ｈは、主な機能部として、サービスデータを含む１つ以上のパケットをまとめてデータ処理する１つまたは複数のデータ処理回路（ＨＦ）１１Ｈと、入出力回路１５を介して装置外部から受信したパケットをデータ処理回路１１Ｈまたは他のデータ処理装置１０に転送するパケット転送回路（ＨＦＦ）１３Ｈと、データ処理回路１１Ｈごとに設けられて、パケット転送回路１３Ｈから入力されたパケットのデータを対応するデータ処理回路１１Ｈへ転送する際、これらパケットのヘッダ情報に含まれるパケットＩＤの順序に従って順に選択してデータを転送するパケット順序制御回路（ＨＲ）１２Ｈと、入出力回路１５を介して装置外部からパケット転送先情報を取得する転送制御回路１４Ｈとを備えている。
【００２９】
図２の構成例では、ソフトウェア処理部１０Ｓおよびハードウェア処理部１０Ｈに、それぞれデータ処理部１１Ｓおよびデータ処理回路１１Ｈが２つずつ設けられている例が示されているが、データ処理部１１Ｓおよびデータ処理回路１１Ｈの数についてはこれに限定されるものではない。
また、転送制御部１４Ｓおよび転送制御回路１４Ｈは、パケット転送先情報を相互にやり取りする機能を有している。また、入出力回路１５はパケットを相互にやり取りする機能を有している。
【００３０】
入出力回路１５が受信したパケットは、対応するパケット転送部１３Ｓまたはパケット転送回路１３Ｈに転送される。ソフトウェア処理部１０Ｓにおいて、パケット転送部１３Ｓは、入力パケットのＳＦＣヘッダ情報に基づいて、入出力回路１５、パケット順序制御部１２Ｓ、もしくはパケット転送回路１３Ｈに入力パケットを転送する。パケットに関する転送先情報は、転送制御部１４Ｓによって管理される。ハードウェア処理部１０Ｈにおいて、パケット転送回路１３Ｈは、入力パケットのＳＦＣヘッダ情報に基づいて、入出力回路１５、パケット順序制御回路１２Ｈ、もしくはパケット転送部１３Ｓに入力パケットを転送する。パケットに関する転送先情報は、転送制御回路１４Ｈによって管理される。
【００３１】
ソフトウェア処理部１０Ｓにおいて、パケットを用いてデータ処理を行う場合、パケットは、パケット転送部１３Ｓからパケット順序制御部１２Ｓを経由して、データ処理部１１Ｓに転送される。この際、パケット順序制御部１２Ｓでは、パケットの処理順序に関する制御と、パケットのパースとが行われる。データ処理部１１Ｓで計算されたデータは、パケット順序制御部１２Ｓでパケットに整形された後、パケット転送部１３Ｓに転送される。
【００３２】
ハードウェア処理部１０Ｈにおいて、パケットを用いてデータ処理を行う場合、パケットは、パケット転送回路１３Ｈからパケット順序制御回路１２Ｈを経由して、データ処理回路１１Ｈに転送される。この際、パケット順序制御回路１２Ｈでは、パケットの処理順序に関する制御と、パケットのパースとが行われる。データ処理回路１１Ｈで計算されたデータは、パケット順序制御回路１２Ｈでパケットに整形された後、パケット転送回路１３Ｈに転送される。
【００３３】
データ処理装置１０内で必要な処理が終わったパケットは、入出力回路１５を経由して他のデータ処理装置１０へ転送される。これを各データ処理装置１０で繰り返すことで、ユーザが必要とした処理が順番に実行され、最終的な計算結果がユーザ端末２１に届くことになる。
【００３４】
［パケット順序制御回路］
次に、図３Ａを参照して、本実施の形態にかかるパケット順序制御回路１２Ｈについて説明する。
図３Ａに示すように、パケット順序制御回路１２Ｈは、全体としてハードウェアにより実現されており、主な回路部として、パケット受信回路３０、比較回路３１、バッファ３２、パケット選択回路３３、データ解析回路３４、データ送信回路３５、制御回路３６、データ受信回路３７、パケット生成回路３８、およびパケット送信回路３９を備えている。
【００３５】
なお、ソフトウェア処理部１０Ｓのパケット順序制御部１２Ｓは、パケット順序制御回路１２Ｈと同様の機能を備えているものであり、ここでの詳細な説明は省略する。
すなわち、図３Ｂに示すように、パケット順序制御部１２Ｓは、全体としてＣＰＵとプログラムとが協働することにより実現されており、主な処理部として、パケット受信部７０、比較部７１、バッファ７２、パケット選択部７３、データ解析部７４、データ送信部７５、制御部７６、データ受信部７７、パケット生成部７８、およびパケット送信部７９を備えている。これら処理部は、パケット順序制御回路１２Ｈのパケット受信回路３０、比較回路３１、バッファ３２、パケット選択回路３３、データ解析回路３４、データ送信回路３５、制御回路３６、データ受信回路３７、パケット生成回路３８、およびパケット送信回路３９にそれぞれ対応している。
【００３６】
パケット受信回路３０は、パケット転送回路１３Ｈからパケットを受信し、受信したパケットを比較回路３１に転送する機能と、制御回路３６からの指示に応じてパケットをバッファ３２またはパケット選択回路３３へ転送する機能とを有している。
バッファ３２は、全体として半導体メモリから構成されて、パケットの処理順序を制御するためにパケットを一時的に格納しておくためのリングバッファとして用いられる。
【００３７】
比較回路３１は、入力されたパケットのヘッダ情報からそのパケットに割り当てられたパケットＩＤを取得して、比較回路３１が保持する次選択ＩＤと比較し、比較結果を制御回路３６に出力する機能を有している。次選択ＩＤは、その時点でデータ処理回路１１Ｈに送るパケットを判別するために用いる値で、パケットの処理順序を示している。
【００３８】
パケット選択回路３３は、制御回路３６からの指示に応じて、バッファ３２から読み出したパケットまたはパケット受信回路３０から入力されたパケットのいずれかを選択して、データ解析回路３４へ出力する機能を有している。
【００３９】
制御回路３６は、比較回路３１からの比較結果を取得し、パケットＩＤと次選択ＩＤが一致し、受信したパケットが転送対象であった場合、バッファ３２に格納せずにパケット選択回路３３を制御してそのパケットをデータ解析回路３４に転送する機能と、パケットＩＤと次選択ＩＤが不一致だった場合、パケット受信回路３０を制御してそのパケットをバッファ３２に格納する機能と、バッファ３２に格納されているパケットのパケットＩＤと次選択ＩＤが一致した場合（時点）において、パケット選択回路３３を制御してそのパケットをバッファ３２から読み出してデータ解析回路３４に転送する機能とを有している。
【００４０】
また、制御回路３６は、バッファ３２に入力されたパケットを格納する際、バッファ３２のうち、パケットＩＤと次選択ＩＤとの差分だけ、次選択ＩＤに対応する基準位置から進んだ格納位置に入力されたパケットを格納する機能と、転送処理の対象としてバッファ３２からパケットを選択する際、バッファ３２に格納されているそれぞれのパケットの先頭位置と、次選択ＩＤに対応する基準位置とを比較し、これら先頭位置と基準位置とが一致した場合は、先頭位置に格納されているパケットを転送処理の対象として選択する機能とを有している。
【００４１】
データ解析回路３４は、入力されたパケットからヘッダ情報を除くデータを取得し、データ送信回路３５を介してデータ処理回路１１Ｈへ送信する機能と、入力されたパケットから取得したヘッダ情報をパケット生成回路３８に転送する機能とを有している。
【００４２】
パケット生成回路３８は、データ受信回路３７を介してデータ処理回路１１Ｈから受信したデータ処理後のデータと、データ解析回路３４からのヘッダ情報とを合わせて、パケットを生成する機能を有している。
パケット送信回路３９は、パケット生成回路３８で生成したパケットをパケット転送回路１３Ｈに送信する機能を有している。
【００４３】
ネットワークシステム１で用いるパケット４０は、一般的なＥｔｈｅｒｎｅｔ（登録商標）IIのフレーム形式を用いている。図４のパケットフォーマットに示すように、パケット４０のデータ部４１は、ＩＰヘッダ情報４２、ＵＤＰヘッダ情報４３、ユーザ定義ヘッダ情報４４、およびデータ部４５から構成されている。ＩＰヘッダ情報４２とＵＤＰヘッダ情報４３は規格で定められたヘッダ情報だが、ユーザ定義ヘッダ情報４４はＯＳＩ参照モデルにおける第５層（セッション層）、第６層（プレゼンテーション層）、または第７層（アプリケーション層）と対応する領域に格納されて、これらレイヤにおける処理で用いられる独自のヘッダ情報である。
【００４４】
本発明にかかるパケットは、このユーザ定義ヘッダ情報４４に、ＳＦＣヘッダ情報付与装置２２で付与されるＳＦＣヘッダ情報４６や、パケット順序制御回路１２Ｈで用いるパケットＩＤ４７などの各種の独自情報を含んでいる。パケットＩＤ４７は、パケット間で連続したシーケンシャルな値であり、パケットの処理順序を示す次選択ＩＤと比較される。データ部４５には、データ処理部１１Ｓおよびデータ処理回路１１Ｈにおいて、実際にネットワークサービスのためのデータ処理に使用されるデータが格納される。
【００４５】
［本実施の形態の動作］
次に、図５を参照して、本実施の形態にかかるハードウェア処理部１０Ｈのパケット順序制御回路１２Ｈの動作について説明する。なお、ソフトウェア処理部１０Ｓのパケット順序制御部１２Ｓは、以下に示すパケット順序制御回路１２Ｈと同様に動作するものであり、ここでの詳細な説明は省略する。
【００４６】
図５に示すように、時刻ＴとＴ＋１では、入力パケット（５０）のパケットＩＤ（＝１、２）とパケットの処理順序を示す次選択ＩＤ（５１）（＝１、２）とが一致していることから、入力パケットが出力データ（５４）として転送される。このとき、次選択ＩＤを次のパケットＩＤに更新する。
一方、時刻Ｔ＋２〜Ｔ＋４では、入力パケットのパケットＩＤ（＝６、４、５）と次選択ＩＤ（＝３）が一致しないため、入力パケットをバッファ３２（５２）に格納する。パケットを格納するアドレスの特定方法については後述する。
【００４７】
時刻Ｔ＋５において、入力パケットのパケットＩＤ（＝３）と次選択ＩＤ（＝３）が一致 するため、入力パケットが出力データとして転送され、次選択ＩＤを次のパケットＩＤ（＝４）に更新される。
これにより、 時刻Ｔ＋６では、バッファ３２に格納されたパケットのパケットＩＤ（＝４）が次選択ＩＤ（＝４）と一致するため、該当の格納パケット（５３）はバッファ３２から取り出され、出力データとして転送される。 この間に次の入力パケット（パケットＩＤ＝７）が到着した場合、出力対象外であることからバッファ３２に格納される。
【００４８】
次に、図６を参照して、本実施の形態にかかるバッファ３２の動作について説明する。
図６に示すように、バッファ３２は、リングバッファにより構成し、基準アドレス（ｔｐ：基準位置）６０、先頭アドレス（ｓｐ：先頭位置）６１、末尾アドレス（ｅｐ：末尾位置）６２によって管理する。ｓｐとｅｐはパケットの格納区間の先頭と末尾の１つ後を示し、ｔｐは出力対象のパケットをバッファ３２に格納すると仮定した場合の格納位置である。
【００４９】
リングバッファは、アドレスが末尾に達すると先頭に戻る動作をするため、終端とそれ以外においてはｔｐとｓｐとｅｐの値の大小関係が逆転する。しかし、それぞれの変数間は一致、不一致のみが重要であるため、各変数は同じルールに基づいて値を更新すれば問題はない。したがって、終端処理では値が末尾に達したとき、先頭に戻すだけでよい。
【００５０】
入力パケットをバッファ３２に追加する場合には、パケットＩＤと次選択ＩＤの相対距離（＝ｔｐからの距離）を計算し、その結果をバッファ３２のアドレスに変換する。そして、得られたアドレスの位置にパケットを格納する。ｔｐは次選択ＩＤと連動して更新し、ｔｐとｓｐが一致した時、ｓｐの位置に格納されている格納パケットをバッファ３２から取り出す。その後、ｓｐを次の先頭パケットの格納位置に更新する。
【００５１】
図６の時刻Ｔにおいて、バッファ３２は空であり、ｔｐとｓｐとｅｐは同じ位置（＝２）を示しており、入力パケットのパケットＩＤ（＝２）とパケットの処理順序を示す次選択ＩＤ（＝２）とが一致していることから、入力パケットが出力データとして転送される。このとき、ｓｐとｅｐを更新する（＝３）とともに、次選択ＩＤとｔｐを次のパケットＩＤ（＝３）に更新する。
【００５２】
続く、時刻Ｔ＋１では、入力パケットのパケットＩＤ（＝６）が次選択ＩＤ（＝３）と一致しないため、入力パケットはバッファ３２に格納する。このとき、パケットを次選択ＩＤと入力パケットのパケットＩＤの差分（＝６−３＝３）だけｔｐ（＝３）より、格納アドレス順に沿って、時計回りに進んだ格納位置ｎｐ（＝６）に格納する。このとき、ｓｐをパケットを格納した位置（＝６）に合わせ、ｅｐをその次の格納位置（＝７）に合わせる。
【００５３】
同様に、時刻Ｔ＋２では、ＩＤ不一致のため、差分４−３＝１だけｔｐ（＝３）より時計回りに進んだ格納位置ｎｐ（＝４）に格納する。このとき、先頭のパケットが変わるため、ｓｐをパケットＩＤが４のパケットを格納した位置（＝４）に合わせる。
次の時刻Ｔ＋３では、ＩＤ不一致のため、差分５−３＝２だけｔｐ（＝３）より時計回りに進んだ格納位置ｎｐ（＝５）に格納する。このときは、パケットの先頭と末尾は変わらないため、ｓｐとｅｐを修正する必要はない。
【００５４】
続く、時刻Ｔ＋４では、入力パケットのパケットＩＤ（＝３）と次選択ＩＤ（＝３）が一致することから、入力パケットはバッファ３２に格納されることなく、出力データとして転送される。このとき、次選択ＩＤは更新されて４となり、ｔｐが指し示すパケット格納位置は１つ隣の格納位置（＝４）に更新される。
【００５５】
この後、時刻Ｔ＋５では、バッファ３２のｓｐ（＝４）が示す格納位置にあるパケットがｔｐが示すパケット格納位置（＝４）と一致するため、該当のパケット（パケットＩＤ＝４）がバッファ３２から取り出されて、出力データとして転送される。このとき、次選択ＩＤは更新されて５となり、ｔｐとｓｐが指し示すパケット格納位置は１つ隣の格納位置（＝５）に更新される。
【００５６】
この後、入力パケットのパケットＩＤ（＝７）が次選択ＩＤ（＝５）と一致しないため、差分７−５＝２だけｔｐ（＝５）より時計回りに進んだ格納位置ｎｐ（＝７）に格納する。このとき、ｅｐをその次の格納位置（＝８）に合わせる。
【００５７】
以上の動作により、バッファ３２に格納されたパケットはその所在を一意に特定することが可能であるため、パケット単位で転送すべきタイミングにおいてデータ処理回路１１Ｈへの転送が可能である。
なお、一部のパケットが届かない状況も想定できるが、その場合は時間経過やパケットが一定量以上バッファ３２に格納された場合に、次選択ＩＤを強制的に更新することで、処理がストールすることを防ぐことができる。
【００５８】
［パケット受信処理］
次に、図７を参照して、本実施の形態にかかるパケット順序制御回路１２Ｈでのパケット受信処理について説明する。
【００５９】
図７に示すように、まず、パケット順序制御回路１２Ｈは、予め設定されている各種処理パラメータを初期化した後（ステップ１００）、パケット転送回路１３Ｈからパケットを受信するまで待機する（ステップ１０１：ＮＯ）。
パケット転送回路１３Ｈからパケットを受信した場合（ステップ１０１：ＹＥＳ）、パケット順序制御回路１２Ｈは、受信した入力パケットのパケットＩＤと次選択ＩＤとを比較する（ステップ１０２）。
【００６０】
ここで、これらパケットＩＤと次選択ＩＤとが一致した場合（ステップ１０２：ＹＥＳ）、パケット順序制御回路１２Ｈは、入力パケットの解析を行い（ステップ１０３）、入力パケットのヘッダ情報をパケット生成回路３８に転送し（ステップ１０４）、入力パケットに格納されているデータをデータ処理回路１１Ｈに向けて出力する（ステップ１０５）。
【００６１】
その後、パケット順序制御回路１２Ｈは、次選択ＩＤを次のパケットＩＤに更新するとともにｔｐも合わせて更新し（ステップ１０６）、外部からの制御信号等に基づいて動作の終了判定を行う（ステップ１０７）。ここで、パケット受信処理を続行する場合には（ステップ１０７：ＮＯ）、ステップ１０１に戻り、パケット受信処理を終了する場合には（ステップ１０７：ＹＥＳ）、一連のパケット受信処理を終了する。
【００６２】
一方、入力パケットのパケットＩＤと次選択ＩＤとが一致しなかった場合（ステップ１０２：ＮＯ）、パケット順序制御回路１２Ｈは、バッファ３２に空きがあるかを判定する（ステップ１０８）。
ここで、空きがあれば（ステップ１０８：ＹＥＳ）、前述した手法によって、バッファ３２におけるパケット格納位置を計算し（ステップ１０９）、その位置にパケットを格納し（ステップ１１０）、ｓｐとｅｐの探索・更新を行った後（ステップ１１２）、ステップ１０７へ移行する。また、空きがなければ（ステップ１０８：ＮＯ）、そのパケットを破棄して（ステップ１１２）、ステップ１０７へ移行する。
【００６３】
［パケット転送処理］
次に、図８を参照して、本実施の形態にかかるパケット順序制御回路１２Ｈでのパケット転送処理について説明する。
【００６４】
図８に示すように、まず、パケット順序制御回路１２Ｈは、予め設定されている各種処理パラメータの初期化した後（ステップ２００）、バッファ３２が空き状態ではなくなるまで、すなわちパケットがバッファ３２に格納されるまで待機する（ステップ２０１：ＹＥＳ）。
いずれかのパケットがバッファ３２に格納された場合（ステップ２０１：ＮＯ）、パケット順序制御回路１２Ｈは、ｓｐが示すバッファ３２内の先頭パケットのパケットＩＤと、ｔｐが示す対象パケットの次選択ＩＤとを比較する（ステップ２０２）。
ここで、これらパケットＩＤと次選択ＩＤとが一致しなかった場合（ステップ２０２：ＮＯ）、ステップ２０１に戻る。
【００６５】
一方、パケットＩＤと次選択ＩＤとが一致した場合（ステップ２０２：ＹＥＳ）、パケット順序制御回路１２Ｈは、ｓｐの位置に格納されたパケットをバッファ３２から読み出して（ステップ２０３）、データ解析回路３４によりパケットを解析し（ステップ２０４）、パケットのヘッダ情報をパケット生成回路３８に転送し（ステップ２０５）、パケットに格納されているデータをデータ処理回路１１Ｈへ出力する（ステップ２０６）。
【００６６】
続いて、パケット順序制御回路１２Ｈは、ｓｐを更新してバッファ３２内に格納された次の先頭パケットを探索する（ステップ２０７）。このとき、ｓｐとｅｐが一致したら、バッファ３２内にパケットは格納されていないと判断できるため、探索を停止する。合わせて次選択ＩＤとｔｐを更新する（ステップ２０８）。
【００６７】
この後、外部からの制御信号等に基づいて動作の終了判定を行う（ステップ２０９）。ここで、パケット転送処理を続行する場合には（ステップ２０９：ＮＯ）、ステップ２０１に戻り、パケット転送処理を終了する場合には（ステップ２０９：ＹＥＳ）、一連のパケット転送処理を終了する。
以上により、パケット順序制御回路１２Ｈは、パケット順序を保証し、データ処理回路１１Ｈに適切な順序でデータを渡すことができる。
【００６８】
［本実施の形態の動作例］
次に、図９を参照して、本実施の形態の動作例について説明する。
画像データ等のリアルタイム通信でよく用いられるＵＤＰ通信では、パケットの順序を特定する手段は実装されていない。このため、通信経路上でパケットの順序が入れ替わる場合があるが、受信したパケットを組み立てて元の画像データを再生する際、効率よく処理する上で、パケットの順序は重要となる。
そこで、本実施の形態を適用して、ＵＤＰヘッダよりも上位にアプリケーションに関連する情報を定義するヘッダ（図４のユーザ定義ヘッダ４４）を追加し、パケットの順序制御に利用することを考える。
【００６９】
図９に２枚の画像を連続して送信する例を示す。ここでは各画像（ｆｒａｍｅＩＤ＝０〜１）を４つのブロック（ｂｌｏｃｋＩＤ＝１〜４）に分割してそれぞれをパケット化して順番に送信している。このとき、各パケットのユーザ定義ヘッダ４４にｆｒａｍｅＩＤとｂｌｏｃｋＩＤを保持しておくことで、データ処理部１１Ｈでは各パケットが属している画像および座標を特定することができるとともに、パケットの送信順序を判別するのに応用することが可能である。
【００７０】
例えば、１画像あたりに含まれるブロック数、すなわちブロック分割数をＮとし、パケットの送信順序として、整数値がシーケンシャルに割り当てられるｐａｃｋｅｔＩＤを、次の式により計算する。
ｐａｃｋｅｔＩＤ＝Ｎ×（ｆｒａｍｅＩＤ）＋（ｂｌｏｃｋＩＤ）
【００７１】
これにより、図９の例では、各画像には４つのブロックが含まれており、Ｎ＝４となる。このため、最初に送信されるｆｒａｍｅＩＤ＝０、ｂｌｏｃｋＩＤ＝１のデータを含むパケットのｐａｃｋｅｔＩＤは４×０＋１＝１と計算される。また、ｆｒａｍｅＩＤ＝１、ｂｌｏｃｋＩＤ＝１のデータを含むパケットのＩＤは４×１＋１＝５と計算される。
したがって、このようにして計算したｐａｃｋｅｔＩＤを用いれば、パケット順序制御部１２Ｈにおいてパケット順序を正しく保証することができる。
【００７２】
［本実施の形態の効果］
このように、本実施の形態は、パケット順序制御回路１２Ｈに、パケットを一時格納しておくためのバッファ３２を設け、比較回路３１が、入力されたパケットのパケットＩＤと、順序に従って次に選択すべきパケットのパケットＩＤを示す次選択ＩＤとを比較し、制御回路３６が、比較の結果、パケットＩＤと次選択ＩＤとが一致した場合は、当該パケットを転送処理の対象として選択し、これらパケットＩＤと次選択ＩＤとが一致しなかった場合は、当該パケットＩＤと対応する格納位置に当該パケットを格納し、次選択ＩＤに対応するパケットＩＤを持つパケットがバッファ３２に格納されている場合、当該パケットを転送処理の対象として選択するようにしたものである。
【００７３】
より具体的には、制御回路３６が、バッファ３２にパケットを格納する際、バッファ３２のうち、パケットＩＤと次選択ＩＤとの差分だけ基準位置から進んだ格納位置に当該パケットを格納し、転送処理の対象としてバッファ３２からパケットを選択する際、バッファ３２に格納されているパケットの先頭位置と、次選択ＩＤに対応する基準位置とを比較し、これら先頭位置と基準位置とが一致した場合は、先頭位置に格納されているパケットを転送処理の対象として選択するようにしたものである。
【００７４】
これにより、パケットＩＤの順序に従って、パケット順序制御回路１２Ｈに入力されたパケットを、データ処理回路１１Ｈへの転送対象として選択するか、もしくは、バッファ３２に一時格納するかが、パケットＩＤと次選択ＩＤとに基づいて正確に判定されることになる。このため、パケットが転送対象として選択した場合は、バッファ３２を経由することなくデータ処理回路１１Ｈへ転送することができる。また、バッファ３２に格納されているパケットはパケットＩＤに基づいてその格納場所を一意に特定することができるため、次選択ＩＤと対応するパケットをバッファ３２から直ちに選択することが可能となる。
【００７５】
したがって、１つのバッファ３２を設けるだけで、順次入力されるパケットを、これらパケットのヘッダ情報に含まれるパケットＩＤの順序に従って、順に選択することができる。このため、メモリリソースの制約が厳しいハードウェア実装であっても、最小限のメモリリソースでパケットの処理順序を保証することが可能となる。これにより、画像処理など、計算量が多くソフトウェア処理に向かないデータ処理が必要となるネットワークサービスであっても、メモリリソースの制約が厳しいハードウェア実装で実現することが可能となる。
【００７６】
［実施の形態の拡張］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００７７】
１…ネットワークシステム、１０…データ処理装置、１０Ｓ…ソフトウェア処理部、１０Ｈ…ハードウェア処理部、１１Ｓ…データ処理部（ＳＦ）、１１Ｈ…データ処理回路（ＨＦ）、１２Ｓ…パケット順序制御部（ＳＲ）、１２Ｈ…パケット順序制御回路（ＨＲ）、１３Ｓ…パケット転送部（ＳＦＦ）、１３Ｈ…パケット転送回路（ＨＦＦ）、１４Ｓ…転送制御部、１４Ｈ…転送制御回路、１５…入出力回路、２０…制御装置、２１…ユーザ端末、２２…ＳＦＣヘッダ情報付与装置（ＣＬ）、３０…パケット受信回路、３１…比較回路、３２…バッファ、３３…パケット選択回路、３４…データ解析回路、３５…データ送信回路、３６…制御回路、３７…データ受信回路、３８…パケット生成回路、３９…パケット送信回路、４０…パケット、４１…データ部、４２…ＩＰヘッダ情報、４３…ＵＤＰヘッダ情報、４４…ユーザ定義ヘッダ情報、４５…データ部、４６…ＳＦＣヘッダ情報、４７…パケットＩＤ、７０…パケット受信部、７１…比較部、７２…バッファ、７３…パケット選択部、７４…データ解析部、７５…データ送信部、７６…制御部、７７…データ受信部、７８…パケット生成部、７９…パケット送信部、Ｌ…通信リンク。
【図１】
0006654733.tif 000002
【図２】
0006654733.tif 000003
【図３Ａ】
0006654733.tif 000004
【図３Ｂ】
0006654733.tif 000005
【図４】
0006654733.tif 000006
【図５】
0006654733.tif 000007
【図６】
0006654733.tif 000008
【図７】
0006654733.tif 000009
【図８】
0006654733.tif 000010
【図９】
0006654733.tif 000011