(57)【要約】入来データの処理のシステムと方法は、入来データの受信処理と、入来データに関連した１以上のデスティネーション・ホストに基いて入来データのステートレスなルーティングを採用するか否かの決定を行なう処理とを提供する。あるやり方においては、ステートレスなルーティングは、入来データを揮発性メモリにのみ格納し、デスティネーション・ホストか下流側のルータから送達の通知を受信するまで、入来データの受信の通知を保留することを含む。ステートレスなルーティングが採用されるべきか否かの判定は、制御データや、デスティネーション・ホストについての履歴データを考慮に入れて行われ得る。この判定は、デスティネーション・ホストの数に基いても行われ得る。
2006510325.tif 000002
【特許請求の範囲】
【請求項１】
入来データの受信処理と、
前記入来データに関連するデスティネーション・ホストに基いて、前記入来データについてステートレスなルーティングを採用するか否かの決定を行う処理とからなる入来データの処理方法。
【請求項２】
ステートレスなルーティングが採用されるべきという決定処理と、
前記入来データの揮発性メモリのみへの格納処理とをさらに含む請求項１の方法。
【請求項３】
デスティネーション・ホストか下流側のルータから送達の通知を受信するまで、入来データの受信の通知を保留する処理をさらに含む請求項２の方法。
【請求項４】
入来データの送信側が、受信の通知を受信するまで、前記送信側が、前記入来データの複製物を不揮発性メモリに格納する請求項３の方法。
【請求項５】
送達の通知を受信する処理と、
前記入来データの送信側に向けて受信の通知を送信する処理とをさらに含む請求項３の方法。
【請求項６】
前記入来データを不揮発性メモリに格納することによってステートレスなルーティングを停止する処理と、前記入来データの送信側に向けて前記入来データの受信の通知を送信する処理とをさらに含む請求項２の方法。
【請求項７】
前記デスティネーション・ホストについての履歴データを格納する処理と、
前記履歴データに基いて、ステートレスなルーティングを採用するか否かの決定を行う処理とをさらに含む請求項１の方法。
【請求項８】
前記履歴データは、以前のステートレスなルーティングの成果と以前のルーティングの待ち時間とのうちの少なくとも１つを含む請求項７の方法。
【請求項９】
以前のルーティングの成果に基いて、成功の確率を計算する処理をさらに含む請求項８の方法。
【請求項１０】
以前のルーティングの待ち時間に基いて、重み付けされた待ち時間の平均を計算する処理をさらに含む請求項８の方法。
【請求項１１】
制御データを受信する処理と、
前記制御データに基いて、ステートレスなルーティングを採用するか否かを決定する処理をさらに含む請求項１の方法。
【請求項１２】
前記入来データは、データチャネルで受信され、前記制御データは、制御チャネルで受信される請求項１１の方法。
【請求項１３】
前記入来データと前記制御データは、データチャネルで受信される請求項１１の方法。
【請求項１４】
前記制御データは、前記入来データについての、有効期間の値、ホップカウントの値、及び最大ホップ値のうちの少なくとも１つを含む請求項１１の方法。
【請求項１５】
前記入来データが、複数のデスティネーション・ホストに関連付けられているときは、前記有効期間の値と前記最大ホップ値のうちの少なくとも１つを減らす請求項１４の方法。
【請求項１６】
ステートレスなルーティングが採用されるべきか否かを表すバイナリーの決定値をキャッシングする処理か、生成する処理のいずれかをさらに含む請求項１の方法。
【請求項１７】
前記入来データは、複数のデスティネーション・ホストに関連付けられており、
前記方法は、
前記複数のデスティネーション・ホストの各々についてのバイナリーの決定値を生成する処理と、
ステートレスなルーティングが採用されるべきか否かを表す前記バイナリーの決定値の各々の間でＡＮＤ演算を実行する処理とをさらに含む請求項１６の方法。
【請求項１８】
ステートレスなルーティングが採用されるべきか否かを表す確率の決定値を生成する処理をさらに含む請求項１の方法。
【請求項１９】
前記入来データは、複数のデスティネーション・ホストに関連付けられており、
前記方法は、
前記複数のデスティネーション・ホストの各々についての確率の決定値を生成する処理と、
ステートレスなルーティングが採用されるべきか否かを表すために、前記各確率の決定値を相互に掛け合わせる処理とをさらに含む請求項１８の方法。
【請求項２０】
前記入来データは、第１の接続を通って受信され、
前記方法は、前記入来データを、第２の接続を介して、デスティネーション・ホストに向けて送信する処理をさらに含み、
前記第１及び第２の接続が、仮想の回路の一部である請求項１の方法。
【請求項２１】
前記入来データの送信処理が、前記入来データの受信処理の完了前に始まる請求項２０の方法。
【請求項２２】
前記入来データは、メッセージを含む請求項１の方法。
【請求項２３】
１以上のデスティネーション・ホストについての履歴データを格納する処理と、
制御データを受信する処理と、
前記１以上のデスティネーション・ホストに関連するメッセージを、第１の接続を介して受信する処理と、
前記履歴データ及び前記制御データに基づいて、前記メッセージについてのステートレスなルーティングを採用するか否かを決定する処理と、
ステートレスなルーティングが採用されると決定された場合に、前記メッセージを揮発性メモリにのみ格納し、前記メッセージの受信の通知を保留する処理と、
１以上の仮想の回路を形成する追加の接続を介して、前記１以上のデスティネーション・ホストに前記メッセージを送信する処理と、
前記メッセージに関連した１以上のデスティネーション・ホストから送達の通知を受信する処理と、
前記メッセージの送信元に受信の通知を送信する処理とを含むメッセージの処理方法。
【請求項２４】
前記メッセージの送信元が、受信の通知を受信するまで、前記送信元が、前記メッセージの複製物を不揮発性メモリに格納する請求項２３の方法。
【請求項２５】
前記履歴データは、以前のステートレスなルーティングの成果と以前のステートレスなルーティングの待ち時間とのうちの少なくとも１つを含む請求項２３の方法。
【請求項２６】
前記制御データは、前記メッセージについての、有効期間の値、ホップカウントの値、及び最大ホップ値のうちの少なくとも１つを含む請求項２３の方法。
【請求項２７】
ステートレスなルーティングが採用されるべきか否かを表すバイナリーの決定値を生成する処理をさらに含む請求項２３の方法。
【請求項２８】
ステートレスなルーティングが採用されるべきか否かを表す確率の決定値を生成する処理をさらに含む請求項２３の方法。
【請求項２９】
前記メッセージの送信処理が、前記メッセージの受信処理の完了前に始まる請求項２３の方法。
【請求項３０】
入来データを受信し、
前記入来データに関連するデスティネーション・ホストに基いて、前記入来データについてステートレスなルーティングを採用するか否かの決定を行うために、
プロセッサによって実行可能な一組の命令を格納した機械読取可能な記録媒体。
【請求項３１】
前記命令は、さらに、
ステートレスなルーティングが採用されるべきという決定を行い、
前記入来データを揮発性メモリにのみ格納するように、実行され得る請求項３０の記録媒体。
【請求項３２】
前記命令は、さらに、
デスティネーション・ホストか下流側のルータから送達の通知を受信するまで、入来データの受信の通知を保留するように、実行され得る請求項３１の記録媒体。
【請求項３３】
入来データの送信元が、受信の通知を受信するまで、前記送信元が、前記入来データの複製物を不揮発性メモリに格納する請求項３２の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概ね、電子メッセージのルーティングに関する。さらに詳細に言えば、本発明の実施形態は、未保存の状態におけるメッセージを選択的にルーティングするシステムと方法に関する。
【背景技術】
【０００２】
（論点）
インターネットと無線通信の人気は、増す一方なので、ネットワークの設計者とサービス・プロバイダーは、多くの性能の問題を呈されている。特に、メッセージのルーティングには、懸念がはらわれている。メッセージ・ルータは、送信側のホスト（例えば、送信元の機器自体）からメッセージを受信して、これらのメッセージを１以上のデスティネーション・ホスト（送り先のホスト；例えば、受信側の機器自体）に転送する。メッセージの送受信の手順は、トランザクションと呼ばれることがあり、いかなるネットワーク・アーキテクチャにおいても重要な構成要素である。高性能のメッセージ・ルータは、１秒間に、数１００個のトランザクションを完了することを要求されることが珍しくない。
【０００３】
従来のメッセージ・システムは、メッセージのルーティングに、蓄積交換方式を用いる。そのようなやり方の下では、メッセージは、ルータによって受信されると、不揮発性メモリ（ＮＶＭ）に格納される。これは、メモリに電源が供給されなくなっても、メッセージの内容が保持されるようにするためである。上記の不揮発性メモリの例には、ＥＥＰＲＯＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）や磁気ディスクが含まれるが、不揮発性メモリは、これらに限定されない。不揮発性メモリへのメッセージの格納は、システム障害や停電が発生した場合におけるメッセージの復旧を可能にする。不幸にして、不揮発性メモリへの読み書きは、相対的にスピードが遅いので、ネットワークにおける性能のボトルネックになる可能性がある。それ故、メッセージのルーティングのシステムと方法は、システム障害や停電の可能性を考慮に入れる一方、メッセージの喪失を防ぎ、従来の蓄積交換方式に関するボトルネックの問題を減ずる必要がある。
【０００４】
本発明の実施形態の様々な利点は、以下の明細書と添付の請求項を読み、次の図面を参照することによって、この分野の当業者にとって明らかになるだろう。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施態様によるメッセージングのアーキテクチャの例のブロック図。
【０００６】
【図２】本発明の一実施態様による入来データの処理方法の例のフローチャート。
【０００７】
【図３】本発明の他の実施態様による入来データの処理方法の例のフローチャート。
【０００８】
【図４】本発明の一実施態様によるステートレスなルーティングの適格性の判定処理の例のフローチャート。
【０００９】
【図５】本発明の他の実施態様によるステートレスなルーティングの適格性の判定処理の例のフローチャート。
【００１０】
【図６】本発明の一実施態様によるステートレスなルーティングの接続の例のメッセージング図。
【００１１】
【図７】本発明の他の実施態様によるステートレスなルーティングの接続の例のメッセージング図。
【発明を実施するための最良の形態】
【００１２】
図１は、送信側のホスト１４（例えば、メールクライアント端末）とデスティネーション・ホスト（送り先のホスト）１８（例えば、メールサーバ）とを有するアーキテクチャ１０を示す。送信側のホスト１４は、ステートレスな（処理状態を把握しない）メッセージ・ルータ１２ａ（例えば、メール・ゲートウェイ）と通信し、デスティネーション・ホスト１８は、ステートレスなメッセージ・ルータ１２ｂ（例えば、メール・ゲートウェイ）と通信する。そして、ルータ１２ａとルータ１２ｂとは、ネットワーク１６を介して相互に通信する。より詳細に論じると、「ステートレス」の語は、ここでは、最初にメッセージを不揮発性メモリ（ＮＶＭ）に格納することなく、メッセージのルーティングを行う手順を記載するのに用いられている。これにより、メッセージは、不揮発性メモリに「未格納」の状態で、デスティネーション・ホスト１８に送信される。ステートレスなルーティングは、デスティネーション・ホストか下流側のルータからメッセージの送達の通知を受信するまで、メッセージの受信の確認を保留することを含むであろう。
【００１３】
ここでは、デスティネーション・ホストへのメッセージのルーティングに関して、ある例が述べられるけれども、本発明の実施態様は、これに限定されない。実際、ここで述べられる方式は、本発明の実施態様の概念と範囲から分かたれることなく、いかなる種類の入来データにも容易に適用され得る。例えば、画像、音声のファイルや、他の種類のデータも、ここで述べられた方式から恩恵を受け得る。それにも拘らず、本発明の実施態様がうまく適用される、多くのメッセージの局面がある。１つのメッセージが、多数の受信先（不図示）及び／又はデスティネーション・ホストに送られるかもしれず、そこでは、各デスティネーション・ホストは、上記の受信先（の機器）がその特別の受信側のホストに接続されるように、上記の受信先にサービスを提供するということにも注意すべきである。
【００１４】
図示の例では、仮想の回路２０が、複数の接続２２（２２ａ−２２ｂ）を経由して、ホスト１４と１８との間に配設されている。この仮想の回路２０は、シンプル・メッセージ・トランスポート・プロトコル（ＳＭＴＰ）（リクエスト・フォー・コメント／ＲＦＣ２８２１）、ショート・メッセージ・ピア・ツー・ピア（ＳＭＰＰ）プロトコル（プロトコル・スペシフィケーション／Ｖ３．４  イシュー１．２、ショート・メッセージ・サービス／ＳＭＳフォーラム）、又はマルチメディア・メッセージ・サービス・クライアント・トランザクション・スペシフィケーション（ＭＭＳＣＴＲ）プロトコル（ＷＡＰ−２０６−ＭＭＳＣＴＲ−２００２０１１５−ａ）等の広範な種類のプロトコルを介して使用され得る。あるプロトコルが、送信側のホストからメッセージを受信するために用いられ、別のプロトコルが、デスティネーション・ホストへメッセージを送信するために用いられるというように、上記のようなプロトコルのうち、１つ以上のプロトコルが、１つのトランザクション内に使用され得る。
【００１５】
従来のインターネット・プロトコル（ＩＰ）におけるデータ・パケットのルーティングは、ある程度のデータの喪失に耐えられるように設計されているが、Ｅメールのメッセージのようなメッセージのルーティングは、より高いレベルの信頼性を要求する。この結果、メッセージ・ルータは、データの喪失に対する耐性が少なくなってしまい、従来は上記の蓄積交換方式を採用してきた。ある実施態様は、上記のプロトコルのうちの１つ以上に関連付けて述べられるが、本発明の実施態様がこれに限定されないことに注意すべきである。実際、ステートレスなメッセージのルーティングが実施され得る、いかなる接続プロトコルも、使用され得る。それにも拘らず、上記のプロトコルがうまく適用される、本発明の実施態様の多くの局面がある。
【００１６】
ルータ１２ａ、１２ｂは、メッセージを最初に不揮発性メモリに格納することなく、メッセージを送るために、ステートレスなメッセージングを用いることができる。あるやり方では、送信側のホスト１４は、メッセージ・ルータ１２ａにメッセージを送信し、メッセージ・ルータ１２ａは、メッセージの受信を直ぐには通知しない。その代わりに、メッセージ・ルータ１２ａは、ネットワーク１６を介してメッセージ・ルータ１２ｂに接続し、メッセージを送信する。メッセージ・ルータ１２ｂは、デスティネーション・ホスト１８に対して、上記と同様なステートレスなメッセージングのルーティング方法を行う。メッセージ・ルータ１２ｂが、デスティネーション・ホスト１８へのメッセージの送達を通知し、メッセージ・ルータ１２ａが、メッセージ・ルータ１２ｂへのメッセージの送達を通知した後でなければ、ルータ１２ａは、それ自身のメッセージの受信の通知を送信側のホスト１４に送信しない。この結果、アーキテクチャ１０は、ルータ１２ａと１２ｂのどちらの不揮発性メモリにもメッセージの複製物を格納する必要がなくなる。送信側のホスト１４だけが、メッセージの受信の通知を受信するまで、不揮発性メモリにメッセージの複製物を格納するので、データ喪失の可能性は、最小限に抑えられるか、又は取り除かれる。
【００１７】
図２は、入来データの処理方法１００を示す。方法１００は、プロセッサによって実行され得る一組の命令として実施され得る。これらの命令は、いくつもの有名なソフトウェア・プログラミング手法を用いて書くことができ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲＯＭ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のような広範な種類の機械読み取り可能な記録媒体に格納され得る。入来データは、処理ブロック１０２において受信されて、ブロック１０４において揮発性メモリに格納される。処理ブロック１０６は、入来データに関連するデスティネーション・ホストに基いて入来データについてステートレスなルーティングを採用するか否かの決定を行うという処理を提供する。より詳細に言うと、ブロック１０６における決定には、履歴データ１０８及び／又は制御データ１１０を用いることができる。もし、ステートレスなルーティングを採用するという決定がされると、デスティネーション・ホストか別の下流側のルータからメッセージの送達の通知を受信するまで、ブロック１１２において、入来データの受信の通知も保留され得る。ブロック１１４は、デスティネーション・ホストに向けた入来データの送信を提供する。
【００１８】
もし、ブロック１０６において、ステートレスなルーティングが採用されないと決定されると、ブロック１１６において、入来データが、不揮発性メモリに格納される。このような場合には、入来データの送信元への受信の通知の送信を保留する必要がない。従って、ブロック１１８は、送信側のホストに向けた、入来データの受信の通知の送信を提供し、ブロック１１５は、デスティネーション・ホストに向けた入来データの送信を提供する。
【００１９】
ブロック１０３は、ステートレスなルーティングを停止するか否かの決定処理を提供する。ブロック１０３における決定は、待ち時間や優先度等の多くの要因に基いて行われ得る。例えば、デスティネーション・ホストに向けた入来データの送出後に、タイムアウトが発生すると、ステートレスなルーティングは、停止されるべきと決定されてもよい。ブロック１０３における決定は、所定のデスティネーション・ホストについて、一度以上行なわれ得るということにも注意すべきである。ブロック１０３において、ステートレスなルーティングが継続されるべきであると決定されると、ブロック１０５が、デスティネーション・ホスト又は下流側のルータからの入来データの送達通知の受信を提供する。ブロック１０７では、入来データの受信通知が、入来データの送信元（の機器）に向けて送信される。ブロック１０３において、ステートレスなルーティングが停止されるべきであると決定されると、ブロック１０９が、入来データの不揮発性メモリへの格納を提供して、ブロック１０５における送達通知の受信が回避される。
【００２０】
履歴データ１０８は、ブロック１０６における決定をする上で有用であり得る広範な種類の情報を提供し得る。例えば、履歴データ１０８は、特定のデスティネーション・ホストについての以前のステートレスなルーティングの成果を含み得る。そのような場合において、履歴データが、直近のＭ個のステートレスなルーティングを用いたトランザクションのうちのＮ個が成功したか否かを確認するためのものであって、処理ブロック１０６が、以前のステートレスなルーティングの成果に基いて、成功の確率を計算してもよい。もし、成功の確率が、所定の成功率の閾値を超えると、問題となっているデスティネーション・ホストについて、ステートレスなルーティングが採用されるべきであると決定され得る。履歴データ１０８は、上記の成功の確率に変えて、以前のルーティングの待ち時間を含み得る。このルーティングの待ち時間は、直近のＭ個のトランザクションについて、平均化されたものであってもよい。待ち時間の平均の計算は、より直近のトランザクションに、より大きな重み付けをして行なってもよい。そして、処理ブロック１０６における決定を行う際に、計算された待ち時間の平均を、待ち時間の閾値と比較してもよい。
【００２１】
あるやり方では、制御データ１１０は、対応する制御チャネルを通って受信され得る。この場合、入来データは、対応する入来データチャネルを持ち、これら２つのチャネルは、相互に独立である。別のやり方では、制御データ１１０は、メッセージのヘッダ又は同封情報に組み込まれて、従来のデータチャンネルを介して受信され得る。制御データのある例は、その後でステートレスなルーティングが打ち切られるべき、「有効期間」（ＴＴＬ）の値を含む。制御データの別の例は、入来データが通過した、ステートレスなルーティングのホップの数を特定する「ホップカウント」の値である。ホップカウントの値は、ステートレスなルータの各々によって、それが次のルータに渡される前に、インクリメントされる。制御データのさらに別の例では、「最大ホップ」値が、それに沿って入来データが転送され得る、ステートレスなルーティングのホップの最大数を特定し得る。この場合には、最大ホップ値は、ステートレスなルータの各々によって、それが次のルータに渡される前に、デクリメントされる。入来データが、複数のデスティネーション・ホストに関連付けられると、ＴＴＬや最大ホップの値が減らされ得ることに注意する必要がある。これらの値を減らすことは、デスティネーション・ホストが多数である場合に、ステートレスなルーティングが成功する確率を減らす原因となる。
【００２２】
処理ブロック１０６における決定処理は、ステートレスなルーティングが採用されるべきか否かを表すバイナリーの決定値、ステートレスなルーティングが採用されるべきか否かを表す確率の決定値等を生成し得る。デスティネーション・ホストが複数の場合には、バイナリーの決定値は、複数のデスティネーション・ホストの各々について生成され得る。この場合には、ステートレスなルーティングが採用されるべきか否かを表すバイナリーの決定値の各々の間でＡＮＤ演算が実行される。確率の決定値についても、同様に、複数のデスティネーション・ホストの各々についての決定値が生成され得る。この場合には、ステートレスなルーティングが採用されるべきか否かを表すために、各確率の決定値が相互に掛け合わせられる。
【００２３】
入来データは、それがメッセージであろうが、他のタイプのデータであろうが、そのように望まれるならば、ルータを通って流され得る。そのような場合には、ブロック１１４における、入来データのデスティネーション・ホストに向けた送信処理は、ブロック１０２における入来データの受信処理が完了する前に始まる。
【００２４】
図３には、メッセージ等の入来データをルーティングするための別の方法２４が示されている。方法２４は、ステートレスなルーティングを達成するために、プロセッサによって実行され得る一組の命令として実施され得る。これらの命令は、いくつもの有名なソフトウェア・プログラミング手法を用いて書くことができ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ＤＲＡＭ等のような広範な種類の機械読み取り可能な記録媒体に格納され得る。一般的に、処理ブロック２６では、メッセージ又は他のタイプの入来データが、第１の接続を通って受信される。ブロック２８は、メッセージが、単一のデスティネーション・ホストに送られたものであるか否かという決定を行うという処理を提供する。ブロック３０では、メッセージが、第２の接続を通って、デスティネーション・ホストに向けて送られる。この場合、もし、メッセージが、単一のデスティネーション・ホストに送られたものであれば、このメッセージは、不揮発性メモリに未格納の状態で、送られる。これにより、図示の例では、ステートレスなルーティングを採用するか否かの決定は、部分的に、デスティネーション・ホストの数に基いて行なわれる。
【００２５】
上記の方法２４と、図２に示される方法１００は、ステートレスなメッセージングを提供するために、仮想の回路内の各ルータによって用いられ得るけれども、接続に用いられる全てのルータが、ステートレスなルーティングの機能を実行することができる必要はないことに注意すべきである。そのような場合には（ステートレスなルーティングの機能を実行することができないルータがある場合には）、ステートレスなルーティングに関する恩恵は、各ステートレスなメッセージ・ルータにおいて局所的に得られる。
【００２６】
デスティネーション・ホストが多数の場合には、ブロック３２は、各デスティネーション・ホストへの接続が成功し、各デスティネーション・ホストへのデータの送達が達成され得るか否かを決定する処理を提供する。もし、そうであるならば、ブロック３０において、メッセージは、各デスティネーション・ホストに向けて、不揮発性メモリに未格納の状態で送られる。そうでなければ、メッセージは、ブロック３４において、従来の蓄積交換方式に基いて、格納された状態で送られる。
【００２７】
図４は、ブロック２８’（図３参照）において、メッセージが、単一のデスティネーション・ホストに送られたものであるか否かという決定をするための１つのやり方を示す。この場合、デスティネーション・ホストが単一であるということが、ステートレスなルーティングの適格性の唯一の指標である。特に、ブロック３８は、メッセージが、単一の受信先を持つか否かの決定処理を提供する。もし、そうであるならば、ブロック４０におけるステートレスなルーティングが用いられる。もし、メッセージが、多数の受信先を持つならば、ブロック４２が、各受信先についてのデスティネーション・ホストを求める処理を提供し、ブロック４４は、各受信先が、同じデスティネーション・ホストを持つか否かを決定する。もし、そうであるならば、ブロック４０におけるステートレスなルーティングが用いられる。そうでなければ、ブロック４６が、従来のルーティングを提供する。
【００２８】
既に述べたように、デスティネーション・ホストが多数の場合に、ステートレスなルーティングを採用することも可能である。従って、図５は、処理ブロック３２’（図３参照）において、各デスティネーション・ホストへの接続が成功し、各デスティネーション・ホストへのデータの送達が達成され得るか否かを決定する処理のやり方を示す。このやり方では、ブロック４４において、多数のデスティネーション・ホストが競合させられた場合に、ブロック４８は、各デスティネーション・ホストへの接続がなされ得るか否かの判定を行なう。もし、接続することができるならば、ブロック５０は、メッセージが、各接続を通って各デスティネーション・ホストへ送達され得るか否かを確認する。もし、送達され得るならば、ブロック４０におけるステートレスなルーティングが用いられる。もし、ブロック４８とブロック５０のいずれかで、失敗すると、ステートレスなルーティングは用いられない。
【００２９】
図６には、ステートレスなルーティングの接続を確立し、維持するための１つのやり方が、メッセージングの図表５２に示されている。具体的に言うと、第１の接続がメッセージ５４によって開始されて、メッセージ・ルータが、メッセージ５６を用いて第１の接続を受け入れる。メッセージ５６に応答して、メッセージ５８が送信される。この場合に、メッセージ５８は、当初のメッセージの起点と宛先に関するデータを有するエンベロープを内包している。メッセージ・ルータは、メッセージ６０を送信することにより、上記のエンベロープの受け取りを知らせ、ブロック６２において、当初のメッセージが、ステートレスなルーティングの適格性があるか否かを判定する。ブロック６２における決定は、上述の処理ブロック２８’（図４）及び／又は処理ブロック３２’（図５）に従って、行なわれ得る。例えば、ブロック６２は、単一のデスティネーション・ホストのみが存在するという判定に帰結するかもしれない。メッセージ６４は、当初のメッセージからのデータを含み、メッセージ６０の受信に応答して送信される。第２の接続は、メッセージ６６によって開始されて、第２の接続の受け入れは、メッセージ６８で知らされる。上記のエンベロープは、メッセージ７０でメッセージの受信先に向けて送られ、メッセージ７２は、上記エンベロープの受信通知を提供する。メッセージ・ルータは、メッセージ７２に応答して、メッセージ７４により当初のメッセージのデータを送信する。メッセージ７４における当初のメッセージのデータは、従来の蓄積交換のルーティングに付随する待ち時間を減らすために、不揮発性メモリに未格納の状態で送られる。メッセージ７６及び７８は、メッセージのデータの受信を知らせ、当初のメッセージが意図された受信先に到達するまで送信されない。
【００３０】
メッセージ７４の送信とメッセージ７６の受信との間の時間に、ステートレスなメッセージ・ルータに障害が発生するというリスク（危険性）はあるけれども、同様なリスクは、従来のメッセージのルーティングのための蓄積交換方式に関しても存在する。どちらのケースにおいても、データの受信は、知らされず、当初のメッセージは、１回以上送達されるだろう。障害は、メッセージ送信側（のホスト）、メッセージ・ルータ、又は２つのホストの間のネットワーク接続のいずれにも発生し得る。このリスクは、「メッセージの複製とＳＭＴＰ」（ネットワーク・ワーキング・グループ、ＲＦＣ−１０４７、１９８８年２月）に記載されている。
【００３１】
図７は、接続を確立するために、ＳＭＴＰのプロトコルが用いられている、メッセージングの図表８０を示す。一般的に、第１の接続は、複数のメッセージ８２によって開始され、当初のメッセージのデータがメッセージ８４で送信される。第２の接続は、複数のメッセージ８６を通して確立され、当初のメッセージのデータがメッセージ８８で送信される。データの受信と接続の終了の通知は、複数のメッセージ９０を通してなされる。既に注意したように、ＳＭＴＰは、用いられ得るいくつかのプロトコルの１つに過ぎない。
【００３２】
それ故、最初にメッセージを不揮発性メモリ（ＮＶＭ）に格納することなく、メッセージを送るために、ステートレスなメッセージのルーティングが採用されるかもしれない。送信側のホストは、最初にメッセージをメッセージ・ルータに送信するが、メッセージ・ルータは、メッセージの受信を直ぐには通知せず、受信側のホストに接続して、上記のメッセージを受信側に送信する。受信側が上記のメッセージの受信を通知した後でなければ、ルータは、送信側への通知を行なわない。このやり方は、上記メッセージの複製品の不揮発性メモリへの格納を回避する一方、同時に、システム障害が発生した場合でも、送信側に「受信された」と立証される各メッセージが、確実に受信側に送達されるようにする。
【００３３】
ステートレスなメッセージのルーティングは、メッセージの受信用の入来側の接続とメッセージの送信用の発信側の接続の両方を用いる。従来のメッセージングシステムと違って、両方の接続が、同時にアクティブとなる。従って、ステートレスなメッセージのルーティングは、従来のメッセージングシステムよりも、よりアクティブな接続を要求する。あるやり方は、これらの接続を管理するために、非同期の入出力（Ｉ／Ｏ）を用いるであろう。
【００３４】
もし、メッセージが、その最終的なデスティネーション（送り先）に到着する前に、一連のメッセージ・ルータを通過しなければならず、各メッセージ・ルータが、ステートレスなルーティングを採用するならば、メッセージのデータが送信される前に、メッセージのルーティングのための「仮想の回路」を確立することが、より効率的である。いかなるメッセージのルーティングのプロトコル（例えば、ＳＭＴＰ）も、この仮想の回路の管理を可能にさせるために、拡張され得る。
【００３５】
全てのメッセージを、ステートレスなメッセージのルーティングを用いて配信することができないかもしれないので、あるやり方は、複合型のシステムにおいて、従来のメッセージのルーティングと並べて、ステートレスなメッセージのルーティングを配置する。下記に、具体的な実施例を、より詳細に述べる。
（単一の受信側のホストについてのステートレスなルーティング）
【００３６】
上記の実施形態に応じた構成のシステムは、ステートレスなルーティングが可能であるか否かを検出することができる。各入来メッセージは、そのメッセージに関連する受信先のリストを持つことができる。ＳＭＴＰのメッセージのルーティングのプロトコルの場合には、これらの受信先は、”ＲＣＰＴ  ＴＯ”コマンドによって示される。各受信先は、それに対してメッセージが送られなければならない、特定のデスティネーション・ホストを持つ。このデスティネーション・ホストは、そのメッセージのルーティングのプロトコルに特有のアルゴリズムによって決定される。ＳＭＴＰについては、上記のデスティネーション・ホストは、受信側のホストのホストネームとＩＰアドレスを決定するためのＤＮＳルックアップ機能を用いて決定される。もし、各メッセージ受信先のデスティネーション・ホストが同じであれば、そのメッセージの配信に、ステートレスなルーティングを採用するようにしてもよい。
【００３７】
単一の受信側のホストについてのステートレスなルーティングについては、従来のメッセージのルーティングよりも、僅かにメッセージを重複して送る確率が高くなるかもしれない。そのリスクは、メッセージの受信側によるメッセージの受信の通知と、メッセージングのゲートウェイによるメッセージの送信元へのメッセージ受信の通知との間の時間において、メッセージ・ルータが故障したり、送信元のサーバの接続が切れるということである。もし、このようなことが起これば、メッセージは送られるが、メッセージの送信元は、メッセージが送られたと分からないであろうから、おそらくメッセージを重複して送ってしまうだろう。とはいえ、ステートレスなルーティングに付随した時間節約の効果は、メッセージを重複して送ってしまうことに付随した潜在的なコストを、はるかに上回っている。
（楽観的なステートレスなメッセージのルーティング）
【００３８】
既に述べたように、受信側のホストが多数の場合にも、ステートレスなルーティングを試みることができる。そのような場合には、各ホストへの配信は、順次に又は並行して試みられ得る。もし、１つ以上のホストへの配信が失敗した場合には、該当のメッセージを不揮発性メモリに書き込んでもよい。
【００３９】
「楽観的な」ステートレスなルーティングの場合、最初のメッセージの受信先によるメッセージの受信の通知と、最後のメッセージの受信先によるメッセージの受信の通知との間の時間は、極めて長くなり得る。ＳＭＴＰのメッセージのルーティングの場合、ＳＭＴＰのＲＦＣは、ＳＭＴＰサーバが、メッセージの受信を通知するための時間を１０分まで許容している。上記の２つの通知の間における、送信側の障害、ルータの障害、ネットワークの切断等の障害は、重複したメッセージの送達に帰結するかもしれない。既に述べたように、メッセージを重複して送ってしまうことに付随した潜在的なコストは、無視し得る。
【００４０】
この分野の当業者は、上述の記載から、本発明の広範な手法の実施形態が、様々な手法で実施され得ると分かるであろう。それ故、本発明の実施形態は、その特定の例について記載されているけれども、図面、明細書、及び次の請求項を考察すれば、熟練者にとって他の変形が可能であることが明らかなので、本発明の実施形態の真の範囲は、上述の範囲に限定されるべきではない。
【００４１】
本出願は、２００２年１２月１６日付けの米国仮出願第６０／４３３，５９２号に基く優先権を主張する。その全体が、参照により本願に取り込まれ、本願は、上記出願の出願日に基く恩恵を享受する。
【図１】
2006510325.tif 000003
【図２】
2006510325.tif 000004
【図３】
2006510325.tif 000005
【図４】
2006510325.tif 000006
【図５】
2006510325.tif 000007
【図６】
2006510325.tif 000008
【図７】
2006510325.tif 000009
【国際調査報告】
2006510325.tif 000010
2006510325.tif 000011
2006510325.tif 000012
2006510325.tif 000013
2006510325.tif 000014