JP2012009996A - 情報処理システム、中継装置、および情報処理方法 - Google Patents

情報処理システム、中継装置、および情報処理方法 Download PDF

Info

Publication number
JP2012009996A
JP2012009996A JP2010142508A JP2010142508A JP2012009996A JP 2012009996 A JP2012009996 A JP 2012009996A JP 2010142508 A JP2010142508 A JP 2010142508A JP 2010142508 A JP2010142508 A JP 2010142508A JP 2012009996 A JP2012009996 A JP 2012009996A
Authority
JP
Japan
Prior art keywords
processing
packet
processed
relay
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2010142508A
Other languages
English (en)
Inventor
Hideaki Suzuki
秀明 鈴木
Hidefumi Sawai
秀文 澤井
Hiroyuki Osaki
博之 大崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Osaka University NUC
National Institute of Information and Communications Technology
Original Assignee
Osaka University NUC
National Institute of Information and Communications Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Osaka University NUC, National Institute of Information and Communications Technology filed Critical Osaka University NUC
Priority to JP2010142508A priority Critical patent/JP2012009996A/ja
Priority to CN201180040803.4A priority patent/CN103081440B/zh
Priority to US13/807,001 priority patent/US20130100957A1/en
Priority to PCT/JP2011/064108 priority patent/WO2011162230A1/ja
Publication of JP2012009996A publication Critical patent/JP2012009996A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】スケーラビリティや柔軟性・拡張性の高い、データフローアーキテクチャを利用した情報処理システム、その装置に向けられる中継装置、および、その情報処理方法を提供する。
【解決手段】ルータ1からルータ2へ被処理パケット300−1が送信されたとする。ルータ2は、ルータ1から被処理パケット300−1を受信すると、当該被処理パケット300−1に含まれるトークンを参照して、実行すべき処理を判断する。そして、ルータ2は、判断の結果得られた処理を、被処理パケット300−1に含まれる被処理データ(データ1)に対して実行する。さらに、ルータ2は、経路制御情報を参照して、被処理データ(データ1)を処理することで得られた結果(データ2)の転送先を決定する。
【選択図】図4

Description

