(57)【要約】【課題】スケーラビリティや柔軟性・拡張性の高い、データフローアーキテクチャを利用した情報処理システム、その装置に向けられる中継装置、および、その情報処理方法を提供する。【解決手段】ルータ１からルータ２へ被処理パケット３００−１が送信されたとする。ルータ２は、ルータ１から被処理パケット３００−１を受信すると、当該被処理パケット３００−１に含まれるトークンを参照して、実行すべき処理を判断する。そして、ルータ２は、判断の結果得られた処理を、被処理パケット３００−１に含まれる被処理データ（データ１）に対して実行する。さらに、ルータ２は、経路制御情報を参照して、被処理データ（データ１）を処理することで得られた結果（データ２）の転送先を決定する。【選択図】図４
2012009996.tif 000002
【特許請求の範囲】
【請求項１】
情報処理システムであって、
ネットワーク接続された複数の中継ノードと、
管理ノードとを備え、
前記中継ノードの各々は、
経路制御情報に従って、受信したパケットを他の中継ノードへ転送する転送手段と、
処理規則を保持する記憶手段と、
受信したパケットが当該中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断する判断手段とを備え、前記被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含み、
当該中継ノードにおいて前記被処理パケットを受信すると、前記処理規則に基づいて、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行する処理手段と、
前記被処理データを処理することで得られた結果の転送先を決定する決定手段とを備え、
前記管理ノードは、
目的の情報処理を前記複数の中継ノードに割当てる割当手段と、
当該割当て結果に基づいて、前記複数の中継ノードへ前記処理規則を送信する送信手段とを含む、情報処理システム。
【請求項２】
前記中継ノードの各々は、前記被処理データとして、前記被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む、請求項１に記載の情報処理システム。
【請求項３】
前記処理規則は、同一の処理を所定回数繰返すための定義を含み、
前記処理手段は、前記処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す、請求項１または２に記載の情報処理システム。
【請求項４】
ネットワーク接続された複数の中継ノードを用いた情報処理に向けられた中継装置であって、
経路制御情報に従って、受信したパケットを他の中継装置へ転送する転送手段と、
処理規則を保持する記憶手段と、
受信したパケットが当該中継装置において処理すべき対象である被処理パケットであるか否かを判断する判断手段とを備え、前記被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含み、
当該中継装置において前記被処理パケットを受信すると、前記処理規則に基づいて、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行する処理手段と、
前記被処理データを処理することで得られた結果の転送先を決定する決定手段とを含む、中継装置。
【請求項５】
前記被処理データとして、前記被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む、請求項４に記載の中継装置。
【請求項６】
前記処理規則は、同一の処理を所定回数繰返すための定義を含み、
前記処理手段は、前記処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す、請求項４または５に記載の中継装置。
【請求項７】
他の装置からの前記処理規則を受信する受信手段をさらに備える、請求項４〜６のいずれか１項に記載の中継装置。
【請求項８】
ネットワーク接続された複数の中継ノードを用いた情報処理方法であって、
前記複数の中継ノードに処理規則を設定するステップと、
前記複数の中継ノードに含まれる第１の中継ノードが、パケットを受信すると、当該パケットが前記第１の中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断するステップとを備え、前記被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含み、
前記第１の中継ノードが、受信したパケットが当該中継ノードにおいて前記被処理パケットである場合に、前記処理規則に基づいて、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行するステップと、
前記第１の中継ノードが、前記被処理データを処理することで得られた結果の転送先である第２の中継ノードを決定するステップと、
前記第１の中継ノードが、前記被処理データを処理することで得られた結果を前記第２の中継ノードへ送信するステップと、
前記第１の中継ノードが、受信したパケットが当該中継ノードにおいて前記被処理パケットではない場合に、経路制御情報に従って、受信したパケットを他の中継ノードへ転送するステップとを備える、情報処理方法。
【請求項９】
前記第１の中継ノードが、前記被処理データとして、前記被処理データを処理することで得られた結果を含むパケットを生成するステップをさらに備える、請求項８に記載の情報処理方法。
【請求項１０】
前記第２の中継ノードが、前記第２の中継ノードにおいて前記被処理パケットを前記第１の中継ノードから受信すると、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行するステップをさらに備える、請求項９に記載の情報処理方法。
【請求項１１】
前記処理規則は、同一の処理を所定回数繰返すための定義を含み、
前記実行するステップは、前記処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、前記被処理パケットを当該指定された回数だけ受信するまで処理を繰返すステップを含む、請求項８または９に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上でのデータフローアーキテクチャを利用した情報処理システム、中継装置、および情報処理方法に関する。
【背景技術】
【０００２】
現在、一般的に用いられているコンピュータアーキテクチャとしては、ノイマン型計算機や制御フロー型計算機がある。このようなコンピュータアーキテクチャとは異なる思想で研究開発されたコンピュータアーキテクチャとして、データフローアーキテクチャ（Data-Flow Architecture）がある。
【０００３】
このようなデータフローアーキテクチャは、データの駆動によって順次計算が行なわれるという点に特徴がある。歴史的に見れば、データフローアーキテクチャは、１９７０年代から１９８０年代初期にかけて盛んに研究が行われた。
【０００４】
上述のようなデータフローアーキテクチャについての研究開発は、主として、並列処理によるプログラム実行の高速化に焦点が当てられていた。これまで、様々なデータフロー計算機の研究開発が行われ、数多くのデータフローアーキテクチャの実現方法が検討されてきた。
【０００５】
また、特許文献１〜３には、データ駆動型のデータフローを実現するための専用ハードウェアが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０６−２５９５８３号公報
【特許文献２】特開平０５−０００３１２号公報
【特許文献３】特開平０４−２８８７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のデータフロー計算機は、専用に設計されたハードウェアによって実現されており、データフロープログラムの規模に対するスケーラビリティや柔軟性・拡張性については、実用的に十分なレベルに到達することができなかった。
【０００８】
本発明は、上記のような問題を解決するためになされたものであって、その目的は、スケーラビリティや柔軟性・拡張性の高い、データフローアーキテクチャを利用した情報処理システム、その装置に向けられる中継装置、および、その情報処理方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明のある局面に従う情報処理システムは、ネットワーク接続された複数の中継ノードと、管理ノードとを含む。中継ノードの各々は、経路制御情報に従って、受信したパケットを他の中継ノードへ転送する転送手段と、処理規則を保持する記憶手段と、受信したパケットが当該中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断する判断手段とを含む。ここで、被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含む。中継ノードの各々は、さらに、当該中継ノードにおいて被処理パケットを受信すると、処理規則に基づいて、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行する処理手段と、被処理データを処理することで得られた結果の転送先を決定する決定手段とを含む。管理ノードは、目的の情報処理を複数の中継ノードに割当てる割当手段と、当該割当て結果に基づいて、複数の中継ノードへ処理規則を送信する送信手段とを含む。
【００１０】
好ましくは、中継ノードの各々は、被処理データとして、被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む。
【００１１】
好ましくは、処理規則は、同一の処理を所定回数繰返すための定義を含み、処理手段は、処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す。
【００１２】
この発明の別の局面に従えば、ネットワーク接続された複数の中継ノードを用いた情報処理に向けられた中継装置を提供する。本中継装置は、経路制御情報に従って、受信したパケットを他の中継装置へ転送する転送手段と、処理規則を保持する記憶手段と、受信したパケットが当該中継装置において処理すべき対象である被処理パケットであるか否かを判断する判断手段とを含む。ここで、被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含む。本中継装置は、さらに、当該中継装置において被処理パケットを受信すると、処理規則に基づいて、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行する処理手段と、被処理データを処理することで得られた結果の転送先を決定する決定手段とを含む。
【００１３】
好ましくは、本中継装置は、被処理データとして、被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む。
【００１４】
好ましくは、処理規則は、同一の処理を所定回数繰返すための定義を含み、処理手段は、処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す。
【００１５】
好ましくは、本中継装置は、他の装置からの処理規則を受信する受信手段をさらに含む。
【００１６】
この発明のさらに別の局面に従えば、ネットワーク接続された複数の中継ノードを用いた情報処理方法を提供する。本情報処理方法は、複数の中継ノードに処理規則を設定するステップと、複数の中継ノードに含まれる第１の中継ノードが、パケットを受信すると、当該パケットが第１の中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断するステップとを含む。被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含む。本情報処理方法は、第１の中継ノードが、受信したパケットが当該中継ノードにおいて被処理パケットである場合に、処理規則に基づいて、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行するステップと、第１の中継ノードが、被処理データを処理することで得られた結果の転送先である第２の中継ノードを決定するステップと、第１の中継ノードが、被処理データを処理することで得られた結果を第２の中継ノードへ送信するステップと、第１の中継ノードが、受信したパケットが当該中継ノードにおいて被処理パケットではない場合に、経路制御情報に従って、受信したパケットを他の中継ノードへ転送するステップとをさらに含む。
【００１７】
好ましくは、本情報処理方法は、第１の中継ノードが、被処理データとして、被処理データを処理することで得られた結果を含むパケットを生成するステップをさらに含む。
【００１８】
さらに好ましくは、本情報処理方法は、第２の中継ノードが、第２の中継ノードにおいて被処理パケットを第１の中継ノードから受信すると、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行するステップをさらに含む。
【００１９】
好ましくは、処理規則は、同一の処理を所定回数繰返すための定義を含み、実行するステップは、処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、被処理パケットを当該指定された回数だけ受信するまで処理を繰返すステップを含む。
【発明の効果】
【００２０】
本発明によれば、スケーラビリティや柔軟性・拡張性の高い、データフローアーキテクチャを実現することができる。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態に従う情報処理システムの概略構成を示す模式図である。
【図２】本実施の形態に従う中継装置のハードウェア構成を示すブロック図である。
【図３】本実施の形態に従う管理装置のハードウェア構成を示すブロック図である。
【図４】本実施の形態に従うＤＦＡＩにおける処理例を示す図である。
【図５】本実施の形態に従うＤＦＡＩにおける中継装置（中継ノード）において実現される制御構造を示す模式図である。
【図６】本実施の形態に従う情報処理システムにおける初期動作を説明するためのシーケンス図である。
【図７】本実施の形態に従う管理装置において実行されるデータフロープログラムの生成処理を説明するための図である。
【図８】本発明の実施の形態に従う中継装置が有する基本的な機能を説明するための模式図である。
【図９】本発明の実施の形態に従うトークン転送機能におけるパケットヘッダ部の書換えを説明するための図である。
【図１０】本発明の実施の形態に従う複数トークン同期機能を説明するための図である。
【図１１】本発明の実施の形態に従うノード内でのデータ処理機能を説明するための図である。
【図１２】本実施の形態に従う中継装置（中継ノード）における処理手順を示すフローチャートである。
【図１３】中継装置の仮想化技術を説明するための図である。
【発明を実施するための形態】
【００２２】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２３】
＜Ａ．コンセプト＞
本実施の形態に従う情報処理システムは、パケットベースのネットワーク（典型的には、インターネット））上で、データフローアーキテクチャを利用した情報処理を実現するための新たな方法を用いる。本明細書においては、このような新たな情報処理方法を、従来のデータフローアーキテクチャとは区別する観点から、「ＤＦＡＩ（Data-Flow Architecture on the Internet）」と称する。なお、典型的には、インターネット環境において実現されるため、"on the Internet"と称しているが、実施される環境は、インターネットに限られず、各種のパケットベースのネットワーク上で実現可能である。
【００２４】
一般的に、データフローアーキテクチャは、プロセッサによって順次処理が駆動される「プロセッサ駆動方式」と、トークンの到着によって処理が駆動される「トークン駆動方式」とに大別される。本実施の形態に従うＤＦＡＩは、後者の「トークン駆動方式」に分類されるアーキテクチャである。より具体的には、本実施の形態に従うＤＦＡＩは、相互接続されたルータなどの中継装置（中継ノード）によって構成されるパケットベースのネットワーク上で実現される。このとき、各中継装置は、以下に示すような処理を実行する。
【００２５】
すなわち、本実施の形態に従うＤＦＡＩでは、パケットベースのネットワークを「通信／転送」のためだけではなく、データフローアーキテクチャでの「処理」のためにも利用することになる。
【００２６】
インターネットに代表されるパケットベースのネットワークは、ネットワーク規模に対する高いスケーラビリティおよび故障に対する高いロバスト性を有する。そのため、上述したように、パケットベースのネットワークを「処理」にも利用することで、データフローアーキテクチャを用いて実現しようとする情報処理の内容（プログラムの規模）に対しても高いスケーラビリティを提供できる。さらに、中継装置での動的ルーティング技術や中継装置の仮想化技術などを利用することで、より高い柔軟性および拡張性を提供することもできる。
【００２７】
＜Ｂ．全体システム概要＞
図１は、本実施の形態に従う情報処理システムの概略構成を示す模式図である。図１を参照して、本実施の形態に従う情報処理システム１００は、パケットベースのネットワークを中心として構成されており、複数の中継装置１０−１，１０−２，…，１０−Ｎ（以下「中継装置１０」とも総称する。）と、管理装置２００とを含む。
【００２８】
図１に示す例では、複数の下位ネットワーク１，２，３が存在し、これらのネットワークが基幹ネットワーク４と接続されている構成を示す。なお、中継装置１０は、ネットワークとネットワークとの接続点、および、ネットワーク内のトポロジーなどに応じて、任意の位置に設けられる。
【００２９】
中継装置１０は、経路制御情報（後述する「ルーティングテーブル（通常パケット）」に相当）に従って、受信したパケットを他の中継装置１０へ順次転送するための転送機能を有している。典型的には、中継装置１０は、ルータやＬ３（Layer 3）スイッチなどとして実装される。すなわち、相互接続された複数の中継装置１０がパケットを順次転送することで、目的の宛先へパケットが搬送される。
【００３０】
後述するように、本実施の形態に従う中継装置１０は、従来のルータなどが有する基本的な転送機能に加えて、後述するようなＤＦＡＩを実現するための処理機能を搭載している。なお、本実施の形態に従う中継装置１０は、既存のルータのハードウェア構成を維持しつつ、そこで実行されるプログラムを追加／変更することで、実現することもできる。
【００３１】
管理装置２００は、本実施の形態に従うＤＦＡＩを実現するための各種処理を実行する。具体的には、管理装置２００は、各中継装置１０から状況を取得したり、処理規則などを各中継装置１０へ送信したりする。この処理の詳細については、後述する。
【００３２】
なお、以下の説明においては、「中継装置１０」および「管理装置２００」に対応付けて、それぞれ「中継ノード」および「管理ノード」という用語を用いる場合もある。これらの「中継ノード」および「管理ノード」という用語は、物理的に接続されている主体、および、論理的に接続されている主体のいずれをも含む概念である。たとえば、後述するような中継装置の仮想化技術を用いることで、物理的には単一の中継装置であっても、論理的には複数の中継装置として機能させることも可能である。つまり、「中継ノード」および「管理ノード」との用語は、何らかの各中継装置を識別するレベル（物理レベルもしくは論理レベル）の応じて、その実行される機能に着目したものである。そのため、単一の装置が複数のノードを提供する（仮想化技術）こともあり、反対に、複数の装置が単一のノードを提供する（クラスタ化技術や冗長化技術）こともある。
【００３３】
＜Ｃ．中継装置のハードウェア構成＞
次に、中継装置１０のハードウェア構成について説明する。
【００３４】
図２は、本実施の形態に従う中継装置１０のハードウェア構成を示すブロック図である。図２を参照して、中継装置１０は、スイッチ部１２と、転送処理部１４と、複数のポートユニット２０−１，２０−２，…，２０−Ｎ（以下「ポートユニット２０」とも総称する。）とを含む。
【００３５】
スイッチ部１２は、マルチプレクサを含み、転送処理部１４からの指令に従って、あるポートユニット２０から入力されたパケットを他のポートユニット２０へ出力する。このような動作によって、あるポートユニット２０に到着したパケットが、宛先に応じたポートユニット２０から送出される。
【００３６】
より具体的には、スイッチ部１２は、物理終端部２２と、転送エンジン２４と、バッファ２６とを含む。
【００３７】
物理終端部２２は、物理的な回線の終端であり、金属導体または光ファイバのネットワークケーブルと物理的に接続されるともに、当該ネットワークケーブル上を搬送されるパケット（を示す信号）を受信し、あるいは、当該ネットワークケーブル上にパケット（を示す信号）を送出する。
【００３８】
転送エンジン２４は、物理終端部２２において受信および復号されたパケットに対して、転送先を判断する。より具体的には、転送エンジン２４は、受信および復号されたパケットのヘッダ部などを参照して宛先を判断するとともに、判断した宛先に応じて、自ポートユニット２０からパケットを送出するか、あるいは、他のポートユニット２０からパケットを送出するかを判断する。そして、他のポートユニット２０から送出すべきパケットについては、バッファ２６を通じて、スイッチ部１２へ出力する。
【００３９】
バッファ２６は、転送エンジン２４とスイッチ部１２との間に配置され、両者の間で遣り取りされるパケットを一時的に記憶（バッファリング）する。なお、バッファ２６は、ＦＩＦＯ（First In First Out）で動作するが、ＱｏＳ（Quality of Service）などのパケットに対して優先順位などが設定されている場合には、バッファ２６に一時的に記憶されるパケットの読出／書込順序を変更してもよい。
【００４０】
転送処理部１４は、スイッチ部１２に対してパケット転送に係る各種の指示を与えるとともに、本実施の形態に従うＤＦＡＩを提供するための処理を実行する。より具体的には、転送処理部１４は、プロセッサ１５と、メモリ１６と、インターフェイス１７とを含む。プロセッサ１５は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などからなり、メモリ１６などに記憶されたプログラム（命令コード）に従って処理を実行する。メモリ１６は、プロセッサ１５で実行されるプログラム（命令コード）、パケットの転送に必要な経路制御情報、ＤＦＡＩを実現するための処理規則などを格納する。なお、メモリ１６は、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性記憶デバイスと、フラッシュメモリなどの不揮発性記憶デバイスとを含み得る。インターフェイス１７は、主として、外部処理装置３０とデータ通信を行う。
【００４１】
なお、転送処理部１４、または、スイッチ部１２と転送処理部１４とを、ＡＳＩＣ（Application Specific Integrated Circuit）などの専用ハードウェアとして実装してもよい。
【００４２】
外部処理装置３０は、転送処理部１４と接続され、主として、本実施の形態に従うＤＦＡＩを提供するための処理を実行する。より具体的には、より具体的には、外部処理装置３０は、プロセッサ３１と、メモリ３２と、インターフェイス３３とを含む。プロセッサ３１は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などからなり、メモリ３２などに記憶されたプログラム（命令コード）に従って処理を実行する。メモリ３２は、プロセッサ３１で実行されるプログラム（命令コード）や、ＤＦＡＩを実現するための処理規則などを格納する。なお、メモリ３２は、ＤＲＡＭなどの揮発性記憶デバイスと、フラッシュメモリなどの不揮発性記憶デバイスとを含み得る。インターフェイス３３は、主として、外部処理装置３０とデータ通信を行う。
【００４３】
なお、本実施の形態に従うＤＦＡＩを実施する場合に、外部処理装置３０は、必須の構成ではない。すなわち、中継装置１０が、当該中継装置１０に割当てられた処理を実行するのに十分な処理能力を備えている場合には、外部処理装置３０を設ける必要はない。但し、割当てられた処理の内容が複雑であったり、特殊な処理が割当てられたりした場合には、当該中継装置１０で実行されるべき処理の全部または一部を外部処理装置３０で実行することもできる。
【００４４】
＜Ｄ．管理装置のハードウェア構成＞
次に、管理装置２００のハードウェア構成について説明する。
【００４５】
図３は、本実施の形態に従う管理装置２００のハードウェア構成を示すブロック図である。図３を参照して、管理装置２００は、典型的には、汎用的なコンピュータアーキテクチャを用いて実装される。より具体的には、管理装置２００は、コンピュータ本体２０２と、表示装置としてのモニタ２０４と、入力装置としてのキーボード２１０およびマウス２１２とを含む。モニタ２０４、キーボード２１０、およびマウス２１２は、コンピュータ本体２０２とバス２０５を介して接続される。
【００４６】
コンピュータ本体２０２は、フレキシブルディスク（ＦＤ：Flexible Disc；以下「ＦＤ」とも称す。）ドライブ２０６と、光ディスクドライブ２０８と、ＣＰＵ（Central Processing Unit）２２０と、メモリ２２２と、直接アクセスメモリ装置、たとえば、ハードディスク２２４と、通信インターフェイス２２８とを含む。これらの部位についても、互いにバス２０５で接続されている。
【００４７】
ＦＤドライブ２０６は、ＦＤ２１６に情報を読み書きする。光ディスクドライブ２０８は、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）２１８などの光ディスク上の情報を読み込む。通信インターフェイス２２８は、外部とデータの遣り取りを行う。
【００４８】
なお、ＣＤ−ＲＯＭ２１８は、コンピュータ本体に対してインストールされるプログラムなどの情報を記録可能な媒体であれば、他の媒体、たとえば、ＤＶＤ−ＲＯＭ（Digital Versatile Disc）やメモリーカードなどでもよく、その場合は、コンピュータ本体２０２には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。また、バス２０５には、カセット形式の磁気テープを着脱自在に装着してアクセスする磁気テープ装置が接続されていてもよい。
【００４９】
メモリ２２２は、ＲＯＭ（Read Only Memory）およびＲＡＭ（Random Access Memory)を含む。
【００５０】
ハードディスク２２４は、初期プログラム２３１と、処理割当プログラム２３２と、処理配信プログラム２３３と、ネットワーク情報２３４とを格納する。
【００５１】
初期プログラム２３１は、プログラム作成の基礎となるプログラムである。ハードディスク２２４は、ユーザが作成したプログラムを初期プログラム２３１として格納することができる。初期プログラム２３１は、ＦＤ２１６またはＣＤ−ＲＯＭ２１８などの記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス２２８を経由して供給されてもよい。
【００５２】
処理割当プログラム２３２は、初期プログラム２３１に基づいて、初期プログラム２３１に対応するデータフロープログラムを作成する。また、処理割当プログラム２３２は、作成したデータフロープログラムに関する情報をハードディスク２２４に格納する。
【００５３】
処理配信プログラム２３３は、処理割当プログラム２３２が作成したデータフロープログラムに基づく処理規則を、中継装置１０のそれぞれへ送信する。
【００５４】
ネットワーク情報２３４は、相互接続された中継装置１０の接続情報（物理的接続および論理的接続）を含む。
【００５５】
これらのプログラムによる処理の詳細については、後述する。
また、処理割当プログラム２３２および処理配信プログラム２３３は、ＦＤ２１６、またはＣＤ−ＲＯＭ２１８などの記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス２２８を経由して供給されてもよい。
【００５６】
演算処理装置として機能するＣＰＵ２２０は、メモリ２２２をワーキングメモリとして、上述した各プログラムに対応した処理を実行する。
【００５７】
処理割当プログラム２３２および処理配信プログラム２３３は、上述の通り、ＣＰＵ２２０により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、ＣＤ−ＲＯＭ２１８、ＦＤ２１６などの記憶媒体に格納されて流通し、光ディスクドライブ２０８またはＦＤドライブ２０６などにより記憶媒体から読み取られてハードディスク２２４に一旦格納される。または、管理装置２００がネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク２２４にコピーされる。そうしてさらにハードディスク２２４からメモリ２２２中のＲＡＭに読み出されてＣＰＵ２２０により実行される。なお、ネットワーク接続されている場合には、ハードディスク２２４に格納することなくＲＡＭに直接ロードして実行するようにしてもよい。
【００５８】
図３に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、ＦＤ２１６、ＣＤ−ＲＯＭ２１８、ハードディスク２２４などの記憶媒体に記憶されたソフトウェアである。
【００５９】
＜Ｅ．処理概要＞
次に、本実施の形態に従うＤＦＡＩにおける処理の概要について説明する。
【００６０】
上述したように、本実施の形態に従うＤＦＡＩは、「トークン駆動方式」のデータフローアーキテクチャの一種である。そのため、ルータ間（あるいは、ノード間）でパケットが交換（転送）されることをトリガとして、各処理が実行される。すなわち、本実施の形態に従うＤＦＡＩにおいては、相互接続されたルータによって構成されるパケットベースのネットワーク上で、実行すべき処理の内容を示す情報（以下「トークン」とも称す）を格納したパケットを交換することによって、目的の情報処理を実現する。
【００６１】
図４は、本実施の形態に従うＤＦＡＩにおける処理例を示す図である。図４を参照して、たとえば、６個の中継装置１０−１〜１０−６からなるルータ１〜ルータ６（ノード１〜ノード６）がネットワーク接続されているものとする。このルータ間でパケットが交換されるものとする。
【００６２】
図４に示す、パケット３００−１，３００−２，…，３００−６は、いずれも、いずれかの中継装置１０（ルータ／中継ノード）において処理すべき対象のパケット（以下「被処理パケット」とも称す。）であるとする。上述したように、中継装置１０は、従来の転送機能をも有しており、ネットワーク上では、中継装置１０において何らの処理もなされることなく、目的の宛先へ転送されるパケットも流れる。
【００６３】
そのため、中継装置１０は、本実施の形態に従うＤＦＡＩを実現するためのパケットを選択的に抽出して指定された処理をするとともに、それ以外のパケット（区別のために、以下「通常パケット」とも称す。）については、経路制御情報に従って、目的の中継装置１０へ順次転送する。すなわち、各中継装置１０は、受信したパケットが当該中継装置１０において処理すべき対象である被処理パケットであるか否かを判断する。
【００６４】
この被処理パケット３００の各々は、実行すべき処理の内容を示す処理特定情報であるトークンと、当該処理の対象となる被処理データ（データ１，データ２，…）とを含む。
【００６５】
各中継装置１０は、受信した被処理パケット３００に対する処理を実行するための処理規則（この詳細については、後述する）を保持している。そして、各中継装置１０は、被処理パケットを受信すると、保持している処理規則に基づいて、当該被処理パケットに含まれる処理特定情報（トークン）に対応する処理を、当該被処理パケットに含まれる被処理データに対して実行する。
【００６６】
図４に示す例についてみれば、ルータ１からルータ２へ被処理パケット３００−１が送信されたとする。この被処理パケット３００−１は、ルータ２を指定するアドレスと、ルータ２において実行すべき処理を示すトークンと、トークンによって指示される処理の対象となる被処理データとを含む。
【００６７】
そして、ルータ２は、ルータ１から被処理パケット３００−１を受信すると、当該被処理パケット３００−１に含まれるトークンを参照して、実行すべき処理を判断する。なお、この実行すべき処理の判断には処理規則（後述する「フローテーブル」に相当）が用いられる。そして、ルータ２は、判断の結果得られた処理を、被処理パケット３００−１に含まれる被処理データ（データ１）に対して実行する。さらに、ルータ２は、経路制御情報（後述する「ルーティングテーブル（被処理パケット）」に相当）を参照して、被処理データ（データ１）を処理することで得られた結果（データ２）の転送先を決定する。
【００６８】
なお、図４に示す例では、ルータ２は、被処理データを処理することで得られた結果に対して、転送先であるルータ３においてさらに実行すべき処理を決定する。なお、このさらに実行すべき処理の判断には処理規則（フローテーブル）が用いられる。そして、ルータ２は、被処理データとして、被処理パケット３００−１に含まれる被処理データ（データ１）を処理することで得られた結果（データ２）を含み、かつ、トークンとして、さらに実行すべき処理の内容を含む、被処理パケット３００−２を生成する。この被処理パケット３００−２は、ルータ２からルータ５へ転送される。
【００６９】
同様の手順によって、ルータ３が被処理パケット３００−３をルータ４へ転送すると、ルータ４において、被処理パケット３００−３に含まれるトークンによって指示される処理を実行し、その処理の結果得られたデータ（データ４）を含む被処理パケット３００−４を新たに生成して、ルータ５へ転送する。
【００７０】
その後、ルータ５が被処理パケット３００−２および３００−４をそれぞれ受信すると、これらの２つの被処理パケットに対して処理の結果得られたデータ（データ５）を含む被処理パケット３００−５を新たに生成して、ルータ６へ転送する。すなわち、ルータ５においては、複数の被処理パケット３００−２および３００−４に対して、処理を実行する例を示す。
【００７１】
さらに、ルータ６が被処理パケット３００−５を受信すると、被処理パケット３００−５に含まれるトークンによって指示される処理を実行し、その結果得られたデータ６を含むパケット３００−６を新たに生成する。なお、図４に示す例では、ルータ６がＤＦＡＩの最終段に相当するので、ルータ６は、転送先においてさらに実行すべき処理を決定する必要はない。そのため、ルータ６で生成されるパケットには、何らかの処理を指示するためのトークンが存在しない、あるいは、無効化されている。すなわち、ルータ６が生成するパケット３００−６に格納されているデータ６が、図４に示すＤＦＡＩ処理での結果となる。
【００７２】
なお、現実のＤＦＡＩにおいては、より多くの処理が連続的に実行される場合が多いと考えられ、より多くの中継装置１０の間を順次パケットが転送されることで、目的の情報処理が達成される。なお、同一のＤＦＡＩの実行であっても、同一の中継装置（あるいは、中継ノード）で被処理パケットを複数回受信する場合もある。たとえば、複数の中継装置１０の間で被処理パケットを循環的に転送するような形態を採用した場合には、１回のＤＦＡＩの実行であっても、各中継装置１０には、複数回に亘って被処理パケットが転送されることになる。
【００７３】
上述したように、本実施の形態に従うＤＦＡＩの基本的なコンセプトは、データフローネットワークをパケットベースのネットワーク上にマッピングするという点にある。すなわち、データフローアーキテクチャにおけるノードを、パケットベースのネットワークにおけるルータ（中継ノード）に対応させる。同様に、データフローアーキテクチャにおける「トークン」を、パケットネットワークにおける「パケット」に対応させる。
【００７４】
このように構成することで、パケットベースのネットワークにおけるパケット交換を、エンド−エンド間の「通信」のために行うのではなく、ネットワーク中での「処理」に用いることができる。
【００７５】
＜Ｆ．中継装置の制御構成＞
次に、中継装置（中継ノード）における制御構成について説明する。
【００７６】
図５は、本実施の形態に従うＤＦＡＩにおける中継装置１０（中継ノード）において実現される制御構造を示す模式図である。図５を参照して、中継装置１０は、その制御構造として、受信部１０２と、パケット種別判断部１０４と、転送制御部１０６と、送信部１０８と、処理実行部１１０と、転送先決定部１１２と、更新部１１８と、データ保持部１２０とを含む。
【００７７】
データ保持部１２０には、少なくとも、ルーティングテーブル（通常）１２２と、フローテーブル１２４と、ルーティングテーブル（ＤＦＡＩ）１２６とを含む。
【００７８】
これらの制御構造のうち、データ保持部１２０を除く各部については、典型的には、転送処理部１４のプロセッサ１５がプログラムを実行することで実現され、データ保持部１２０については転送処理部１４のメモリ１６の所定領域が割当てられることで実現される。なお、図５に示す制御構造の全部または一部をハードウェアによって実現してもよい。
【００７９】
受信部１０２は、中継装置１０（中継ノード）に受信されたパケットを検知する。受信部１０２が検知した受信パケットの情報は、パケット種別判断部１０４へ出力される。
【００８０】
パケット種別判断部１０４は、受信パケットが自装置（自ノード）において処理すべき対象である被処理パケットであるか否かを判断する。すなわち、パケット種別判断部１０４は、受信パケットの各々について、通常パケットおよび被処理パケットのいずれであるかを判断する。なお、パケット種別は、そのパケットのペイロード部に含まれる情報に基づいて判断される。そして、通常パケットと判断された受信パケットは、転送制御部１０６へ出力され、被処理パケットと判断された受信パケットは、処理実行部１１０へ出力される。
【００８１】
転送制御部１０６は、経路制御情報に従って、受信パケットを他の中継装置１０（中継ノード）へ転送するための処理を実行する。すなわち、転送制御部１０６は、データ保持部１２０に保持されるルーティングテーブル（通常）１２２を参照して、受信したパケットのヘッダ部（宛先情報）を、転送先の中継装置１０のインターフェイスアドレス（典型的には、ＭＡＣ（Media Access Control address）アドレスなど）に書換える。そして、転送制御部１０６は、宛先を書換えたパケットを送信部１０８へ出力する。
【００８２】
処理実行部１１０は、被処理パケットを受信すると、処理規則であるフローテーブル１２４に基づいて、当該パケットに含まれる処理特定情報（トークン）に対応する処理を、当該パケットに含まれる被処理データに対して実行する。より具体的には、処理実行部１１０は、フローテーブル１２４を参照して、被処理パケットのペイロード部に含まれる「フローＩＤ」の値に対応する処理を特定するとともに、被処理パケットのペイロード部に含まれる「データ」に対して当該処理を実行する。ここで、フローテーブル１２４は処理規則であり、記憶手段であるデータ保持部１２０に保持される。
【００８３】
なお、処理実行部１１０は、処理の内容や処理量に応じて、外部処理装置３０に処理を実行させ、その結果を得るようにしてもよい。
【００８４】
転送先決定部１１２は、被処理パケットに含まれる被処理データを処理実行部１１０が処理することで得られた結果の転送先を決定する。より具体的には、転送先決定部１１２は、データ保持部１２０に保持されるルーティングテーブル（ＤＦＡＩ）１２６を参照して、被処理パケットに含まれる「フローＩＤ」の値に対応する宛先を転送先として判断する。
【００８５】
パケット生成部１１４は、処理実行部１１０が被処理データを処理することで得られた結果を含むパケットを生成する。このとき、パケット生成部１１４は、転送先決定部１１２が判断した転送先のアドレスをパケットのヘッダ部に書込む。
【００８６】
送信部１０８は、転送制御部１０６から出力されたパケット、または、パケット生成部１１４が生成したパケットをネットワーク上に送出する。
【００８７】
更新部１１８は、管理装置２００から処理規則である理規則であるフローテーブル１２４を受信するとともに、当該受信したフローテーブル１２４を用いて、データ保持部１２０を更新する。
【００８８】
＜Ｇ．管理装置の機能＞
次に、本実施の形態に従う管理装置２００が提供する機能について説明する。
【００８９】
管理装置２００は、ユーザによって入力される目的の情報処理を複数の中継装置１０（中継ノード）に割当てる機能と、この割当て結果に基づいて、複数の中継装置１０（中継ノード）のそれぞれへ処理規則を送信する機能とを有する。
【００９０】
図６は、本実施の形態に従う情報処理システム１００における初期動作を説明するためのシーケンス図である。図７は、本実施の形態に従う管理装置２００において実行されるデータフロープログラムの生成処理を説明するための図である。
【００９１】
図６を参照して、管理装置２００は、定期的または所定イベントに応じて、１または複数の中継装置１０（中継ノード）へアクセスして、複数の中継装置１０が相互接続されているネットワークの情報を取得する（図３に示すネットワーク情報２３４）。
【００９２】
より具体的には、管理装置２００は、中継装置（中継ノード）１，２，…，Ｎからそれぞれ送信される経路制御情報を取得する（シーケンスＳＱ１０）と、当該情報に基づいて、ネットワーク情報２３４を新規作成、あるいは、自装置で保持しているネットワーク情報２３４の内容を更新する（シーケンスＳＱ１２）。
【００９３】
その後、管理装置２００は、初期プログラムを受付ける（シーケンスＳＱ１４）と、当該初期プログラムを実現するためのデータフローを作成する（シーケンスＳＱ１６）。
【００９４】
図７を参照して、たとえば、図７（Ａ）に示すようなコードで記述されたプログラムを解析して、図７（Ｂ）に示すようなデータフローを生成する。なお、図７（Ｂ）に示すようなブロック形式で具現化されている必要はない。
【００９５】
図７（Ｂ）に示すデータフローは、相互接続された複数のノードから構成されており、各ノードにおいては、典型的には、入力データ、処理の内容、出力データが定義されている。
【００９６】
管理装置２００は、図７（Ｂ）に示すデータフローアーキテクチャにおける各ノードを、パケットベースのネットワークにおける現実の中継装置１０（中継ノード）に割当てる。なお、図７（Ｂ）に示すノード間で遣り取りされるデータが、現実の中継装置１０（中継ノード）の間で遣り取りされるパケットに含まれるデータに対応する。
【００９７】
なお、図７（Ｂ）には、典型的には、１つのデータフローを示すが、複数のデータフローを並列的に生成してよい。この場合には、識別情報（フローＩＤ）の値を異ならせることで、互いに区別することができる。
【００９８】
再度図６を参照して、管理装置２００は、シーケンスＳＱ１６において作成したデータフローに含まれるそれぞれのノードを中継装置１０へ割当てる（シーケンスＳＱ１８）。さらに、管理装置２００は、シーケンスＳＱ１８における割当て結果に基づいて、フローテーブル１２４およびルーティングテーブル（ＤＦＡＩ）１２６をそれぞれの中継装置１０（中継ノード）へ送信する（シーケンスＳＱ２２）。
【００９９】
中継装置１０（中継ノード）の各々は、受信したフローテーブル１２４およびルーティングテーブル（ＤＦＡＩ）１２６を保持する（シーケンスＳＱ２４）。
【０１００】
それぞれの中継装置１０（中継ノード）へのフローテーブル１２４およびルーティングテーブル（ＤＦＡＩ）１２６の設定が完了すると、管理装置２００は、データフローアーキテクチャをトリガするための初期データを、データフローの初期ノードに対応する中継装置１０（中継ノード）へ向けて、初期値を含むパケットを送信する（シーケンスＳＱ３２）。すると、それぞれの中継装置１０（中継ノード）が順次パケットを転送しつつ、一連の情報処理（計算）を開始する（シーケンスＳＱ３４）。
【０１０１】
なお、一連の情報処理（計算）の結果は、管理装置２００へ戻すようにプログラムしてもよいし、他の装置（ノード）へ出力するようにプログラムすることもできる。
【０１０２】
＜Ｈ．中継装置の基本機能＞
本実施の形態に従うＤＦＡＩを実現するための中継装置１０（中継ノード）が有する基本的な機能としては、以下の４つが挙げられる。
【０１０３】
（１）  トークン転送機能
（２）  複数トークン同期機能
（３）  データ処理機能
（４）  出力ノード決定機能
図８は、本発明の実施の形態に従う中継装置１０が有する基本的な機能を説明するための模式図である。以下、図８を参照して、これらの各機能について詳述する。
【０１０４】
（ｈ１．トークン転送機能）
本実施の形態に従う中継装置１０の有する基本機能の一つとして「トークン転送機能」がある。このトークン転送機能は、経路制御情報に従って、受信した被処理パケットを他の中継装置へ転送する機能である。なお、このトークン転送機能は、従来のルータにおけるルーティング機能と基本的には同じである。但し、各パケットに設定される宛先などは、本実施の形態に従うＤＦＡＩに向けられたものとなる。
【０１０５】
また、「トークン」という用語は、主として、データフローアーキテクチャにおいて用いられる用語であるが、本実施の形態に従うＤＦＡＩとの対応付けて説明することがより理解を容易にすると考えて、並列的に使用する。
【０１０６】
中継装置１０は、前段に位置する中継装置（中継ノード）から受けた被処理パケット（データフローアーキテクチャにおけるトークンに相当）を後段に位置する中継装置（中継ノード）へ転送する。
【０１０７】
より具体的には、中継装置１０（中継ノード）は、何らかのパケットを受信すると、データフローアーキテクチャにおいて次に位置するノードに対応付けられた中継装置（中継ノード）を特定する。そして、中継装置１０（中継ノード）は、当該受信パケットのヘッダ部に当該次に位置するノードのアドレス（次ノードアドレス）を組込むとともに、当該受信パケットのペイロード部に、データフローアーキテクチャにおけるトークンに相当する情報（トークンＩＤおよび被処理データ）を組込む。
【０１０８】
なお、前段に位置する中継装置１０（中継ノード）から受信するパケットは、通常パケットおよび被処理パケットのいずれであってもよい。
【０１０９】
図９は、本発明の実施の形態に従うトークン転送機能におけるパケットヘッダ部の書換えを説明するための図である。
【０１１０】
図９（Ａ）に示すように、いずれかの中継装置１０（中継ノード）が通常パケット３５０を受信したとする。この通常パケット３５０は、ヘッダ部３１０と、ペイロード部３２０とを含むとする。そして、ヘッダ部３１０は、送信元アドレスを格納する領域３１２と、送信先アドレスを格納する領域３１４とを含む。なお、ヘッダ部３１０には、送信元および送信先アドレスに加えて、（パケット自身の）ＩＤ情報、チェックサム、シーケンス番号などの情報も格納される。
【０１１１】
いずれかの中継装置１０（中継ノード）が通常パケット３５０を受信すると、当該中継装置１０は、そのヘッダ部３１０のアドレス情報を書換える。図９（Ａ）に示す例では、図８に示すルータＡ（ノードＡ）がヘッダ部３１０のアドレス情報を書換える場合の処理を示す。すなわち、ルータＡ（ノードＡ）は、送信元アドレスとして、自ノードでパケットの送出に用いるインターフェイスのアドレスである「Ａ２」を領域３１２へセットするとともに、送信先アドレスとして、設定されるデータフローにおいて次のノードに対応するルータＣ（ノードＣ）のインターフェイスのアドレスである「Ａ２」を領域３１４へセットする。
【０１１２】
このようにヘッダ部を書換えることで、ルータＡ（ノードＡ）が受信した通常パケット３５０は、被処理パケット３００−Ａ２として、ルータＡ（ノードＡ）から後段のルータＢ（ノードＢ）へ転送される。
【０１１３】
すなわち、通常のパケットベースのネットワークにおけるパケット交換（転送）処理では、エンド−エンド通信が行われるため、パケットのヘッダ部３１０には、送信先アドレスとして、宛先ホストアドレスがセットされる。これに対して、本実施の形態に従うＤＦＡＩでは、パケットのヘッダ部３１０には、送信先アドレスとして、対象のデータフローに対応して次ノード（後段）のアドレスがセットされる。
【０１１４】
このように、送信先アドレスとして、データフローに対応するルータ（ノード）のアドレスが順次セットされることで、ホスト間のエンド−エンド通信ではなく、ノード間のホップ・バイ・ホップ通信を実現する。そして、ノード間のホップ・バイ・ホップ通信を用いて、データフローアーキテクチャを実現する。
【０１１５】
なお、パケットのペイロード部３２０には、ＤＦＡＩを実現するための処理（トークン）の情報などが格納される。そのため、図９（Ａ）に示すように、データフローにおいて先頭のノードに対応する中継装置１０（中継ノード）は、ペイロード部３２０を更新してもよい。
【０１１６】
さらに、図９（Ｂ）には、図８に示すルータＡ（ノードＡ）が被処理パケット３００−Ａ１を受信し、さらに、後述するようなデータ処理機能により、被処理パケット３００−Ａ１に含まれる被処理データに対して何らかの処理を実行した場合の処理例を示す。
【０１１７】
この図９（Ｂ）に示す例では、ヘッダ部３１０に保持される送信元アドレス（領域３１２の値）および送信先アドレス（領域３１４の値）を書換えるとともに、ヘッダ部３１０についても、処理の結果に応じて、トークンの内容が書換えられる。すなわち、被処理パケット３００−Ａ１のペイロード部３２０の記述３２４が記述３２２に書換えられる。この処理については、（３）データ処理機能に関する説明において詳述する。
【０１１８】
（ｈ２．入力ノードからの複数トークン同期機能）
次に、複数トークン同期機能について説明する。
【０１１９】
たとえば、複数の処理結果を合計するような処理を考えると、各処理結果を格納する被処理パケットを複数回に亘って受領するまで待つとともに、これらを順次積算していく必要がある。すなわち、処理対象のデータフローには、同一の処理を所定回数繰返すための定義を含み得る。そこで、本実施の形態に従う中継装置１０（中継ノード）は、フローテーブルとして、同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す。
【０１２０】
図１０は、本発明の実施の形態に従う複数トークン同期機能を説明するための図である。
【０１２１】
図１０（Ａ）を参照して、本実施の形態に従う複数トークン同期機能を実現するために、各中継装置１０（中継ノード）が保持するフローテーブル１２４には、「フローＩＤ」の別に、「カウント」および「条件」の欄が設けられている。この「条件」の値は、対応する「フローＩＤ」について処理を繰返す必要のある回数を示し、「カウント」の値は、各時点までの処理の実行済の回数を示す。すなわち、フローテーブル１２４には、トークン同期機能が必要な処理を含む各処理について、「フローＩＤ」、「カウント」、「条件」、「処理」の値が設定される。ここで、「カウント」にセットされる値（繰返し回数）は、設定されているデータフロープログラムに依存して決定される。
【０１２２】
また、同期させる必要のある被処理パケット（トークン）に対しては、ユニークなフローＩＤが割当てられる。そして、中継装置１０（中継ノード）がフローテーブル１２４を参照することで、処理を所定回数に亘って繰返す。
【０１２３】
より具体的な処理手順としては、図１０（Ｂ）を参照して、まず、中継装置１０（中継ノード）は、フローテーブル１２４の「カウント」の欄をゼロリセットする。その後、中継装置１０（中継ノード）が、フローテーブル１２４に記述されたいずれかのフローＩＤを有する被処理パケットを受信すると、当該受信した被処理パケットに含まれる被処理データを一時的に保持するとともに、フローテーブル１２４において、受信した被処理パケットと同一のフローＩＤに対応する「カウント」の値を１だけインクリメント（カウントアップ）する。
【０１２４】
なお、現実の実装例としては、中継装置１０（中継ノード）が何らかの被処理パケットを受信すると、当該被処理パケットのペイロード部に含まれる「フローＩＤ」の値を取得し、この取得した「フローＩＤ」の値と一致するエントリをフローテーブル１２４から検索する。そして、取得した「フローＩＤ」の値と一致するエントリが存在する場合には、当該「フローＩＤ」に対応する「カウント」の値を１だけインクリメント（カウントアップ）する。
【０１２５】
このような処理を所定回数繰返すと、「フローＩＤ」に対応する「カウント」の値が順次増加する。そして、「フローＩＤ」の値が増加して、対応する「条件」の値と一致すると、必要な被処理パケットが既に受領されていると判断する。すると、中継装置１０（中継ノード）は、それ以降の当該被処理パケットの取得を行わない。それに代えて、当該「フローＩＤ」に対応する処理の実行がトリガされ、予め取得された所定回数分の被処理パケットに対して、当該処理が実行される。
【０１２６】
すなわち、受信された被処理パケット（トークン）の数を示す「カウント」の値＝「条件」の値（同期処理に必要な被処理パケットの数）となった場合、中継装置１０（中継ノード）は、ノードは対応するデータ処理機能をトリガするとともに、対応する「カウント」を０にリセットする。
【０１２７】
（ｈ３．ノード内でのデータ処理機能）
上述したように、フローテーブル１２４において定義された条件が満足されて、処理の実行がトリガされると、中継装置１０の内部に設けられたプロセッサ１５（図２参照）、または、外部処理装置３０に設けられたプロセッサ３１（図２参照）を用いて、受信した被処理パケットのペイロード部３２０に含まれる被処理データに対して、フローＩＤにより指定された処理が実行される。このとき、中継装置１０内部のプロセッサを用いる場合には、従来のルータでの処理と実質的に同様のハードウェアで実現されるが、外部処理装置３０を用いる場合には、被処理パケットをいずれかの記憶領域に保持して、パケット転送処理を一時的にフックする必要がある。
【０１２８】
なお、実行される処理に応じて、中継装置１０内部のプロセッサと、外部処理装置３０のプロセッサとの使用を選択してもよい。たとえば、実時間（リアルタイム）性が要求される処理である場合や、単純な処理である場合には、その処理を中継装置１０内部のプロセッサで実行し、あるいは、実時間（リアルタイム）性が要求されない処理である場合や、複雑な処理である場合に、その処理を外部処理装置３０のプロセッサで実行することもできる。このように、有効化するプロセッサを選択することで、高速性、柔軟性、拡張性を実現できる。
【０１２９】
図１１は、本発明の実施の形態に従うノード内でのデータ処理機能を説明するための図である。
【０１３０】
図１１（Ａ）を参照して、一例として、中継装置１０（中継ノード）が保持するフローテーブル１２４には、「フローＩＤ」＝「１」のデータ処理として、「＋」（加算処理）が定義されているものとする。また、「条件」＝「２」が設定されており、上述したような複数トークン同期機能が設定されている。すなわち、図１１（Ａ）に示すフローテーブル１２４では、「フローＩＤ」＝「１」が設定されている２つの被処理パケットに対して、それぞれペイロード部に保持されている、合計２つの被処理データを加算するデータ処理が定義されているものとする。
【０１３１】
ここで、中継装置１０が２つの被処理パケット３００−Ａ２１，３００−Ａ２２（トークン）を受信したとする。すると、被処理パケット３００−Ａ２１（トークンｘ）のペイロード部に保持されている「データ」＝「２」、および、被処理パケット３００−Ａ２２（トークンｙ）のペイロード部に保持されている「データ」＝「３」が抽出され、データ処理が実行される。
【０１３２】
すなわち、図１１（Ｂ）に示すように、トークンｘおよびトークンｙがプロセッサへ送られて、「フローＩＤ」＝「１」として設定されているデータ処理が実行される。そして、このデータ処理によって得られた結果を含む新たなトークンｚが生成される。このトークンｚは、後述するように、出力ノードが決定された後に、新たな被処理パケットとして後段の中継装置１０（中継ノード）へ送出される。
【０１３３】
なお、図１１には、複数の被処理パケット（トークン）に対して同一の処理を複数回繰返す場合の動作を例示したが、１つの被処理パケットに対して、特定の処理を実施するような動作も可能である。
【０１３４】
（ｈ４．出力ノード決定機能）
上述したようなデータ処理が実行された後、中継装置１０（中継ノード）は、データ処理することで得られた結果の転送先を決定する。このような出力ノード決定機能は、図８に示すようなルーティングテーブル（ＤＦＡＩ）１２６を利用することで実現される。
【０１３５】
すなわち、図８を再度参照して、ルーティングテーブル（ＤＦＡＩ）１２６は、被処理パケットを受信した入力インターフェイスを示す「入力」の欄、「フローＩＤ」の欄、出力インターフェイスを示す「出力」の欄を含む。
【０１３６】
中継装置１０（中継ノード）は、何らかの被処理パケットを受信すると、当該被処理パケットが到着した入力インターフェイスのアドレスと、被処理パケット（トークン）に含まれる記入されているフローＩＤとをもとにルータテーブルを検索し、出力インターフェイスのアドレスを決定する。
【０１３７】
たとえば、図８に示すルーティングテーブル（ＤＦＡＩ）１２６の例では、「入力」については、「Ｃ１」および「Ｃ２」の合計２つのエントリがある。すなわち、入力インターフェイスが「Ｃ１」で受領した被処理パケットであって、「フローＩＤ」＝「１」をもつものについては、データ処理後、出力インターフェイスＣ３からネットワークへ送出される。
【０１３８】
ここで、「＊」（アスタリスク）は不問を意味し、図８に示す例では、入力インターフェイスが「Ｃ２」で受領した被処理パケットは、その「フローＩＤ」の値にかかわらず、データ処理後、出力インターフェイスＣ４からネットワークへ送出される。
【０１３９】
なお、このルーティングテーブル（ＤＦＡＩ）１２６に対する検索処理については、一般的なルーティングテーブルの検索処理と同様に、より長い文字列を含むものを選択する、最長一致（longest match）の規則が利用される。
【０１４０】
なお、出力インターフェイスとして複数のエントリが記載されている場合、中継装置１０（中継ノード）は、記載されているすべてのインターフェイスから送出されるパケットへ複製し、各出力インターフェイスから送出する。
【０１４１】
フローテーブル１２４は、データフロープログラムによって決定される。従って、ルーティングテーブルをダイナミックに書き換える（動的ルーティングを行う）ことにより、データ処理中の動的プログラミングを実現できる。
【０１４２】
さらに、ルーティングテーブル（ＤＦＡＩ）１２６を逆引きすることにより、計算結果の誤差フィードバックにおいて必要となる逆方向伝播を実現することもできる。
【０１４３】
なお、ルーティングテーブルのエントリが非対称である場合（入力インターフェイスの指定が「＊（アスタリスク）」の場合）には、そのままでは逆引きができない。そこで、非対称なルーティングテーブルのエントリに一致した場合には、トークンの送出履歴を保存する。これにより、非対称なルーティングテーブルであっても逆引き可能となる。
【０１４４】
＜Ｉ．処理フロー＞
次に、本実施の形態に従う中継装置１０（中継ノード）における処理フローについてまとめて記述する。図１２は、本実施の形態に従う中継装置１０（中継ノード）における処理手順を示すフローチャートである。
【０１４５】
図１２を参照して、中継装置１０は、何らかのパケットを受信したか否かを判断する（ステップＳ２）。何らのパケットも受領していなければ（ステップＳ２においてＮＯ）、ステップＳ２の処理が繰返される。
【０１４６】
何らかのパケットを受信した場合（ステップＳ２においてＹＥＳの場合）には、中継装置１０は、受信パケットが被処理パケットであるか否かを判断する（ステップＳ４）。すなわち、中継装置１０は、受信したパケットが自装置で何らかのデータ処理をすべき対象のパケットであるか否かを判断する。
【０１４７】
受信パケットが被処理パケットではない場合（ステップＳ４においてＮＯの場合）、すなわち、受信パケットが通常パケットである場合には、処理はステップＳ４０へ進む。
【０１４８】
これに対して、受信パケットが被処理パケットである場合（ステップＳ４においてＹＥＳの場合）には、中継装置１０は、被処理パケットのペイロード部３２０（図９参照）に記述されている「フローＩＤ」の値を取得する（ステップＳ６）。そして、中継装置１０は、フローテーブル１２４を参照して、ステップＳ６において取得した「フローＩＤ」の値に対応するエントリが存在するか否かを判断する（ステップＳ８）。
【０１４９】
取得した「フローＩＤ」の値に対応するエントリが存在しない場合（ステップＳ８においてＮＯの場合）には、中継装置１０は、自装置では、当該被処理パケットに対するデータ処理が不要であると判断し、処理はステップＳ４０へ進む。
【０１５０】
これに対して、取得した「フローＩＤ」の値に対応するエントリが存在する場合（ステップＳ８においてＹＥＳの場合）には、中継装置１０は、取得した「フローＩＤ」の値に対応するエントリに含まれる、「条件」の欄の値および「処理」の欄の値を取得する（ステップＳ１０）。すなわち、中継装置１０は、処理規則であるフローテーブル１２４に基づいて、対象の被処理パケットに対して実行すべきデータ処理の内容を特定する。
【０１５１】
続いて、中継装置１０は、ステップＳ１０において取得した「条件」の値が「１」以外であるか否かを判断する（ステップＳ１２）。
【０１５２】
ステップＳ１０において取得した「条件」の値が「１」以外である場合（ステップＳ１２においてＹＥＳの場合）には、中継装置１０は、複数トークン同期機能の有効化が設定されていると判断し、フローテーブル１２４において、対応するエントリの「カウント」の欄の値をゼロリセットする（ステップＳ１４）。
【０１５３】
続いて、中継装置１０は、受信した被処理パケットを一時的に保持するとともに、対応する「カウント」の値を１だけインクリメントする（ステップＳ１６）。そして、中継装置１０は、インクリメント後の「カウント」の値が、対応するエントリの「条件」の欄に設定されている値に到達しているか否かを判断する（ステップＳ１８）。
【０１５４】
インクリメント後の「カウント」の値が、対応するエントリの「条件」の値まで到達していない場合（ステップＳ１８においてＮＯの場合）には、対応するエントリの「フローＩＤ」の値と同じ「フローＩＤ」を有するさらなる被処理パケットの受信を待つ（ステップＳ２０）。そして、ステップＳ１６以下の処理が繰返される。
【０１５５】
インクリメント後の「カウント」の値が、対応するエントリの「条件」の値まで到達している場合（ステップＳ１８においてＹＥＳの場合）には、一時的に保持されているすべての被処理パケットに対して、対応するエントリの「処理」の欄に記載のデータ処理を実行する（ステップＳ２２）。
【０１５６】
これに対して、ステップＳ１０において取得した「条件」の値が「１」である場合（ステップＳ１２においてＮＯの場合）には、中継装置１０は、複数トークン同期機能の無効化が設定されていると判断し、受信した被処理パケットに対して、対応するエントリの「処理」の欄に記載のデータ処理を実行する（ステップＳ２４）。
【０１５７】
ステップＳ２２またはステップＳ２４の実行後、中継装置１０は、ルーティングテーブル（ＤＦＡＩ）１２６を参照して、対象の被処理パケットを受信した入力インターフェイスに対応する転送先を取得する（ステップＳ２６）。
【０１５８】
その後、ステップＳ２６において取得した転送先をヘッダ部に記述し、ステップＳ２２またはステップＳ２４におけるデータ処理の実行により得られた結果をペイロード部に記述することで、新たなパケットを生成する（ステップＳ２８）。
【０１５９】
一方、ステップＳ４０においては、中継装置１０は、自装置では当該被処理パケットに対するデータ処理が不要であると判断し、ルーティングテーブル（通常）１２２を参照して、対象のパケットを受信した入力インターフェイスに対応する転送先を取得する。そして、中継装置１０は、受信したパケットのヘッダ部に記述されている宛先をステップＳ４０において取得した転送先の宛先に書換えることで、新たなパケットを生成する（ステップＳ４２）。
【０１６０】
最終的に、中継装置１０は、ステップＳ２８またはステップＳ４２において生成されたパケットをネットワークへ向けて送出する（ステップＳ３０）。そして、処理は終了する。
【０１６１】
＜Ｊ．その他の実施形態＞
（１）  仮想化技術
上述した説明においては、基本的には、中継装置１０の物理的なアドレスと論理的なアドレスとが一対一に対応する構成について説明したが、１つの中継装置１０を複数の論理的な中継ノードとして取扱うこともできる。このような方法を中継装置の仮想化技術などとも称する。
【０１６２】
図１３は、中継装置の仮想化技術を説明するための図である。図１３（Ａ）には、中継装置１０の物理的なネットワーク例を示し、図１３（Ｂ）には、中継装置１０が提供する論理的なネットワーク例を示す。すなわち、図１３（Ｂ）に示す例では、中継装置１０−ａが仮想化されることで、論理的には、４つの中継ノード１０−ａ１，１０−ａ２，１０−ａ３，１０−ａ４として扱うこともできる。
【０１６３】
このような仮想化技術を利用することで、スケーラビリティや柔軟性・拡張性をより高めることができる。
【０１６４】
（２）  高度データフローアーキテクチャ
本実施の形態に従うＤＦＡＩによれば、従来のデータフローアーキテクチャと同様の処理に加えて、「高度データフローアーキテクチャ」に従う処理の実現も可能である。
【０１６５】
「高度データフローアーキテクチャ」は、従来のデータフローアーキテクチャの機能に加えて、処理実行中にプログラムを動的に改変する機能（動的プログラミング）や、演算結果の誤差フィードバックに基づく学習機能（自己組織的プログラミング）を利用することができる。
【０１６６】
＜Ｋ．作用効果＞
本実施の形態に従う情報処理システムによれば、通常の中継装置（中継ノード）としての機能を維持しつつ、データフローアーキテクチャに基づく情報処理を提供できる。そのため、データフローアーキテクチャを実現するために必要なコストを抑制することができる。
【０１６７】
また、通常のネットワークでは、多数の中継装置（ルータやＬ３スイッチ）などが配置されるので、これらを利用することで、高いスケーラビリティおよび柔軟性・拡張性をもった、データフローアーキテクチャの実行環境を提供することができる。
【０１６８】
また、高度データフローアーキテクチャを利用することにより、処理実行中にプログラムを動的に改変する機能（動的プログラミング）や、演算結果の誤差フィードバックに基づく学習機能（自己組織的プログラミング）などを利用することもできる。
【０１６９】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７０】
１，２，３  下位ネットワーク、４  基幹ネットワーク、１０  中継装置（中継ノード）、１２  スイッチ部、１４  転送処理部、１５，３１  プロセッサ、１６，３２，２２２  メモリ、１７，３３  インターフェイス、２０  ポートユニット、２２  物理終端部、２４  転送エンジン、２６  バッファ、３０  外部処理装置、１００  情報処理システム、１０２  受信部、１０４  パケット種別判断部、１０６  転送制御部、１０８  送信部、１１０  処理実行部、１１２  転送先決定部、１１４  パケット生成部、１１８  更新部、１２０  データ保持部、１２４  フローテーブル、２００  管理装置、２０２  コンピュータ本体、２０４  モニタ、２０５  バス、２０６  ドライブ、２０８  光ディスクドライブ、２１０  キーボード、２１２  マウス、２１８  ＲＯＭ、２２０  ＣＰＵ、２２４  ハードディスク、２２８  通信インターフェイス、２３１  初期プログラム、２３２  処理割当プログラム、２３３  処理配信プログラム、２３４  ネットワーク情報、３００  被処理パケット、３１０  ヘッダ部、３２０  ペイロード部。
【図１】
2012009996.tif 000003
【図２】
2012009996.tif 000004
【図３】
2012009996.tif 000005
【図４】
2012009996.tif 000006
【図５】
2012009996.tif 000007
【図６】
2012009996.tif 000008
【図７】
2012009996.tif 000009
【図８】
2012009996.tif 000010
【図９】
2012009996.tif 000011
【図１０】
2012009996.tif 000012
【図１１】
2012009996.tif 000013
【図１２】
2012009996.tif 000014
【図１３】
2012009996.tif 000015