(57)【要約】  中間ノードは、セッションにおいてユニークなセッション識別子を有している複数のパケットのうちの先行パケットを取得し、少なくとも中間ノードを識別するために、先行パケットを変更し、また、ＩＰネットワークに対する中間ノードの電子出力インタフェースを介して、先行パケットを宛先ノードへと転送する。また中間ノードは、ＩＰネットワークと通信する中間ノード入力インタフェースを介して、次ノード識別子を有している次ノードから逆方向メッセージを受信する。逆方向メッセージは、次ノード識別子及びセッション識別子を含んでいる。中間ノードは、次ノード識別子とセッション識別子との関連性を形成し、セッションに関する状態情報を保持するために、その関連性をメモリに記憶し、セッションの付加的なパケットを取得（例えば受信）する。セッションにおける実質的に全ての付加的なパケットが、記憶されている関連性を使用して、次ノードへと転送される。
2017529713.tif 000002
【特許請求の範囲】
【請求項１】
ＩＰネットワークにおける起源ノードから宛先ノードへのセッションのパケットを管理するためのパケットルーティング方法において、
中間ノードが、セッションにおいてユニークなセッション識別子を有している複数のパケットのうちの先行パケットを取得するステップと、
少なくとも前記中間ノードを識別するために、前記先行パケットを変更するステップと、
ＩＰネットワークと通信する中間ノードの電子出力インタフェースであって、前記ＩＰネットワークに対する電子出力インタフェースを介して、前記先行パケットを前記宛先ノードへと転送するステップと、
前記ＩＰネットワークと通信する、前記中間ノードの電子入力インタフェースを介して、次ノード識別子を有している次ノードから、前記次ノード識別子及び前記セッション識別子を含んでいる逆方向メッセージを受信するステップと、
前記次ノード識別子と前記セッション識別子との関連性を形成するステップと、
前記関連性をメモリに記憶して、前記セッションに関する状態情報を保持するステップと、
前記セッションの付加的なパケットを取得するステップと、
前記中間ノードの前記電子出力インタフェースを介して、前記セッションにおける実質的に全ての前記付加的なパケットを、記憶されている前記関連性を使用して前記次ノードへと転送するステップと、
を備えていることを特徴とする、パケットルーティング方法。
【請求項２】
前記先行パケットの前記宛先ノードへの転送は、前記先行パケットを前記次ノード宛てに送るための前記次ノード識別子の使用を含む、
請求項１に記載のパケットルーティング方法。
【請求項３】
前記先行パケットの前記宛先ノードへの転送は、前記次ノードに関するルーティング情報を有しているルーティング情報ベースへのアクセスを含む、
請求項２に記載のパケットルーティング方法。
【請求項４】
前ノード識別子を有している前ノードが存在する場合には、前記先行パケットが通過した前ノードを決定するステップと、
前記前ノード識別子と前記セッション識別子との戻り関連性を形成するステップと、
前記戻り関連性を前記メモリに記憶して、前記セッションに関する状態情報を保持するステップと、
を更に備えている、
請求項１に記載のパケットルーティング方法。
【請求項５】
前記宛先ノードからの、前記起源ノードに向けられている戻りセッションにおける複数のパケットを受信するステップと、
前記電子出力インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、記憶されている前記戻り関連性を使用して前記前ノードへと転送するステップと、
を更に備えている、
請求項４に記載のパケットルーティング方法。
【請求項６】
前記中間ノードは、ルーティングテーブルを有しており、
前記宛先ノードへの前記先行パケットの転送は、前記先行パケットを前記宛先ノードへと転送するための前記ルーティングテーブルの使用を含む、
請求項１に記載のパケットルーティング方法。
【請求項７】
前記中間ノードは、ルーティングデバイス又はスイッチングデバイスを含んでいる、
請求項１に記載のパケットルーティング方法。
【請求項８】
前記先行パケットの宛先が規定されており、それにより、前記先行パケットが転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、複数のネットワークデバイスが前記先行パケットを受信する、
請求項１に記載のパケットルーティング方法。
【請求項９】
ＩＰネットワークにおける起源ノードから宛先ノードへのセッションのパケットを管理するための中間ルーティングデバイスにおいて、
前記中間ルーティングデバイスは、
前記ＩＰネットワークからＩＰパケットを受信するための電子入力インタフェースと、
前記ＩＰネットワークにおいてＩＰパケットを転送するための電子出力インタフェースと、
セッション状態情報を記憶するための状態メモリと、
前記電子入力インタフェースと機能的に接続されており、且つ、セッションにおいてユニークなセッション識別子を有している複数のパケットのうちの先行パケットを識別するように構成されている先行パケット識別器と、
前記先行パケット識別器と機能的に接続されており、且つ、少なくとも前記中間ルーティングデバイスを識別するために前記先行パケットを変更するように構成されている先行パケット変更器と、
前記電子出力インタフェースと機能的に接続されており、且つ、前記電子出力インタフェースを介して、前記先行パケットを前記宛先ノードへと転送するように構成されているルータと、
前記電子出力インタフェースと機能的に接続されており、且つ、ａ）次ノード識別子を有している次ノードから前記次ノード識別子及び前記セッション識別子を有している逆方向メッセージを受信するように、ｂ）前記次ノード識別子と前記セッション識別子との関連性を形成するように、及び、ｃ）前記セッションに関する状態情報を保持するために前記関連性を状態メモリに記憶するように、構成されているアソシエータと、
を備えており、
前記ルータは、前記電子出力インタフェースを介して、前記セッションにおける付加的なパケットを、記憶されている前記関連性を使用して前記次ノードへと転送するように更に構成されていることを特徴とする、
中間ルーティングデバイス。
【請求項１０】
前記ルータは、前記次ノードに前記先行パケットを送るために前記次ノード識別子を使用するように構成されている、
請求項９に記載の中間ルーティングデバイス。
【請求項１１】
前記ルータは、前記次ノードに前記先行パケットを転送するためのルーティング情報を有しているルーティング情報ベースを含んでいる、
請求項１０に記載の中間ルーティングデバイス。
【請求項１２】
前記アソシエータは、１）前ノード識別子を有している前ノードが存在する場合には、前記先行パケットが通過した前ノードを決定するように、２）前記前ノード識別子と前記セッション識別子との戻り関連性を形成するように、及び、３）前記セッションに関する状態情報を保持するために前記戻り関連性を前記状態メモリに記憶するように、構成されている、
請求項９に記載の中間ルーティングデバイス。
【請求項１３】
前記ルータは、前記宛先ノードから受信し、且つ、前記起源ノードへと送られる戻りセッションにおけるパケットを、記憶されている前記戻り関連性を使用して、前記電子出力インタフェースを介して前記前ノードへと転送するように構成されている、
請求項１２に記載の中間ルーティングデバイス。
【請求項１４】
前記中間ルーティングデバイスは、更に、ルーティングテーブルを有しており、
前記ルータは、前記ルーティングテーブルを使用して、前記先行パケットを前記宛先ノードへと転送するように構成されている、
請求項９に記載の中間ルーティングデバイス。
【請求項１５】
ＩＰネットワークにおける起源ノードから宛先ノードへのセッションのパケットを管理するためのコンピュータシステムにおいて使用されるコンピュータプログラム製品において、
前記コンピュータプログラム製品は、実体のある非一時的なコンピュータ使用可能な媒体と、前記媒体におけるコンピュータ可読プログラムコードと、を有しており、
前記コンピュータ可読プログラムコードは、
中間ノードに、セッションにおいてユニークなセッション識別子を有している複数のパケットのうちの先行パケットを取得させるためのプログラムコードと、
少なくとも前記中間ノードを識別するために、前記先行パケットを変更するためのプログラムコードと、
ＩＰネットワークと通信する中間ノードの電子出力インタフェースであって、前記ＩＰネットワークに対する電子出力インタフェースを介して、前記先行パケットを前記宛先ノードへと転送するためのプログラムコードと、
前記ＩＰネットワークと通信する、前記中間ノードの電子入力インタフェースを介して、次ノード識別子を有している次ノードから、前記次ノード識別子及び前記セッション識別子を有している逆方向メッセージを受信するためのプログラムコードと、
前記次ノード識別子と前記セッション識別子との関連性を形成するためのプログラムコードと、
前記セッションに関する状態情報を保持するために、前記関連性をメモリに記憶するためのプログラムコードと、
前記セッションの付加的なパケットを取得するためのプログラムコードと、
前記中間ノードの前記電子出力インタフェースを介して、前記セッションにおける実質的に全ての付加的なパケットを、記憶されている前記関連性を使用して前記次ノードへと転送するためのプログラムコードと、
を含んでいることを特徴とする、コンピュータプログラム製品。
【請求項１６】
前記先行パケットを前記宛先ノードへと転送するためのプログラムコードは、前記先行パケットを前記次ノード宛てに送るために前記次ノード識別子を使用するためのプログラムコードを含んでいる、
請求項１５に記載のコンピュータプログラム製品。
【請求項１７】
前記先行パケットを前記宛先ノードへと転送するためのプログラムコードは、前記次ノードに関するルーティング情報を有しているルーティング情報ベースにアクセスするためのプログラムコードを含んでいる、
請求項１６に記載のコンピュータプログラム製品。
【請求項１８】
前ノード識別子を有している前ノードが存在する場合には、前記先行パケットが通過した前ノードを決定するためのプログラムコードと、
前記前ノード識別子と前記セッション識別子との戻り関連性を形成するためのプログラムコードと、
前記セッションに関する状態情報を保持するために、前記戻り関連性を前記メモリに記憶するためのプログラムコードと、
を更に含んでいる、
請求項１５に記載のコンピュータプログラム製品。
【請求項１９】
前記宛先ノードからの、前記起源ノードに向けられている戻りセッションにおける複数のパケットを受信するためのプログラムコードと、
前記電子出力インタフェースを介して、前記戻りセッションにおける実質的に全てのパケットを、記憶されている前記戻り関連性を使用して前記前ノードへと転送するためのプログラムコードと、
を更に含んでいる、
請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記中間ノードは、ルーティングテーブルを有しており、
前記宛先ノードへと前記先行パケットを転送するためのプログラムコードは、前記先行パケットを前記宛先ノードへと転送するための前記ルーティングテーブルの使用を含む、
請求項１５に記載のコンピュータプログラム製品。
【請求項２１】
前記中間ノードは、ルーティングデバイス又はスイッチングデバイスを含んでいる、
請求項１５に記載のコンピュータプログラム製品。
【請求項２２】
前記先行パケットの宛先が規定されており、それにより、前記先行パケットが前記次ノードへと転送された後、且つ、前記次ノードが前記先行パケットを受信する前に、複数のネットワークデバイスが前記先行パケットを受信する、
請求項１５に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本願は、２０１４年９月２６日に出願された米国特許出願第１４／４９７，９５４号、発明の名称「ネットワークパケットフローコントローラ（Network Packet Flow Controller）」の利益を主張するものであり、その開示内容全体はあらゆる目的のために参照により本願に組み込まれる。
【０００２】
技術分野
本発明は、データルーティングに関し、より詳細にはＩＰネットワークにおけるパケットルーティングに関する。
【背景技術】
【０００３】
インターネットプロトコル（「ＩＰ」）は、データメッセージ（「データグラム」）を、インターネットに接続されているネットワークデバイス間で転送するためのデファクトスタンダードとして使用されている。そのために、ＩＰは一連のインターネットデバイスを介して、例えばルータ及びスイッチを介してデータグラムを１つ又は複数のデータパケットの形態で供給する。各パケットは２つの主要部分、即ち、（１）伝送される情報（例えばテキストデータ、グラフィックデータ、オーディオデータ又はビデオデータ）を有しているペイロード、並びに、（２）（１つ又は複数の）パケットを受信するネットワークデバイス（「宛先デバイス」）のアドレス、パケットを送信するネットワークデバイス（「起源デバイス」）の識別子及びパケットをルーティングするためのその他のデータを有している、「ＩＰヘッダ」として公知であるヘッダ。
【０００４】
従って多くの人々は、パケットを一般郵便／ファーストクラスメール（first class mail）を使用する慣例の伝統的な手紙を例にして説明している。つまり、手紙はペイロードとして機能し、また差出人住所及び宛先住所が示されている封書はＩＰヘッダとして機能する。
【０００５】
現在のインターネットデバイスは、実質的にパケットヘッダ内の宛先デバイスのアドレスに基づき、パケットを１つずつ転送する。その他の利点もあるが、とりわけこのルーティングスキームによって、ネットワークの輻湊を低減するために、又は、ネットワークデバイスの誤動作を回避するために、ネットワークデバイスは単一のデータグラムの種々のパケットを異なるルータに沿って転送する。従って、当業者は、ＩＰを「ステートレス（状態のない）」プロトコルとみなす。何故ならば、その他の理由もあるが、とりわけＩＰではパケット経路データが保存されず、またエンドポイント間でのパケットの事前に定められた伝送も行われないからである。
【０００６】
ＩＰは種々の利点を有しているにもかかわらず、ＩＰがステートレスであることによって種々の制限が課されている。例えば、変更がなされなければ、ステートレスなＩＰネットワークは、（１）モバイルネットワークにおけるユーザモビリティ、（２）ネットワークにおけるパケットトラフィックに関するセッション層ロードバランシング、及び（３）プライベートネットワーク間又は重畳するネットワーク間のルーティング、を抑制又は阻止する。当業者は、トンネリング機能を提供するトンネリングプロトコルを実装することによってこの問題に対応していた。特に、トンネリングプロトコルは、このトンネリングプロトコルを使用しなかった場合にデータグラムが取るであろうルートとは通常異なるルートに沿って、ＩＰデータグラムを宛先へと伝送する。名目上はそれらの目的が達成されるが、トンネリングプロトコルは、望ましくないことに、付加的な問題をネットワークにもたらす。例えば、トンネリングは付加的なオーバヘッドを要求し、このオーバヘッドによってＩＰパケットフラグメンテーションが生じる可能性があり、従って、相当なネットワーク非効率性がセッションにもたらされる。更に、トンネルは一般的に、トンネリングされないパケットよりも広い帯域幅を使用し、トンネルの開始地点及び終了地点はパケット毎に付加的なＣＰＵサイクルを必要とする。また、トンネルアドレスが事前に提供されなければならず、これによってフレキシビリティが低下する。
【０００７】
ステートレスであることによってもたらされる問題を克服するためのその他の試みも、やはり欠点を有している。
【発明の概要】
【課題を解決するための手段】
【０００８】
本発明の１つの実施の形態によれば、パケットルーティング方法は、ＩＰネットワークにおける起源ノードから宛先ノードへのセッションのパケットをステートフルに管理する。そのために、本方法は中間ノードを使用して、セッションにおいてユニークなセッション識別子を有している複数のパケットのうちの先行パケットを取得する。本方法は、続いて、少なくとも中間ノードを識別するために先行パケットを変更し、ＩＰネットワークに対する中間ノードの電子出力インタフェースを介して、先行パケットを宛先ノードへと転送する。この電子出力インタフェースはＩＰネットワークと通信する。また本方法は、ＩＰネットワークと通信する中間ノード入力インタフェースを介して、次ノード識別子を有している次ノードから、逆方向メッセージ（例えばパケット）を受信する。逆方向メッセージは、次ノード識別子及びセッション識別子を含んでいる。従って、本方法は、次ノード識別子とセッション識別子との関連性を形成し、セッションに関する状態情報を保持するために、その関連性をメモリに記憶し、またセッションの付加的なパケットを取得する（例えば受信する）。本方法は、続いて、中間ノードの電子出力インタフェースを介して、セッションにおける実質的に全ての付加的なパケットを、記憶されている関連性を使用して次ノードへと転送する。
【０００９】
先行パケットを宛先ノードへと転送するために、本方法は次ノード識別子を使用して、先行パケットを次ノード宛てに送る。そのために、本方法は、次ノードに関するルーティング情報を有しているルーティング情報ベースにアクセスすることができる。別の実施の形態では、先行パケットを次ノード宛てに送ることなく、単純に先行パケットが転送される。従って中間ノードは、単に自身の慣例のルーティングテーブルを使用して、先行パケットを宛先ノードへと転送することができる。いずれの場合にも、先行パケットの宛先を規定することができるので、先行パケットが転送された後、且つ、次ノードが先行パケットを受信する前に、複数のネットワークデバイスが先行パケットを受信する。
【００１０】
更に、順方向のルーティング以外に、幾つかの実施の形態は起源ノードへの逆方向のルーティングを実行する。例えば本方法は、前ノードが存在する場合には、先行パケットが通過した前ノードを決定して、その前ノードの識別子（即ち、前ノード識別子）とセッション識別子との戻り関連性を形成することができる。セッションに関する戻り状態情報をオプションとして保持するために、本方法はメモリに戻り関連性を記憶することができる。従って本方法は、宛先から起源ノード宛てに送られる、戻りセッションにおける複数のパケットを受信することができ、また（電子出力インタフェースを介して）戻りセッションにおける実質的に全てのパケットを、記憶されている戻り関連性を使用して前ノードへと転送することができる。
【００１１】
中間ノードは多岐にわたる任意のネットワークデバイス、例えばルーティングデバイスを含むことができる。
【００１２】
本発明の別の実施の形態によれば、中間ルーティングデバイスが、ＩＰネットワークにおける起源ノードから宛先ノードへのセッションのパケットを管理する。そのために、ルーティングデバイスは、ＩＰネットワークからＩＰパケットを受信するための電子入力インタフェースと、ＩＰネットワークにおいてＩＰパケットを転送するための電子出力インタフェースと、セッション状態情報を記憶するための状態メモリと、を備えている。ルーティングデバイスは、また、（１）電子入力インタフェースと機能的に接続されており、且つ、セッションにおいてユニークなセッション識別子を有している複数のパケットのうちの先行パケットを識別するように構成されている先行パケット識別器、（２）先行パケット識別器と機能的に接続されており、且つ、少なくとも中間ルーティングデバイスを識別するために先行パケットを変更するように構成されている先行パケット変更器、並びに、（３）電子出力インタフェースと機能的に接続されており、且つ、電子出力インタフェースを介して、先行パケットを宛先ノードへと転送するように構成されているルータ、も含んでいる。更に、ルーティングデバイスは、電子出力インタフェースと機能的に接続されているアソシエータも有しており、このアソシエータは、ａ）次ノードから次ノード識別子及びセッション識別子を有している逆方向メッセージを受信するように、ｂ）次ノード識別子とセッション識別子との関連性を形成するように、及び、ｃ）セッションに関する状態情報を保持するために関連性を状態メモリに記憶するように、構成されている。従ってルータは、電子出力インタフェースを介して、セッションにおける付加的なパケットを、記憶されている関連性を使用して次ノードへと転送するように構成されている。
【００１３】
本発明の図示の複数の実施の形態は、実体のあるコンピュータ使用可能媒体と、その媒体におけるコンピュータ可読プログラムコードと、を有しているコンピュータプログラム製品として実施される。コンピュータ可読コードを、慣例のプロセスに従ってコンピュータシステムによって読み出して利用することができる。
【００１４】
本発明は、添付の図面と関連させた、以下の「特定の実施の形態の詳細な説明」の項を参照することによってより良く理解される。
【図面の簡単な説明】
【００１５】
【図１】従来技術による、仮想のネットワークの概略図を示す。
【図２】従来技術による、メッセージのフラグメンテーションを表す概略図を示す。
【図３】従来技術による、仮想のインターネットの概略図を示す。
【図４】本発明の１つの実施の形態による、慣例のルータと拡張型ＩＰルータ（ＡＩＰＲ）とを含んでいる、仮想のインターネットの概略図を示す。
【図５】本発明の１つの実施の形態による、セッションの開始を識別するために使用されるフィールドを識別する、イーサネットヘッダの概略的なレイアウトを示す。
【図６】本発明の１つの実施の形態による、セッションの開始を識別するために使用されるフィールドを識別する、ＩＰヘッダの概略的なレイアウトを示す。
【図７】本発明の１つの実施の形態による、セッションの開始を識別するために使用されるフィールドを識別する、ＴＣＰヘッダの概略的なレイアウトを示す。
【図８】本発明の１つの実施の形態による、図４のＡＩＰＲの概略的なブロック図を示す。
【図９】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって情報ベースに記憶された情報の概略図を示す。
【図１０】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって生成された、変更済みの先行パケットの概略図を示す。
【図１１】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって実施される動作を概略的に説明するフローチャートを示す。
【図１２】本発明の１つの実施の形態による、図４及び図８のＡＩＰＲによって実施される動作を概略的に説明するフローチャートを示す。
【発明を実施するための形態】
【００１６】
本発明の有利な実施の形態によれば、パケットフローコントローラは、少なくとも順方向におけるフローに関して、セッションの複数のパケットが、そのセッションの先行パケット／第１のパケットと同一の経路をたどることを、即ち送信元（Source）デバイスから宛先（Destination）デバイスへと同一の経路をたどることを保証する。種々の実施の形態を下記において詳述する。
【００１７】
ネットワーク
図示の実施の形態は、有利には、従来のコンピュータネットワークにおいて実施されている。特に、ネットワークは、少なくとも２つのノードと、ノード間の少なくとも１つのリンクと、を含んでいる。ノードは、（ホスト又はデバイスとも称される）コンピューティングデバイス及びルータを含むことができる。コンピュータには、パーソナルコンピュータ、スマートフォン、現金自動預け払い機（ＡＴＭ）、並びに、プロセッサ及びネットワークインタフェースを含んでいるその他のタイプの装置が含まれる。リンクは、ノードペア間の有線式及び無線式のコネクションを含んでいる。更に、ノード及び／又はリンクを、完全にソフトウェアとして実施することができ、例えば仮想マシン、ソフトウェア定義ネットワーク（ＳＤＮ：software defined network）において、また、ネットワーク機能の仮想化（ＮＦＶ：network function virtualization）を使用して実施することができる。多くのネットワークはスイッチを含んでおり、それらのスイッチの大部分はこの議論に関してトランスペアレント（透過性）である。しかしながら、幾つかのスイッチはルーティング機能も実施する。ここでの議論に関して、そのようなルーティングスイッチはルータと見なされる。ルータについては下記において説明する。
【００１８】
ノードは、１つ又は複数のその他のノードと、それぞれ個別のリンクを介して直接的に接続されている。例えば図１には、ノードＡがリンク１を介してノードＢと直接的に接続されていることが概略的に示されている。所定のネットワークにおいて（例えば、ローカルエリアネットワーク内）、各ノードは、データの送受信を容易にするためのユニークなネットワークアドレスを有している。ネットワークは、ネットワークのアドレッシングスキームに従ってネットワーク内でアドレッシング可能な全てのノードと、ネットワークのアドレッシングスキームに従って通信を行うためにノードを相互接続する全てのリンクと、を含んでいる。例えば、図１においては、ノードＡ，ノードＢ，ノードＣ〜ノードＦ及び全てのリンク１〜８が一緒になって１つのネットワーク１００を形成している。簡略化のために、ネットワークは１つのクラウドとして、又は、１つのクラウド内に含まれるものとして示されている。
【００１９】
各ノードは、ネットワークを介してその他のノードとの通信を開始し、また各ノードは、ネットワークを介してその他のノードによって開始された通信を受信する。例えば、ノードは、データ（メッセージ）を直接的に接続されているノード（隣接ノード）に、その隣接ノードと相互接続されているリンクを介してメッセージを送信することによって、データを伝送／転送／送信することができる。メッセージは、送信ノードのネットワークアドレス（「送信元アドレス」）と、意図されている受信ノードのネットワークアドレス（「宛先アドレス」）と、を含んでいる。送信ノードは、メッセージを非隣接ノードに、１つ又は複数のその他のノードを介して送信することができる。例えば、ノードＤはノードＦにノードＢを介してメッセージを送信することができる。周知のネットワーキングプロトコルを使用して、送信元ノードと宛先ノードとの間に存在する（１つ又は複数の）ノードは、メッセージがその宛先ノードに到達するまで、メッセージを転送する。従って適切に動作するために、ネットワークプロトコルは、各ノードによる、そのネットワーク内の非隣接ノードのネットワークアドレスの学習又は発見を実現する。
【００２０】
ノードは、プロトコルに従って、例えば公知のインターネットプロトコル（ＩＰ：Internet Protocol）及び伝送制御プロトコル（ＴＣＰ：Transmission Control Protocol）に従って、ネットワークを介して通信を行う。プロトコルは、典型的には、例えば公知の７層オープンシステム接続（ＯＳＩ：Open System Interconnect）モデルに従って、階層化されたソフトウェアコンポーネント及び／又はハードウェアコンポーネントによって実施されている。一例として、ＩＰはＯＳＩのレイヤ３（ネットワーク層）で機能し、その一方、ＴＣＰは大部分がＯＳＩのレイヤ４（トランスポート層）で機能する。各層は、論理的な機能を実施し、また自身より下位の層を抽象化し、従って下位層の詳細を隠す。
【００２１】
例えばレイヤ３は、レイヤ２（データリンク層）が１つの大きいメッセージを１回の伝送で処理できない場合には、そのメッセージの、複数のより小さいパケットへのフラグメント化を実施することができる。図２には、複数の部分２０２，２０４，２０６，２０８，２１０及び２１２に分割された大きいメッセージ２００が概略的に示されている。この場合、各部分２０２〜２１２を、パケット２１４によって例示されているような個別のパケットとして送信することができる。各パケットは、ペイロード２１６によって例示されているペイロード（本体）部分と、参照番号２１８によって例示されているヘッダ部分と、を含んでいる。ヘッダ部分２１８は、（１）パケットのその宛先へのルーティング、（２）メッセージのパケットの再組み立て、及び、（３）プロトコルに従って提供されるその他の機能、のために必要とされる又は望まれる情報、例えばパケットの送信元アドレス、宛先アドレス及びパケットシーケンス番号を含んでいる。幾つかのケースにおいては、例えばペイロード又はパケット全体のチェックサムを実施するために、ペイロードにトレーラ部分も付加されている。メッセージの全てのパケットが同一の経路に沿って送信される必要はない。つまり、それらのパケットの共通の宛先への経路において同一のノードを通過する必要はない。ＩＰパケットは、正式にはＩＰデータグラムと称されるが、それらは一般的には単純にパケットと称されていることを言及しておく。
【００２２】
その他の幾つかのプロトコルも、データの複数のパケットへのフラグメント化を実施する。例えばＴＣＰは、データの複数のセグメントへのフラグメント化を実施する。セグメントは正式には、ＴＣＰプロトコルデータユニット（ＰＤＵ：protocol data unit）と称される。それにもかかわらず、一般的には、ＰＤＵ及びデータグラムを表す際に、またイーサネットフレームを参照する際にパケットという用語が用いられている。
【００２３】
プロトコルの多くは、上位の階層のプロトコルのカプセル化を実施する。例えばＩＰは、ＩＰパケットを生成するために、ＴＣＰパケットにＩＰヘッダを付加することによって、ＴＣＰパケットのカプセル化を実施する。従って、下位の階層において送信されたパケットは、パケット内のパケットから成るものであると考えられる。通常の場合、あるプロトコルに従って動作するコンポーネントは、同一のプロトコルに従って動作する別のコンポーネント、典型的には別のノード内の別のコンポーネントによって生成されたヘッダ及び／又はトレーラ内の情報しか検査又は変更しない。つまり、一般的には、あるプロトコルに従って動作するコンポーネントは、別のプロトコルによって生成されたパケットの部分を検査又は変更しない。
【００２４】
階層プロトコルによって提供される抽象化の別の例では、幾つかの層がアドレスを変換する。幾つかの層は、層固有のアドレッシングスキームを含んでいる。例えば、リンクの各端部は、実際の（例えば電子的な）インタフェース又は仮想のインタフェース、例えばイーサネットインタフェースを介してノードと接続されている。レイヤ２（データリンク層）では、各インタフェースがアドレスを、例えばメディアアクセスコントロール（ＭＡＣ：media access control）アドレスを有している。その一方で、ＩＰを使用するレイヤ３では、各インタフェースが、又は少なくとも各ノードがＩＰアドレスを有している。レイヤ３は、ＩＰアドレスをＭＡＣアドレスに変換する。
【００２５】
ルータは一般的に、２つ又はそれ以上の個別のネットワーク、若しくは、単一のネットワークの２つ又はそれ以上のサブネットワーク（サブネット）を相互接続するノードとして機能する。これによって、「複数のネットワークから成る１つのネットワーク」（即ち、１つのインターネット）が形成される。従って、ルータは少なくとも２つのインタフェースを有しており、各インタフェースは図３に例示されているように、ルータを異なるネットワークに接続する。ルータが一方のインタフェースを介して一方のネットワークからパケットを受信すると、ルータは自身のルーティングテーブルに記憶されている情報を使用して、他方のインタフェースを介する他方のネットワークへのパケットを管理する。ルーティングテーブルは、ネットワークとネクストホップとの関連性を含んでいる。それらの関連性は、最終的な宛先への経路上のネクストホップを表している特定のルータにパケットを送信することによって、特定の宛先に最適に到達できることをルータに知らせる。例えば、第１のルータ３００が自身の第１のインタフェース３０４を介して、第１のネットワーク３０２からパケットを受信し、そのパケットを第３のネットワーク３０６内のノードに送信する場合、第１のルータ３００は、自身のルーティングテーブルを参照して、自身の第２のインタフェース３０８を介して第２のネットワーク３１０にパケットを転送する。続いて、第２のネットワーク３１０は、パケットを第３のネットワーク３０６に転送する。ネクストホップの関連性を、最終的な宛先への出力（出口）インタフェースとしてルーティングテーブルに示すこともできる。
【００２６】
大規模な組織、例えば大企業、商用データセンタ及び電気通信事業者は、内部トラフィックの送信のために、階層構造のルータのセットを使用することが多い。例えば、１つ又は複数のゲートウェイルータによって、各組織のネットワークと、１つ又は複数のインターネットサービスプロバイダ（ＩＳＰ：Internet service provider）と、を相互接続することができる。またＩＳＰは、顧客のゲートウェイ間のトラフィックの送信のために階層構造のルータを使用して、別のＩＳＰとの相互接続及びインターネットバックボーンにおけるコアルータとの相互接続を実現する。
【００２７】
ルータは、その主たる転送の判断に関してレイヤ３ＩＰパケットにおける情報、特に宛先ＩＰアドレスを基礎としているので、レイヤ３デバイスとみなされる。慣例のルータは、パケットが運ぶ実際のデータコンテンツ（即ち、カプセル化されたペイロード）を参照しない。その代わりにルータは、単に、転送の判断を行うためのレイヤ３アドレスと、オプションとして、サービス品質（ＱｏＳ：quality of service）要求のようなヒントに関するヘッダにおけるその他の情報と、だけを見る。パケットが転送されると、慣例のルータはパケットに関するいずれの履歴情報も保持しない。しかしながら、ルータがそのように構成されている場合であっても、統計的なデータを生成するために転送動作を収集することはできる。
【００２８】
上記において述べたように、ルータが一方のインタフェースを介して一方のネットワークからパケットを受信すると、ルータは自身のルーティングテーブルを使用して、他方のネットワークへのパケットを管理する。表１には、基本的なＩＰルーティングテーブルから一般的に見て取れる情報が列挙されている。
【表１】
2017529713.tif 000003
【００２９】
ルーティングテーブルを、例えばシステム管理者によって手動で埋めることができるか、又は、ルータによって動的に埋めることができる。ルータは、その他のルータと情報を交換するためにルーティングプロトコルを使用し、またそれによって、周囲のネットワーク又はインターネットのトポロジを動的に学習する。例えば、ルータは自身の存在を（１つ又は複数の）ネットワークに通知する。より詳細には、ルータは自身がパケットを転送できるＩＰアドレスの範囲をネットワークに通知する。隣接するルータはその情報を用いて自身のルーティングテーブルを更新し、また第１のルータの（１つ又は複数のネットワーク）へとパケットを転送する自身の能力をブロードキャストする。この情報は、必要に応じて、ネットワーク内の複数の別個のルータに拡散される。動的なルーティングによって、ルータはネットワーク又はインターネット内の変化に、例えば増大したネットワークの輻湊、新たなルータのインターネットへの追加、及び、ルータ又はリンクのエラーに反応することができる。
【００３０】
従って、ルーティングテーブルは、パケットを各宛先へとルーティングするための一連の規則を提供する。パケットが到着すると、ルータはパケットの内容を検査し、例えばそのパケットの宛先アドレスを検査し、ルーティングテーブルにおける最適な規則を発見する。その規則は事実上、ルータに、パケットを転送するためにどのインタフェースが使用されるかを知らせ、またそのパケットの最終的な宛先ＩＰアドレスへの経路上においてそのパケットが転送されるノードのＩＰアドレスも知らせる。
【００３１】
ホップ・バイ・ホップ方式のルーティングでは、各ルーティングテーブルには、到達可能な全ての宛先に関して、その宛先への経路に沿った次ノード、即ちネクストホップのアドレスが記載されている。ルーティングテーブルに矛盾がない場合を想定すれば、ネットワーク内のいずれかの場所にパケットを送信するには、パケットをその宛先の各ネクストホップへとリレーする各ルータの単純なアルゴリズムで十分である。ホップ・バイ・ホップ方式は、ＩＰインターネットワーク層及びＯＳＩネットワーク層の基本的な特性を表している。
【００３２】
従って、各ルータのルーティングテーブルは通常の場合、パケットを、そのパケットの宛先の「比較的近くに位置する」その他のルータに転送するには十分である情報しか含んでいないので、パケットが常にその宛先へと送信されることは保証していない。ある意味において、少なくとも大部分のパケットが最終的にその宛先へと到達することを目的として、パケットは、一連のルータを辿って、各ルータにおいてその時点での最新の規則を使用して、次にどのルータを辿るかを決定することによって、自身の宛先までの自身の経路を発見している。
【００３３】
例えば、ルータが輻湊した場合、又は、リンクに障害が発生した場合、規則は１つのパケットの連続する２つのホップ間で、又は、１つのメッセージの連続する２つのパケット間で変化する可能性があることを言及しておく。従って、１つのメッセージの２つのパケットが異なる経路を辿る可能性があり、それどころか順番通りに到着しない可能性がある。換言すれば、パケットが送信元ノードから送信される場合、送信元ノードとパケットの宛先との間でパケットが取ることになる、事前に定められた経路は存在しない。その代わりに、典型的には、パケットが種々のルータを通過するために、経路が動的に求められる。これは「自然なルーティング」と称することができる。つまり、パケットがインターネットを通過する際に、経路が動的に求められる。
【００３４】
通常の場合、宛先ノードから再び送信元ノードへと送信されるパケットは、送信元ノードから宛先ノードへと送信されたパケットとは異なる経路を辿る可能性があることを言及しておく。
【００３５】
多くの状況において、クライアントコンピュータノードは、サーバコンピュータノードとセッションを確立し、またクライアントとサーバはそのセッションにおいてパケットを交換する。例えば、ブラウザを実行しているクライアントコンピュータは、ウェブサーバを用いてセッションを確立することができる。クライアントはウェブページをリクエストするために１つ又は複数のパケットを送信することができ、またウェブサーバはウェブページのコンテンツを含んでいる１つ又は複数のパケットでもって応答することができる。幾つかのタイプのセッションでは、パケットの往復的な交換を複数回のサイクルにわたり継続することができる。幾つかのタイプのセッションでは、パケットを２つのノード間で非同期的に送信することができる。
【００３６】
セッションはその通常の意味を有している。つまり、セッションとは、プロトコルに従って一方のノードから他方のノードへと送信される、各パケットが関連付けられている複数のパケットである。セッションは、そのセッションを開始する先行パケット（又は最初のパケット）と、そのセッションの１つ又は複数の後続パケットと、を含むものと考えられる。セッションには、明確な開始及び明確な終了が存在する。例えば、ＴＣＰセッションはＳＹＮパケットによって開始される。幾つかのケースにおいては、１つの所定のパケット又は一連のパケットによって、終了を規定することができる。例えば、ＴＣＰセッションを、ＦＩＮ交換によって又はＲＳＴによって終了させることができる。別のケースにおいては、少なくとも事前に規定された長さの時間（タイムアウト時間）にわたり、ノード間で通信が行われないことによって終了を規定することができる。例えば、ＴＣＰセッションを、所定のタイムアウト期間後に終了させることができる。幾つかのセッションは、一方のノードから他方のノードへと送信されるパケットしか含んでいない。別のセッションは、ウェブクライアントとサーバとのインタラクションの例のように、応答パケットを含んでいる。１つのセッションは、プロトコルに従った、何サイクルもの往復的な通信又は非同期的な通信を含むことができるが、１つのセッションの全てのパケットは、ノードの同一のクライアントとサーバのペア間で交換される。ここでは、セッションを一連のパケットとも称する。
【００３７】
単一ＩＰアドレスを有しているコンピュータは、種々のサービス、例えばＷｅｂサービス、Ｅメールサービス及びファイル転送（ＦＴＰ：file transfer protocol）サービスを提供することができる。一般的に、各サービスには、コンピュータ上でユニークである、０〜６５，５３５の範囲のポート番号が割り当てられている。従って、サービスはノードのＩＰアドレスとサービスのポート番号との組み合わせによって規定されている。この組み合わせはコンピュータが接続されているネットワーク内でユニークであり、またインターネット内でもユニークであることが多いことを言及しておく。同様に、単一のノードにおいて多数のクライアントを実行することができる。従って、サービスをリクエストするクライアントには、そのクライアントのノードにおけるユニークなポート番号が割り当てられるので、サービスからの返送パケットを、リクエストを行ったクライアント宛てに一意に送ることができる。
【００３８】
ソケットという用語は、ＩＰアドレスとポート番号の組み合わせを意味している。従って、各サービスは、ネットワーク固有の、またインターネット固有であることも多いサービスソケットを有しており、サービスをリクエストするクライアントにはネットワーク固有の、またインターネット固有である場合もあるクライアントソケットが割り当てられている。ところによっては、送信元クライアント及び宛先サービスという用語は、それぞれ、サービスをリクエストするためにパケットを送信するクライアント、また、リクエストされているサービスを表している。
【００３９】
自然なルーティングが長年にわたり上手く機能しているにもかかわらず、この自然なルーティングは欠点を有している。例えば、１つのセッションの各パケットが異なる経路に沿って伝播する可能性があり、また異なるルータのセットを通過する可能性があるので、セッションに関するメトリックを収集することが困難である。セッションのパケットに適用することができるセキュリティ機能を広範囲にわたり分散させなければならず、また、そのようなセキュリティ機能が全てのパケットに適用されないリスクも考えられる。更に、セッションへの攻撃が多くの場所から開始される可能性がある。
【００４０】
順方向及び逆方向のフロー制御
本発明の図示の実施の形態は、少なくとも順方向においては、即ち送信元クライアントから宛先サービスへは、セッションの先行パケットと同じ経路を、そのセッションの後続パケットが辿ることを保証することによって、上述の欠点及びその他の欠点を克服する。後続パケットは、先行パケットが送信元クライアントと宛先サービスとの間で通過したルータの少なくとも１つのサブセットを通過する。ここでは、サブセット内の各ルータを中間ノード又は中間地点と称する。但し、先行パケットが送信元クライアントから送信される前に、中間地点が事前に定められている必要はない。先行パケットは自然にルーティングしてもよい。それにもかかわらず、先行パケットが取る経路は中間地点を形成し、また後続パケットは先行パケットと同一の中間地点を、先行パケットと同じ順番で通過する。
【００４１】
勿論、例えば過負荷のルータによって、又はリンクによるパケットの破損に起因して、幾つかのパケットは先行パケットが取る経路から脱落する可能性があるが、これはＩＰネットワーク又はインターネットにおいては一般的に起こりうることである。つまり、送信元クライアントから送信された全てのパケットが、セッションの宛先サービスに到達しなければならないのではなく、従って、送信元クライアントから送信された全てのパケットが全ての中間地点を通過する必要はない。しかしながら、宛先サービスへと到達する後続パケットは全ての中間地点を通過しなければならない。説明を簡単にするために、脱落したパケットは後述の議論においては無視するので、「全てのパケット」という用語は、自身の各宛先に到達する全てのパケットを意味している。
【００４２】
この順方向のフロー制御の結果、複数ある中間地点のうちの１つの中間地点において収集されたメトリックはセッションの全てのパケットを表している。それらのメトリックの質が、その中間地点を迂回するパケットによって低下することはない。何故ならば、セッションの全てのパケットがいずれの中間地点も迂回することは起こり得ないからである。１つの中間地点において実施されるセキュリティ機能、例えば、悪意のあるパケットの検査を、セッションの全てのパケットに対して確実に実施することができる。
【００４３】
本発明の幾つかの実施の形態は、宛先サービスから送信元クライアントへと戻ってくるパケットが同一の経路を逆の順序で辿ること、即ち、中間地点を逆の順序で通過することも保証する。この逆方向のフロー制御は、別の方法で戻りパケットを自然にルーティングすることによっては利用できない経路、例えば専用の（プロプライエタリな）ネットワークを介する経路の使用を実現する。
【００４４】
パケットフローコントローラ（本明細書においては、拡張型ＩＰルータ（「ＡＩＰＲ」：augmented IP router）とも称する）は、上記において述べたように、セッションの先行パケットと同一の経路を、そのセッションの後続パケットが辿ることを保証する。ＡＩＰＲは慣例のルーティング機能も実施する。図４は、相互接続されている複数のネットワーク４００，４０２，４０４及び４０６の仮想のセット、即ちインターネットを表している概略図である。各ネットワーク４００〜４０６は、複数のルータ及びＡＩＰＲを含んでいるが、必ずしもそれら全てのルータ及びＡＩＰＲが示されている訳ではない。ネットワーク４００は、第１のＡＩＰＲ４０８及びルータ４１０を含んでいる。ネットワーク４００は、例えば、電気通信事業者のネットワークであって良い。ネットワーク４０２は、ルータ４１２及び第２のＡＩＰＲ４１４を含んでいる。ネットワーク４０２は、例えば、第１のＩＳＰのネットワークであって良い。ネットワーク４０４は、ルータ４１６及び第３のＡＩＰＲ４１８を含んでいる。ネットワーク４０４は、例えば、インターネットバックボーン又はその一部であって良い。ネットワーク４０６は、ルータ４２０、第４のＡＩＰＲ４２２及び別のルータ４２４を含んでいる。ネットワーク４０６は、例えば、第２のＩＳＰのネットワークであって良い。
【００４５】
送信元クライアントノード４２６が、宛先サービスノード４２８とのセッションを開始する場合を想定する。例えば、送信元クライアント４２６は、ウェブページをリクエストすることができ、また宛先サービスノード４２８はウェブサーバを含むことができる。送信元クライアント４２６は、例えば、第１の企業内の第１のローカルエリアネットワーク（ＬＡＮ）（図示せず）の一部であって良く、またＬＡＮをその企業によって管理されているゲートウェイルータ４３０を介して電気通信事業者のネットワーク４００に接続することができる。同様に、宛先サービスノード４２８を第２の企業によって管理することができ、また宛先サービスノード４２８は、第２の企業によって管理されているゲートウェイルータ４３２を介して第２のＩＳＰのネットワーク４０６に接続されている第２のＬＡＮ（図示せず）の一部であって良い。セッションの先行パケットがインターネットを通過する際、そのパケットが通過する各ＡＩＰＲ（中間地点）は、その中間地点がセッションに関する自身の１つ前の中間地点及び自身の１つ先の中間地点を識別できる情報を記録する。
【００４６】
セッションの先行パケットは自然にルーティングされる。先行パケットがネットワーク４０２，４０４又は４０６に到達する前に、第１のＡＩＰＲ４０８に到達する場合を想定する。第１のＡＩＰＲ４０８は、先行パケットがセッションの最初のパケットであることを自動的に識別する。第１のＡＩＰＲ４０８は、上記において述べたように、また下記において更に詳細に説明するように、種々の技術を使用してセッションの開始を識別することができる。第１のＡＩＰＲ４０８は、先行パケットが最終的に辿る経路に沿った最初の中間地点となる。
【００４７】
第１のＡＩＰＲ４０８は、セッションにユニークな識別子を割り当て、また、そのセッションに関する情報をＡＩＰＲのデータベースに記憶し、それによって第１のＡＩＰＲ４０８はセッションの後続パケットを識別することができる。幾つかの実施の形態においては、第１のＡＩＰＲ４０８は、先行パケットにおけるクライアントソケット／サービスソケット番号ペアを読み出し、セッションを一意に識別するために、そのクライアントソケット／サービスソケット番号ペアをデータベースに記憶する。これによって、第１のＡＩＰＲ４０８は後続パケットをそのセッションの一部として識別することができる。何故ならば、そのセッションの全ての後続パケットは、同一のクライアントソケット／サービスソケット番号ペアを含むことになるからである。
【００４８】
幾つかの実施の形態においては、第１のＡＩＰＲ４０８が、先行パケットは第１のＡＩＰＲ４０８に到達する前にその他のいずれのＡＩＰＲも通過していないことを示すフラグを自身のデータベースにセットする。このフラグを後の時点に、例えば第１のＡＩＰＲ４０８が戻りパケットを処理する際に使用することができる。第１のＡＩＰＲ４０８は、パケットにいずれの変更も行われていないことから、先行パケットはその他のいずれのＡＩＰＲも通過していないことを識別することができる。パケットの変更については下記において説明する。
【００４９】
第１のＡＩＰＲ４０８は、先行パケットがＡＩＰＲによって処理されたことを示すために先行パケットを変更する。幾つかの実施の形態においては、変更された先行パケットを形成するために、第１のＡＩＰＲ４０８がパケットにセッションのユニークな識別子を記憶し、またユニークな識別子に含まれていない場合には、ＡＩＰＲのネットワークアドレスを記憶する。（その時点において変更されている）先行パケットを処理する後続のＡＩＰＲが存在する場合には、その後続のＡＩＰＲは、先行パケットをＡＩＰＲによって処理された先行パケットとして識別するため、またセッションの後続パケットは先行パケットがルーティングされる経路と同じ経路でルーティングされるべきことを示すために、この変更を利用する。
【００５０】
幾つかの実施の形態においては、第１のＡＩＰＲ４０８は、先行パケットを転送する際に第１のＡＩＰＲ４０８が使用するインタフェースにポート番号を割り当てる。ＡＩＰＲのネットワークアドレス及びこのポート番号は、組み合わされることによって、少なくとも経路に沿った次のＡＩＰＲの観点からは、セッションのユニークな識別子として使用することができる。第１のＡＩＰＲ４０８は、ＡＩＰＲのネットワークアドレスとポート番号の組み合わせを、変更された先行パケットに含ませることができる。従って、経路に沿った次のＡＩＰＲは、このネットワークアドレスとポート番号の組み合わせから送信された後続パケットがセッションの一部であること、又はセッションの一部である可能性が高いことを想定できる。
【００５１】
第１のＡＩＰＲ４０８は続いて、先行パケットを自然に転送する。先行パケットは、この先行パケットをネットワーク４０２に自然にルーティングするルータ４１０に到達するまで、ネットワーク４００の不特定数のノードを通過する。ここではルータ４１０が先行パケットをネットワーク４０２内の第２のＡＩＰＲ４１４に転送する場合を想定する。
【００５２】
第２のＡＩＰＲ４１４は、先行パケットに対する変更を検出し、特別な処理の必要性を識別する。第２のＡＩＰＲ４１４は、先行パケットが辿る経路に沿った第２の中間地点となる。第２のＡＩＰＲ４１４は、自身のデータベースに第１のＡＩＰＲ４０８のネットワークアドレス及び第１のＡＩＰＲ４０８によって割り当てられたポート番号を、セッションのユニークな識別子、例えばクライアントソケット／サーバソケット番号ペアと関連させて記憶し、従ってこのセッションに関連する経路に沿った前の中間地点を識別する。このようにして、各中間地点は、このセッションの経路に沿った前の中間地点のネットワークアドレス及びポート番号を学習し、また関連する関連付けデバイス（「アソシエータ」）を使用して、この情報をセッション識別子に関連付ける。この情報は後に、送信元クライアント４２６への戻りパケットを中間地点から中間地点へと転送するために使用することができる。
【００５３】
幾つかの実施の形態においては、第２のＡＩＰＲ４１４は、先行パケットを受信したインタフェースにポート番号を割り当てる。ＡＩＰＲのネットワークアドレス及びこのポート番号は、組み合わされることによって、少なくとも第１のＡＩＰＲ４０８の観点からは、セッションのユニークな識別子として使用することができる。従って、このネットワークアドレスとポート番号の組み合わせ宛てに送られる後続パケットは、セッションの一部であること、又は少なくともセッションの一部である可能性が高いことを想定できる。
【００５４】
幾つかの実施の形態においては、第２のＡＩＰＲ４１４は、セッションの識別に関連して、第１のＡＩＰＲ４０８にネットワークアドレスとポート番号の組み合わせについての情報を通知するために、パケットを第１のＡＩＰＲ４０８に送信する。幾つかの実施の形態においては、ネットワークアドレスとポート番号の組み合わせが、下記において説明するように、戻りパケットとの関連において、後に第１のＡＩＰＲ４０８に送信される。いずれのケースにおいても第１のＡＩＰＲ４０８は、セッションに対してユニークであるネットワークアドレスとポート番号の組み合わせを学習し、また第１のＡＩＰＲ４０８は、後続パケットを自然に転送するのではなく、後続パケットをそのネットワークアドレスとポート番号の組み合わせに送信する。このようにして、各中間地点はこのセッションの経路に沿った次の中間地点のネットワークアドレス及びポート番号を学習する。この情報は、先行パケットと同じ経路に沿って、後続パケットを、複数の中間地点を介してサービス４２８へと転送するために使用される。この種のルーティングは、本発明者が知っている従来技術に教示されているいずれのルーティングとも異なるものである。
【００５５】
第２のＡＩＰＲ４１４は、この第２のＡＩＰＲ４１４のネットワークアドレスを含ませるために先行パケットを変更し、続いて、その先行パケットを自然に転送する。第１のＡＩＰＲ４０８と同様に、幾つかの実施の形態においては、第２のＡＩＰＲ４１４が、パケットを転送する際に使用するインタフェースにポート番号を割り当て、第２のＡＩＰＲ４１４のネットワークアドレス及びポート番号が、第２のＡＩＰＲ４１４によって送信される、変更された先行パケットに含まれる。
【００５６】
先行パケットは、この先行パケットをネットワーク４０４に自然にルーティングするルータ４１２に到達するまで、ネットワーク４０２の不特定数のノードを通過する。ルータ４１６が先行パケットを第３のＡＩＰＲ４１８に転送する場合を想定する。
【００５７】
第３のＡＩＰＲ４１８は、先行パケットが辿る経路に沿った第３の中間地点となる。第３のＡＩＰＲ４１８は、第２のＡＩＰＲ４１４と同様に動作する。先行パケットは続けてネットワーク４０６へと転送され、そのネットワーク４０６において先行パケットは第４のＡＩＰＲ４２２を通過し、この第４のＡＩＰＲ４２２が第４の中間地点となる。
【００５８】
宛先サービス４２８への経路に沿った最後のＡＩＰＲ（第４のＡＩＰＲ）４２２に関しては、３つのシナリオが考えられる。
【００５９】
第１のシナリオにおいては、宛先サービスへの先行パケットを処理するために、宛先サービスの比較的に近くに位置する１つ又は複数のＡＩＰＲが設けられる。それらのＡＩＰＲを、各自のデータベースに、例えばサービスソケット番号又はサービスのその他のユニークな識別子によって宛先サービスを識別するための情報を記憶することによって設けることができる。これらの「終端」ＡＩＰＲは、宛先サービスへとパケットを転送するための自身の能力をブロードキャストする。終端ＡＩＰＲは、パケットが別のＡＩＰＲを通過することなく、パケットを宛先サービスへと転送することができるＡＩＰＲである。終端ＡＩＰＲは、そのＡＩＰＲにおいて終端するサービス宛ての先行パケットを、宛先サービスソケット番号をＡＩＰＲのデータベースに提供されている情報と比較することによって認識する。
【００６０】
第４のＡＩＰＲ４２２がそのように設けられている場合には、第４のＡＩＰＲ４２２は先行パケットをその本来の形に、即ち送信元クライアント４２６が先行パケットを送信したときにその先行パケットが有していた形に復元することができるか、又は、ルータ４３０によって変更することができたパケットとして、例えばルータ４３０によって実施されたネットワークアドレス変換（ＮＡＴ：network address translation）の結果を復元することができる。従って、先行パケットを、中間地点４０８，４１４及び４１８により行われた変更を全く含んでいない形に復元することができる。第４のＡＩＰＲ４２２は続いて、先行パケットを宛先サービス４２８へと転送する。第３のＡＩＰＲ４１８と同様に、第４のＡＩＰＲ４２２は自身のデータベースに、第３のＡＩＰＲ４１８をそのセッションに関する前のＡＩＰＲとして識別する情報を記憶する。
【００６１】
第２のシナリオにおいては、第４のＡＩＰＲ４２２には、宛先サービス４２８に関する情報が供給されない。その種の実施の形態においては、第４のＡＩＰＲ４２２は第２のＡＩＰＲ４１４及び第３のＡＩＰＲ４１８と同様に動作することができる。第４のＡＩＰＲ４２２は先行パケットを変更して自然に転送し、また先行パケットは最終的に宛先サービス４２８へと供給される。宛先サービス４２８は、先行パケットに応答する。例えば、先行パケットが、ＴＣＰセッションを開始するためのＳＹＮパケットである場合には、宛先サービス４２８はＡＣＫパケット又はＳＹＮ／ＡＣＫパケットで応答する。第４のＡＩＰＲ４２２は、戻りパケットを、例えばその戻りパケットにおける送信元クライアントソケット／宛先サービスのネットワークアドレスとポート番号のペアに基づき、セッションの一部として認識する。更に、戻りパケットは別のＡＩＰＲからではなく、宛先サービス４２８から送信されたものなので、第４のＡＩＰＲ４２２は、自身がこのサービスの経路に沿った最後のＡＩＰＲであることを認識する。
【００６２】
第４のＡＩＰＲ４２２は、この第４のＡＩＰＲ４２２が終端ＡＩＰＲであること示す情報を自身のデータベースに記憶する。第４のＡＩＰＲ４２２がセッションの後続パケットを受信すると、第４のＡＩＰＲ４２２は後続パケットをその本来の形に、即ち送信元クライアント４２６が後続パケットを送信したときにその後続パケットが有していた形に復元することができるか、又は、ルータ４３０によって変更することができたパケットとして、例えばルータ４３０によって実施されたネットワークアドレス変換（ＮＡＴ）の結果を復元することができる。第４のＡＩＰＲ４２２は、後続パケットを宛先サービス４２８に転送する。
【００６３】
第４のＡＩＰＲ４２２は、その第４のＡＩＰＲ４２２が第３のＡＩＰＲ４１８からの先行パケットを受信したインタフェースにおけるポート番号並びに第４のＡＩＰＲ４２２のネットワークアドレスを含ませるために、戻りパケットを変更する。第４のＡＩＰＲ４２２は続いて、戻りパケットを第３のＡＩＰＲ４１８へと転送する。戻りパケットを別のルータによって転送できるにもかかわらず、第４のＡＩＰＲ４２２は特に戻りパケットを第３のＡＩＰＲ４１８宛てに送る。これによって、先行パケットが辿った経路に沿って、先行パケットが通過した全ての中間地点を逆の順序で通過する、戻りパケットの移動が開始される。従って、戻りパケットは自然なルーティングにより送信元クライアント４２６に戻るのではない。この種の戻りパケットのルーティングは、本発明者が知っている従来技術に教示されているいずれのルーティングとも異なるものである。
【００６４】
第３のＡＩＰＲ４１８は、変更された戻りパケットを受信し、その戻りパケットは、第３のＡＩＰＲ４１８が以前に割り当てたものであり且つそのセッションに関連付けられているポート番号宛てに送られたものであることから、第３のＡＩＰＲ４１８は戻りパケットがセッションの一部であること、又はセッションの一部である可能性が高いことを想定できる。第３のＡＩＰＲ４１８は、戻りパケットからの第４のＡＩＰＲ４２２のネットワークアドレス及びポート番号を、このセッションに関する次の中間地点としてＡＩＰＲのデータベースにコピーする。第３のＡＩＰＲ４１８がセッションの後続パケットを受信すると、第３のＡＩＰＲ４１８はそれらの後続パケットを、次の中間地点、即ち第４のＡＩＰＲ４２２のネットワークアドレス及びポート番号へと転送する。
【００６５】
従って、ＡＩＰＲにセッション経路に沿った次のＡＩＰＲのネットワークアドレス及びポート番号が一度通知されると、ＡＩＰＲは、後続パケットの自然なルーティングを行わずに、次のＡＩＰＲへと後続パケットを転送する。
【００６６】
第３のＡＩＰＲ４１８は、戻りパケットを、第３のＡＩＰＲ４１８のデータベースにそのネットワークアドレス及びポート番号が記憶されており、且つ、セッションの前の中間地点として識別されている第２のＡＩＰＲ４１４に転送する。同様に、送信元クライアント４２６へと戻る経路に沿った各中間地点は、戻りパケットをそれぞれ前の中間地点へと転送する。
【００６７】
第１の中間地点、即ち第１のＡＩＰＲ４０８が戻りパケットを受信すると、その中間地点は戻りパケットをその本来の形に、即ち宛先サービス４２８が戻りパケットを送信したときにその戻りパケットが有していた形に復元することができるか、又は、ルータ４３０によって変更することができたパケットとして、例えばルータ４３０によって実施されたネットワークアドレス変換（ＮＡＴ）の結果を復元することができる。第１の中間地点が、先行パケットは第１の中間地点に到達する前にその他のいずれの中間地点も通過していないことを示すフラグを自身のデータベースにセットしていたことを想起されたい。このフラグは、戻りパケットを復元して、その復元された戻りパケットを送信元クライアント４２６へと転送することを第１の中間地点に知らせるために使用される。第１の中間地点は、戻りパケットを送信元クライアント４２６へと転送する。後続の戻りパケットも同様に処理される。
【００６８】
図４には図示していない第３のシナリオにおいては、先行パケットを受信するための最後のＡＩＰＲは、宛先サービスのネットワークアドレスと同じネットワークアドレスを有している。例えば、宛先サービスネットワークアドレスをゲートウェイルータ／ＡＩＰＲに与えることができ、またゲートウェイルータ／ＡＩＰＲはサービスリクエストを処理することができるか、又は、サービスを実施するために、自身のルーティングテーブルを用いて、パケットをその他のノードへと転送することができる。最後のＡＩＰＲは、上記において述べたように、先行パケット及び後続パケットを復元することができる。
【００６９】
先行パケットの識別
上述のように、中継地点はセッションの先行パケットを識別できるべきである。先行パケットを識別するために種々の技術を使用することができる。それらの技術のうちの幾つかはプロトコル固有のものである。例えば、ＴＣＰセッションは、ＳＹＮパケット、ＳＹＮ−ＡＣＫパケット及びＡＣＫパケットを含んでいる公知の３ウェイハンドシェイクに従って開始される。ノードペア間のパケット交換をステートフルに追跡することによって、中間地点はセッションの開始を識別することができ、また多くの場合においてセッションの終了を識別することができる。例えば、ＴＣＰセッションは、ＦＩＮフラグをパケットに含ませて、別のノードにＡＣＫを送信することによって、又は単純にＲＳＴフラグをパケットに含ませることによって終了させることができる。各中間地点は、各セッションに関する情報、例えば送信元クライアント／宛先サービスのネットワークアドレスとポート番号のペアを記憶しているので、中間地点は、受信した各パケットが関連付けられているセッションを識別することができる。中間地点は、セッションの終点から送信されたメッセージ及びフラグ、例えばＳＹＮ及びＦＩＮを監視することによって、また各セッションに関する状態情報を自身のデータベースに記憶することによって、各セッションのプロトコル状態を追跡することができる。パケットトラフィックのそのようなステートフルな監視は、本発明者が知っている従来技術には教示されていない。その代わりに、従来技術からはこのタイプのセッションとは異なるものが知られている。
【００７０】
ＳＹＮパケットを再送することができ、各ＳＹＮパケットが別個のセッションを開始する必要はないことを言及しておく。しかしながら、中間地点はセッションを開始するＳＹＮパケットと、例えば応答パケットに基づき再送されたＳＹＮパケットとを区別することができる。
【００７１】
プロトコルがセッションを終了するためのパケットシーケンスを規定していなければ、中間地点はタイマを使用することができる。セッションに関してパケットが全く処理されずに所定の長さの時間が経過すると、中間地点はそのセッションが終了していると想定することができる。そのようなタイムアウト時間を、終了シーケンスを規定するプロトコルを使用して、セッションに適用することができる。
【００７２】
表２には、種々のプロトコルに従って、セッションの開始及び終了を識別するための例示的な種々の技術が記載されている。それらのプロトコルの規定に基づき、類似の技術をその他のプロトコルのために発展させることができる。
【表２−１】
2017529713.tif 000004
【表２−２】
2017529713.tif 000005
【００７３】
図５は、宛先ＭＡＣアドレス５０２及び８０２．１ｇ  ＶＬＡＮタグ５０４を含んでいる、イーサネットヘッダ５００の概略的なレイアウトである。図６は、プロトコルフィールド６０２、送信元ＩＰアドレス６０４及び宛先ＩＰアドレス６０６を含んでいる、ＩＰヘッダ６００の概略的なレイアウトである。図７は、送信元ポート番号７０２、宛先ポート番号７０４、シーケンス番号７０６、ＳＹＮフラグ７０８及びＦＩＮフラグ７１０を含んでいる、ＴＣＰヘッダ７００の概略的なレイアウトである。これらのパケット及び識別フィールドを、表３にまとめたように、セッションの開始を識別するために使用することができる。
【表３】
2017529713.tif 000006
【００７４】
拡張型ＩＰルータ（ＡＩＰＲ）
図８は、本発明の図示の実施の形態に従って構成されているＡＩＰＲ（中間地点）８００の概略的なブロック図である。ＡＩＰＲ８００は、少なくとも２つのネットワークインタフェース８０２及び８０４を含んでおり、それら２つのネットワークインタフェース８０２，８０４を介してＡＩＰＲ８００を２つのネットワークに接続することができる。ネットワークインタフェース８０２及び８０４は、例えば、イーサネットインタフェースであって良い。ＡＩＰＲ８００は、インタフェース８０２及び８０４を介してパケットを送受信することができる。
【００７５】
先行パケット識別器８０６は、ここにおいて説明するように、先行パケットを自動的に識別する。一般的に、先行パケット識別器８０６は、ＡＩＰＲの情報ベース８１０にまだ存在しないセッションに関連するパケット、例えば新たな送信元クライアント／宛先サービスのネットワークアドレスとポート番号のペアを識別するパケットを受信すると、先行パケットを識別する。上記において述べたように、各先行パケットは、一連のパケット（パケットシリーズ／セッション）の脱落してない最初のパケットである。各セッションは、先行パケット及び少なくとも１つの後続パケットを含んでいる。順方向のフロー制御に関して、先行パケット及び全ての後続パケットは、同一の送信元クライアントから同一の宛先サービスへと送信される。順方向のフロー制御に関して、セッションの全てのパケットは送信元クライアントから宛先サービスへと送信され、また、逆方向のフロー制御に関して、セッションの全てのパケットは宛先サービスから送信元クライアントへと送信される。
【００７６】
セッション（パケットシリーズ）マネージャ８０８が先行パケット識別器８０６に接続されている。各セッションに対して、セッションマネージャはユニークな識別子を割り当てる。ユニークな識別子は、例えば、ＡＩＰＲ８００又はネットワークインタフェース８０２のネットワークアドレスと、セッションの後続パケットを受信するためにセッションマネージャ８０８によって割り当てられた第１のポート番号と、の組み合わせであって良い。ユニークな識別子は、更に、先行パケット及び後続パケットを伝送するために、セッションマネージャ８０８によって割り当てられた第２のポート番号と組み合わされた、ＡＩＰＲ８００又は他方のネットワークインタフェース８０４のネットワークアドレスを含むことができる。このユニークな識別子はセッションに関連付けられている。セッションマネージャ８０８は、セッションに関する情報を情報ベース８１０に記憶する。この情報は、本来の送信元クライアント／宛先サービスのネットワークアドレスとポート番号のペアに関連付けられた、ユニークな識別子を含むことができる。
【００７７】
図９は、例示的な中継地点情報ベース９００の概略的なレイアウトである。各行は、セッションを表している。セッション識別列９０２は、送信元クライアント９０４及び宛先サービス９０６に関するサブ列を含んでいる。各クライアント９０４に関して、そのネットワークアドレス９０８及びポート番号９１０が記憶されている。各宛先サービス９０６に関して、そのネットワークアドレス９１２及びポート番号９１４が記憶されている。この情報は、先行パケットから抽出される。
【００７８】
セッションに関する状態情報を、状態列９１５に記憶することができる。この情報を、例えばセッションが開始されているか、又はセッションが終了しているときに、一連のパケットをステートフルに追跡するために使用することができる。
【００７９】
逆方向列は、特に前のＡＩＰＲへの逆方向の経路の部分に関する情報９１６を記憶するためのサブ列を含んでいる。逆方向の経路情報９１６は、前のＡＩＰＲに関する情報９１８及び現在のＡＩＰＲ８００に関する情報９２０を含んでいる。前のＡＩＰＲに関する情報９１８は、ＡＩＰＲのネットワークアドレス９２２及びポート番号９２４を含んでいる。セッションマネージャ８０８は、先行パケットがＡＩＰＲから転送されたことを前提として、この情報を先行パケットから抽出する。しかしながら、現在のＡＩＰＲ８００が先行パケットを処理するための最初のＡＩＰＲである場合には、情報９１８はフラグとして空のまま残される。現在のＡＩＰＲ８００に関する情報９２０は、先行パケットを受信したインタフェース８０２のネットワークアドレス９２６と、セッションマネージャ８０８によって割り当てられた第１のポート番号９２８と、を含んでいる。
【００８０】
中継地点情報ベース９００は、特に次のＡＩＰＲへの順方向の経路の部分に関する情報９３０を記憶するようにも構成されている。この情報９３０は、現在のＡＩＰＲ８００に関する情報９３２と、次のＡＩＰＲが存在することを前提として、経路に沿った次のＡＩＰＲに関する情報９３４と、を含んでいる。情報９３２は、現在のＡＩＰＲが先行パケット及び後続パケットを送信する際に使用するインタフェースのネットワークアドレス９３６と、セッションマネージャ８０８によって割り当てられた第２のポート番号９３８と、を含んでいる。経路に沿った次のＡＩＰＲに関する情報９３４は、ＡＩＰＲに順方向の経路に関する情報が供給されない限り利用できない。次のＡＩＰＲに関する情報９３４は、自身のネットワークアドレス９４０及びポート番号９４２を含んでいる。次のＡＩＰＲに関する情報９３４をまだ利用できない場合には、ＡＩＰＲ８００が下記において説明するように戻りパケットを処理する際に、情報９３４を埋めることができる。
【００８１】
中継地点情報ベース９００の幾つかの実施の形態は、逆方向情報９１６を含まずに、順方向情報９３０を含むことができる。中継地点情報ベース９００の別の実施の形態は、順方向情報９３０を含まずに、逆方向情報９１６を含むことができる。
【００８２】
再び図８を参照する。先行パケット変更器８１２はセッションマネージャ８０８と接続されている。先行パケット変更器８１２は、先行パケットを変更し、セッションに割り当てられたユニークな識別子を記憶する。本来の送信元クライアントのネットワークアドレスとポート番号のペアと、本来の宛先サービスのネットワークアドレスとポート番号のペアとは、必要に応じて、変更された先行パケットに記憶される。パケットに記憶される付加的な情報を含むために先行パケットを拡張することができるか、又は、先行パケット内の既存のスペース、例えばベンダ固有の属性フィールドを使用することができる。付加的な情報を伝送するためのその他の技術はプロトコル固有であり、例えばＴＣＰを用いて、付加的な情報をＴＣＰオプションフィールドとして伝送することができるか、又は、データとしてＳＹＮパケットに付加することができる。いずれのケースにおいても、セッションデータブロックという用語は、変更された先行パケットに付加される情報を参照する際に用いられる。
【００８３】
図１０は、本来の送信元ＩＰアドレス１００２及び宛先ＩＰアドレス１００４の各ＩＰアドレスと、本来の送信元ポート番号１００６及び宛先ポート番号１００８の各ポート番号と、が示されている、例示的に変更された先行パケット１０００の概略図である。図１０はまた、変更された先行パケット１０００内のセッションデータブロック１０１０も示している。セッションデータブロック１０１０は連続的なものとして示されているが、変更された先行パケット１０００にわたりその内容が分散されていても良い。セッションデータブロック１０１０は、送信ＡＩＰＲの識別子、即ち中間ノード識別子１０１２、例えば第２のネットワークインタフェース８０４のネットワークアドレス及び第２のポート番号を記憶することができる。
【００８４】
再び図８を参照する。先行パケット変更器８１２は、必要に応じて、パケットの何らかの拡張を反映させるためにパケット長を更新する。先行パケット変更器８１２は、パケットに対して行われた変更を反映させるためにパケットのチェックサムを更新する。変更された先行パケットは、続けて、パケットルータ８１４によって第２のネットワークインタフェース８０４を介して伝送される。ＡＩＰＲ８００に順方向経路情報が供給されていなければ、変更された先行パケットは自然にルーティングされる。
【００８５】
最終的に、宛先サービスは戻りパケットを送信する。ＡＩＰＲ８００は、第２のネットワークインタフェース８０４を介して戻りパケットを受信する。現在のＡＩＰＲ８００と宛先サービスとの間の別のＡＩＰＲ（下流側のＡＩＰＲ）が先行パケット及び戻りパケットを処理する場合には、下流側のＡＩＰＲは戻りパケットを変更して、下流側のＡＩＰＲのネットワークアドレス及びポート番号を含ませる。ダウンストリームコントローラ識別器８１６は、本明細書において説明するように、ステートフルな診断を使用して、戻りパケットを識別する。ダウンストリームコントローラ識別器８１６は情報９３４（図９を参照されたい）を記憶し、特に中継地点情報ベース９００における次のＡＩＰＲに関するネットワークアドレス及びポート番号を記憶する。
【００８６】
現在のＡＩＰＲ８００はこの情報を使用して、後続パケットを次のＡＩＰＲ宛てに送ることができる。特に、後続パケット変更器８１８は、後続パケットの宛先アドレスを、直接的に宛先サービスへと続く中継地点の代わりに、次の中継地点のネットワークアドレス９４０及びポート番号９４２（図９を参照されたい）にセットすることができる。パケットルータ８１４は、後続パケットをそれらの変更された宛先アドレスに従って送信する。従って、一連の各パケットに関して、後続パケットは、それら一連のパケットの先行パケットと同一のダウンストリームパケットフローコントローラを介して流れる。
【００８７】
最終パケット識別器８２０は、上記において述べたように、各ストリームの最後を識別するために、各セッションをステートフルに追跡する。上記において述べたように、幾つかのケースにおいては、終了が最終パケットによって、例えばＲＳＴフラグがセットされているＴＣＰパケット又は、ＦＩＮフラグがセットされている、ＴＣＰパケットに対する応答のＴＣＰ  ＡＣＫパケットによって明示される。別のケースにおいては、タイマの期間満了によって、終了を明示することができる。セッションの終了が検出されると、パケットシリーズマネージャ８０８は、セッションからユニークな識別子を分離し、中継地点情報ベース９００からセッションに関する情報を削除する。
【００８８】
ＡＩＰＲ８００が宛先サービスの手前の最後のＡＩＰＲになる場合、先行パケット変更器８１２は、送信元クライアントが先行パケットを送信したときに先行パケットが有していた状態に復元することができるか、又は先行パケットが変更されたときの状態に復元することができ、例えばネットワークアドレス変換（ＮＡＴ）の結果を復元することができる。同様に、後続パケット変更器８１８は後続パケットを復元する。
【００８９】
同様に、先行パケットの宛先アドレスが、ＡＩＰＲ８００のネットワークアドレス、又は、先行パケットを受信する際に使用するＡＩＰＲ８００のネットワークインタフェース８０２のネットワークアドレスと同じである場合には、先行パケット変更器８１２及び後続パケット変更器８１８は、先行パケット及び後続パケットを復元する。
【００９０】
上記において述べたように、幾つかのプロトコルにおいては、セッションを開始するために、例えばＴＣＰのＳＹＮ−ＳＹＮ／ＡＣＫ−ＡＣＫハンドシェイクを用いる場合のように、種々のパケットが要求される。従って、ダウンストリームコントローラ識別器８１６は、セッションが開始されたとみなす前に、宛先サービスから第２の戻りパケットを受信するまで待機することができる。
【００９１】
上記において述べたように、中継地点８００の幾つかの実施の形態は、戻りパケット経路も管理する。先行パケット識別器８０６は、先行パケットが上流側の中継地点から中継地点８００へと転送されたか否かを自動的に確認する。先行パケットがセッションデータブロックを含んでいる場合には、上流側の中継地点は先行パケットを転送している。パケットシリーズマネージャ８０８は、上流側の中継地点に関する情報を中継地点情報ベース８１０に記憶する。戻りパケット識別器８２２は、第２のネットワークインタフェース８０４から戻りパケットを受信し、セッションの戻りパケットを自動的に識別する。それらの戻りパケットを、セッションに対応する、中継地点情報ベースにおける情報９３２（図９を参照されたい）に等しい宛先アドレス及びポート番号によって識別することができる。戻りパケット変更器は、戻りパケットを変更し、中継地点情報ベース９００における情報９１８によって識別されている、セッションに関する上流側の中継点宛てにそれらの戻りパケットを送る。
【００９２】
パケットのステートフルな監視は慣例のルータによって行われないことを言及しておく。ルータによるパケットのステートフルな監視は、本発明者が知っている従来技術には教示されていない。しかしながら、パケットのステートフルな監視は、本願に開示した中継地点の１つの態様である。本発明の実施の形態によるこのタイプの監視は、従来技術のものとは区別される。
【００９３】
図１１は、本発明の図示の実施の形態によるＡＩＰＲ８００（図８を参照されたい）によって実施される種々の動作を概略的に説明するフローチャート１１００を含んでいる。このフローチャート１１００は、ＩＰネットワークにおける起源ノードから宛先ノードへのセッションのパケットを管理するための、パケットルーティング方法を示している。１１０２においては、中間ノードがセッションにおける複数のパケットのうちの先行パケットを取得する。この中間ノードは、ルーティング機能を実施するルーティングデバイス又はスイッチングデバイスを含むことができる。
【００９４】
セッションにおけるパケットはユニークなセッション識別子を有している。１１０４では、先行パケットが通過した前ノードが求められる。前ノードは前ノード識別子を有している。１１０６では、前ノード識別子とセッション識別子との戻り関連性が形成される。１１０８では、セッションに関する状態情報を保持するために、戻り関連性がメモリに記憶される。
【００９５】
１１１０では、少なくとも中間ノードを識別するために、先行パケットが変更される。１１１２では、先行パケットが、ＩＰネットワークに対する中間ノードの電子出力インタフェースを介して、宛先ノードへと転送される。電子出力インタフェースはＩＰネットワークと通信する。１１１４では、逆方向メッセージ（例えば、「逆方向パケット」と称されるパケット）が、中間ノードの電子入力インタフェースを介して受信される。逆方向メッセージは、次ノードから受信する。次ノードは次ノード識別子を有している。逆方向メッセージは、次ノード識別子及びセッション識別子を含んでいる。電子入力インタフェースはＩＰネットワークと通信する。
【００９６】
１１１６では、次ノード識別子とセッション識別子との順方向関連性が形成される。１１１８では、セッションに関する状態情報を保持するために、順方向関連性がメモリに記憶される。１１２０では、セッションの付加的なパケットが取得される。１１２２では、セッションにおける実質的に全ての付加的なパケットが、記憶されている順方向関連性を使用して、次ノードへと転送される。付加的なパケットは、中間ノードの電子出力インタフェースを介して転送される。
【００９７】
１１２４では、戻りセッションにおいて、又はセッションの戻り部分において、複数のパケットを宛先から受信する。戻りセッションは、起源ノードに向けられている。１１２６では、戻りセッションにおける実質的に全てのパケットが、記憶されている戻り関連性を使用して、前ノードへと転送される。パケットは、電子出力インタフェースを介して転送される。
【００９８】
図１２において１２００に示されているように、先行パケットの宛先ノードへの転送１１１２は、次ノードに関するルーティング情報を有しているルーティング情報ベースへのアクセスを含んでいる。１２０２に示されているように、中間ノードはルーティングテーブルを有することができ、また、先行パケットの宛先ノードへの転送１１１２は、先行パケットを宛先ノードへと転送するためのルーティングテーブルの使用を含むことができる。１２０４に示されているように、先行パケットの宛先ノードへの転送１１１２は、先行パケットを次ノード宛てに送るための次ノード識別子の使用を含むことができる。
【００９９】
先行パケットの宛先を規定することができるので、先行パケットが転送された後、且つ、次ノードが先行パケットを受信する前に、複数のネットワークデバイスが先行パケットを受信する。
【０１００】
ＡＩＰＲ８００及びそのコンポーネント８０２〜８２４の全て又は一部を、メモリに記憶されている命令を実行するプロセッサ、ハードウェア（例えば組み合わせロジック、特定用途向け集積回路（ＡＳＩＣ：Application Specific Integrated Circuits）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：Field-Programmable Gate Arrays）又はその他のハードウェア）、ファームウェア又はそれらの組み合わせによって実施することができる。
【０１０１】
本発明を上記の例示的な実施の形態にも度付き説明したが、本願に開示した本願発明の思想から逸脱することなく、図示の実施の形態に対する修正及び変更を行うことができる。更に、開示した複数の態様又はそれらの一部を、上記とは異なるやり方で、及び／又は、特許請求の範囲に明記したものとは異なるやり方で組み合わせることができる。従って、本発明は、開示した実施の形態に制限されるものではないとみなされるべきである。
【０１０２】
種々の実施の形態の態様をフローチャート及び／又はブロック図を参照しながら説明したが、各ブロックの全て又は一部の機能、動作、判断等又は複数のブロックの組み合わせを結合することができるか、別個の動作に分割することができるか、又は、別の順序で実施することができる。各ブロックの全て又は一部、若しくは、複数のブロックの組み合わせを、コンピュータプログラム命令（例えばソフトウェア）として、ハードウェア（例えば組み合わせロジック、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はその他のハードウェア）として、ファームウェアとして又はそれらの組み合わせとして実施することができる。種々の実施の形態を、メモリに記憶されている命令をプロセッサが実行することによって実施することができるか、メモリに記憶されている命令によって制御することができる。メモリは、制御ソフトウェア又はその他の命令及びデータを記憶することに適している、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ又はその他の任意のメモリ、若しくは、それらの組み合わせであって良い。本発明の機能を定義する命令を、種々の形態でプロセッサに提供することができ、例えば有形の書き込み不可能な記憶媒体（例えばコンピュータ内のリードオンリメモリデバイス、例えばＲＯＭ、又は、コンピュータのＩ／Ｏアタッチメントによって読み出し可能なデバイス、例えばＣＤ−ＲＯＭ又はＤＶＤディスク）に永続的に記憶されている情報、実体のある書き込み可能な記憶媒体（例えばフロッピーディスク、取り外し可能なフラッシュメモリ及びハードドライブ）に変更可能に記憶されている情報、若しくは、有線式又は無線式のコンピュータネットワークを含む通信媒体を介してコンピュータに伝送される情報の形態でプロセッサに提供することができる。しかしながら、提供の形態はこれらに限定されるものではない。更に、種々の実施の形態を図示した種々のデータ構造に関連させて説明したが、異なるデータ構造を使用してもシステムを実施することができる。
【図１】
2017529713.tif 000007
【図２】
2017529713.tif 000008
【図３】
2017529713.tif 000009
【図４】
2017529713.tif 000010
【図５】
2017529713.tif 000011
【図６】
2017529713.tif 000012
【図７】
2017529713.tif 000013
【図８】
2017529713.tif 000014
【図９】
2017529713.tif 000015
【図１０】
2017529713.tif 000016
【図１１】
2017529713.tif 000017
【図１２】
2017529713.tif 000018
【国際調査報告】
2017529713.tif 000019
2017529713.tif 000020