本発明は、ネットワーク上でのデータフローアーキテクチャを利用した情報処理システム、中継装置、および情報処理方法に関する。
現在、一般的に用いられているコンピュータアーキテクチャとしては、ノイマン型計算機や制御フロー型計算機がある。このようなコンピュータアーキテクチャとは異なる思想で研究開発されたコンピュータアーキテクチャとして、データフローアーキテクチャ(Data-Flow Architecture)がある。
このようなデータフローアーキテクチャは、データの駆動によって順次計算が行なわれるという点に特徴がある。歴史的に見れば、データフローアーキテクチャは、1970年代から1980年代初期にかけて盛んに研究が行われた。
上述のようなデータフローアーキテクチャについての研究開発は、主として、並列処理によるプログラム実行の高速化に焦点が当てられていた。これまで、様々なデータフロー計算機の研究開発が行われ、数多くのデータフローアーキテクチャの実現方法が検討されてきた。
また、特許文献1〜3には、データ駆動型のデータフローを実現するための専用ハードウェアが開示されている。
特開平06−259583号公報 特開平05−000312号公報 特開平04−288733号公報
しかしながら、従来のデータフロー計算機は、専用に設計されたハードウェアによって実現されており、データフロープログラムの規模に対するスケーラビリティや柔軟性・拡張性については、実用的に十分なレベルに到達することができなかった。
本発明は、上記のような問題を解決するためになされたものであって、その目的は、スケーラビリティや柔軟性・拡張性の高い、データフローアーキテクチャを利用した情報処理システム、その装置に向けられる中継装置、および、その情報処理方法を提供することである。
本発明のある局面に従う情報処理システムは、ネットワーク接続された複数の中継ノードと、管理ノードとを含む。中継ノードの各々は、経路制御情報に従って、受信したパケットを他の中継ノードへ転送する転送手段と、処理規則を保持する記憶手段と、受信したパケットが当該中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断する判断手段とを含む。ここで、被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含む。中継ノードの各々は、さらに、当該中継ノードにおいて被処理パケットを受信すると、処理規則に基づいて、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行する処理手段と、被処理データを処理することで得られた結果の転送先を決定する決定手段とを含む。管理ノードは、目的の情報処理を複数の中継ノードに割当てる割当手段と、当該割当て結果に基づいて、複数の中継ノードへ処理規則を送信する送信手段とを含む。
好ましくは、中継ノードの各々は、被処理データとして、被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む。
好ましくは、処理規則は、同一の処理を所定回数繰返すための定義を含み、処理手段は、処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す。
この発明の別の局面に従えば、ネットワーク接続された複数の中継ノードを用いた情報処理に向けられた中継装置を提供する。本中継装置は、経路制御情報に従って、受信したパケットを他の中継装置へ転送する転送手段と、処理規則を保持する記憶手段と、受信したパケットが当該中継装置において処理すべき対象である被処理パケットであるか否かを判断する判断手段とを含む。ここで、被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含む。本中継装置は、さらに、当該中継装置において被処理パケットを受信すると、処理規則に基づいて、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行する処理手段と、被処理データを処理することで得られた結果の転送先を決定する決定手段とを含む。
好ましくは、本中継装置は、被処理データとして、被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む。
好ましくは、処理規則は、同一の処理を所定回数繰返すための定義を含み、処理手段は、処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す。
好ましくは、本中継装置は、他の装置からの処理規則を受信する受信手段をさらに含む。
この発明のさらに別の局面に従えば、ネットワーク接続された複数の中継ノードを用いた情報処理方法を提供する。本情報処理方法は、複数の中継ノードに処理規則を設定するステップと、複数の中継ノードに含まれる第1の中継ノードが、パケットを受信すると、当該パケットが第1の中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断するステップとを含む。被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含む。本情報処理方法は、第1の中継ノードが、受信したパケットが当該中継ノードにおいて被処理パケットである場合に、処理規則に基づいて、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行するステップと、第1の中継ノードが、被処理データを処理することで得られた結果の転送先である第2の中継ノードを決定するステップと、第1の中継ノードが、被処理データを処理することで得られた結果を第2の中継ノードへ送信するステップと、第1の中継ノードが、受信したパケットが当該中継ノードにおいて被処理パケットではない場合に、経路制御情報に従って、受信したパケットを他の中継ノードへ転送するステップとをさらに含む。
好ましくは、本情報処理方法は、第1の中継ノードが、被処理データとして、被処理データを処理することで得られた結果を含むパケットを生成するステップをさらに含む。
さらに好ましくは、本情報処理方法は、第2の中継ノードが、第2の中継ノードにおいて被処理パケットを第1の中継ノードから受信すると、当該パケットに含まれる処理特定情報に対応する処理を、当該パケットに含まれる被処理データに対して実行するステップをさらに含む。
好ましくは、処理規則は、同一の処理を所定回数繰返すための定義を含み、実行するステップは、処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、被処理パケットを当該指定された回数だけ受信するまで処理を繰返すステップを含む。
本発明によれば、スケーラビリティや柔軟性・拡張性の高い、データフローアーキテクチャを実現することができる。
本実施の形態に従う情報処理システムの概略構成を示す模式図である。 本実施の形態に従う中継装置のハードウェア構成を示すブロック図である。 本実施の形態に従う管理装置のハードウェア構成を示すブロック図である。 本実施の形態に従うDFAIにおける処理例を示す図である。 本実施の形態に従うDFAIにおける中継装置(中継ノード)において実現される制御構造を示す模式図である。 本実施の形態に従う情報処理システムにおける初期動作を説明するためのシーケンス図である。 本実施の形態に従う管理装置において実行されるデータフロープログラムの生成処理を説明するための図である。 本発明の実施の形態に従う中継装置が有する基本的な機能を説明するための模式図である。 本発明の実施の形態に従うトークン転送機能におけるパケットヘッダ部の書換えを説明するための図である。 本発明の実施の形態に従う複数トークン同期機能を説明するための図である。 本発明の実施の形態に従うノード内でのデータ処理機能を説明するための図である。 本実施の形態に従う中継装置(中継ノード)における処理手順を示すフローチャートである。 中継装置の仮想化技術を説明するための図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.コンセプト>
本実施の形態に従う情報処理システムは、パケットベースのネットワーク(典型的には、インターネット))上で、データフローアーキテクチャを利用した情報処理を実現するための新たな方法を用いる。本明細書においては、このような新たな情報処理方法を、従来のデータフローアーキテクチャとは区別する観点から、「DFAI(Data-Flow Architecture on the Internet)」と称する。なお、典型的には、インターネット環境において実現されるため、"on the Internet"と称しているが、実施される環境は、インターネットに限られず、各種のパケットベースのネットワーク上で実現可能である。
一般的に、データフローアーキテクチャは、プロセッサによって順次処理が駆動される「プロセッサ駆動方式」と、トークンの到着によって処理が駆動される「トークン駆動方式」とに大別される。本実施の形態に従うDFAIは、後者の「トークン駆動方式」に分類されるアーキテクチャである。より具体的には、本実施の形態に従うDFAIは、相互接続されたルータなどの中継装置(中継ノード)によって構成されるパケットベースのネットワーク上で実現される。このとき、各中継装置は、以下に示すような処理を実行する。
すなわち、本実施の形態に従うDFAIでは、パケットベースのネットワークを「通信/転送」のためだけではなく、データフローアーキテクチャでの「処理」のためにも利用することになる。
インターネットに代表されるパケットベースのネットワークは、ネットワーク規模に対する高いスケーラビリティおよび故障に対する高いロバスト性を有する。そのため、上述したように、パケットベースのネットワークを「処理」にも利用することで、データフローアーキテクチャを用いて実現しようとする情報処理の内容(プログラムの規模)に対しても高いスケーラビリティを提供できる。さらに、中継装置での動的ルーティング技術や中継装置の仮想化技術などを利用することで、より高い柔軟性および拡張性を提供することもできる。
<B.全体システム概要>
図1は、本実施の形態に従う情報処理システムの概略構成を示す模式図である。図1を参照して、本実施の形態に従う情報処理システム100は、パケットベースのネットワークを中心として構成されており、複数の中継装置10−1,10−2,…,10−N(以下「中継装置10」とも総称する。)と、管理装置200とを含む。
図1に示す例では、複数の下位ネットワーク1,2,3が存在し、これらのネットワークが基幹ネットワーク4と接続されている構成を示す。なお、中継装置10は、ネットワークとネットワークとの接続点、および、ネットワーク内のトポロジーなどに応じて、任意の位置に設けられる。
中継装置10は、経路制御情報(後述する「ルーティングテーブル(通常パケット)」に相当)に従って、受信したパケットを他の中継装置10へ順次転送するための転送機能を有している。典型的には、中継装置10は、ルータやL3(Layer 3)スイッチなどとして実装される。すなわち、相互接続された複数の中継装置10がパケットを順次転送することで、目的の宛先へパケットが搬送される。
後述するように、本実施の形態に従う中継装置10は、従来のルータなどが有する基本的な転送機能に加えて、後述するようなDFAIを実現するための処理機能を搭載している。なお、本実施の形態に従う中継装置10は、既存のルータのハードウェア構成を維持しつつ、そこで実行されるプログラムを追加/変更することで、実現することもできる。
管理装置200は、本実施の形態に従うDFAIを実現するための各種処理を実行する。具体的には、管理装置200は、各中継装置10から状況を取得したり、処理規則などを各中継装置10へ送信したりする。この処理の詳細については、後述する。
なお、以下の説明においては、「中継装置10」および「管理装置200」に対応付けて、それぞれ「中継ノード」および「管理ノード」という用語を用いる場合もある。これらの「中継ノード」および「管理ノード」という用語は、物理的に接続されている主体、および、論理的に接続されている主体のいずれをも含む概念である。たとえば、後述するような中継装置の仮想化技術を用いることで、物理的には単一の中継装置であっても、論理的には複数の中継装置として機能させることも可能である。つまり、「中継ノード」および「管理ノード」との用語は、何らかの各中継装置を識別するレベル(物理レベルもしくは論理レベル)の応じて、その実行される機能に着目したものである。そのため、単一の装置が複数のノードを提供する(仮想化技術)こともあり、反対に、複数の装置が単一のノードを提供する(クラスタ化技術や冗長化技術)こともある。
<C.中継装置のハードウェア構成>
次に、中継装置10のハードウェア構成について説明する。
図2は、本実施の形態に従う中継装置10のハードウェア構成を示すブロック図である。図2を参照して、中継装置10は、スイッチ部12と、転送処理部14と、複数のポートユニット20−1,20−2,…,20−N(以下「ポートユニット20」とも総称する。)とを含む。
スイッチ部12は、マルチプレクサを含み、転送処理部14からの指令に従って、あるポートユニット20から入力されたパケットを他のポートユニット20へ出力する。このような動作によって、あるポートユニット20に到着したパケットが、宛先に応じたポートユニット20から送出される。
より具体的には、スイッチ部12は、物理終端部22と、転送エンジン24と、バッファ26とを含む。
物理終端部22は、物理的な回線の終端であり、金属導体または光ファイバのネットワークケーブルと物理的に接続されるともに、当該ネットワークケーブル上を搬送されるパケット(を示す信号)を受信し、あるいは、当該ネットワークケーブル上にパケット(を示す信号)を送出する。
転送エンジン24は、物理終端部22において受信および復号されたパケットに対して、転送先を判断する。より具体的には、転送エンジン24は、受信および復号されたパケットのヘッダ部などを参照して宛先を判断するとともに、判断した宛先に応じて、自ポートユニット20からパケットを送出するか、あるいは、他のポートユニット20からパケットを送出するかを判断する。そして、他のポートユニット20から送出すべきパケットについては、バッファ26を通じて、スイッチ部12へ出力する。
バッファ26は、転送エンジン24とスイッチ部12との間に配置され、両者の間で遣り取りされるパケットを一時的に記憶(バッファリング)する。なお、バッファ26は、FIFO(First In First Out)で動作するが、QoS(Quality of Service)などのパケットに対して優先順位などが設定されている場合には、バッファ26に一時的に記憶されるパケットの読出/書込順序を変更してもよい。
転送処理部14は、スイッチ部12に対してパケット転送に係る各種の指示を与えるとともに、本実施の形態に従うDFAIを提供するための処理を実行する。より具体的には、転送処理部14は、プロセッサ15と、メモリ16と、インターフェイス17とを含む。プロセッサ15は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などからなり、メモリ16などに記憶されたプログラム(命令コード)に従って処理を実行する。メモリ16は、プロセッサ15で実行されるプログラム(命令コード)、パケットの転送に必要な経路制御情報、DFAIを実現するための処理規則などを格納する。なお、メモリ16は、DRAM(Dynamic Random Access Memory)などの揮発性記憶デバイスと、フラッシュメモリなどの不揮発性記憶デバイスとを含み得る。インターフェイス17は、主として、外部処理装置30とデータ通信を行う。
なお、転送処理部14、または、スイッチ部12と転送処理部14とを、ASIC(Application Specific Integrated Circuit)などの専用ハードウェアとして実装してもよい。
外部処理装置30は、転送処理部14と接続され、主として、本実施の形態に従うDFAIを提供するための処理を実行する。より具体的には、より具体的には、外部処理装置30は、プロセッサ31と、メモリ32と、インターフェイス33とを含む。プロセッサ31は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などからなり、メモリ32などに記憶されたプログラム(命令コード)に従って処理を実行する。メモリ32は、プロセッサ31で実行されるプログラム(命令コード)や、DFAIを実現するための処理規則などを格納する。なお、メモリ32は、DRAMなどの揮発性記憶デバイスと、フラッシュメモリなどの不揮発性記憶デバイスとを含み得る。インターフェイス33は、主として、外部処理装置30とデータ通信を行う。
なお、本実施の形態に従うDFAIを実施する場合に、外部処理装置30は、必須の構成ではない。すなわち、中継装置10が、当該中継装置10に割当てられた処理を実行するのに十分な処理能力を備えている場合には、外部処理装置30を設ける必要はない。但し、割当てられた処理の内容が複雑であったり、特殊な処理が割当てられたりした場合には、当該中継装置10で実行されるべき処理の全部または一部を外部処理装置30で実行することもできる。
<D.管理装置のハードウェア構成>
次に、管理装置200のハードウェア構成について説明する。
図3は、本実施の形態に従う管理装置200のハードウェア構成を示すブロック図である。図3を参照して、管理装置200は、典型的には、汎用的なコンピュータアーキテクチャを用いて実装される。より具体的には、管理装置200は、コンピュータ本体202と、表示装置としてのモニタ204と、入力装置としてのキーボード210およびマウス212とを含む。モニタ204、キーボード210、およびマウス212は、コンピュータ本体202とバス205を介して接続される。
コンピュータ本体202は、フレキシブルディスク(FD:Flexible Disc;以下「FD」とも称す。)ドライブ206と、光ディスクドライブ208と、CPU(Central Processing Unit)220と、メモリ222と、直接アクセスメモリ装置、たとえば、ハードディスク224と、通信インターフェイス228とを含む。これらの部位についても、互いにバス205で接続されている。
FDドライブ206は、FD216に情報を読み書きする。光ディスクドライブ208は、CD−ROM(Compact Disc Read-Only Memory)218などの光ディスク上の情報を読み込む。通信インターフェイス228は、外部とデータの遣り取りを行う。
なお、CD−ROM218は、コンピュータ本体に対してインストールされるプログラムなどの情報を記録可能な媒体であれば、他の媒体、たとえば、DVD−ROM(Digital Versatile Disc)やメモリーカードなどでもよく、その場合は、コンピュータ本体202には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。また、バス205には、カセット形式の磁気テープを着脱自在に装着してアクセスする磁気テープ装置が接続されていてもよい。
メモリ222は、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む。
ハードディスク224は、初期プログラム231と、処理割当プログラム232と、処理配信プログラム233と、ネットワーク情報234とを格納する。
初期プログラム231は、プログラム作成の基礎となるプログラムである。ハードディスク224は、ユーザが作成したプログラムを初期プログラム231として格納することができる。初期プログラム231は、FD216またはCD−ROM218などの記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス228を経由して供給されてもよい。
処理割当プログラム232は、初期プログラム231に基づいて、初期プログラム231に対応するデータフロープログラムを作成する。また、処理割当プログラム232は、作成したデータフロープログラムに関する情報をハードディスク224に格納する。
処理配信プログラム233は、処理割当プログラム232が作成したデータフロープログラムに基づく処理規則を、中継装置10のそれぞれへ送信する。
ネットワーク情報234は、相互接続された中継装置10の接続情報(物理的接続および論理的接続)を含む。
これらのプログラムによる処理の詳細については、後述する。
また、処理割当プログラム232および処理配信プログラム233は、FD216、またはCD−ROM218などの記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス228を経由して供給されてもよい。
演算処理装置として機能するCPU220は、メモリ222をワーキングメモリとして、上述した各プログラムに対応した処理を実行する。
処理割当プログラム232および処理配信プログラム233は、上述の通り、CPU220により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、CD−ROM218、FD216などの記憶媒体に格納されて流通し、光ディスクドライブ208またはFDドライブ206などにより記憶媒体から読み取られてハードディスク224に一旦格納される。または、管理装置200がネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク224にコピーされる。そうしてさらにハードディスク224からメモリ222中のRAMに読み出されてCPU220により実行される。なお、ネットワーク接続されている場合には、ハードディスク224に格納することなくRAMに直接ロードして実行するようにしてもよい。
図3に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、FD216、CD−ROM218、ハードディスク224などの記憶媒体に記憶されたソフトウェアである。
<E.処理概要>
次に、本実施の形態に従うDFAIにおける処理の概要について説明する。
上述したように、本実施の形態に従うDFAIは、「トークン駆動方式」のデータフローアーキテクチャの一種である。そのため、ルータ間(あるいは、ノード間)でパケットが交換(転送)されることをトリガとして、各処理が実行される。すなわち、本実施の形態に従うDFAIにおいては、相互接続されたルータによって構成されるパケットベースのネットワーク上で、実行すべき処理の内容を示す情報(以下「トークン」とも称す)を格納したパケットを交換することによって、目的の情報処理を実現する。
図4は、本実施の形態に従うDFAIにおける処理例を示す図である。図4を参照して、たとえば、6個の中継装置10−1〜10−6からなるルータ1〜ルータ6(ノード1〜ノード6)がネットワーク接続されているものとする。このルータ間でパケットが交換されるものとする。
図4に示す、パケット300−1,300−2,…,300−6は、いずれも、いずれかの中継装置10(ルータ/中継ノード)において処理すべき対象のパケット(以下「被処理パケット」とも称す。)であるとする。上述したように、中継装置10は、従来の転送機能をも有しており、ネットワーク上では、中継装置10において何らの処理もなされることなく、目的の宛先へ転送されるパケットも流れる。
そのため、中継装置10は、本実施の形態に従うDFAIを実現するためのパケットを選択的に抽出して指定された処理をするとともに、それ以外のパケット(区別のために、以下「通常パケット」とも称す。)については、経路制御情報に従って、目的の中継装置10へ順次転送する。すなわち、各中継装置10は、受信したパケットが当該中継装置10において処理すべき対象である被処理パケットであるか否かを判断する。
この被処理パケット300の各々は、実行すべき処理の内容を示す処理特定情報であるトークンと、当該処理の対象となる被処理データ(データ1,データ2,…)とを含む。
各中継装置10は、受信した被処理パケット300に対する処理を実行するための処理規則(この詳細については、後述する)を保持している。そして、各中継装置10は、被処理パケットを受信すると、保持している処理規則に基づいて、当該被処理パケットに含まれる処理特定情報(トークン)に対応する処理を、当該被処理パケットに含まれる被処理データに対して実行する。
図4に示す例についてみれば、ルータ1からルータ2へ被処理パケット300−1が送信されたとする。この被処理パケット300−1は、ルータ2を指定するアドレスと、ルータ2において実行すべき処理を示すトークンと、トークンによって指示される処理の対象となる被処理データとを含む。
そして、ルータ2は、ルータ1から被処理パケット300−1を受信すると、当該被処理パケット300−1に含まれるトークンを参照して、実行すべき処理を判断する。なお、この実行すべき処理の判断には処理規則(後述する「フローテーブル」に相当)が用いられる。そして、ルータ2は、判断の結果得られた処理を、被処理パケット300−1に含まれる被処理データ(データ1)に対して実行する。さらに、ルータ2は、経路制御情報(後述する「ルーティングテーブル(被処理パケット)」に相当)を参照して、被処理データ(データ1)を処理することで得られた結果(データ2)の転送先を決定する。
なお、図4に示す例では、ルータ2は、被処理データを処理することで得られた結果に対して、転送先であるルータ3においてさらに実行すべき処理を決定する。なお、このさらに実行すべき処理の判断には処理規則(フローテーブル)が用いられる。そして、ルータ2は、被処理データとして、被処理パケット300−1に含まれる被処理データ(データ1)を処理することで得られた結果(データ2)を含み、かつ、トークンとして、さらに実行すべき処理の内容を含む、被処理パケット300−2を生成する。この被処理パケット300−2は、ルータ2からルータ5へ転送される。
同様の手順によって、ルータ3が被処理パケット300−3をルータ4へ転送すると、ルータ4において、被処理パケット300−3に含まれるトークンによって指示される処理を実行し、その処理の結果得られたデータ(データ4)を含む被処理パケット300−4を新たに生成して、ルータ5へ転送する。
その後、ルータ5が被処理パケット300−2および300−4をそれぞれ受信すると、これらの2つの被処理パケットに対して処理の結果得られたデータ(データ5)を含む被処理パケット300−5を新たに生成して、ルータ6へ転送する。すなわち、ルータ5においては、複数の被処理パケット300−2および300−4に対して、処理を実行する例を示す。
さらに、ルータ6が被処理パケット300−5を受信すると、被処理パケット300−5に含まれるトークンによって指示される処理を実行し、その結果得られたデータ6を含むパケット300−6を新たに生成する。なお、図4に示す例では、ルータ6がDFAIの最終段に相当するので、ルータ6は、転送先においてさらに実行すべき処理を決定する必要はない。そのため、ルータ6で生成されるパケットには、何らかの処理を指示するためのトークンが存在しない、あるいは、無効化されている。すなわち、ルータ6が生成するパケット300−6に格納されているデータ6が、図4に示すDFAI処理での結果となる。
なお、現実のDFAIにおいては、より多くの処理が連続的に実行される場合が多いと考えられ、より多くの中継装置10の間を順次パケットが転送されることで、目的の情報処理が達成される。なお、同一のDFAIの実行であっても、同一の中継装置(あるいは、中継ノード)で被処理パケットを複数回受信する場合もある。たとえば、複数の中継装置10の間で被処理パケットを循環的に転送するような形態を採用した場合には、1回のDFAIの実行であっても、各中継装置10には、複数回に亘って被処理パケットが転送されることになる。
上述したように、本実施の形態に従うDFAIの基本的なコンセプトは、データフローネットワークをパケットベースのネットワーク上にマッピングするという点にある。すなわち、データフローアーキテクチャにおけるノードを、パケットベースのネットワークにおけるルータ(中継ノード)に対応させる。同様に、データフローアーキテクチャにおける「トークン」を、パケットネットワークにおける「パケット」に対応させる。
このように構成することで、パケットベースのネットワークにおけるパケット交換を、エンド−エンド間の「通信」のために行うのではなく、ネットワーク中での「処理」に用いることができる。
<F.中継装置の制御構成>
次に、中継装置(中継ノード)における制御構成について説明する。
図5は、本実施の形態に従うDFAIにおける中継装置10(中継ノード)において実現される制御構造を示す模式図である。図5を参照して、中継装置10は、その制御構造として、受信部102と、パケット種別判断部104と、転送制御部106と、送信部108と、処理実行部110と、転送先決定部112と、更新部118と、データ保持部120とを含む。
データ保持部120には、少なくとも、ルーティングテーブル(通常)122と、フローテーブル124と、ルーティングテーブル(DFAI)126とを含む。
これらの制御構造のうち、データ保持部120を除く各部については、典型的には、転送処理部14のプロセッサ15がプログラムを実行することで実現され、データ保持部120については転送処理部14のメモリ16の所定領域が割当てられることで実現される。なお、図5に示す制御構造の全部または一部をハードウェアによって実現してもよい。
受信部102は、中継装置10(中継ノード)に受信されたパケットを検知する。受信部102が検知した受信パケットの情報は、パケット種別判断部104へ出力される。
パケット種別判断部104は、受信パケットが自装置(自ノード)において処理すべき対象である被処理パケットであるか否かを判断する。すなわち、パケット種別判断部104は、受信パケットの各々について、通常パケットおよび被処理パケットのいずれであるかを判断する。なお、パケット種別は、そのパケットのペイロード部に含まれる情報に基づいて判断される。そして、通常パケットと判断された受信パケットは、転送制御部106へ出力され、被処理パケットと判断された受信パケットは、処理実行部110へ出力される。
転送制御部106は、経路制御情報に従って、受信パケットを他の中継装置10(中継ノード)へ転送するための処理を実行する。すなわち、転送制御部106は、データ保持部120に保持されるルーティングテーブル(通常)122を参照して、受信したパケットのヘッダ部(宛先情報)を、転送先の中継装置10のインターフェイスアドレス(典型的には、MAC(Media Access Control address)アドレスなど)に書換える。そして、転送制御部106は、宛先を書換えたパケットを送信部108へ出力する。
処理実行部110は、被処理パケットを受信すると、処理規則であるフローテーブル124に基づいて、当該パケットに含まれる処理特定情報(トークン)に対応する処理を、当該パケットに含まれる被処理データに対して実行する。より具体的には、処理実行部110は、フローテーブル124を参照して、被処理パケットのペイロード部に含まれる「フローID」の値に対応する処理を特定するとともに、被処理パケットのペイロード部に含まれる「データ」に対して当該処理を実行する。ここで、フローテーブル124は処理規則であり、記憶手段であるデータ保持部120に保持される。
なお、処理実行部110は、処理の内容や処理量に応じて、外部処理装置30に処理を実行させ、その結果を得るようにしてもよい。
転送先決定部112は、被処理パケットに含まれる被処理データを処理実行部110が処理することで得られた結果の転送先を決定する。より具体的には、転送先決定部112は、データ保持部120に保持されるルーティングテーブル(DFAI)126を参照して、被処理パケットに含まれる「フローID」の値に対応する宛先を転送先として判断する。
パケット生成部114は、処理実行部110が被処理データを処理することで得られた結果を含むパケットを生成する。このとき、パケット生成部114は、転送先決定部112が判断した転送先のアドレスをパケットのヘッダ部に書込む。
送信部108は、転送制御部106から出力されたパケット、または、パケット生成部114が生成したパケットをネットワーク上に送出する。
更新部118は、管理装置200から処理規則である理規則であるフローテーブル124を受信するとともに、当該受信したフローテーブル124を用いて、データ保持部120を更新する。
<G.管理装置の機能>
次に、本実施の形態に従う管理装置200が提供する機能について説明する。
管理装置200は、ユーザによって入力される目的の情報処理を複数の中継装置10(中継ノード)に割当てる機能と、この割当て結果に基づいて、複数の中継装置10(中継ノード)のそれぞれへ処理規則を送信する機能とを有する。
図6は、本実施の形態に従う情報処理システム100における初期動作を説明するためのシーケンス図である。図7は、本実施の形態に従う管理装置200において実行されるデータフロープログラムの生成処理を説明するための図である。
図6を参照して、管理装置200は、定期的または所定イベントに応じて、1または複数の中継装置10(中継ノード)へアクセスして、複数の中継装置10が相互接続されているネットワークの情報を取得する(図3に示すネットワーク情報234)。
より具体的には、管理装置200は、中継装置(中継ノード)1,2,…,Nからそれぞれ送信される経路制御情報を取得する(シーケンスSQ10)と、当該情報に基づいて、ネットワーク情報234を新規作成、あるいは、自装置で保持しているネットワーク情報234の内容を更新する(シーケンスSQ12)。
その後、管理装置200は、初期プログラムを受付ける(シーケンスSQ14)と、当該初期プログラムを実現するためのデータフローを作成する(シーケンスSQ16)。
図7を参照して、たとえば、図7(A)に示すようなコードで記述されたプログラムを解析して、図7(B)に示すようなデータフローを生成する。なお、図7(B)に示すようなブロック形式で具現化されている必要はない。
図7(B)に示すデータフローは、相互接続された複数のノードから構成されており、各ノードにおいては、典型的には、入力データ、処理の内容、出力データが定義されている。
管理装置200は、図7(B)に示すデータフローアーキテクチャにおける各ノードを、パケットベースのネットワークにおける現実の中継装置10(中継ノード)に割当てる。なお、図7(B)に示すノード間で遣り取りされるデータが、現実の中継装置10(中継ノード)の間で遣り取りされるパケットに含まれるデータに対応する。
なお、図7(B)には、典型的には、1つのデータフローを示すが、複数のデータフローを並列的に生成してよい。この場合には、識別情報(フローID)の値を異ならせることで、互いに区別することができる。
再度図6を参照して、管理装置200は、シーケンスSQ16において作成したデータフローに含まれるそれぞれのノードを中継装置10へ割当てる(シーケンスSQ18)。さらに、管理装置200は、シーケンスSQ18における割当て結果に基づいて、フローテーブル124およびルーティングテーブル(DFAI)126をそれぞれの中継装置10(中継ノード)へ送信する(シーケンスSQ22)。
中継装置10(中継ノード)の各々は、受信したフローテーブル124およびルーティングテーブル(DFAI)126を保持する(シーケンスSQ24)。
それぞれの中継装置10(中継ノード)へのフローテーブル124およびルーティングテーブル(DFAI)126の設定が完了すると、管理装置200は、データフローアーキテクチャをトリガするための初期データを、データフローの初期ノードに対応する中継装置10(中継ノード)へ向けて、初期値を含むパケットを送信する(シーケンスSQ32)。すると、それぞれの中継装置10(中継ノード)が順次パケットを転送しつつ、一連の情報処理(計算)を開始する(シーケンスSQ34)。
なお、一連の情報処理(計算)の結果は、管理装置200へ戻すようにプログラムしてもよいし、他の装置(ノード)へ出力するようにプログラムすることもできる。
<H.中継装置の基本機能>
本実施の形態に従うDFAIを実現するための中継装置10(中継ノード)が有する基本的な機能としては、以下の4つが挙げられる。
(1) トークン転送機能
(2) 複数トークン同期機能
(3) データ処理機能
(4) 出力ノード決定機能
図8は、本発明の実施の形態に従う中継装置10が有する基本的な機能を説明するための模式図である。以下、図8を参照して、これらの各機能について詳述する。
(h1.トークン転送機能)
本実施の形態に従う中継装置10の有する基本機能の一つとして「トークン転送機能」がある。このトークン転送機能は、経路制御情報に従って、受信した被処理パケットを他の中継装置へ転送する機能である。なお、このトークン転送機能は、従来のルータにおけるルーティング機能と基本的には同じである。但し、各パケットに設定される宛先などは、本実施の形態に従うDFAIに向けられたものとなる。
また、「トークン」という用語は、主として、データフローアーキテクチャにおいて用いられる用語であるが、本実施の形態に従うDFAIとの対応付けて説明することがより理解を容易にすると考えて、並列的に使用する。
中継装置10は、前段に位置する中継装置(中継ノード)から受けた被処理パケット(データフローアーキテクチャにおけるトークンに相当)を後段に位置する中継装置(中継ノード)へ転送する。
より具体的には、中継装置10(中継ノード)は、何らかのパケットを受信すると、データフローアーキテクチャにおいて次に位置するノードに対応付けられた中継装置(中継ノード)を特定する。そして、中継装置10(中継ノード)は、当該受信パケットのヘッダ部に当該次に位置するノードのアドレス(次ノードアドレス)を組込むとともに、当該受信パケットのペイロード部に、データフローアーキテクチャにおけるトークンに相当する情報(トークンIDおよび被処理データ)を組込む。
なお、前段に位置する中継装置10(中継ノード)から受信するパケットは、通常パケットおよび被処理パケットのいずれであってもよい。
図9は、本発明の実施の形態に従うトークン転送機能におけるパケットヘッダ部の書換えを説明するための図である。
図9(A)に示すように、いずれかの中継装置10(中継ノード)が通常パケット350を受信したとする。この通常パケット350は、ヘッダ部310と、ペイロード部320とを含むとする。そして、ヘッダ部310は、送信元アドレスを格納する領域312と、送信先アドレスを格納する領域314とを含む。なお、ヘッダ部310には、送信元および送信先アドレスに加えて、(パケット自身の)ID情報、チェックサム、シーケンス番号などの情報も格納される。
いずれかの中継装置10(中継ノード)が通常パケット350を受信すると、当該中継装置10は、そのヘッダ部310のアドレス情報を書換える。図9(A)に示す例では、図8に示すルータA(ノードA)がヘッダ部310のアドレス情報を書換える場合の処理を示す。すなわち、ルータA(ノードA)は、送信元アドレスとして、自ノードでパケットの送出に用いるインターフェイスのアドレスである「A2」を領域312へセットするとともに、送信先アドレスとして、設定されるデータフローにおいて次のノードに対応するルータC(ノードC)のインターフェイスのアドレスである「A2」を領域314へセットする。
このようにヘッダ部を書換えることで、ルータA(ノードA)が受信した通常パケット350は、被処理パケット300−A2として、ルータA(ノードA)から後段のルータB(ノードB)へ転送される。
すなわち、通常のパケットベースのネットワークにおけるパケット交換(転送)処理では、エンド−エンド通信が行われるため、パケットのヘッダ部310には、送信先アドレスとして、宛先ホストアドレスがセットされる。これに対して、本実施の形態に従うDFAIでは、パケットのヘッダ部310には、送信先アドレスとして、対象のデータフローに対応して次ノード(後段)のアドレスがセットされる。
このように、送信先アドレスとして、データフローに対応するルータ(ノード)のアドレスが順次セットされることで、ホスト間のエンド−エンド通信ではなく、ノード間のホップ・バイ・ホップ通信を実現する。そして、ノード間のホップ・バイ・ホップ通信を用いて、データフローアーキテクチャを実現する。
なお、パケットのペイロード部320には、DFAIを実現するための処理(トークン)の情報などが格納される。そのため、図9(A)に示すように、データフローにおいて先頭のノードに対応する中継装置10(中継ノード)は、ペイロード部320を更新してもよい。
さらに、図9(B)には、図8に示すルータA(ノードA)が被処理パケット300−A1を受信し、さらに、後述するようなデータ処理機能により、被処理パケット300−A1に含まれる被処理データに対して何らかの処理を実行した場合の処理例を示す。
この図9(B)に示す例では、ヘッダ部310に保持される送信元アドレス(領域312の値)および送信先アドレス(領域314の値)を書換えるとともに、ヘッダ部310についても、処理の結果に応じて、トークンの内容が書換えられる。すなわち、被処理パケット300−A1のペイロード部320の記述324が記述322に書換えられる。この処理については、(3)データ処理機能に関する説明において詳述する。
(h2.入力ノードからの複数トークン同期機能)
次に、複数トークン同期機能について説明する。
たとえば、複数の処理結果を合計するような処理を考えると、各処理結果を格納する被処理パケットを複数回に亘って受領するまで待つとともに、これらを順次積算していく必要がある。すなわち、処理対象のデータフローには、同一の処理を所定回数繰返すための定義を含み得る。そこで、本実施の形態に従う中継装置10(中継ノード)は、フローテーブルとして、同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す。
図10は、本発明の実施の形態に従う複数トークン同期機能を説明するための図である。
図10(A)を参照して、本実施の形態に従う複数トークン同期機能を実現するために、各中継装置10(中継ノード)が保持するフローテーブル124には、「フローID」の別に、「カウント」および「条件」の欄が設けられている。この「条件」の値は、対応する「フローID」について処理を繰返す必要のある回数を示し、「カウント」の値は、各時点までの処理の実行済の回数を示す。すなわち、フローテーブル124には、トークン同期機能が必要な処理を含む各処理について、「フローID」、「カウント」、「条件」、「処理」の値が設定される。ここで、「カウント」にセットされる値(繰返し回数)は、設定されているデータフロープログラムに依存して決定される。
また、同期させる必要のある被処理パケット(トークン)に対しては、ユニークなフローIDが割当てられる。そして、中継装置10(中継ノード)がフローテーブル124を参照することで、処理を所定回数に亘って繰返す。
より具体的な処理手順としては、図10(B)を参照して、まず、中継装置10(中継ノード)は、フローテーブル124の「カウント」の欄をゼロリセットする。その後、中継装置10(中継ノード)が、フローテーブル124に記述されたいずれかのフローIDを有する被処理パケットを受信すると、当該受信した被処理パケットに含まれる被処理データを一時的に保持するとともに、フローテーブル124において、受信した被処理パケットと同一のフローIDに対応する「カウント」の値を1だけインクリメント(カウントアップ)する。
なお、現実の実装例としては、中継装置10(中継ノード)が何らかの被処理パケットを受信すると、当該被処理パケットのペイロード部に含まれる「フローID」の値を取得し、この取得した「フローID」の値と一致するエントリをフローテーブル124から検索する。そして、取得した「フローID」の値と一致するエントリが存在する場合には、当該「フローID」に対応する「カウント」の値を1だけインクリメント(カウントアップ)する。
このような処理を所定回数繰返すと、「フローID」に対応する「カウント」の値が順次増加する。そして、「フローID」の値が増加して、対応する「条件」の値と一致すると、必要な被処理パケットが既に受領されていると判断する。すると、中継装置10(中継ノード)は、それ以降の当該被処理パケットの取得を行わない。それに代えて、当該「フローID」に対応する処理の実行がトリガされ、予め取得された所定回数分の被処理パケットに対して、当該処理が実行される。
すなわち、受信された被処理パケット(トークン)の数を示す「カウント」の値=「条件」の値(同期処理に必要な被処理パケットの数)となった場合、中継装置10(中継ノード)は、ノードは対応するデータ処理機能をトリガするとともに、対応する「カウント」を0にリセットする。
(h3.ノード内でのデータ処理機能)
上述したように、フローテーブル124において定義された条件が満足されて、処理の実行がトリガされると、中継装置10の内部に設けられたプロセッサ15(図2参照)、または、外部処理装置30に設けられたプロセッサ31(図2参照)を用いて、受信した被処理パケットのペイロード部320に含まれる被処理データに対して、フローIDにより指定された処理が実行される。このとき、中継装置10内部のプロセッサを用いる場合には、従来のルータでの処理と実質的に同様のハードウェアで実現されるが、外部処理装置30を用いる場合には、被処理パケットをいずれかの記憶領域に保持して、パケット転送処理を一時的にフックする必要がある。
なお、実行される処理に応じて、中継装置10内部のプロセッサと、外部処理装置30のプロセッサとの使用を選択してもよい。たとえば、実時間(リアルタイム)性が要求される処理である場合や、単純な処理である場合には、その処理を中継装置10内部のプロセッサで実行し、あるいは、実時間(リアルタイム)性が要求されない処理である場合や、複雑な処理である場合に、その処理を外部処理装置30のプロセッサで実行することもできる。このように、有効化するプロセッサを選択することで、高速性、柔軟性、拡張性を実現できる。
図11は、本発明の実施の形態に従うノード内でのデータ処理機能を説明するための図である。
図11(A)を参照して、一例として、中継装置10(中継ノード)が保持するフローテーブル124には、「フローID」=「1」のデータ処理として、「+」(加算処理)が定義されているものとする。また、「条件」=「2」が設定されており、上述したような複数トークン同期機能が設定されている。すなわち、図11(A)に示すフローテーブル124では、「フローID」=「1」が設定されている2つの被処理パケットに対して、それぞれペイロード部に保持されている、合計2つの被処理データを加算するデータ処理が定義されているものとする。
ここで、中継装置10が2つの被処理パケット300−A21,300−A22(トークン)を受信したとする。すると、被処理パケット300−A21(トークンx)のペイロード部に保持されている「データ」=「2」、および、被処理パケット300−A22(トークンy)のペイロード部に保持されている「データ」=「3」が抽出され、データ処理が実行される。
すなわち、図11(B)に示すように、トークンxおよびトークンyがプロセッサへ送られて、「フローID」=「1」として設定されているデータ処理が実行される。そして、このデータ処理によって得られた結果を含む新たなトークンzが生成される。このトークンzは、後述するように、出力ノードが決定された後に、新たな被処理パケットとして後段の中継装置10(中継ノード)へ送出される。
なお、図11には、複数の被処理パケット(トークン)に対して同一の処理を複数回繰返す場合の動作を例示したが、1つの被処理パケットに対して、特定の処理を実施するような動作も可能である。
(h4.出力ノード決定機能)
上述したようなデータ処理が実行された後、中継装置10(中継ノード)は、データ処理することで得られた結果の転送先を決定する。このような出力ノード決定機能は、図8に示すようなルーティングテーブル(DFAI)126を利用することで実現される。
すなわち、図8を再度参照して、ルーティングテーブル(DFAI)126は、被処理パケットを受信した入力インターフェイスを示す「入力」の欄、「フローID」の欄、出力インターフェイスを示す「出力」の欄を含む。
中継装置10(中継ノード)は、何らかの被処理パケットを受信すると、当該被処理パケットが到着した入力インターフェイスのアドレスと、被処理パケット(トークン)に含まれる記入されているフローIDとをもとにルータテーブルを検索し、出力インターフェイスのアドレスを決定する。
たとえば、図8に示すルーティングテーブル(DFAI)126の例では、「入力」については、「C1」および「C2」の合計2つのエントリがある。すなわち、入力インターフェイスが「C1」で受領した被処理パケットであって、「フローID」=「1」をもつものについては、データ処理後、出力インターフェイスC3からネットワークへ送出される。
ここで、「*」(アスタリスク)は不問を意味し、図8に示す例では、入力インターフェイスが「C2」で受領した被処理パケットは、その「フローID」の値にかかわらず、データ処理後、出力インターフェイスC4からネットワークへ送出される。
なお、このルーティングテーブル(DFAI)126に対する検索処理については、一般的なルーティングテーブルの検索処理と同様に、より長い文字列を含むものを選択する、最長一致(longest match)の規則が利用される。
なお、出力インターフェイスとして複数のエントリが記載されている場合、中継装置10(中継ノード)は、記載されているすべてのインターフェイスから送出されるパケットへ複製し、各出力インターフェイスから送出する。
フローテーブル124は、データフロープログラムによって決定される。従って、ルーティングテーブルをダイナミックに書き換える(動的ルーティングを行う)ことにより、データ処理中の動的プログラミングを実現できる。
さらに、ルーティングテーブル(DFAI)126を逆引きすることにより、計算結果の誤差フィードバックにおいて必要となる逆方向伝播を実現することもできる。
なお、ルーティングテーブルのエントリが非対称である場合(入力インターフェイスの指定が「*(アスタリスク)」の場合)には、そのままでは逆引きができない。そこで、非対称なルーティングテーブルのエントリに一致した場合には、トークンの送出履歴を保存する。これにより、非対称なルーティングテーブルであっても逆引き可能となる。
<I.処理フロー>
次に、本実施の形態に従う中継装置10(中継ノード)における処理フローについてまとめて記述する。図12は、本実施の形態に従う中継装置10(中継ノード)における処理手順を示すフローチャートである。
図12を参照して、中継装置10は、何らかのパケットを受信したか否かを判断する(ステップS2)。何らのパケットも受領していなければ(ステップS2においてNO)、ステップS2の処理が繰返される。
何らかのパケットを受信した場合(ステップS2においてYESの場合)には、中継装置10は、受信パケットが被処理パケットであるか否かを判断する(ステップS4)。すなわち、中継装置10は、受信したパケットが自装置で何らかのデータ処理をすべき対象のパケットであるか否かを判断する。
受信パケットが被処理パケットではない場合(ステップS4においてNOの場合)、すなわち、受信パケットが通常パケットである場合には、処理はステップS40へ進む。
これに対して、受信パケットが被処理パケットである場合(ステップS4においてYESの場合)には、中継装置10は、被処理パケットのペイロード部320(図9参照)に記述されている「フローID」の値を取得する(ステップS6)。そして、中継装置10は、フローテーブル124を参照して、ステップS6において取得した「フローID」の値に対応するエントリが存在するか否かを判断する(ステップS8)。
取得した「フローID」の値に対応するエントリが存在しない場合(ステップS8においてNOの場合)には、中継装置10は、自装置では、当該被処理パケットに対するデータ処理が不要であると判断し、処理はステップS40へ進む。
これに対して、取得した「フローID」の値に対応するエントリが存在する場合(ステップS8においてYESの場合)には、中継装置10は、取得した「フローID」の値に対応するエントリに含まれる、「条件」の欄の値および「処理」の欄の値を取得する(ステップS10)。すなわち、中継装置10は、処理規則であるフローテーブル124に基づいて、対象の被処理パケットに対して実行すべきデータ処理の内容を特定する。
続いて、中継装置10は、ステップS10において取得した「条件」の値が「1」以外であるか否かを判断する(ステップS12)。
ステップS10において取得した「条件」の値が「1」以外である場合(ステップS12においてYESの場合)には、中継装置10は、複数トークン同期機能の有効化が設定されていると判断し、フローテーブル124において、対応するエントリの「カウント」の欄の値をゼロリセットする(ステップS14)。
続いて、中継装置10は、受信した被処理パケットを一時的に保持するとともに、対応する「カウント」の値を1だけインクリメントする(ステップS16)。そして、中継装置10は、インクリメント後の「カウント」の値が、対応するエントリの「条件」の欄に設定されている値に到達しているか否かを判断する(ステップS18)。
インクリメント後の「カウント」の値が、対応するエントリの「条件」の値まで到達していない場合(ステップS18においてNOの場合)には、対応するエントリの「フローID」の値と同じ「フローID」を有するさらなる被処理パケットの受信を待つ(ステップS20)。そして、ステップS16以下の処理が繰返される。
インクリメント後の「カウント」の値が、対応するエントリの「条件」の値まで到達している場合(ステップS18においてYESの場合)には、一時的に保持されているすべての被処理パケットに対して、対応するエントリの「処理」の欄に記載のデータ処理を実行する(ステップS22)。
これに対して、ステップS10において取得した「条件」の値が「1」である場合(ステップS12においてNOの場合)には、中継装置10は、複数トークン同期機能の無効化が設定されていると判断し、受信した被処理パケットに対して、対応するエントリの「処理」の欄に記載のデータ処理を実行する(ステップS24)。
ステップS22またはステップS24の実行後、中継装置10は、ルーティングテーブル(DFAI)126を参照して、対象の被処理パケットを受信した入力インターフェイスに対応する転送先を取得する(ステップS26)。
その後、ステップS26において取得した転送先をヘッダ部に記述し、ステップS22またはステップS24におけるデータ処理の実行により得られた結果をペイロード部に記述することで、新たなパケットを生成する(ステップS28)。
一方、ステップS40においては、中継装置10は、自装置では当該被処理パケットに対するデータ処理が不要であると判断し、ルーティングテーブル(通常)122を参照して、対象のパケットを受信した入力インターフェイスに対応する転送先を取得する。そして、中継装置10は、受信したパケットのヘッダ部に記述されている宛先をステップS40において取得した転送先の宛先に書換えることで、新たなパケットを生成する(ステップS42)。
最終的に、中継装置10は、ステップS28またはステップS42において生成されたパケットをネットワークへ向けて送出する(ステップS30)。そして、処理は終了する。
<J.その他の実施形態>
(1) 仮想化技術
上述した説明においては、基本的には、中継装置10の物理的なアドレスと論理的なアドレスとが一対一に対応する構成について説明したが、1つの中継装置10を複数の論理的な中継ノードとして取扱うこともできる。このような方法を中継装置の仮想化技術などとも称する。
図13は、中継装置の仮想化技術を説明するための図である。図13(A)には、中継装置10の物理的なネットワーク例を示し、図13(B)には、中継装置10が提供する論理的なネットワーク例を示す。すなわち、図13(B)に示す例では、中継装置10−aが仮想化されることで、論理的には、4つの中継ノード10−a1,10−a2,10−a3,10−a4として扱うこともできる。
このような仮想化技術を利用することで、スケーラビリティや柔軟性・拡張性をより高めることができる。
(2) 高度データフローアーキテクチャ
本実施の形態に従うDFAIによれば、従来のデータフローアーキテクチャと同様の処理に加えて、「高度データフローアーキテクチャ」に従う処理の実現も可能である。
「高度データフローアーキテクチャ」は、従来のデータフローアーキテクチャの機能に加えて、処理実行中にプログラムを動的に改変する機能(動的プログラミング)や、演算結果の誤差フィードバックに基づく学習機能(自己組織的プログラミング)を利用することができる。
<K.作用効果>
本実施の形態に従う情報処理システムによれば、通常の中継装置(中継ノード)としての機能を維持しつつ、データフローアーキテクチャに基づく情報処理を提供できる。そのため、データフローアーキテクチャを実現するために必要なコストを抑制することができる。
また、通常のネットワークでは、多数の中継装置(ルータやL3スイッチ)などが配置されるので、これらを利用することで、高いスケーラビリティおよび柔軟性・拡張性をもった、データフローアーキテクチャの実行環境を提供することができる。
また、高度データフローアーキテクチャを利用することにより、処理実行中にプログラムを動的に改変する機能(動的プログラミング)や、演算結果の誤差フィードバックに基づく学習機能(自己組織的プログラミング)などを利用することもできる。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1,2,3 下位ネットワーク、4 基幹ネットワーク、10 中継装置(中継ノード)、12 スイッチ部、14 転送処理部、15,31 プロセッサ、16,32,222 メモリ、17,33 インターフェイス、20 ポートユニット、22 物理終端部、24 転送エンジン、26 バッファ、30 外部処理装置、100 情報処理システム、102 受信部、104 パケット種別判断部、106 転送制御部、108 送信部、110 処理実行部、112 転送先決定部、114 パケット生成部、118 更新部、120 データ保持部、124 フローテーブル、200 管理装置、202 コンピュータ本体、204 モニタ、205 バス、206 ドライブ、208 光ディスクドライブ、210 キーボード、212 マウス、218 ROM、220 CPU、224 ハードディスク、228 通信インターフェイス、231 初期プログラム、232 処理割当プログラム、233 処理配信プログラム、234 ネットワーク情報、300 被処理パケット、310 ヘッダ部、320 ペイロード部。

