(57)【要約】      （修正有）【課題】自己複製コードを利用することによって、ノードが通信チャネルを介して相互間でデータを転送するようにする。【解決手段】データを転送するための方法２００及び通信ネットワーク１００が記載されている。この方法２００により、第１ノードは第２ノード１０２との通信チャネルを確立し、自己複製して第２コードを生成し、この通信チャネルを介して第２コードを第２ノードに提供する。第２ノードは第３ノード１０３との通信チャネルを確立し、自己複製して第３コードを生成し、この通信チャネルを介して第３コードを第３ノードに提供する。そして、第２ノードは、通信チャネルを介して第１ノードからデータを受信し、この受信したデータを処理するために第２コードを実行する。また、第３ノードは、通信チャネルを介して第２ノードからデータを受信し、この受信したデータを処理するために第３コードを実行する。【選択図】図１
2005244985.tif 000002
【特許請求の範囲】
【請求項１】
第１コードを含む第１ノード（１０１）を備える通信ネットワークのノード（１０１〜１０４）間でデータを転送するための通信ネットワーク（１００）の動作方法（２００）であって、
前記第１ノードにおいて、前記第１コードを実行して（２０２、２０４）第２ノード（１０２）との第１通信チャネルを確立し、当該第１コードを複製して第２コードを生成し、当該第２コードを前記第１通信チャネルを介して前記第２ノードに提供するステップと、
前記第２ノードにおいて、前記第２コードを実行して（２０６、２０８）第３ノード（１０３）との第２通信チャネルを確立し、当該第２コードを複製して第３コードを生成し、当該第３コードを前記第２通信チャネルを介して前記第３ノードに提供するステップと、
前記第２ノードにおいて、前記第１通信チャネルを介して前記第１ノードから第１データを受信し（２１０）、前記第２コードを実行すること（２１２）により、当該第１データを処理するステップと、
前記第３ノードにおいて、前記第２通信チャネルを介して前記第２ノードから前記第１データを受信し（２１４）、前記第３コードを実行すること（２１６）により、当該第１データを処理するステップと、
を含むことを特徴とする動作方法（２００）。
【請求項２】
請求項１に記載の方法（２００）であって、
前記第２ノードにおいて、前記第２コードを実行すること（２１８、２２０）により、第４ノード（１０４）との第３通信チャネルを確立し、前記第２コードを複製して第４コードを生成し、当該該第４コードを前記第３通信チャネルを介して前記第４ノードに提供するステップと、
前記第４ノードにおいて、前記第３通信チャネルを介して前記第２ノードから前記第１データを受信し（２２２）、前記第４コードを実行すること（２２４）により、当該第１データを処理するステップと、
をさらに含む動作方法（２００）。
【請求項３】
請求項１に記載の動作方法（２００）であって、
前記第２ノードにおいて前記第２コードを実行することにより前記第１データを処理するステップを含んでおり、
前記第２ノードにおいて、前記第２コードを実行することにより、前記第１ノードから受信した前記第１データを複製し、当該複製データをペイロード・プロセスへと送るステップと、
前記第２ノードにおいて、前記ペイロード・プロセスを実行することにより、前記複製データをローカルに処理して出力データを生成するステップと、
をさらに含む動作方法（２００）。
【請求項４】
請求項３に記載の動作方法（２００）であって、
前記第２ノードにおいて、前記第２コードを実行することにより、前記第１通信チャネルを介し、前記出力データと状態情報とを多重化して前記第１ノードに伝送するステップと、
をさらに含む動作方法（２００）。
【請求項５】
請求項１に記載の動作方法（２００）であって、
前記第２ノードにおいて、前記第１通信チャネルを介して前記第１ノードから制御情報を受信するステップと、
前記第２ノードにおいて、前記第１データを処理するために前記制御情報を利用するステップと、
前記第２ノードにおいて、前記第２通信チャネルを介して前記第１データおよび前記制御情報を前記第３ノードに送るステップと、
をさらに含む動作方法（２００）。
【請求項６】
通信ネットワークのノード（１０１〜１０４）間でデータを転送するための通信ネットワーク（１００）であって、
第１ノード（１０１）と、
第２ノード（１０２）と、
ネットワーク機構（１１０）によって結合された第３ノード（１０３）と、を備え、
前記第１ノードは、第１コードの実行に応答して前記第２ノードとの第１通信チャネルを確立し、当該第１コードを複製して第２コードを生成し、当該第１通信チャネルを介して当該第２コードを前記第２ノードに提供し、
前記第２ノードは、前記第２コードの実行に応答して前記第３ノードとの第２通信チャネルを確立し、前記第２コードを複製して第３コードを生成し、当該第２通信チャネルを介して当該第３コードを前記第３ノードに提供し、
前記第２ノードは、前記第１通信チャネルを介して前記第１ノードから第１データを受信し、当該第１データを処理するために前記第２コードを実行し、
前記第３ノードは、通信チャネルを介して前記第２ノードから前記第１データを受信し、当該第１データを処理するために前記第３コードを実行する、
ことを特徴とする通信ネットワーク（１００）。
【請求項７】
請求項６に記載の通信ネットワーク（１００）であって、
第４ノード（１０４）をさらに備え、
前記第２ノードは、前記第２コードの実行に応答して前記第４ノードとの第３通信チャネルを確立し、前記第２コードを複製して第４コードを生成し、当該第３通信チャネルを介して当該第４コードを前記第４ノードに提供し、
前記第４ノードは、前記第３通信チャネルを介して前記第２ノードから前記第１データを受信し、当該第１データを処理するために前記第４コードを実行する
ことを特徴とする通信ネットワーク（１００）。
【請求項８】
請求項６に記載の通信ネットワーク（１００）であって、
前記第２ノードは、
前記第１通信チャネルを介して前記第１データを前記第１ノードから受信し、当該第１データを複製して、当該複製データを前記第２ノードのペイロード・プロセスへと送り、当該ペイロード・プロセスを実行することにより前記複製データをローカルに処理して出力データを生成する、
ことを特徴とする通信ネットワーク（１００）。
【請求項９】
請求項８に記載の通信ネットワーク（１００）であって、
前記第２ノードは、前記第２コードの実行に応答して、前記第１通信チャネルを介し、前記出力データと状態情報とを多重化して前記第１ノードに伝送することを特徴とする通信ネットワーク（１００）。
【請求項１０】
請求項６に記載の通信ネットワーク（１００）であって、
前記第２ノードは、前記第１通信チャネルを介して前記第１ノードから制御情報を受信し、当該制御情報を利用して前記第１データを処理し、前記第１データおよび前記制御情報を前記第１通信チャネルを介して前記第３ノードに送ることを特徴とする通信ネットワーク（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信の分野に関し、特に自己複製コードを利用した通信ネットワークのノード間データ転送に関する。
【背景技術】
【０００２】
ビジネス、企業、大学などは、一般に、数百台または数千台ものデバイスを相互に接続するネットワークを有している。このネットワークとは、ＬＡＮ（Local Area Network）、ＭＡＮ（Metropolitan Area Network）、ＷＡＮ（Wide Area Network）等であり、またはこれ以外の種類のネットワークであってもよい。ネットワーク担当者は、情報、ファイル、ソフトウエア、命令などのデータをネットワーク上の複数のデバイスに転送することを求めている。大規模ネットワークでは、ネットワーク担当者が各デバイス個別にデータを転送していては非効率的である。ネットワーク担当者が複数のデバイスに同時にデータを転送しようとすれば、特にデータのサイズが大きい場合は、ネットワークの帯域幅がすぐに使い果たされることとなってしまう。したがって、ネットワーク担当者は、ネットワークの帯域幅の不足を生じさせることなく効率を高めるように、ネットワーク上の複数のデバイスにデータを転送する方法を継続的に探究している。
【０００３】
ネットワーク上の複数のデバイスにデータを転送する１つの方法には、ネットワークを介してデータをマルチキャストすることによるものがある。「マルチキャスト」という用語は、ネットワークに接続されたデバイスの中から選択された１つのデバイス群にメッセージまたはパケットをブロードキャストすることを記述する場合に用いられる。このようなシステムによって利益を得る典型的なアプリケーションは、ビデオおよび音楽のブロードキャスティングを含む。ネットワーク担当者は、ＬＡＮ上の複数のデバイスにデータを転送するためにマルチキャスティングを利用する。これは各デバイスを個々に取り扱うという問題点を解決する。例えば、ネットワーク担当者がＬＡＮに接続された複数のデバイスに新たなソフトウエアをインストールしようとする場合、ＬＡＮを介して、これらのデバイスにソフトウエアをマルチキャストすればよい。
【０００４】
マルチキャスティングの１つの問題点は、マルチキャストを受信するためには受信デバイスに適宜のソフトウエアが必要であることにある。受信デバイスが適宜のソフトウエアを有していない場合は、データを受信する前に受信デバイスに適宜のソフトウエアをインストールする必要がある。
【０００５】
マルチキャスティングに関するもう１つの問題点は、受信デバイスがソフトウエアを受信したか否かを送信者が分からない場合があることである。ユーザー・データグラム・プロトコル（ＵＤＰ）はマルチキャスティング用に使用されるプロトコルの１つであるが、ＵＤＰは、メッセージの送信を保証するものではなく、また、受信デバイスからの確認応答を要求しない。したがって、送信者にはデータの伝送状態が分からない。ネットワーク担当者は、ソフトウエアの転送がうまくいったことを確認するために、ある種の確認応答を求める場合がある。
【０００６】
上記以外のネットワーク担当者のもう１つの関心事として、コンピュータ・ウイルスを挙げることができる。より有名なウイルスの中の１つとしては、インターネット・ウォームがある。インターネット・ウォームによって、「ウォーム」という用語は、ネットワーク上で繰り返し自己複製して、ネットワークに「感染」させるソフトウエア（すなわち、ウイルス）として、一般にネガティブな意味に受け取られている。しかし、多くの当業者に理解されているウォームとは、自己複製する単なるソフトウエアであるに過ぎない。ウォームは、コントロール不能に伝播したり、ネットワークに害をおよぼすようにプログラムされてはならないものである。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
伝統的なウォームには、一連のデバイス上で自己複製するものがある。最初に感染したデバイス上のウォーム（親ウォーム）は、別のデバイス上で自己複製することがあり（子ウォーム）、次にまた別のデバイスに・・・等々である。親ウォームが別のデバイス上で自己複製して子ウォームを生成した後、親ウォームは一般に子ウォームとの通信チャネルを保持することはない。したがって、親ウォームと子ウォームはデータを転送するために互いに通信することはできない。ネットワークを介してデータを転送するために、ウォーム、またはその他の自己複製コード、またはソフトウエアをポジティブな意味で利用することが望ましい場合がある。
【課題を解決するための手段】
【０００８】
本発明は、通信ネットワークにおいて、自己複製コードを利用してノード間でのデータ転送を行うことによって、上記およびその他の課題を解決する。通信ネットワークのノードは、最初はデータ転送用に必要なコードを有していない。本発明の自己複製コードは、ノード間の通信チャネルを保持しつつ、通信ネットワークのノード上で自己複製する。したがって、これらのノードは通信チャネルを介して相互間でデータを転送することができる。
【０００９】
本発明の有益な効果として、ネットワーク担当者は、自己複製コードを利用することにより、ネットワークの帯域幅の不足を生じさせることなく通信ネットワーク上の複数のノードにデータを効率的に転送することができる。また、ネットワーク担当者は、データ転送を促進するために通信ネットワーク上のノードにコードを事前インストールする必要がない。自己複製コードは、データ転送を促進するためにノード上で自己生成することができる。さらに、ノード上のコードはノード間の通信チャネルを保持するため、ネットワーク担当者は、ノードが制御情報および状態情報を制御ノードと交換する際に、リアルタイムでデータ転送の状態をモニターできる。
【００１０】
本発明の一実施例は、通信ネットワーク内でデータを転送する方法を含むものである。この方法によれば、通信ネットワークの第１ノードは第１コードを実行して、第２ノードとの通信チャネルを確立する。第１ノードはさらに第１コードを実行して、自己複製して第２コードを生成し、通信チャネルを介して第２コードを第２ノードに提供する。第２ノードは第２コードを実行して、第３ノードとの通信チャネルを確立する。第２ノードはさらに第２コードを実行して、自己複製して第３コードを生成し、通信チャネルを介して第３コードを第３ノードに提供する。この方法は、通信チャネルを確立するステップと、通信ネットワーク内の複数の他のノードにコードを提供するステップを含んでいるものである。
【００１１】
第１ノードと第２ノードとの間で通信チャネルが確立され、保持されると、第２ノードは通信チャネルを介して第１ノードからデータを受信する。このデータとは、通信ネットワーク上での転送をターゲットとした何らかの情報、ソフトウエア、命令などを含んでいるものである。第２ノードはデータを処理するために第２コードを実行してもよい。第２ノードと第３ノードとの間で通信チャネルが確立され、保持されると、第３ノードは通信チャネルを介して第２ノードからデータを受信する。第３ノードはデータを処理するために第３コードを実行してもよい。ノード間でのデータ転送やデータ処理を行う上記の方法によって、通信ネットワークにおける他のノードは同様に動作するものとする。
本発明は、以下に記載する全ての実施例を含むものである。
同一の参照番号は、全ての図面で同一の要素を示すものとする。
【発明を実施するための最良の形態】
【００１２】
図１、図２Ａ〜図２Ｂ、図３Ａ〜図３Ｄ、図４〜図６、および以下の説明は当業者に対して、本発明の最良の形態をいかに構成し、利用するかを教示するために本発明の特定の実施例を示すものである。本発明の原理を教示する目的で、本発明の幾つかの従来の態様は簡略化、または省略されている。当業者は本発明の範囲に含まれる上記実施形態からのバリエーションを理解するものとする。当業者は下記の特徴を様々な態様で組み合わせて、本発明の複数のバリエーションを形成できることを理解するものとする。その結果として、本発明は、下記の特定の実施形態に限定されるものではなく、特許請求の範囲内において、種々のバリエーションによる形態に適用可能である。
【００１３】
通信ネットワークの構造および動作−図１、図２Ａ〜図２Ｂ、図３Ａ〜図３Ｄ
図１は、本発明の実施例の通信ネットワーク１００を示している。通信ネットワーク１００はネットワーク機構１１０を介して互いに通信可能な複数のノード１０１〜１０４を含んでいる。ネットワーク機構１１０はＬＡＮ、ＭＡＮ、ＷＡＮ等であり、また、その他の種類のネットワークを含んでいてもよい。ノードは、例えばコンピュータのように、通信ネットワーク１００に接続するための何らかのシステム、デバイス、構成部品、カード等から成るものである。通信ネットワーク１００は、図１には図示されていない他のノード、構成部品、デバイス、またはシステムを含んでいてもよい。
【００１４】
図２Ａは、本発明の実施例で通信ネットワーク１００のノード１０１〜１０４間でデータを転送するための通信ネットワーク１００の動作方法２００を示すフローチャートである。方法２００を説明するために、ノード１０１〜１０４はそれぞれ第１、第２、第３、および第４のノードと呼ぶものとする。さらに、第１ノード１０１は第１コードを含み、第２ノード１０２および第３ノード１０３は第１コードに類似または対応するコードを含んでいないものとする。
【００１５】
方法２００のステップ２０２において、第１ノード１０１は第１コードを実行して第２ノード１０２との通信チャネルを確立する。このコードとは、例えば、機械言語命令、（コンパイルされた、またはコンパイルされない）プログラミング言語命令、翻訳言語命令などのような、プロセッサによって実行可能な全ての命令を含んでいる。ステップ２０４において、第１ノード１０１は、第１コードを実行することにより自己複製して第２コードを生成し、通信チャネルを介して第２コードを第２ノード１０２に提供する。第１コードが自己「複製」して第２コードを生成するが、第２コードは、第１コードのコピーまたは複製、第１コードのコピーまたは複製と実質的に同様なもの、または第１コードの部分集合または派生物である。第１ノードは、上記以外のノードとの通信チャネルを確立し、そのノードにコードを提供するためにステップ２０２および２０４を複数回実行することとしてもよい。
【００１６】
ステップ２０６において、第２ノード１０２は、第２コードを実行することにより第３ノード１０３との通信チャネルを確立する。第１ノード１０１と第２ノード１０２との間の通信チャネルは、第２ノード１０２と第３ノード１０３との間の通信チャネルに対応するものでもよく、または別個のものでもよい。ステップ２０８において、第２ノード１０２は、第２コードを実行することにより自己複製して第３コードを生成し、通信チャネルを介して第３コードを第３ノード１０３に提供する。第２ノードはステップ“Ａ”として示されているように、上記以外のノードとの通信チャネルを確立し、そのノードにコードを提供するためにステップ２０６および２０８を複数回実行してもよい。
【００１７】
第１ノード１０１と第２ノード１０２との間で通信チャネルが確立されて保持されると、ステップ２１０において、第２ノード１０２は通信チャネルを介して第１ノード１０１からデータを受信する。このデータとは、通信ネットワーク上での転送をターゲットとした何らかの情報、ソフトウエア、命令などを含んでいるものである。また、第２ノード１０２は、通信チャネルを介して第１ノード１０１から制御情報を受信する。この制御情報とは、通信ネットワーク上のノードによって利用されるものであるが、全ての操作情報、運用情報、管理情報を含むものである。これらデータの受信に応答して、ステップ２１２において、第２ノード１０２はデータを処理するために第２コードを実行する。このデータ処理は、上記データに基づいて実行するローカル・プロセスを1つ以上含んでいてもよい。
【００１８】
例えば、第２コードは、第２ノード１０２に基づいてローカルに実行するペイロード・プロセスを含んでいてもよい。第２ノード１０２がデータを受信すると、第２ノードは、データを複製し、複製されたデータをローカルのペイロード・プロセスに送ってもよい。次に、第２ノード１０２は、複製されたデータを受信し、この複製されたデータに対してローカルな処理を行うペイロード・プロセスを実行する。このペイロード・プロセスは、特定のディレクトリにデータを格納し、若しくはデータ処理を行うものである。
【００１９】
第２ノード１０２と第３ノード１０３との間で通信チャネルが確立されて保持されると、ステップ２１４において、第３ノード１０３は通信チャネルを介して第２ノード１０２からデータを受信する。また、第３ノード１０２は、通信チャネルを介して第１ノード１０１から制御情報を受信する。データの受信に応答して、ステップ２１６において、第３ノード１０３はデータを処理するために第３コードを実行する。このデータ処理は、上記データに基づいて実行するローカル・プロセスを1つ以上含んでいてもよい。
【００２０】
方法２００は、データを所望のノードへと転送するまでに、上記の手順で他のノードにデータを線形的に転送するステップをより多く含むとしてもよい。方法２００は、データが通信ネットワーク１００を介して線形的な経路で転送されることを示している。しかし、方法２００は、図２Ｂに示されているように、線形的な転送に限定されるものではない。
【００２１】
図２Ｂは、方法２００において用いられることとしてもよい付加的なステップを示したフローチャートである。ステップ２１８において、第２ノード１０２は、第３ノード１０３との通信チャネルを確立すること（図２Ａのステップ２０６参照）に加えて、さらに第２コードを実行して第４ノード１０４との通信チャネルを確立する。ステップ２２０において、第２ノード１０２は、第２コードを実行することにより自己複製して第４コードを生成し、通信チャネルを介して第４コードを第４ノード１０４に提供する。第２ノード１０２と第４ノード１０４との間で通信チャネルが確立されて保持されると、ステップ２２２において、第４ノード１０４は通信チャネルを介して第２ノード１０２からデータを受信する。また、第４ノード１０４は通信チャネルを介して第１ノード１０１から制御情報を受信してもよい。第４ノード１０４は、このデータの受信に応答して、ステップ２２４においてデータを処理するために第４コードを実行する。このデータ処理は、上記データに基づいて実行するローカル・プロセスを1つ以上含んでいてもよい。
方法２００は、データが所望のノードへと転送されるまで同様のステップを継続するものとする。
【００２２】
図３Ａ〜３Ｄは、本発明の実施例の方法２００によって、コードおよびデータが通信ネットワーク１００を介して転送される方法を示している。図３Ａは、通信ネットワーク１００の第１、第２、および第３のノード１０１〜１０３を示している。ノード１０１は第１コード３０１を含み、ノード１０２〜１０３は第１コード３０１に類似または対応するコードを最初は含んでいないものとする。
【００２３】
ノード１０１は、コード３０１を実行してノード１０２との通信チャネル３１１を確立する（図３Ｂ参照）。また、ノード１０１は、コード３０１を実行することにより自己複製して第２コード３０２を生成し、通信チャネル３１１を介してコード３０２をノード１０２に提供する。ノード１０１は、図３Ｂには示されていない複数のノードに対する操作を実行してもよい。
【００２４】
ノード１０２は、コード３０２を実行してノード１０３との通信チャネル３１２を確立する（図３Ｃ参照）。通信チャネル３１２は、通信チャネル３１１と同様の通信チャネルから成るものである。さらに、ノード１０２は、コード３０２を実行することにより自己複製して第３コード３０３を生成し、通信チャネル３１２を介してコード３０３をノード１０３に提供する。ノード１０２は図３Ｃには示されていない複数のノードに対する操作を実行してもよい。
【００２５】
また、ノード１０２は、コード３０２を実行してノード１０４との通信チャネル３１３を確立することとしてもよい（図３Ｄ参照）。通信チャネル３１３は、通信チャネル３１１〜３１２と同様の通信チャネルから成るものである。さらに、ノード１０２は、コード３０２を実行することにより自己複製して第４コード３０４を生成し、通信チャネル３１３を介してコード３０４をノード１０４に提供する。
【００２６】
通信チャネル３１１が確立されて保持されると、ノード１０２は、通信チャネル３１１を介してデータ３２１をノード１０１から受信する（図３Ｄ参照）。このデータとは、通信ネットワーク上での転送をターゲットとした何らかの情報、ソフトウエア、命令などを含んでいるものである。そして、ノード１０２は、データ３２１の受信に応答して、コード３０３を実行することによりデータ３２１を処理する。例えば、ノード１０２は、コード３０２を実行することにより、データ３２１に基づいたローカル・プロセスを1つ以上実行することとなる。
【００２７】
通信チャネル３１２が確立されて維持されると、ノード１０３は、通信チャネル３１２を介してノード１０２からデータ３２１を受信する。そして、ノード１０３は、データ３２１の受信に応答して、コード３０３を実行することによりデータ３２１を処理する。例えば、ノード１０３は、コード３０３を実行することにより、データ３２１に基づいたローカル・プロセスを1つ以上実行することとなる。
【００２８】
通信チャネル３１３が確立されて維持されると、ノード１０４は、通信チャネル３１３を介してノード１０２からデータ３２１を受信する。そして、ノード１０４は、データ３２１の受信に応答して、コード３０４を実行することによりデータ３２１を処理する。例えば、ノード１０４は、コード３０４を実行することにより、データ３２１に基づいたローカル・プロセスを1つ以上実行することとなる。
【００２９】
上記に記載した方法２００の有益な効果としては、ネットワーク担当者が、本実施形態に記載されているような自己複製コードを利用することにより、ネットワーク１００の帯域幅の不足を生じさせることなく、通信ネットワーク１００上の複数のノード１０１〜１０４への効率的なデータの転送が実現することである。また、ネットワーク担当者は、データ転送を促進するために通信ネットワーク１００上のノード１０２〜１０４にコードを事前インストールする必要がない。自己複製コードは、データ転送を促進するためにネットワーク１００上のノード１０２〜１０４において自己生成することができる。
【００３０】
通信ネットワーク−図４〜６
図４は、本発明の実施例の通信ネットワーク４００を示している。通信ネットワーク４００は、ＬＡＮ４１０を介して互いに通信可能な複数のノード４０１〜４０９を含んでいる。ＬＡＮ４１０は、ＬＡＮ４１０からノード４０１〜４０９へのアクセスがファイアウオールまたはその他の保護機能によってブロックされないが、信頼性がある何らかの種類のネットワークをから成っているものとする。その他の実施形態として、ＬＡＮ４１０は、イントラネット、ＭＡＮ、ＷＡＮ、または、これら以外の種類の企業ネットワークから成ることとしてもよい。このノードとは、例えばコンピュータのように、通信ネットワーク４００に接続するための何らかのシステム、デバイス、構成部品、カード等から成るものである。ノード４０１〜４０９は、互いに距離が離れており、ＬＡＮ４１０を介して互いに通信していることを示している。通信ネットワーク４００は、図４には示されていないその他のノード、構成部品、デバイス、またはシステムを含むこととしてもよい。
【００３１】
ノード４０１は、ネットワーク担当者によって操作される制御ノードであるものとする。さらに、ネットワーク担当者が、通信ネットワーク４００に接続されている全てのノード４０２〜４０９に大量のデータ・ストリームを転送しようとしているものとする。例えば、ノード４０２〜４０９に大量のデータ・ストリームを含む新たなソフトウエアをインストールする必要がある場合がある。ネットワーク担当者が、各デバイスに個々にソフトウエアをインストールするのは非効率的である。もし、ネットワーク担当者が、大量のデータ・ストリームとしてデータを複数のノード４０２〜４０９に同時に転送してしまった場合には、ＬＡＮ４１０の帯域幅の不足を生じさせる可能性がある。ネットワーク担当者は、本発明による自己複製コードを利用することにより、ＬＡＮ４１０の帯域幅の不足を生じさせることなく、ソフトウエアをノード４０２〜４０９へ効率的に転送することができる。
【００３２】
本実施形態では、自己複製コードをストリーミング・ウォームというものとする。ストリーミング・ウォーム（スウォーム（sworm））は、大量の任意ペイロード・コードと同様に、通信ネットワークに接続されているノード間をデータが流れている間に、あるノード群において自己複製可能である何らかのソフトウエア、コード、または命令を含むものである。各スウォームは、様々なトポロジーに配列可能な１つ以上のスウォームレット（swormlet）から構成されている。スウォームとは、何れのノードを含めるかなど、データ・ストリームの転送を制御する発信プロセスによって生成される。
【００３３】
各スウォームレットはスウォームレット・コード、ペイロード・コード、およびデータ・ストリームを含んでいる。スウォームレット・コードは、ノードで新たなスウォームレットを生成する際や、ノード間のデータ・ストリーム転送を保持する際などに利用されるコードを含んでいる。ペイロード・コードは、ノードでローカルに実行されるコードを含んでいる。データ・ストリームは、通信ネットワーク４００上で転送されるデータを含んでいる。
【００３４】
ノード４０１は、スウォームを発信する発信プロセス（図示せず）を含むものとする。ネットワーク担当者は、大量のデータ・ストリーム（すなわちソフトウエア）をネットワーク４００の多くのノードに転送しようとするため、その場合には、線形的なスウォームが最も効率的なトポロジーである。線形的なスウォームは、ＬＡＮ４１０の帯域幅がスウォームのスウォームレット間で分割される必要がないので最良に動作し得る。以下に示すように、線形的なスウォームを利用すれば、ＬＡＮ４１０を介して一度に転送される必要があるのは、大量のデータ・ストリームのコピー１つのみとなる。
【００３５】
図５は、本発明の実施例の線形スウォーム・トポロジー（linear sworm topology）を示している。線形スウォーム・トポロジーを形成するには、以下に示すように行われる。ノード４０１における発信プロセス５０１は、スウォームレット５０２（図５において、Ｓ−ＬＥＴと表記されている。）を生成する。特に、発信プロセス５０１は、ノード４０１のネットワーキング・プロセス５２１を起動する。ノード４０１において、ネットワーキング・プロセス５２１を実行することにより、遠隔の終端ノードとの通信チャネルを確立し、遠隔ノードへの、あるいは遠隔ノードからのプログラム・コード、制御情報、およびデータ・ストリーム用のコンジット（conduit）として機能するように構成される。したがって、ノード４０１において、ネットワーキング・プロセス５２１を実行することにより、ノード４０２との通信チャネルが確立される。次に、矢印５２５で示されているように、発信プロセス５０１は、この通信チャネルを介してスウォームレット・コードのコピーを転送するコンジットとしてネットワーキング・プロセス５２１を利用する。
【００３６】
ネットワーキング・プロセス５２１は、例えば、ｒｅｍｓｈあるいはｒｓｈ（Remote Shell）、またはｓｓｈ（Secure Shell）のようなリモート・シェル・コマンド（remote shell command）を用いて、ノード４０２にスウォームレット・コードのコピーを転送する。また、ネットワーキング・プロセス５２１は、リモート・シェル・コマンドを利用することにより、通信チャネルを介してノード４０１からスウォームレット・コードを出力するインラインのＰｅｒｌ起動スクリプトを転送して、遠隔よりノード４０２において実行させる。本実施形態では、各ノードに存在するスウォームレット５０２が２つのノードをつないでいる。
【００３７】
ノード４０２は、スウォームレット・コードを実行して、主スウォームレット・プロセス５２２、ルーティング・プロセス５２３、およびスウォームレット５０２用のペイロード・プロセス５２４を実行する。矢印５２６で示されるように、主スウォームレット・プロセス５２２は、通信チャネルを介して発信プロセス５０１からペイロード・コードを受信する。主スウォームレット・プロセス５２２は、ペイロード・コードを複製し、このペイロード・コードのコピーをペイロード・プロセス５２４へと伝送する。後述するように、主スウォームレット・プロセス５２２は、（必要ならば）別のスウォームレットにペイロード・コードを伝送する。主スウォームレット・プロセス５２２は、ペイロード・プロセス５２４を起動することにより、ペイロード・コードを実行する。
【００３８】
線形のスウォーム・トポロジーを形成するため、主スウォームレット・プロセス５２２はスウォームレット５０３を生成する。その他の実施形態として、主スウォームレット・プロセス５２２は、上記以外のスウォームレットを生成することとしてもよい。主スウォームレット・プロセス５２２は、スウォームレット５０３を生成する際に、ノード４０２においてネットワーキング・プロセス５３１を起動する。ノード４０２において、ネットワーキング・プロセス５３１を実行することにより、ノード４０３との通信チャネルが確立される。矢印５３５によって示されているように、スウォームレット５０２は、ネットワーキング・プロセス５３１をコンジットとして利用することにより、通信チャネルを介してスウォームレット・コードのコピーを転送する。
【００３９】
ノード４０３は、スウォームレット・コードを実行することにより、主スウォームレット・プロセス５３２、ルーティング・プロセス５３３、およびスウォームレット５０３用のペイロード・プロセス５３４を実行する。矢印５３６で示されているように、スウォームレット５０３の主スウォームレット・プロセス５３２は、通信チャネルを介してスウォームレット５０２の主スウォームレット・プロセス５２２からペイロード・コードを受信する。主スウォームレット・プロセス５３２は、ペイロード・コードを複製し、ペイロード・コードのコピーをペイロード・プロセス５３４に伝送する。後述するように、主スウォームレット・プロセス５３２は（必要ならば）別のスウォームレットにペイロード・コードを伝送する。主スウォームレット・プロセス５３２は、ペイロード・プロセス５３４を起動することにより、ペイロード・コードを実行する。
【００４０】
これらのスウォームレットは、発信プロセス５０１の指示通りに、通信ネットワーク４００上のノード４０１〜４０９を介して生成される（図４参照）。一旦、スウォームレットが生成されて、通信チャネルがノード４０１〜４０９間で確立されると、データ・ストリームがノード４０１〜４０９間で伝送されることとなる。
【００４１】
発信プロセス５０１は、データ・ストリームをスウォームレット５０２に転送する。本実施形態におけるデータ・ストリームは、大量のデータ・ストリームであるソフトウエアである。主スウォームレット・プロセス５２２は、スウォームレット５０２においてルーティング・プロセス５２３を起動する。矢印５２７で示されるように、スウォームレット５０２におけるルーティング・プロセス５２３は、通信チャネルを介して発信プロセス５０１からデータ・ストリームを受信する。ルーティング・プロセス５２３は、データ・ストリームを複製し、データ・ストリームのコピーをペイロード・プロセス５２４に伝送する。ルーティング・プロセス５２３は、（必要ならば）発信プロセス５０１によってアドレス指定または特定されたとおりにデータ・ストリームを別のスウォームレットに伝送する。ペイロード・プロセス５２４は、ルーティング・プロセス５２３からデータ・ストリームのコピーを受信する。ペイロード・プロセス５２４は、ペイロード・コードを実行することにより、データ・ストリームをローカルに処理する。例えば、ペイロード・コードが、ペイロード・プロセス５２４に対して、ノード４０２における周知のディレクトリにデータ・ストリームを格納するように命令することとしてもよい。
【００４２】
ルーティング・プロセス５２３は、発信プロセス５０１から制御命令を受信する。ルーティング・プロセス５２３は、ペイロード・プロセス５２４に対する制御命令を実行する。また、ルーティング・プロセス５２３は、（必要ならば）他のスウォームレットまたはノードに制御命令を伝送してもよい。
【００４３】
ペイロード・プロセス５２４は、ペイロード・コードを実行する際に、出力データを生成する。ペイロード・プロセス５２４は、主スウォームレット・プロセス５２２に出力データを伝送する。主スウォームレット・プロセス５２２は、ペイロード・プロセス５２４から出力データを、および／または任意のプロセスから状態情報を受信する。矢印５２８で示されているように、主スウォームレット・プロセス５２２は、ペイロード・プロセス５２４および子スウォームレットからの出力データおよび／または状態情報を多重化し、通信チャネルを介して出力データおよび／または状態情報を伝送する。この状態情報は、ノード４０２における大量のデータ・ストリームの格納に成功したことに対するフィードバックを含んでいる。ネットワーキング・プロセス５２１は、ノード４０１と４０２との間で出力データおよび／または状態情報を交換するため、このノード間の通信チャネルを保持する。
【００４４】
スウォームレット５０３における主スウォームレット・プロセス５２３は、ルーティング・プロセス５３３を起動する。矢印５３７で示されているように、スウォームレット５０３におけるルーティング・プロセス５３３は、スウォームレット５０２におけるルーティング・プロセス５２３から通信チャネルを介してデータ・ストリーム（すなわち、本実施形態におけるソフトウエア）を受信する。ルーティング・プロセス５３３は、データ・ストリームを複製して、データ・ストリームのコピーをペイロード・プロセス５３４に伝送する。ルーティング・プロセス５２３は（必要ならば）発信プロセス５０１によってアドレス指定または特定されたとおりにデータ・ストリームを別のスウォームレットに伝送する。ペイロード・プロセス５３４は、ルーティング・プロセス５３３からデータ・ストリームのコピーを受信する。ペイロード・プロセス５３４は、ペイロード・コードを実行することにより、データ・ストリームをローカルに処理する。例えば、ペイロード・コードは、ペイロード・プロセス５３４に対して、ノード４０３における周知のディレクトリにデータ・ストリームを格納するように命令することとしてもよい。
【００４５】
発信プロセス５０１は、ネットワーク構成図（map）、１組の命令群（set of instructions）、アドレス指定方式（addressing scheme）などに基づいて、何れのノードが、また如何なる順序でデータ・ストリームを受信するべきかを指定することとしてもよい。発信プロセス５０１は、１つ以上のスウォームレット５０２〜５０４を指定して、または全てのスウォームレット５０２〜５０４にブロードキャストでデータ・ストリームを送信することとしてもよい。発信プロセス５０１の指示に基づいて、ルーティング・プロセス５３３は、データ・ストリームを次のノードに伝送し、またはデータ・ストリームを次のノード、または付加的な他の子ノードに伝送する準備を行うこととしてもよい。
【００４６】
また、ルーティング・プロセス５３３は、ルーティング・プロセス５２３から制御命令を受信する。ルーティング・プロセス５３３は、ペイロード・プロセス５３４に対する制御命令を実行する。また、ルーティング・プロセス５３３は、（必要ならば）制御命令を他のスウォームレットに伝送することとしてもよい。
【００４７】
ペイロード・プロセス５３４は、ペイロード・コードを実行する際に出力データを生成する。ペイロード・プロセス５３４は、この出力データを主スウォームレット・プロセス５２２に伝送する。主スウォームレット・プロセス５３２は、ペイロード・プロセス５３４から出力データを、および／またはいずれかのプロセスから状態情報を受信する。主スウォームレット・プロセス５３２はペイロード・プロセス５３４および子スウォームレットからの出力データおよび／または状態情報を多重化し、矢印５３８で示されているように、通信チャネルを介して出力データおよび／または状態情報を伝送する。この状態情報は、ノード４０３における大量のデータ・ストリームの格納に成功したことに対するフィードバックを含んでいてもよい。ネットワーキング・プロセス５３１は、ノード４０２と４０３との間で出力データおよび／または状態情報を交換するため、このノード間の通信チャネルを保持する。
【００４８】
このデータ・ストリームは、発信プロセス５０１の指示通りに、通信ネットワーク４００のノード４０４〜４０９を介して転送される（図４参照）。本実施例において、データ・ストリームはソフトウエアであるため、ネットワーク担当者は、このソフトウエアを各ノード４０２〜４０９にインストールすることができる。これらのスウォームレットは、データ・ストリームの転送後に分解され、または他のデータ・ストリームを転送するために利用される。
【００４９】
上記のプロセスによって、図４の通信ネットワーク４００上のノード４０２〜４０９にデータ・ストリームを転送することで多くの利点が得られる。第１の利点として、ノード４０２〜４０９は、データ・ストリームを受信するための特別のコードを最初に有している必要がない。スウォームレットは、ノード４０２〜４０９において自己複製することにより、必要なコードを提供する。次に、これらのノードは、並行してコードを実行することにより、より効率的にデータ・ストリームを転送する。第２の利点として、ネットワーク担当者は、転送状態に関するフィードバックを得ることができる。各スウォームレットは、ノード間の通信チャネルを保持して、状態情報を発信プロセス５０１に返送する。したがって、ネットワーク担当者は、状態情報を見てデータ・ストリーム転送の状態を判断することができる。第３の利点として、データ・ストリーム伝送によって、ＬＡＮ４１０の帯域幅の不足を生じさせることはほぼない。最終ノードに達するまで、これらのノードは、１つのデータ・ストリームのコピーをブロックごとにノードからノードへと転送するため、線形的なトポロジーにおいて、ＬＡＮ４１０に同時に存在するデータ・ストリームのコピーは１つのみとなる。
【００５０】
現在各ノード４０２〜４０９が以前に転送されたソフトウエアのコピーを含んでいるとするならば、ネットワーク担当者は、ノード４０２〜４０９にそのソフトウエアを遠隔操作によりインストールすることを求める場合がある。ネットワーク担当者は、そのソフトウエアをインストールするための命令を含むデータ・ストリームを転送するまで、リモート・インストールを行うために別のスウォームを利用してもよい。データ・ストリームは、特にそのソフトウエア本体と比較すると、データサイズが大きいということはほぼない。したがって、通信ネットワーク４００において、より小さいデータ・ストリームを転送するには、線形的なスウォームは伝播遅延が長すぎるため、最も効率的なトポロジーとはならない。より小さいデータ・ストリームを転送する場合には、ツリー型のスウォームがより良いトポロジーとなる。
【００５１】
図６は、本発明の実施例のツリー型スウォーム・トポロジー（tree sworm topology）を示している。ツリー型スウォーム・トポロジーの形成は、以下に示すように行われる。ノード４０１における発信プロセス５０１は、スウォームレット６０２（図６において、ｓ−ｌｅｔと表記されている。）を生成する。スウォームレット６０２は、２つのノード４０１と４０２とをつなぐため、ノード４０２間の通信チャネルを確立する。スウォームレット６０２は、簡潔にするために本実施形態では図示されていない、ネットワーキング・プロセスや、主スウォームレット・プロセスや、ルーティング・プロセスや、ペイロード・プロセスを含むものとする。
【００５２】
発信プロセス５０１によって提供されたリストに基づいて、スウォームレット６０２は、スウォームレット６０３と６０４とを生成する。ノード４０２において動作するスウォームレット６０３は、２つのノード４０２と４０３とをつなぐため、ノード４０３との通信チャネルを確立する。スウォームレット６０３は、スウォームレット６０５〜６０６を生成する。ノード４０３において動作するスウォームレット６０５は、２つのノード４０３と４０５とをつなぐため、ノード４０５との通信チャネルを確立する。ノード４０３において動作するスウォームレット６０６は、２つのノード４０３と４０６とをつなぐため、ノード４０６との通信チャネルを確立する。ノード４０２において動作するスウォームレット６０４は、スウォームレット６０７〜６０８を生成する。ノード４０４において動作するスウォームレット６０７は、２つのノード４０４と４０７とをつなぐため、ノード４０７との通信チャネルを確立する。ノード４０４において動作するスウォームレット６０８は、２つのノード４０４と４０８とをつなぐため、ノード４０８との通信チャネルを確立する。これらのスウォームレットは、図６に図示しない複数の他のノードに生成されることとしてもよい。
【００５３】
通信チャネルが確立されると、矢印６２５で示されているように、発信プロセス５０１は、データ・ストリームのコピーをスウォームレット６０２に転送する。本実施形態において、データ・ストリームは、ノードにソフトウエアをインストールするための１組の命令群を含んでいる。スウォームレット６０２は、矢印６２６で示されているように、データ・ストリームのコピーをスウォームレット６０３に伝送し、矢印６２７で示されているように、データ・ストリームのコピーをスウォームレット６０４に伝送する。スウォームレット６０３は、矢印６２８で示されているように、データ・ストリームのコピーをスウォームレット６０５に伝送し、矢印６２９で示されているように、データ・ストリームのコピーをスウォームレット６０６に伝送する。スウォームレット６０４は、矢印６３０で示されているように、データ・ストリームのコピーをスウォームレット６０７に伝送し、矢印６３１で示されているように、データ・ストリームのコピーをスウォームレット６０８に伝送する。
【００５４】
これらのスウォームレットは、データ・ストリームを受信するように発信プロセス５０１によって命令された各ノードに、データ・ストリームを伝送する。図６は、データを転送するためのバイナリ・ツリー型トポロジー（binary tree topology）を示している。しかし、非対象のツリー型トポロジーが利用されることとしてもよい。
【００５５】
複数のスウォームレット６０２〜６０８は、並行にデータ・ストリームを送ることにより、さらに効率的にデータ・ストリームを転送する。上記のようにデータ・ストリームを転送することによって、各ノードに迅速かつ効率よくデータ・ストリームが提供される。本実施形態のデータ・ストリームは、ソフトウエアをインストールするための命令を含んでいる。したがって、ネットワーク担当者は、複数のノードに迅速かつ効率的にソフトウエアをインストールするための命令を転送することによって、ソフトウエアを各ノードにインストールすることができる。
【００５６】
図６において、発信プロセス５０１は、スウォーム用の発信プロセスとしてのみ機能する。その他の実施形態として、スウォームレット６０２〜６０８のうちの何れかのペイロード・プロセスが、別に新しくかつ独立したスウォーム用の発信プロセスとして機能することとしてもよい。したがって、複雑なツリー型のスウォーム群が再帰的な方法で構成されることとなる。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施例の通信ネットワークを示す略図である。
【図２Ａ】本発明の実施例の通信ネットワークのノード間でデータを転送するための、図１の通信ネットワークの動作方法を示すフローチャートである。
【図２Ｂ】本発明の実施例の通信ネットワークのノード間でデータを転送するための、図１の通信ネットワークの動作方法を示すフローチャートである。
【図３Ａ】本発明の実施例の図２Ａ〜２Ｂによる、図１の通信ネットワークでコードおよびデータを転送する方法を示す略図である。
【図３Ｂ】本発明の実施例の図２Ａ〜２Ｂによる、図１の通信ネットワークでコードおよびデータを転送する方法を示す略図である。
【図３Ｃ】本発明の実施例の図２Ａ〜２Ｂによる、図１の通信ネットワークでコードおよびデータを転送する方法を示す略図である。
【図３Ｄ】本発明の実施例の図２Ａ〜２Ｂによる、図１の通信ネットワークでコードおよびデータを転送する方法を示す略図である。
【図４】本発明の別の実施例の通信ネットワークを示す略図である。
【図５】本発明の実施例の線形スウォーム・トポロジーを示す略図である。
【図６】本発明の実施形態の木構造のスウォームのトポロジーを示す略図である。
【図１】
2005244985.tif 000003
【図２Ａ】
2005244985.tif 000004
【図２Ｂ】
2005244985.tif 000005
【図３Ａ】
2005244985.tif 000006
【図３Ｂ】
2005244985.tif 000007
【図３Ｃ】
2005244985.tif 000008
【図３Ｄ】
2005244985.tif 000009
【図４】
2005244985.tif 000010
【図５】
2005244985.tif 000011
【図６】
2005244985.tif 000012