JP2008289185A - ネットワーク経路処理方法及びネットワーク経路処理装置 - Google Patents
ネットワーク経路処理方法及びネットワーク経路処理装置 Download PDFInfo
- Publication number
- JP2008289185A JP2008289185A JP2008175670A JP2008175670A JP2008289185A JP 2008289185 A JP2008289185 A JP 2008289185A JP 2008175670 A JP2008175670 A JP 2008175670A JP 2008175670 A JP2008175670 A JP 2008175670A JP 2008289185 A JP2008289185 A JP 2008289185A
- Authority
- JP
- Japan
- Prior art keywords
- node
- route
- control program
- communication
- packet
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】経路制御プログラムを通信パケット内に埋め込んだプログラマブルパケットを利用したネットワーク経路処理方法及びネットワーク経路処理装置を提供する。
【解決手段】ヘッダ部とデータ部からなる通信パケットを受信し、ヘッダ部に設けられる通信パケットの転送経路を記述した経路制御プログラムを格納する。次に、通信パケットを受信した通信ノードで格納された経路制御プログラムを読み出し、この経路制御プログラムを解釈、処理を行う。そして、転送された通信パケットの経路制御プログラムから、次に転送する通信ノードを決定して、通信パケットを転送する。
【選択図】図1
【解決手段】ヘッダ部とデータ部からなる通信パケットを受信し、ヘッダ部に設けられる通信パケットの転送経路を記述した経路制御プログラムを格納する。次に、通信パケットを受信した通信ノードで格納された経路制御プログラムを読み出し、この経路制御プログラムを解釈、処理を行う。そして、転送された通信パケットの経路制御プログラムから、次に転送する通信ノードを決定して、通信パケットを転送する。
【選択図】図1
Description
本発明は、通信パケットにその転送経路を記述する経路制御プログラムを持たせて、その経路制御プログラムに従ってネットワーク上の複数の通信ノードに通信パケットを送信するようにしたネットワーク経路処理方法及びネットワーク経路処理装置に関する。
一般に、ネットワークを用いてデータのやり取りを行う方法としては、パケット通信が普及している。パケット通信用のプロトコルとしては、物理層からアプリケーション層までさまざまなプロトコルがあり、例えば、インターネット通信のTCP/IP、ホームページを参照するときのHTTPあるいはメール通信用のプロトコルであるSMTPなどはよく知られている。これらのプロトコルは、世界各国から多くの専門家が集まり長年の検討を経て標準化されたものである。
しかし、一般のユーザから見ると、標準化されたプロトコルをそのままの状態で利用することは逆に不便となることが起こりうる。例えば、HTTPでどこかのホームページにアクセスする場合などで特別にセキュリティーを考慮したい場合や、インターネットで電子会議を行う場合などで標準の通信プロトコルを変更して利用したいなどの要求が起こることがある。そこで、従来から、標準化を待つことなく、通信プロトコルを動的に変更する方法が検討され、その手法としてアクティブネットワーク手法が開発された。
アクティブネットワークは、通信プロトコルの動的配布及び変更能力をもつネットワークであり、ネットワーク内に設けられたルータでアプリケーション層までの処理を実行させることができるものである。アクティブネットワークは、いわば、ネットワーク自体をプログラム化して取り扱うことができるネットワークであるということができる。
アクティブネットワークは、通信プロトコルの動的配布及び変更能力をもつネットワークであり、ネットワーク内に設けられたルータでアプリケーション層までの処理を実行させることができるものである。アクティブネットワークは、いわば、ネットワーク自体をプログラム化して取り扱うことができるネットワークであるということができる。
このアクティブネットワーク手法としては、通信ノードの通信制御プログラムを動的に変更できるようにしたアクティブノード(プログラマブルノード)手法と、通信パケットにパケット制御プログラムを内蔵させたアクティブパケット(プログラマブルパケット)と呼ばれるものとがある。アクティブノード手法としては、Java(登録商標)言語による通信プロトコルの配置を行うMIT(Massachusetts Institute of Technology)のANTS(Active Network Script)や、Java(登録商標)言語によるネットワーク管理を行うコロンビア大学のNetScriptなどが代表的である(例えば、非特許文献1を参照。)。
ルータや端末などの通信ノードでは、通常その内部に通信プロトコルを実現するソフトウエアを持ち、このソフトウエアによる通信プロトコルに従って通信処理を行っている。上記ANTSのようなアクティブノード手法では、通信パケットの経路処理を行うルータ上に、プロトコル処理プログラムを必要に応じて所定のサーバからダウンロードする機構が導入されている。そして、その通信ノードが通信パケットを受け取るとその通信パケットが要求するプロトコルを調べ、その通信ノードがそのパケットが要求するプロトコルを持っていない場合には、サーバからダウンロードし、そのプロトコルにより当該通信パケットを次の転送先ノードに送信する。すなわち、新しいプロトコルを定義したソフトウエアを外部から当該通信ノードに導入し、既存のソフトウエアと入れ替えて利用するようにしている。
また、アクティブパケット(プログラマブルパケット)手法としては、例えば、BBN TechnologyのSmart Packetsやペンシルベニア大学で開発されたPLAN(A Packet Language for Active Networks)が知られている(例えば、非特許文献2を参照)。Smart PacketsはC言語などの手続き型言語によって通信制御を行うものであり、PLANは関数型言語によってパケットの移動経路を記述したものである。これらのアクティブパケットは、通信パケットそのものにプロトコルを埋め込んだプログラム付のパケット、つまりプログラマブルパケットを実現するものである。
一般に、通常の通信パケットにおいては、そのヘッダ部分に受信先コンピュータのネットワークアドレスが書き込まれ、ルータなどのネットワークノードはそのアドレスを読んで次の転送先を決定する。アクティブパケット手法に用いられるアクティブパケット(プログラマブルパケット)ではヘッダ部分にアドレスの代わりにそれ自身の転送を制御する経路処理プログラムが書き込まれている。そして、このプログラマブルパケットがルータなどの通信ノードに転送されると、その通信ノードは、予め用意されたプログラムの解釈実行システムを通じて、そのパケットのヘッダ部分にあるプログラムを実行して次の転送先を決定する。この結果、パケットがそれ自身の転送方法を定義できるようになる。
このように、ANTSでは、各通信ノード上にJava(登録商標)言語の実行系とソフトウエア置換機構を予め配置しておく。そして、各通信ノードはパケットを受け取ると、そのパケットに示されたプロトコル識別子を基にして、そのパケットの通信手順を定義するプロトコルを実装したJava(登録商標)言語プログラムを、ネットワーク上の専用サーバからダウンロードする。そしてダウンロードしたプログラムに従って受け取ったパケットを処理する。
図15は、従来のプログラマブルノードを用いたネットワークシステムであるANTSの例を示したものであり、このシステムは、通信元コンピュータ端末100、配信先コンピュータ端末101、通信制御プログラムの配布サーバ102、中継通信ノードであるルータ103、104から構成される。このシステムによれば、通信元コンピュータ端末100から、ルータ103に対して通信パケット105とそのパケットの処理に必要なプロトコルが記述された通信制御プログラム106が送信される(1)。ルータ103は、パケット105と通信制御プログラム106を受信すると、配布サーバ102に対してこのパケット105の処理に必要なプロトコルを持つ処理プログラムの転送要求を行う(2)。
配布サーバ102は、上記ルータ103からのプログラム転送要求を受けて、そのパケットの処理に必要なプログラムをルータ103に転送する(3)。ルータ103は処理が終了したパケット105を次のルータ104に送る(4)。そして、このパケット105を受け取ったルータ104は、ルータ103と同様に配布サーバ102に対してパケットを処理するためのプログラムの転送要求を行う(5)。配布サーバ102は、上記ルータ104からのプログラム転送要求を受けて、処理に必要なプログラムをルータ104に転送する(6)。
なお、この従来システムにおいては、パケット単位で通信処理を変更する場合、その都度、配布サーバ102に対して通信制御プログラムの転送要求を行い、配布サーバからプログラムを転送してもらわなければならないので、伝送効率が悪いという問題がある。
なお、この従来システムにおいては、パケット単位で通信処理を変更する場合、その都度、配布サーバ102に対して通信制御プログラムの転送要求を行い、配布サーバからプログラムを転送してもらわなければならないので、伝送効率が悪いという問題がある。
図16は、プログラマブルパケットの従来例と本発明の比較を示したものであり、 図16Aは、1997年に発表されたペンシルベニア大学のPLANに用いられているプログラマブルパケット、図16Bは、比較のために示した本発明で用いられるプログラマブルパケットの例である。
図16Aに示されるように、通信パケット105はデータ部107とヘッダ部108に分かれており、ヘッダ部108はプログラム部109と付加情報110を保有している。このプログラム部109には、宛先アドレスの代わりにパケット自身の経路を決める経路制御プログラム111が埋め込まれている。図16Aに例示されているプログラムはPING機能を持つプログラムである。PING機能とは、宛先に届いたらパケットを送信元に戻す機能であり、このプログラムの例では、プログラム中の変数srcに送信元ノード名を格納し、変数destに宛先ノード名を格納する。すなわち、このパケットは変数srcに格納されるノードから変数destに格納されるノードに転送され、その後、再び変数srcに格納されるノードに戻ってくるプログラムである。
このように、従来の経路制御プログラム111は、汎用的なプログラミング言語で記述されたものであり、汎用的な言語である点で記述能力に優れている反面、パケットに占めるバイト数が多くなるという問題があった。
図16Bは、後述する本発明で用いられるプログラマブルパケットであるが、このパケットを転送するプログラムは、例えば「sとdを変数とすると、変数sに格納されるノードから変数dに格納されるノードに転送され、その後、変数sに格納されるノードに戻って終了する。」というプログラムは、「s;d;s;0」とノード名を記述するだけで完了する。この意味で従来の記述(図16A)に比べて大幅に短縮される。
David Tennenhouse and David J. Wetherall(Massachusetts Institute of Technology) HYPERLINK "http://nms.lcs.mit.edu/activeware/" インターネット<URL:http://nms.lcs.mit.edu/activeware/>
Scott M. Nettles and Carl A. Gunter(University of Pennsylvania) インターネット<URL:HYPERLINK http://cis.upenn.edu/ ̄dsl/PLAN/>
しかしながら、ANTSに代表される従来のシステムにおいては、パケットを処理するプログラムが通信ノードにないときは、パケットのプロトコル種別ごとに、その処理プログラムをサーバから発見し、それをダウンロードする必要があった。このため、多様なプロトコルを利用する場合には、通信遅延などが起こり、その結果通信コストが大きくなるという問題があった。
また、ANTSやNetScriptを含む既存のアクティブノード手法では、ノード単位のプロトコルの動的変更は可能であるが、パケット単位でこの変更を行うことはできない。すなわち、ネットワークには多様なデータがパケットとして流されるが、アクティブノード手法は、通信ノード上のソフトウエアを入れ替えるものであるため、ノードに送られてくるパケット単位にプロトコルを変更することはできなかった。
また、上述したように、既存のプログラマブルパケット手法では、C言語等の汎用プログラミング言語を使用しているため、むしろその記述能力が優れている点が弊害となっていた。例えば、図16Aのプログラマブルパケットのように、通信パケット105内にネットワーク内で移動する経路を示す経路制御プログラム111を埋め込んだプログラム部109を持つようになると、プログラム部分のバイト数が増え、パケット自体のバイト数が増えてしまうという問題が生じる。すなわち、パケット通信においてパケット105自体の情報量が増えることはその分伝送速度の低減につながるという問題あった。また、仮にパケット105の大きさを固定とすれば、データ部107に分配されるバイト数が少なくなり、データ部107が圧縮されて伝送できる情報量が低減されるという問題があった。
すなわち、通信パケットは伝送スピード及び伝送効率から、そのサイズには制限がある(例えば1.5KB程度)。このため、パケットに埋め込まれるプログラムは最小化される必要があるが、これらの汎用プログラミング言語は記述能力が高い分、プログラムサイズが増大してしまうのである。そして、そのことが、パケットの大部分を経路制御プログラムが占有してデータサイズを圧迫する原因となっていた。また、データサイズを同程度に維持しようとすると、パケットサイズが増大することになり、伝送速度や伝送効率を悪化させるという問題があった。
また、汎用プログラミング言語は記述能力が高いので、通信ノード内のアクセスが容易となり、安全な実行が難しくなるという問題もあった。つまり、汎用型または関数型プログラミング言語により経路処理プログラムを記述することはセキュリティー上での問題がある。更に、プログラマブルパケットを受信した中間ノードは、そのプログラムを実行して次の宛先ノードを決定する必要があるが、記述能力の高い言語ほどその実行システムは大きくなり、ノード側処理を増大させ、実行速度が遅くなり、結果として通信遅延が大きくなるという問題もあった。
このように、既存のプログラマブルパケット手法ではC言語などの手続き型の汎用プログラミング言語やML(Markup Language)などの関数型プログラミング言語をもとにした言語を前提としているため、必ずしも経路制御記述に向いているとはいえず、記述自体の冗長性が高く、プログラムサイズ及び実行コストが大きくなっていた。
本発明は、これらの問題に鑑みてなされたものであり、汎用プログラミング言語を利用することなく、したがってパケットサイズを大きくすることのない専用言語を用いての経路記述を可能とするとともに、この専用言語により記述された経路制御プログラムをパケット内に埋め込んだプログラマブルパケットをパケットプールに複数格納し、このパケットプールに格納されたプログラマブルパケットの中から経路要求に応じたパケットが簡単に選択して経路処理を行うネットワーク経路処理方法及びネットワーク経路処理装置を提供することを目的とする。
上記課題を解決し、本発明の目的を達成するため、本発明のネットワーク経路処理方法は、ヘッダ部とデータ部からなる通信パケットを受信し、ヘッダ部に設けられる通信パケットの転送経路を記述した経路制御プログラムを格納するステップと、格納された前記経路制御プログラムを読み出して、前記経路制御プログラムを解釈し処理するステップとを備え、このプログラムを解釈し処理するステップは、転送された通信パケットの経路制御プログラムから、次に転送する通信ノードを決定して、通信パケットを転送するステップを含むことを特徴としている。
また、本発明のネットワーク経路処理装置は、ヘッダ部とデータ部からなる通信パケットを受信し、このヘッダ部に設けられる通信パケットの転送経路を記述した経路制御プログラムを格納するプログラム格納部と、このプログラム格納部に格納された経路制御プログラムを読み出して、経路制御プログラムを解釈し処理するプログラム処理部とを備え、このプログラム処理部において、転送された通信パケットの経路制御プログラムから、次に転送する通信ノードを決定して、通信パケットを転送するパケット転送装置を備えていることを特徴としている。
更に、本発明のネットワーク経路処理方法またはネットワーク処理装置の好ましい形態としては、経路制御プログラムが、通信パケットが転送されるノード名で記述されており、転送先の通信ノードにおいて経路制御プログラムに従った解釈処理が行われた後に、解釈処理を行ったノード名の通信ノードに前記通信パケットを転送することを特徴としている。
また、本発明のネットワーク経路処理方法またはネットワーク処理装置の好ましい形態としては、通信パケットを受信した通信ノードは、そのパケット経路制御プログラムに従った解釈処理を行った後に、解釈処理の終了したノード名を経路制御プログラムから除いて、経路制御プログラムから除いたノード名の通信ノードに通信パケットを転送することを特徴としている。
更に、本発明のネットワーク経路処理方法またはネットワーク処理装置の好ましい形態としては、通信パケットを受信した通信ノードは、経路制御プログラムに従った解釈処理を行った後に、経路を示す列の何番目の記号まで転送したかを示す番号を経路制御プログラムに付記し、この番号が付記されたノード名の通信ノードに通信パケットを転送するとともに、その通信パケットを受け取った通信ノードでは、その番号が示す次の経路から解釈処理を行うことを特徴としている。
また、本発明のネットワーク経路処理方法またはネットワーク処理装置の好ましい形態としては、通信ノードにおいて経路制御プログラムの変数の解釈処理を行った後に、この解釈処理の終了した変数名を経路制御プログラムから除いて、処理の終了した通信ノードに通信パケットを転送することを特徴としている。
また、本発明のネットワーク経路処理方法またはネットワーク処理装置の好ましい形態としては、通信ノードにおいて経路制御プログラムの変数の解釈処理を行った後に、経路制御プログラムの経路列の何番目の記号まで転送したかを示す番号を経路制御プログラムに付記して、この番号が付記されたノード名の通信ノードに通信パケットを転送するとともに、この転送された通信パケットを受け取った通信ノードにおいて、この番号が示す次の経路から解釈処理を行うことを特徴としている。
なお、本発明のネットワーク経路処理方法及びネットワーク経路処理装置に共通の好ましい形態において利用される経路制御プログラムは、経路記述専用のプログラミング言語により転送先及び転送順序を記述するものであることを特徴としている。
本発明のネットワーク経路処理方法またはネットワーク経路処理装置によれば、各通信ノードにおいて経路制御プログラムの処理が行われるごとに、経路制御プログラムからそのノード名が取り除かれるか、処理が行われたノード名までの番号が付記されるので、間違って同じ通信ノードに転送されることがない。
また、本発明のネットワーク経路選択方法、ネットワーク経路処理方法、ネットワーク経路選択システム及びネットワーク経路処理装置に共通に用いられるプログラマブルパケットの経路制御プログラム及び外部から受信される経路要求プログラムは、汎用的プログラミング言語あるいは関数型プログラミング言語ではない本発明者が独自に開発した経路記述専用のプログラミング言語を用いているので、プログラムサイズを極小に抑えることができる。また、両社の比較対照が容易となるため、パケットプールから経路要求を満足するパケットの選択も極めて簡単に行うことができる。
また、本発明のネットワーク経路処理方法及びネットワーク経路処理装置によれば、経路制御プログラムが転送先となるノード名をその転送順序に従って並べた列として記述されるため、その記述サイズを短くするとともに、実行箇所を明示することができる。
本発明のネットワーク経路処理方法及びネットワーク経路処理装置の好ましい形態によれば、経路制御プログラムにノード名を直接記述する代わりに関数として変数名と変数に対応するノード名を記述しているので、予め通信パケットを転送する順序を固定することなく、転送先ノードで次の転送先ノードを決定することが可能である。このため、ネットワークのトラフィック事情等を考慮した柔軟な転送先ノードの決定を行うことができる。
以上説明したように、一般的なプログラマブルパケットは、経路プログラムを保有している分、パケットサイズの増大(またはデータ領域の圧迫)や転送コストの増大を招くが、本発明のネットワーク経路処理方法及び経路処理装置に用いられるプログラマブルパケットは、経路記述に簡単な専用言語を用いるため、プログラマブルパケットのサイズを大幅に小さくすることができる。
また、本発明のネットワーク経路処理方法またはネットワーク経路処理装置によれば、各通信ノードにおいて経路制御プログラムの処理が行われるごとに、経路制御プログラムからそのノード名が取り除かれるか、処理が行われたノード名までの番号が付記されるので、間違って同じ通信ノードに転送されることがない。
まず、本発明の実施の形態であるネットワーク経路処理方法及びネットワーク経路処理装置について説明する前に、その前提となるネットワーク経路選択を行う方法について説明する。
図1は、ネットワーク経路選択を行うシステムの全体構成図を示したものである。このネットワーク経路選択システムにおいては、パケットプール1が、ネットワーク2を介して通信ノードa、b、cと接続されている。パケットプール1は、一種のサーバのようなもので、ヘッダ部3とデータ部4から構成される複数のプログラマブルパケット5と、外部からの経路要求プログラム(リクエスト)6を受け取る経路要求入力部7と、外部からの経路要求プログラムとプログラマブルパケット5のヘッダ部3に記憶された経路制御プログラムとを比較する比較装置8から構成されている。
図1は、ネットワーク経路選択を行うシステムの全体構成図を示したものである。このネットワーク経路選択システムにおいては、パケットプール1が、ネットワーク2を介して通信ノードa、b、cと接続されている。パケットプール1は、一種のサーバのようなもので、ヘッダ部3とデータ部4から構成される複数のプログラマブルパケット5と、外部からの経路要求プログラム(リクエスト)6を受け取る経路要求入力部7と、外部からの経路要求プログラムとプログラマブルパケット5のヘッダ部3に記憶された経路制御プログラムとを比較する比較装置8から構成されている。
また、通信ノードa、b、cは、外部から転送されてくるプログラマブルパケット5が順番に記憶される待ち行列記憶部9と、この待ち行列に記録されているプログラマブルパケット5を読み出して処理のための解釈を加える経路解釈部10と、経路解釈部10で経路制御プログラムを解釈した結果をもって、次の転送先の通信ノードに転送するパケット転送装置11から構成される。
図2は、本発明のネットワーク経路選択方法及びネットワーク経路選択システムに用いられるプログラマブルパケット5の構造を示したものであり、このプログラマブルパケット5のヘッダ部3は、パケットの転送先となる通信ノード名を記述した経路制御プログラムが格納されるプログラム格納領域12と、変数名及び変数データを格納する変数名格納領域13とから構成される。また、ヘッダ部3には、更に、送信元ホスト名を格納する送信元ホスト名格納領域14及びバージョン番号を格納するバージョン番号格納部15が設けられているが、これらの格納領域14と15は省略してもよい。
図3は本発明に利用されるパケットプール1の詳細な構成を示す図であり、比較装置7は木構造生成装置16と木構造比較装置17から構成されている。このパケットプール1に蓄積されている待機中のパケット5は、それぞれパケットの転送経路、すなわち経路制御プログラムが記述されたヘッダ部3と転送するデータが記憶されるデータ部4とから構成され、比較装置7において、ヘッダ部3に格納されている経路制御プログラムが、経路要求入力部6に入力される経路要求プログラムと比較される。
この比較は、まず木構造生成装置16により経路要求プログラム及びそれと比較される経路制御プログラムの木構造が生成された後、木構造比較装置17において両者の木構造の比較が行われる。
次に、図4に基づいて、本発明に用いられる経路用言語について説明する。図4に示す経路用言語は、経路要求用の言語と経路記述用の言語からなる。経路比較を容易にするために両者は類似した言語として構成されるが、経路記述用の言語は、経路要求用の言語を制限したものとなっている。そして、プログラマブルパケットには、経路記述用の言語で書かれた経路が予め与えられている。経路要求用の言語を経路記述用の言語を拡張したものとしているのは、経路要求には任意性を含ませることが必要であるからである。例えば、経路要求用の言語には「複数あるノードのうちの1つでも転送されれば十分である」とか、「複数ノードに転送する際に、その順番は問わない(任意でかまわない)」とか、「あるノードを通過する回数は任意の回数でかまわない」といった要求を表現できる記述性が求められるからである。
図4に示される経路要求用の言語で具体的に説明すると、符号EあるいはFは、経路を示すものであり、「0」は移動終了を意味し、「a」は名前aのノード(ホスト)への移動を意味する。ノードとしては通常のコンピュータ端末である場合とルータである場合とがある。経路E、Fは、通常はパケットを転送するノード名であることが多いが、2つのノードを関連付けた演算子を含む式である場合もある。したがって、単純に「a;0」と記述した場合は、ノードaにパケットを転送してから、そのパケットの転送を終了させることを意味する。
「E;F」(逐次合成)は、経路Eに従って移動した後に、経路Fに従って移動することを意味する。例えば、経路制御プログラムが「a;b」と記述されたパケットは、まず、最初に通信ノードaにパケットが転送され、続いて通信ノードbにパケットが転送されることを意味する。
また、「E+F」(選択合成)は、経路Eまたは経路Fのどちらか一方に従って移動するが、その選択は処理内容によって明示的に決められていることを意味している。すなわち、この場合の選択基準は、両経路において最初に移動するノードが存在する経路を選択するようにする。例えば、ノードaとノードbがあって、「a+b」と記述されると、ノードaまたはノードbのいずれかに転送されるのであるが、ノードaが最初に移動する経路にある場合には、ノードaを選択し、ノードbにはパケットの転送を行わない。
同様に、「E#F」(非決定的選択合成)は、経路Eと経路Fのどちらか一方の経路を選択することを意味し、最初に移動するノードが存在する経路を優先的に選択するかどうかは問わない点が「E+F」と異なっている。つまり、タスク依頼のEとFのどちらの経路を辿ってもよいことを意味する。例えば、ノードa、b、cに対してパケットに要求する経路が「(a#b);c」と記述されると、ノードaを経由してノードcに行く経路と、ノードbを経由してノードcに行く経路のいずれかを選択的にとることを意味するが、どちらの経路を優先するかは問わない。
また、「E%F」(非決定的可換合成)は、経路EとFの両方の経路をとることを意味するが、2つの経路のいずれを先にとるかは任意であることを意味している。つまり、タスク依頼の経路要求において、経路Eと経路Fの順序は入れ換えて移動してもよいことを示す。例えば、「(a%b);c」と記述されたプログラムは、ノードaからノードbを通ってノードcに行く経路と、ノードbからノードaを通ってノードcに行く経路のいずれかの経路、すなわち「a;b;c」あるいは「b;a:c」のいずれかの経路をとること意味するプログラムである。
「E&F」(非同期合成)は、経路Eと経路F移動を非同期に実行してもよいことを意味するプログラムである。言い換えると、経路Eの転送中に経路Fに従って転送されてもよく、またその逆でもよいことを意味する。
「E*」(閉包)は、タスク要求において、エージェントが経路Eによる転送を0回以上の任意の回数繰り返して行ってもよいことを意味する。
この言語は、ラベルつき遷移システムとしてその動作が定義され、以下のような自明な等価関係は構造合同性「≡」により予め定義される。
(1)0;E≡E
(2)E+0≡E、E+E≡E、E+F≡F+E、(E+F)+G≡E+(F+G)
(3)E#E≡E、E#F≡F#E、(E#F)#G≡E#(F#G)
(4)E%0≡E、E%F≡F%E、(E%F)%G≡E%(F%G)
(5)E&0≡E、E&F≡F&E、(E&F)&G≡E&(F&G)
(6)E*≡0#(E;E*)
(1)0;E≡E
(2)E+0≡E、E+E≡E、E+F≡F+E、(E+F)+G≡E+(F+G)
(3)E#E≡E、E#F≡F#E、(E#F)#G≡E#(F#G)
(4)E%0≡E、E%F≡F%E、(E%F)%G≡E%(F%G)
(5)E&0≡E、E&F≡F&E、(E&F)&G≡E&(F&G)
(6)E*≡0#(E;E*)
以上、経路要求用の言語について簡単な説明を行ったが、経路記述用の言語は経路要求用の言語の部分集合であるので、特に説明は要しない。
次に、図5と図6に基づいてパケットプールの中の経路が記述された複数のプログラマブルパケットの中から、経路要求に合致したプログラマブルパケットを選択するときの経路比較アルゴリズムについて説明する。
この選択は各パケットに記述されている転送経路(記述経路)と通信要求の転送経路(要求経路)が互いにその経路をたどれるかどうかを調べることによって行われる。
この選択は各パケットに記述されている転送経路(記述経路)と通信要求の転送経路(要求経路)が互いにその経路をたどれるかどうかを調べることによって行われる。
図5は経路要求プログラムまたは経路記述プログラムの木構造の生成について説明するための図である。
まず、経路記述と経路要求を木構造に展開する手順について説明する。ここで「a」はノード名、EとFは経路記述または経路要求に対応した記号列である。
(1)「a;E」の形の時は、Eに対応した木構造につなげる1つの枝を持ち、その枝には「a」というラベルがついた直列木(「決定木」ともいう。)と呼ぶ木構造に展開する。
(2)「E+F」の形の時は、EとFは選択木と呼ぶ木構造に展開する。これはEとFに対応する木構造の根を結合したものを根とする木構造である。この選択木という木構造は、節から2本以上の枝があり、それぞれの枝に異なるラベルがついているものをいう。
(3)「E#F」の形の時は、EとFは非決定選択木と呼ぶ木構造に展開する。これはEとFに対応する木構造のどちらか一方を任意に選択する木構造である。この非決定選択木(「非決定木」ともいう。)の木構造は、節から2本以上の枝があり、それぞれの枝にはラベルがついているが、そのラベル名は同じである場合もある。
(4)「E%F」の形の時は、「E;F#F;E」に変換した後、木構造に展開する。
(5)「E&F」の形の時は、EとFは並列木と呼ぶ木構造に展開する。これは経路Eと経路Fに対応する木構造を重ねたものとなるが、両木構造は排他的に選択されることはない。この並列木と呼ばれる木構造は、節から2本以上の枝があり、それぞれの枝にラベルがついているものである。このような木構造の比較では、それぞれの枝について並列に比較を行うようにしている。
(6)「E*」の形の時は、「0#E;E*」に変換した後、木構造に展開する。
まず、経路記述と経路要求を木構造に展開する手順について説明する。ここで「a」はノード名、EとFは経路記述または経路要求に対応した記号列である。
(1)「a;E」の形の時は、Eに対応した木構造につなげる1つの枝を持ち、その枝には「a」というラベルがついた直列木(「決定木」ともいう。)と呼ぶ木構造に展開する。
(2)「E+F」の形の時は、EとFは選択木と呼ぶ木構造に展開する。これはEとFに対応する木構造の根を結合したものを根とする木構造である。この選択木という木構造は、節から2本以上の枝があり、それぞれの枝に異なるラベルがついているものをいう。
(3)「E#F」の形の時は、EとFは非決定選択木と呼ぶ木構造に展開する。これはEとFに対応する木構造のどちらか一方を任意に選択する木構造である。この非決定選択木(「非決定木」ともいう。)の木構造は、節から2本以上の枝があり、それぞれの枝にはラベルがついているが、そのラベル名は同じである場合もある。
(4)「E%F」の形の時は、「E;F#F;E」に変換した後、木構造に展開する。
(5)「E&F」の形の時は、EとFは並列木と呼ぶ木構造に展開する。これは経路Eと経路Fに対応する木構造を重ねたものとなるが、両木構造は排他的に選択されることはない。この並列木と呼ばれる木構造は、節から2本以上の枝があり、それぞれの枝にラベルがついているものである。このような木構造の比較では、それぞれの枝について並列に比較を行うようにしている。
(6)「E*」の形の時は、「0#E;E*」に変換した後、木構造に展開する。
図5は、木構造に展開するアルゴリズムを示したフロー図である。
まず、最初に、経路要求または経路記述の用語に用いられている記号を読む(ステップS1)。次に、その記号がノード名か変数名かが判断される(ステップS2)。ここで、記号がノード名か変数名である場合は、ノード名をアーク(枝)の名前とし(ステップS3)、記号の左辺からなる部分経路から決定木を生成する(ステップS4)。
まず、最初に、経路要求または経路記述の用語に用いられている記号を読む(ステップS1)。次に、その記号がノード名か変数名かが判断される(ステップS2)。ここで、記号がノード名か変数名である場合は、ノード名をアーク(枝)の名前とし(ステップS3)、記号の左辺からなる部分経路から決定木を生成する(ステップS4)。
判断ステップS2で、記号がノード名または変数名でないと判断されると、次に記号が演算子「+」であるか否かが判断される(ステップS5)。記号が「+」であると判断されると、その「+」の両辺(A,B)から2つの部分経路AとBを生成し(ステップS6)、この部分経路から選択木を生成する(ステップS7)。
判断ステップS5で、記号が演算子「+」でないと判断されると、次に、記号が演算子「%」であるか否かが判断される(ステップS8)。記号が「%」であると判断されると、その「%」の両辺(A,B)から2つの部分経路A;BとB;Aを生成し(ステップS9)、各部分経路から選択木を生成する(ステップS10)。
判断ステップS8で、記号が演算子「%」でないと判断されると、次に、記号が演算子「#」であるか否かが判断される(ステップS11)。記号が「#」であると判断されると、その「#」の両辺(A,B)から2つの部分経路AとBを生成し(ステップS12)、各部分経路から非決定木を生成する(ステップS13)。
判断ステップS11で、記号が演算子「#」でないと判断されると、次に、記号が演算子「&」であるか否かが判断される(ステップS14)。記号が「&」であると判断されると、その「&」の両辺(A,B)から2つの部分経路AとBを生成し(ステップS15)、各部分経路から並列木を生成する(ステップS16)。
判断ステップS14で、記号が演算子「&」でないと判断されると、次に、記号が演算子「*」であるか否かが判断される(ステップS17)。記号が「*」であると判断されると、部分経路A#A*と0を生成し(ステップS18)、各部分経路から選択木を生成する(ステップS19)。
判断ステップS17で、記号が演算子「*」でないと判断されると、次の記号を読み(ステップS20)、判断ステップS2に戻る。以上の手順を経て、要求経路または記述経路に対応した木構造が生成展開される(ステップS21)。
次に、図6に基づいて、経路要求と経路記述の木構造の比較のアルゴリズムについて説明する。この比較は経路要求と経路記述のそれぞれの対応する木構造を比較して経路記述が経路要求を満足するか否かを判断するためのものである。ここで経路記述が経路要求を満足するとは、経路記述が経路要求に示された必要な転送先ノードに、要求された転送順序で転送可能であり、逆に、経路記述が経路要求に示された以外のノードや、経路要求に示された転送順序以外の順序の転送を含まないことを意味する。
以下、図6に基づいて経路要求と経路記述の比較の手順を説明する。なお、ここでは、経路要求の木構造をR、経路記述の木構造をSとして説明する。
まず、図5で説明したフロー図により、経路要求に対応した木構造Rと経路記述に対応した木構造Sが生成され(ステップS22)、この2つの木構造が比較される(ステップS23)。この比較は、木構造Rの根から伸びている枝のラベルと木構造Sの根から伸びている枝のラベルを比較することによって行われる。
まず、図5で説明したフロー図により、経路要求に対応した木構造Rと経路記述に対応した木構造Sが生成され(ステップS22)、この2つの木構造が比較される(ステップS23)。この比較は、木構造Rの根から伸びている枝のラベルと木構造Sの根から伸びている枝のラベルを比較することによって行われる。
まず、経路要求の木構造Rが直列木(決定木)であるか否かが判断される(ステップS24)。木構造Rが直列木のときは、経路記述Sの部分木の節点が経路要求Rと同じラベルを持つかどうかを調べ(ステップS25)、ラベルが一致したか否かが判断される(ステップS26)。ここでは、SはRと同じラベルを持った枝を持ち、RもSと同じラベルを持った枝を持っていることが一致の条件となる。ラベルが一致した場合には、経路要求Rと経路記述Sの他の部分木について比較を行う(ステップS28)。
判断ステップS24で経路要求の木構造Rが直列木でないと判断されると、次に、木構造Rが選択木であるか否かが判断される(ステップS29)。木構造Rが選択木のときは、選択木のすべての部分木の節点が経路記述の木構造Sの部分木と同じラベルを持っているか否かを調べる(ステップS30)。ここで、同じラベルを持つとは、木構造Sがその選択可能なすべての枝について木構造Rのすべての枝と同じラベル名を持ち、かつ木構造Rも木構造Sが持つすべての枝について同じラベル名を持つことを意味する。次に、木構造Rと木構造Sに同じラベル名をもつ節点が存在しているか否かが判断され(ステップS31)、同じラベルを持つ節点が存在していれば、経路要求Rと経路記述Sの他の部分木について比較を行う(ステップS32)。
判断ステップS29で経路要求の木構造Rが選択木でないと判断されると、次に、木構造Rが非決定選択木(「非決定木」あるいは「非選択木」という。)であるか否かが判断される(ステップS33)。木構造Rが非決定木のときは、非決定木のすべての部分木の節点が経路記述の木構造Sの部分木と同じラベルを持っているか否かを調べる(ステップS34)。ここで、木構造Rの枝が非決定木のときは、木構造Rの枝の1つ以上と同じラベルを持った枝を木構造Sも持っていることが必要条件である。次に、木構造Rと木構造Sに同じラベル名をもつ節点が存在しているか否かが判断され(ステップS35)、同じラベルを持つ節点が存在していれば、経路要求Rと経路記述Sのそれぞれのラベルが一致した節を持つ他の部分木について比較を行う(ステップS36)。この比較は、それぞれの木構造RとSの同じラベル名のついた枝の先にある木構造についても同様に比較されることを意味する。
判断ステップS33で経路要求の木構造Rが非決定選択木でないと判断されると、次に、木構造Rが並列木であるか否かが判断される(ステップS37)。木構造Rが並列木のときは、並列木のすべての部分木の節点が経路記述の木構造Sの部分木と同じラベルを持っているか否かを調べる(ステップS38)。ここで、木構造Rの枝が並列木のときは、木構造Rの枝の1つ以上と同じラベルを持った枝を木構造Sも持っていることが必要条件である。次に、木構造Rと木構造Sに同じラベル名をもつ節点が存在しているか否かが判断され(ステップS39)、同じラベルを持つ節点が存在していれば、経路要求Rと経路記述Sのそれぞれの他の部分木について比較を行う(ステップS40)。この比較は、それぞれの木構造RとSにおいて、その一致したそれぞれの枝の先にある木構造を同様に比較し、かつ木構造Rにおいて一致した枝以外の先にある木構造と、木構造Sにおいて一致した枝以外の先にある木構造とを同様に比較することを意味する。
経路要求の木構造Rと経路記述の木構造Sの比較は上記ステップS23からS40を繰り返し、最終的にその木構造の末端までの比較が行われる(ステップS41)。そして、経路記述の木構造Sが経路要求の木構造Rを満足すると判定された木構造Sがパケットプール1より選定される。ここで、経路要求の木構造Rを満足する経路記述の木構造Sが複数存在するときは、木の深さが最小となるものを選ぶことにより、必要な転送回数が最小となる経路記述を選択することができる。
判断ステップS26でラベルが一致しないとき、及び判断ステップS31、S35、S39で同じラベルを持つ節点が存在しないときは、経路要求の木構造Rを満足する経路記述の木構造はないと判断される(ステップS42)。
次に、図7にもとづいて、本発明の実施の形態例としてのネットワークノード側の処理について説明する。図1のネットワーク経路選択の全体システムの構成図において既に説明したように、通信ノード側の構成は、プログラマブルパケット5が供給されて記憶される待ち行列記憶部9と、この待ち行列記憶部9に記憶されているパケット5を順番に取り出して処理する経路解釈部10と、経路制御プログラムを処理した後に次の転送アドレスにパケットを転送するパケット転送装置11から構成される。
ここで、経路解釈部10は、待ち行列記憶部9から取り出したパケット5のヘッダ部3に記憶されている経路制御プログラムを読み出して入力するプログラム格納部18と、プログラム格納部に格納された先頭記号を読み込むプログラム処理部19と、プログラムに変数が使用されている場合にその変数がどのノードに対応しているかを示す変数−ノード対照テーブル20から構成されている。
上述の通信ノードにおいて、読み込まれた経路の先頭の記号がノード名である場合の動作について説明する。まず、不図示のネットワークから転送されたプログラマブルパケット5は、到着順に待ち行列記憶部9に格納される。この待ち行列記憶部9に格納されたプログラマブルパケット5のヘッダ部3に記憶されている経路制御プログラムはプログラム格納部18にいったん格納される。一例として、この経路記述プログラムは「a;b;c;0」というプログラムであるとする。すなわち、このプログラムを持つパケットは、最初通信ノードaに、次に通信ノードbに、最後に通信ノードcに転送されて終了するプログラムである。
次に、プログラム格納部18に格納された先頭記号「a」がプログラム処理部19に読み込まれる。プログラム処理部19は、読み込んだ記号「a」が、次にパケットを転送するノード名であると解釈し、パケット転送装置11とネットワーク2を介してこのパケットを通信ノードaに転送する。このとき、プログラム処理部19は、この記号「a」を経路制御プログラムから除去し、転送するパケットに記録される経路記述プログラムを「b;c;0;0」とする。
次に、図8に基づいて、経路制御プログラムの先頭アドレスが変数名である場合について、本発明のネットワークノード側の処理を説明する。すなわち、図8の例では、待ち行列記憶部9に記憶されているパケット5の制御プログラムが、例えば「y;b;y;0」のように変数「y」を含む場合について説明する。
まず、変数名が含まれているプログラムが待ち行列記憶部9からプログラム格納部18に格納されると、プログラム処理部19は、この経路制御プログラムの経路を順に読み込み、これが変数名であれば変数―ノード対照テーブル20からその変数名を探す。1番目の記号と3番目の記号「y」は変数であり、変数−ノード対照テーブル20から、これが通信ノードaを表していると認識する。そして、この認識結果に基づいて、パケット転送装置11を介してネットワーク2に送信し、通信ノードaにこのパケット5を転送する。このとき、プログラム処理部19は、この1番目の記号「y」を経路制御プログラムから除去するとともに、3番目の記号「y」をノード名「a」に書き換え、通信ノードaに転送するパケットの経路記述プログラムを「b;a;0;0」に変更する。この変更された経路制御プログラムは、通信ノードaに転送された後に、通信ノードbに転送され、再び通信ノードaに転送されて終了することを意味している。
次に、図7または図8に示す本発明の実施形態例におけるノード側のネットワーク経路処理の動作について、図9のフロー図に基づいて説明する。
まず、待ち行列記憶部9の先頭パケット5を処理し(ステップS50)、そのパケットの経路制御プログラムを経路解釈部10のプログラム格納部18に呼び出す(ステップS51)。
まず、待ち行列記憶部9の先頭パケット5を処理し(ステップS50)、そのパケットの経路制御プログラムを経路解釈部10のプログラム格納部18に呼び出す(ステップS51)。
次に、この呼び出したパケットから経路記号を読み(ステップS52)、その先頭記号が変数かどうかを判断する(ステップS53)。先頭記号が変数である場合は、変数−ノード対照テーブル20にその変数と対応するノード名があるか否かが判断される(ステップS54)。この結果、変数に対応するノード名があれば、その経路の変数部分を対応するノード名で書き換え(ステップS55)、次の経路記号を読む(ステップS56)。判断ステップS53で読み込んだ経路記号が変数でない場合は、ステップS56に進み、次の経路記号を読む。
続いて、読み込んだ記号が経路の終端にあるか否かを判断する(ステップS57)。読み込んだ記号が経路の終端であれば、次の記号を読み込み(ステップS58)、続いてその記号がノード名か否かが判断される(ステップS59)。このステップS59でノード名でないと判断されると再びステップS58に戻り、新たな記号を読み込む。
次に、判断ステップS59で読み込んだ記号がノード名であると判断されれば、そのノード名を不図示のパケットの転送先候補リストに登録し(ステップS60)、次の記号を読む(ステップS61)。そして、記号がノード名であるか否かが判断される(ステップS62)。この結果、読み込んだ記号がノード名であれば、再度ステップS61戻って次の記号を読み込み、記号がノード名でなければ、記号が演算子であるか否かが判断される(ステップS63)。
そして、判断ステップS63で、記号が演算子であると判断されると、次の記号が読まれ(ステップS64)、転送先の候補リストに登録される(ステップS65)。そして、登録後はステップS61に進み、次の記号を読む。
判断ステップS63で、記号が演算子でないと判断されると、次に、記号が経路の終端のものか否かが判断される(ステップS66)。経路の終端でなければ再びステップS61に戻り、次の記号を読み、経路の終端であると判断されれば、続いて転送先候補リストが空、すなわち「0」か否かが判断される(ステップS67)。
転送先の候補リストが空、すなわち「0」であれば、接続可能リストから1つのノードを選択し、転送先ノードに対応したノード名より後(右側)の部分経路にパケット内の経路を書き換える(ステップS69)。そして、パケット転送装置11より、パケットを選定したノードに転送する(ステップS70)。
判断ステップS67で、転送先候補リストが空でない場合は、候補に対応したノードと接続可能か否かが判断され(ステップS64)、接続可能であれば、候補を接続可能リストに登録する(ステップS72)。そして、その候補を転送先候補リストから削除し(ステップS73)、判断ステップS67に戻る。判断ステップS71で候補に対応するノードと接続可能でないと判断された場合も判断ステップS67に戻り、再び転送先の候補リストが空か否かが判断される。
次に、図10に基づいて、ネットワークノード側処理について説明する。図7と図8に示すシステムでは、経路処理が終了したパケットを転送するノード名を経路制御プログラムから消去したが、図10に示す例では、パケットの処理が終了したノードの経路番号を経路制御プログラムに書き込み、パケットが転送された経路を消去せずに記憶保持するようにしている。図7及び図8と共通の部分は同一符号を付して示す。
この例では、プログラマブルパケット5のヘッダ部3は経路制御プログラムを格納するプログラム格納領域12と、既に処理が行われた経路の番号を記録する実行位置番号格納部12aを備えている。図10の例では、ノードaからノードbに到着するパケット5のヘッダ部3のプログラム格納領域12に「a;b;c」という経路制御プログラムが記述されており、実行位置番号格納部12aに「2」という数字が記憶されている。このプログラムは、「ノードaに転送された後、ノードbに転送され、最後にノードcに転送される。」ことを意味するプログラムであり、実行位置番号格納部12aに記憶されている「2」という数字は、既に1番目の経路処理が終了して、転送先の通信ノードにおいて2番目の経路処理を行うことを示している。
したがって、このパケット5はノードaから現在の処理ノードbに転送されたことがわかり、待ち行列格納部9に記憶されている先頭パケットはノードbの経路解釈部10のプログラム格納部18に読み込まれる。経路解釈部10のプログラム処理部19は、まず、プログラム格納部18に読み込まれた実行位置番号「2」を読み込み、かつ処理する実行位置番号の次にある経路記号「c」を読み込む。
次に、実行位置番号記憶部12aに記憶されている実行位置番号「2」の次の経路をプログラム処理部19で解釈した経路番号(ここでは経路cに対応する番号「3」)に変更し、これを実行位置番号記憶部12aに格納する。
こうして、次のノードに転送されるパケット5は、経路制御プログラムは「a;b;c」と実行位置番号「3」を有している。実行位置番号が「3」という数字なので、このパケット5は、2番目の経路bまで転送が終了し、次は3番目のノードcに転送されることを意味する。すなわち、このように処理されたパケット5は、パケット転送装置11を経て、ノードcに転送される。
こうして、次のノードに転送されるパケット5は、経路制御プログラムは「a;b;c」と実行位置番号「3」を有している。実行位置番号が「3」という数字なので、このパケット5は、2番目の経路bまで転送が終了し、次は3番目のノードcに転送されることを意味する。すなわち、このように処理されたパケット5は、パケット転送装置11を経て、ノードcに転送される。
次に、図11のフロー図に基づいて、図10に示すような実行位置番号を書き換える例の動作について説明する。図11のフロー図は、図9のフロー図と概略一致しているので、同じ部分は同一符合を付して説明する。
図11において、ステップS50からステップS57までは図9のフロー図と同じであるので、その部分の説明は省略する。本例においては、図11の判断ステップS57で記号が終端であると判断された場合は、実行位置番号を読み取る(ステップS80)。そして、実行位置番号にある記号を読み(ステップS81)、記号がノード名か否かが判断される(ステップS59)。以下、ステップS60からS64までは図9のフロー図と同じであるので説明を省略する。
図11において、ステップS50からステップS57までは図9のフロー図と同じであるので、その部分の説明は省略する。本例においては、図11の判断ステップS57で記号が終端であると判断された場合は、実行位置番号を読み取る(ステップS80)。そして、実行位置番号にある記号を読み(ステップS81)、記号がノード名か否かが判断される(ステップS59)。以下、ステップS60からS64までは図9のフロー図と同じであるので説明を省略する。
判断ステップS63で記号が演算子であると判断された場合は、次の記号を読み(ステップS64)、転送先の候補とその経路上の位置をリストに登録する(ステップS82)。
また、判断ステップS67で転送先候補リストが空であると判断された場合は、接続可能リストから1つのノードを選択し(ステップS68)、続いて転送先となったノードの経路上の位置を1つ足した数字を実行位置番号とする(ステップS83)。ステップ71からステップS73の処理は図9と同じであるので省略する。
また、判断ステップS67で転送先候補リストが空であると判断された場合は、接続可能リストから1つのノードを選択し(ステップS68)、続いて転送先となったノードの経路上の位置を1つ足した数字を実行位置番号とする(ステップS83)。ステップ71からステップS73の処理は図9と同じであるので省略する。
次に、図12に基づいて、本発明のネットワーク経路選択方法を実現するシステムについて説明する。
ここでは、パケットプール1に蓄積されるパケット5は、パケット5a、5b、5cの3つから構成されている。ネットワーク2には3つの通信ノード、例えば、ノードa、ノードb、ノードcが接続されている。
ここでは、パケットプール1に蓄積されるパケット5は、パケット5a、5b、5cの3つから構成されている。ネットワーク2には3つの通信ノード、例えば、ノードa、ノードb、ノードcが接続されている。
吹き出しの部分はパケット5a〜5cとリクエスト6に格納されている記述経路または要求経路を示している。すなわち、パケット5aでは、「a;c;0」、パケット5bでは「a;b;a;c;a;0」、パケット5cでは「a;b;c;a;0」と記述されている。リクエスト6は「a;((b;c)&a*)である。
次に、図12に基づいて、本実施形態例であるネットワーク経路処理方法及び装置の前提となる、プログラマブルパケットの選択のシステムの動作について説明する。まず、ユーザからのリクエスト(転送要求)を受けると、パケットプール1において、リクエスト6が要求する要求経路を満足するプログラマぶるパケットが選択される。このパケットの選択は、すでに図5と図6で説明したように、要求経路と記述経路を木構造に展開して行われる。
この例では、ユーザのリクエストの経路「a;((b;c)&a*)」に対して、パケットプール1の中のどのパケットをどのような手順で選択するかについて以下に説明する。
最初に木構造により要求経路と記述経路を比較する。ここでは木構造は特に示すことはしないが、ユーザからのリクエスト6は、ノードaに転送してからノードbへ転送し、更にノードcに転送せよというものであるが、「(b;c)&a*」の部分の要求経路は、ノードbとノードcへの転送中にノードaに任意回数転送されてよいことを意味している。このため、パケット5bに記述されている記述経路「a;b;a;c;a;0」はユーザのリクエスト6を満足する。また、パケット5cの「a;b;c;a;0」もユーザのリクエストを満足することになる。このように、複数のパケットがユーザのリクエストを満足する場合には、転送回数が最小のパケットが選択されるように予め定めておく。この結果、本例の場合は、パケット5cが選択され、ネットワーク2を経てノードaに転送される。
次に、本実施形態例のネットワーク経路処理方法及びネットワーク経路処理装置の前提となるネットワーク経路選択方法について、図13と図14のフロー図に基づいて説明する。図13は、本発明によるプログラマブルパケット5の転送経路をパケットプール1に予め登録する方法を示すフロー図である。まず、プログラマブルパケット5はパケットプール1に転送される(ステップS101)。次に、パケットプール1は転送されたプログラマブルパケット5を格納する(ステップS102)。続いて、プログラマブルパケット5はそれ自身の転送経路を記述したプログラムのコピーをパケットプール1に通知し(ステップS103)、パケットプールはプログラマブルパケットの経路プログラムを受け取る(ステップS104)。
次に、パケットプール1はプログラマブルパケットから受け取った経路プログラムを木構造に変換し(ステップS105)、この変換した木構造をそれ自身のデータベースに登録する(ステップS106)。ここで、リクエスト6が到達した際に、その都度、各プログラマブルパケット5を木構造に変換して経路比較を行うこともできるが、それには転送するまでの時間も増えるので、パケットプール1にプログラマブルパケット5を登録する段階で木構造に変換して登録するようにしている。
図14は、パケットプール1がユーザからのリクエスト6(転送要求)を受けたときのプログラマブルパケットの選択方法を示すフロー図である。パケットプール1に転送要求が来ると(ステップS110)、パケットプール1は転送要求中のデータを取り出すとともに、要求経路を示すプログラムを取り出す(ステップS111)。次に、要求経路を木構造に変換し(ステップS112)、続いて要求経路の木構造と予め登録されているパケット5の木構造を比較する(ステップS113)。この結果、要求経路を満足するパケットが選択され(ステップS114)、その選択したパケットに転送要求から取り出したデータを転送してパケットの選択が終了する(ステップS115)。
以上、本発明の実施形態例について説明したが、本発明はこの実施形態例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨を逸脱しない限り、種々の変形例、応用例を含むことはいうまでもない。
1・・・パケットプール、2・・・ネットワーク、3・・・ヘッダ部、4・・・データ部、6・・・リクエスト(経路要求)、7・・・経路要求入力部、8・・・比較装置、9・・・待ち行列記憶部、10・・・経路解釈部、11・・・パケット転送部、16・・・木構造生成装置、17・・・木構造比較装置、18・・・プログラム格納部、19・・・プログラム処理部、20・・・変数−ノード対照テーブル
Claims (15)
- ヘッダ部とデータ部からなる通信パケットを受信し、前記ヘッダ部に設けられる前記通信パケットの転送経路を記述した経路制御プログラムを格納するステップと、
前記格納された前記経路制御プログラムを読み出して、前記経路制御プログラムを解釈し処理するステップと、を備えたネットワーク経路処理方法であって、
前記プログラムを解釈し処理するステップは、転送された前記通信パケットの前記経路制御プログラムから、次に転送する通信ノードを決定して、前記通信パケットを転送するステップを含むことを特徴とするネットワーク経路処理方法。 - 前記経路制御プログラムは、前記通信パケットが転送されるノード名で記述されており、転送先の通信ノードにおいて前記経路制御プログラムに従った解釈処理が行われた後に、前記解釈処理を行ったノード名の通信ノードに前記通信パケットを転送することを特徴とする請求項1に記載のネットワーク経路処理方法。
- 前記通信ノードは、前記経路制御プログラムに従った解釈処理を行った後に、前記解釈処理の終了した前記ノード名を前記経路制御プログラムから除いて、前記経路制御プログラムから除いた前記ノード名の通信ノードに前記通信パケットを転送することを特徴とする請求項2に記載のネットワーク経路処理方法。
- 前記通信ノードは、前記経路制御プログラムに従った解釈処理を行った後に、前記経路制御プログラムの経路列の何番目の記号まで転送したかを示す番号を前記経路制御プログラムに付記して、前記番号が付記されたノード名の通信ノードに前記通信パケットを転送するとともに、前記通信パケットを受け取った通信ノードにおいて、前記番号が示す次の経路から解釈処理を行うことを特徴とする請求項2に記載のネットワーク経路処理方法。
- 前記経路制御プログラムは、前記通信パケットが転送される通信ノードのノード名及びそれを格納する変数、経路手順を規定する演算子からなる列として記述されており、前記通信ノードにおいて前記経路制御プログラムの解釈処理を行った後に、前記通信ノードに記憶されている変数とノード名の対照テーブルより次に転送されるノード名を確定し、前記確定した通信ノードに前記通信パケットを転送することを特徴とする請求項2または3に記載のネットワーク経路処理方法。
- 前記通信ノードにおいて前記経路制御プログラムの前記変数の解釈処理を行った後に、前記解釈処理の終了した前記変数名を前記経路制御プログラムから除いて、前記処理の終了した通信ノードに前記通信パケットを転送することを特徴とする請求項5に記載のネットワーク経路処理方法。
- 前記通信ノードにおいて前記経路制御プログラムの前記変数の解釈処理を行った後に、前記解釈処理の終了した前記変数名までの番号を前記経路制御プログラムに付記して、前記番号の付記された通信ノードに前記通信パケットを転送することを特徴とする請求項5に記載のネットワーク経路処理方法。
- 前記経路制御プログラムは、経路記述専用のプログラミング言語により転送先及び転送順序を記述するものであることを特徴とする請求項1〜7のいずれかに記載のネットワーク経路処理方法。
- ヘッダ部とデータ部からなる通信パケットを受信し、前記ヘッダ部に設けられる前記通信パケットの転送経路を記述した経路制御プログラムを格納するプログラム格納部と、
前記プログラム格納部に格納された前記経路制御プログラムを読み出して、前記経路制御プログラムを解釈し処理するプログラム処理部と、
を備えたネットワーク経路処理装置であって、
前記プログラム処理部は、転送された前記通信パケットの前記経路制御プログラムから、次に転送する通信ノードを決定して、前記通信パケットを転送するパケット転送装置を
備えていることを特徴とするネットワーク経路処理装置。 - 前記経路制御プログラムは、前記通信パケットを転送する各通信ノードのノード名を順番に記述し配置するものであり、各通信ノードにおいて前記経路制御プログラムの解釈処理を行った後に、前記解釈処理を行ったノード名の通信ノードに前記通信パケットを送ることを特徴とする請求項9に記載のネットワーク経路処理装置。
- 前記各通信ノードにおいて前記経路制御プログラムの解釈処理を行った後に、該解釈処理を行ったノード名を前記経路制御プログラムから除いて、前記解釈処理の終了したノード名の通信ノードに前記通信パケットを送ることを特徴とする請求項10に記載のネットワーク経路処理装置。
- 前記各通信ノードにおいて前記経路制御プログラムの解釈処理を行った後に、前記経路制御プログラムの経路列の何番目の記号まで転送したかを示す番号を前記経路制御プログラムに付記して、前記番号が付記されたノード名の通信ノードに前記通信パケットを転送するとともに、前記通信パケットを受け取った通信ノードにおいて、前記番号が示す次の経路から解釈処理を行うことを特徴とする請求項10に記載のネットワーク経路処理装置。
- 前記経路制御プログラムは、前記通信パケットが転送される通信ノードのノード名及びそれを格納する変数、経路手順を規定する演算子からなる列として記述されており、各通信ノードにおける前記経路制御プログラムの前記変数の解釈処理を行って、前記変数の解釈処理を行ったノード名の通信ノードに前記通信パケットを転送することを特徴とする請求項10に記載のネットワーク経路処理装置。
- 前記各通信ノードにおける前記経路制御プログラムの変数の解釈処理を行った後に、前記解釈処理を行った変数名を除去して、前記解釈処理を行った変数からノード名を確定し、前記確定した通信ノードに前記通信パケットを転送することを特徴とする請求項13に記載のネットワーク経路処理装置。
- 前記通信パケットに内蔵される前記経路制御プログラムは、経路記述専用のプログラミング言語により転送先及び転送順序を記述するものであることを特徴とする請求項10〜14のいずれかに記載のネットワーク経路処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008175670A JP2008289185A (ja) | 2008-07-04 | 2008-07-04 | ネットワーク経路処理方法及びネットワーク経路処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008175670A JP2008289185A (ja) | 2008-07-04 | 2008-07-04 | ネットワーク経路処理方法及びネットワーク経路処理装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003159521A Division JP4175507B2 (ja) | 2003-06-04 | 2003-06-04 | ネットワーク経路選択方法及びネットワーク経路選択システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008289185A true JP2008289185A (ja) | 2008-11-27 |
Family
ID=40148405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008175670A Pending JP2008289185A (ja) | 2008-07-04 | 2008-07-04 | ネットワーク経路処理方法及びネットワーク経路処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008289185A (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06177912A (ja) * | 1992-12-07 | 1994-06-24 | Toshiba Corp | データ伝送装置及びそのデータ伝送装置を使用したデータ伝送方式 |
JPH08251232A (ja) * | 1995-03-15 | 1996-09-27 | Toshiba Corp | 通信・情報処理制御システム |
JPH11177573A (ja) * | 1997-12-08 | 1999-07-02 | Nec Corp | 輻輳回避システム |
JP2002281070A (ja) * | 2001-03-19 | 2002-09-27 | Hitachi Ltd | 情報中継装置及び転送方法 |
-
2008
- 2008-07-04 JP JP2008175670A patent/JP2008289185A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06177912A (ja) * | 1992-12-07 | 1994-06-24 | Toshiba Corp | データ伝送装置及びそのデータ伝送装置を使用したデータ伝送方式 |
JPH08251232A (ja) * | 1995-03-15 | 1996-09-27 | Toshiba Corp | 通信・情報処理制御システム |
JPH11177573A (ja) * | 1997-12-08 | 1999-07-02 | Nec Corp | 輻輳回避システム |
JP2002281070A (ja) * | 2001-03-19 | 2002-09-27 | Hitachi Ltd | 情報中継装置及び転送方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105357035B (zh) | 通信系统、节点、控制设备、通信方法以及程序 | |
JP5407883B2 (ja) | トポロジーツリー作成装置、プログラム、及び方法 | |
JP5626214B2 (ja) | 通信システム、ノード、制御サーバ、通信方法およびプログラム | |
JP4541745B2 (ja) | ホームエージェント管理装置及び管理方法 | |
JP5304947B2 (ja) | 通信システム、制御装置、ノードの制御方法およびプログラム | |
CN105141516A (zh) | 通信系统、转发节点、路径管理服务器以及通信方法 | |
JPWO2011118566A1 (ja) | パケット転送システム、制御装置、転送装置、処理規則の作成方法およびプログラム | |
CN103348642B (zh) | 通信系统、转发节点、控制设备、通信控制方法 | |
JP2005165847A (ja) | ポリシールールシナリオ制御装置及び制御方法 | |
KR20120135251A (ko) | 통신 시스템, 노드, 제어 서버, 통신 방법 및 프로그램 | |
CN106464600B (zh) | 用于在第3层网络中提供拥塞通知的系统和方法 | |
JP2012009996A (ja) | 情報処理システム、中継装置、および情報処理方法 | |
CN114244919B (zh) | 一种基于协议无感知转发的ndn模态实现方法 | |
CN101127768A (zh) | 创建多维网际协议的方法和装置以及系统 | |
CN107529352A (zh) | 用于软件定义的数据中心网络的协议独立的可编程交换机(pips) | |
JP4175507B2 (ja) | ネットワーク経路選択方法及びネットワーク経路選択システム | |
JP2008289185A (ja) | ネットワーク経路処理方法及びネットワーク経路処理装置 | |
JP4074310B2 (ja) | トラヒック分散制御装置、パケット通信ネットワークおよびプログラム | |
JP5229109B2 (ja) | パケット中継処理装置 | |
CN108123897A (zh) | 一种sdn和nfv异构网络融合的方法、网关 | |
JP6036940B2 (ja) | 通信システム、ノード、制御装置、通信方法およびプログラム | |
JP4365397B2 (ja) | パケット中継処理装置 | |
JPH10145427A (ja) | Tlvに基づいたリンク状態のパケットの処理方法及び装置 | |
JP5637289B2 (ja) | 通信システム、ノード、制御サーバ、通信方法およびプログラム | |
JP5573909B2 (ja) | 通信システム、ノード、制御装置、通信方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080722 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100525 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100723 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101005 |