Claims (11)

  1. 情報処理システムであって、
    ネットワーク接続された複数の中継ノードと、
    管理ノードとを備え、
    前記中継ノードの各々は、
    経路制御情報に従って、受信したパケットを他の中継ノードへ転送する転送手段と、
    処理規則を保持する記憶手段と、
    受信したパケットが当該中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断する判断手段とを備え、前記被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含み、
    当該中継ノードにおいて前記被処理パケットを受信すると、前記処理規則に基づいて、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行する処理手段と、
    前記被処理データを処理することで得られた結果の転送先を決定する決定手段とを備え、
    前記管理ノードは、
    目的の情報処理を前記複数の中継ノードに割当てる割当手段と、
    当該割当て結果に基づいて、前記複数の中継ノードへ前記処理規則を送信する送信手段とを含む、情報処理システム。
  2. 前記中継ノードの各々は、前記被処理データとして、前記被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む、請求項1に記載の情報処理システム。
  3. 前記処理規則は、同一の処理を所定回数繰返すための定義を含み、
    前記処理手段は、前記処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す、請求項1または2に記載の情報処理システム。
  4. ネットワーク接続された複数の中継ノードを用いた情報処理に向けられた中継装置であって、
    経路制御情報に従って、受信したパケットを他の中継装置へ転送する転送手段と、
    処理規則を保持する記憶手段と、
    受信したパケットが当該中継装置において処理すべき対象である被処理パケットであるか否かを判断する判断手段とを備え、前記被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含み、
    当該中継装置において前記被処理パケットを受信すると、前記処理規則に基づいて、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行する処理手段と、
    前記被処理データを処理することで得られた結果の転送先を決定する決定手段とを含む、中継装置。
  5. 前記被処理データとして、前記被処理データを処理することで得られた結果を含むパケットを生成する生成手段とをさらに含む、請求項4に記載の中継装置。
  6. 前記処理規則は、同一の処理を所定回数繰返すための定義を含み、
    前記処理手段は、前記処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、当該被処理パケットを当該指定された回数だけ受信するまで処理を繰返す、請求項4または5に記載の中継装置。
  7. 他の装置からの前記処理規則を受信する受信手段をさらに備える、請求項4〜6のいずれか1項に記載の中継装置。
  8. ネットワーク接続された複数の中継ノードを用いた情報処理方法であって、
    前記複数の中継ノードに処理規則を設定するステップと、
    前記複数の中継ノードに含まれる第1の中継ノードが、パケットを受信すると、当該パケットが前記第1の中継ノードにおいて処理すべき対象である被処理パケットであるか否かを判断するステップとを備え、前記被処理パケットは、実行すべき処理の内容を示す処理特定情報と、当該処理の対象となる被処理データとを含み、
    前記第1の中継ノードが、受信したパケットが当該中継ノードにおいて前記被処理パケットである場合に、前記処理規則に基づいて、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行するステップと、
    前記第1の中継ノードが、前記被処理データを処理することで得られた結果の転送先である第2の中継ノードを決定するステップと、
    前記第1の中継ノードが、前記被処理データを処理することで得られた結果を前記第2の中継ノードへ送信するステップと、
    前記第1の中継ノードが、受信したパケットが当該中継ノードにおいて前記被処理パケットではない場合に、経路制御情報に従って、受信したパケットを他の中継ノードへ転送するステップとを備える、情報処理方法。
  9. 前記第1の中継ノードが、前記被処理データとして、前記被処理データを処理することで得られた結果を含むパケットを生成するステップをさらに備える、請求項8に記載の情報処理方法。
  10. 前記第2の中継ノードが、前記第2の中継ノードにおいて前記被処理パケットを前記第1の中継ノードから受信すると、当該パケットに含まれる前記処理特定情報に対応する処理を、当該パケットに含まれる前記被処理データに対して実行するステップをさらに備える、請求項9に記載の情報処理方法。
  11. 前記処理規則は、同一の処理を所定回数繰返すための定義を含み、
    前記実行するステップは、前記処理特定情報として同一の処理を所定回数繰返すための指定を含むパケットを受信した場合に、前記被処理パケットを当該指定された回数だけ受信するまで処理を繰返すステップを含む、請求項8または9に記載の情報処理方法。
JP2010142508A 2010-06-23 2010-06-23 情報処理システム、中継装置、および情報処理方法 Withdrawn JP2012009996A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010142508A JP2012009996A (ja) 2010-06-23 2010-06-23 情報処理システム、中継装置、および情報処理方法
CN201180040803.4A CN103081440B (zh) 2010-06-23 2011-06-21 信息处理***、中继装置以及信息处理方法
US13/807,001 US20130100957A1 (en) 2010-06-23 2011-06-21 Information processing system, relay device, and information processing method
PCT/JP2011/064108 WO2011162230A1 (ja) 2010-06-23 2011-06-21 情報処理システム、中継装置、および情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010142508A JP2012009996A (ja) 2010-06-23 2010-06-23 情報処理システム、中継装置、および情報処理方法

Publications (1)

Publication Number Publication Date
JP2012009996A true JP2012009996A (ja) 2012-01-12

Family

ID=45371413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010142508A Withdrawn JP2012009996A (ja) 2010-06-23 2010-06-23 情報処理システム、中継装置、および情報処理方法

Country Status (4)

Country Link
US (1) US20130100957A1 (ja)
JP (1) JP2012009996A (ja)
CN (1) CN103081440B (ja)
WO (1) WO2011162230A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102647355A (zh) * 2012-04-12 2012-08-22 华为技术有限公司 Lacp协商处理方法、中继节点及***
WO2023084739A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 電子計算機

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102129643B1 (ko) * 2012-10-22 2020-07-02 아브 이니티오 테크놀로지 엘엘시 소스 추적으로 데이터 프로파일링
PL404986A1 (pl) * 2013-08-05 2015-02-16 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Urządzenie do rutingu pakietów wieloma ścieżkami w sieciach teleinformatycznych oraz sposób jego zastosowania
JP6503945B2 (ja) * 2015-07-13 2019-04-24 富士通株式会社 情報処理装置、並列計算機システム、ファイルサーバ通信プログラム及びファイルサーバ通信方法
JP6427697B1 (ja) * 2018-01-22 2018-11-21 株式会社Triart 情報処理装置、情報処理方法、プログラムおよび情報処理システム
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods
JP7159818B2 (ja) * 2018-11-28 2022-10-25 オムロン株式会社 制御装置および通信システム
CN110831103B (zh) * 2019-11-08 2022-04-15 京东方科技集团股份有限公司 基于自组网的通信方法及装置、自组网、电子设备
CN112165430B (zh) * 2020-09-24 2024-02-13 阿波罗智联(北京)科技有限公司 数据路由方法、装置、设备以及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2570963B2 (ja) * 1993-05-31 1997-01-16 日本電気株式会社 パケット網における中継経路情報を用いたシグナリング方式
US5812549A (en) * 1996-06-25 1998-09-22 International Business Machines Corporation Route restrictions for deadlock free routing with increased bandwidth in a multi-stage cross point packet switch
US6167445A (en) * 1998-10-26 2000-12-26 Cisco Technology, Inc. Method and apparatus for defining and implementing high-level quality of service policies in computer networks
CN100483382C (zh) * 2000-10-18 2009-04-29 Bep技术公司 分布式多处理***
US7280545B1 (en) * 2001-12-20 2007-10-09 Nagle Darragh J Complex adaptive routing system and method for a nodal communication network
JP2004180192A (ja) * 2002-11-29 2004-06-24 Sanyo Electric Co Ltd ストリーム制御方法およびその方法を利用可能なパケット転送装置
US7746862B1 (en) * 2005-08-02 2010-06-29 Juniper Networks, Inc. Packet processing in a multiple processor system
US8145732B2 (en) * 2005-11-21 2012-03-27 Intel Corporation Live network configuration within a link based computing system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102647355A (zh) * 2012-04-12 2012-08-22 华为技术有限公司 Lacp协商处理方法、中继节点及***
US9461928B2 (en) 2012-04-12 2016-10-04 Huawei Technologies Co., Ltd. LACP negotiation processing method, relay node, and system
WO2023084739A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 電子計算機

Also Published As

Publication number Publication date
CN103081440B (zh) 2016-08-31
US20130100957A1 (en) 2013-04-25
CN103081440A (zh) 2013-05-01
WO2011162230A1 (ja) 2011-12-29

Similar Documents

Publication Publication Date Title
WO2011162230A1 (ja) 情報処理システム、中継装置、および情報処理方法
US10949379B2 (en) Network traffic routing in distributed computing systems
CN110391982B (zh) 传输数据的方法、设备和计算机程序产品
CN105453492B (zh) 具有第三层分布式路由器功能的交换机集群
JP6267367B2 (ja) 分散型直接相互接続ネットワークにおけるパケットルーティング方法
JP5974665B2 (ja) 情報処理システム、中継装置、情報処理装置および情報処理方法
US20160269298A1 (en) Traffic Engineering Feeder for Packet Switched Networks
US20090198956A1 (en) System and Method for Data Processing Using a Low-Cost Two-Tier Full-Graph Interconnect Architecture
US10826823B2 (en) Centralized label-based software defined network
JP6048505B2 (ja) 並列計算機、ノード装置、及び並列計算機の制御方法
US11502967B2 (en) Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment
US10904130B2 (en) Method for scalable computer network partitioning
JP6904369B2 (ja) 制御装置、制御方法、及びプログラム
JP6809360B2 (ja) 情報処理装置、情報処理方法及びプログラム
WO2020134827A1 (zh) 一种用于片上网络的路径创建方法、装置及电子设备
JP2018185624A (ja) スイッチプログラム、スイッチング方法及び情報処理装置
CN116915708A (zh) 路由数据包的方法、处理器及可读存储介质
US9413654B2 (en) System, relay device, method, and medium
JP6822297B2 (ja) 情報処理装置、情報処理システムおよび情報処理システムの制御方法
US20190044842A1 (en) Information processing apparatus, method and non-transitory computer-readable storage medium
JP4641794B2 (ja) パケットフィルタ同期方法及びパケット中継システム
WO2020184381A1 (ja) 処理装置、情報処理システム、情報処理方法、及びプログラム
JP2015525984A (ja) 通信システム、制御装置、通信方法及びプログラム
JP2005159942A (ja) 複数レイヤパス設定方法及び複数レイヤパス設定プログラム
JP6581062B2 (ja) 通信装置、システム、方法およびプログラム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130903